민트 리눅스에 KVM 가상환경 구성하기
민트 리눅스 21.03 에서 KVM 가상환경을 구성해 본다. 구성에 핵심은 KVM 의 네트워크 설정이다. 앞서 설정한 OpenvSwitch 를 이용하도록 설정 해야 한다.
네트워크 환경
KVM 가상화를 위해서는 네트워크 환경을 먼저 고려해야 한다. 필자의 경우에는 공유기를 이용하고 있다. 외부 광랜으로 들어온 라인을 모뎀에서 받아서 이더넷로 변환해준다. 여기서 랜선으로 공유기에 연결하고 각 컴퓨터에 연결해서 쓴다.
공유기는 다들 아는 IpTime 인데, IpTime 은 새로운 장비가 접속되면 자동으로 사설IP 를 할당해 준다. 이것을 외부로 내보낼때는 NAT 기능을 이용해서 하나의 인터넷 라인으로 공유기 안쪽에 많은 장비를 사용할 수 있게된다.
KVM 가상화를 하게되면 브릿지 네트워크가 생성된다. 이 브릿지 네트워크는 NAT 모드로 작동된다. 172.x.x.x 대역으로 게스트에게 자동으로 IP 를 할당해 준다. 마치 IpTime 공유기와 같은데, 문제는 이렇게 되면 다른 컴퓨터에서 게스트에 접속할 수가 없게 된다. NAT 는 단반향으로 게시트에서 바깥으로 접속은 할 수 있지만 바깥에서 게스트로 접속은 불가능하다. 가능한 방법은 Port 포워딩인데, 포트마다 설정을 해줘야 하는 번거로움이 있다.
KVM 네트워크 설정을 NAT 가 아닌 브릿지(Bridge) 모드로 설정하고 드라이버를 OpenvSwitch 로 설정하면 호스트 컴퓨터에 브릿지 네트워크인 OpenvSwitch 를 통해서 IpTime 에서 사설 IP를 받게 된다. IpTime 내에 네트워크 모두 접속이 가능해 진다.
KVM 을 위한 패키지 설치
다음과 같이 패키지를 설치해 준다.
1 |
apt install qemu-kvm libvirt-daemon-system virtinst libvirt-clients bridge-utils libvirt-daemon libosinfo-bin virt-manager |
KVM 를 위한 브릿지 네트워크 설정
주의해야 할 것은 OpenvSwitch 를 사용하도록 설정을 해야 한다. 민트 리눅스 21.03 은 특이하게도 KVM 설치해도 네트워크 설정이 없다. 다음과 같이 확인이 가능하다.
1 2 3 |
]# virsh net-list Name State Autostart Persistent ---------------------------------------- |
네트워크를 정의하기 위해서 다음과 같이 xml 파일을 작성해 준다.
1 2 3 4 5 6 |
<network> <name>ovsbr0</name> <forward mode='bridge'/> <bridge name='ovsbr0'/> <virtualport type='openvswitch'/> </network> |
forward 모드를 ‘bridge’ 이고 virtualport 의 타입이 openvswitch 여야 한다. 파일이 작성되었다면 이제 이것을 KVM 네트워크로 정의해 줘야 한다.
1 2 3 4 5 6 7 8 9 10 |
]# virsh net-define ovsbr0.xml Network ovsbr0 defined from ovsbr0.xml ]# virsh net-start ovsbr0 Network ovsbr0 started ]# virsh net-autostart ovsbr0 Network ovsbr0 marked as autostarted ]# virsh net-list Name State Autostart Persistent ------------------------------------------- ovsbr0 active yes yes |
이로써 KVM 구성이 완료 됐다. 이제 virt-manager 를 이용해서 잘 게스트 OS 를 설치해 본다.
일반 계정으로 KVM 이용하기
KVM 설치하게 되면 root 계정으로만 사용할 수 있도록 되었다. 일반계정으로 사용하기 위해서는 다음과 같이 libvirt 그룹에 일반 계정을 추가해주면 된다.
1 2 |
sudo usermod -a -G libvirt $(whoami) newgrp libvirt # 옵션으로 primary 그룹을 libvirt 로 바꾼다. 안해도 된다. |
이제 libvritd 의 설정 파일을 다음과 같이 변경한다.
1 2 3 |
]# vim /etc/libvirt/libvirtd.conf unix_sock_group = "libvirt" unix_sock_ro_perms = "0770" |
설정을 변경했기 때문에 다음과 같이 재시작해 준다.
1 |
]# sudo systemctl restart libvirtd.service |