더북(TheBook)

초보 시스템 관리자의 일기 | 실습에 필요한 가상 게스트 준비하기

앞으로 virt-clone으로 수없이 많은 게스트들을 붕어빵 찍어내듯이 복제할 것이다. 오늘 했던 작업을 한 마디로 요약하자면 ‘복제할 대상 준비하기’라고 할 수 있다.

KVM의 가상 게스트는 네트워크 주소 정보를 자동으로 할당받는다. 게스트가 부팅하는 과정에서 IP 주소 정보를 요구하면, libvirt는 보유하고 있는 IP 주소 풀에서 사용하지 않는 주소 정보를 제공한다. 이 때문에 생길 수 있는 문제를 발견해서 선배에게 칭찬받았다. 뭐냐고? 게스트를 시작할 때마다 IP 주소가 달라진다는 점이다. TCP/IP 기반 네트워크에서 호스트(가상 시스템에서의 호스트가 아니라 네트워크에 연결된 모든 장치들을 말하는 용어)끼리 접속하기 위해서는 접속 대상 호스트의 IP 주소를 알고 있어야 하는데 IP 주소가 계속 바뀐다면 사용자는 난처해질 수밖에 없다. 가상 시스템에서도 고정된 IP 주소를 사용할 수 있으며, 호스트와 동일한 네트워크에 존재한다면 외부 연결도 문제가 없다고 한다.

호스트는 외부 네트워크 192.168.0.0과 가상 네트워크 192.168.122.0을 연결한다. 외부 네트워크와 연결하기 위해 유선 네트워크 인터페이스, eth0에는 192.168.0.2를 할당하며 가상 네트워크 인터페이스 virbr0에는 192.168.122.1을 할당한 상태이다. 유선 네트워크 인터페이스의 IP 주소는 /etc/network/interface에서 수정 가능하며 가상 네트워크 인터페이스의 IP 주소는 virsh net-edit default 명령으로 수정할 수 있다.

게스트마다 고정적으로 IP 주소를 부여하려면 가상 시스템의 IP 주소 자동 할당 기능을 해제해야 한다. guest에 네트워크 인터페이스(eth0)에 사설 IP 주소 192.168.122.100을 할당했듯이 나중에 게스트를 추가할 때마다 IP 주소를 규칙적으로 할당할 것이다.

그림 4-22 가상 게스트 guest 준비하기

앞에서 만들어둔, 그러나 불필요한 게스트를 모두 삭제하자. 가상 머신 관리자로 생성한 virtual_machine과 virt-clone 예제에서 나온 clone이 대상이다.

shinjaehun@losttemple:~$ virsh list --all
 Id 이름                 상태
----------------------------------
 - virtual_machine       종료
 - guest                 종료
 - clone                 종료

virsh undefine 명령으로 두 게스트를 삭제한다.

shinjaehun@losttemple:~$ virsh undefine virtual_machine
shinjaehun@losttemple:~$ virsh undefine clone
shinjaehun@losttemple:~$ virsh list --all
 Id 이름                 상태
----------------------------------
 - guest                 종료

게스트의 하드디스크 이미지도 함께 삭제해야 한다. 하드디스크 이미지 경로는 가상 머신 관리자로 생성한 게스트는 /var/lib/libvirt/images, virt-install로 생성한 게스트는 홈 디렉터리에 만들어둔 virtual_machines이다. virtual_machine에 추가한 하드디스크 이미지 ‘virtual_machine-1.img’와 ‘virtual_machine-2.img’도 함께 삭제한다. 디렉터리의 접근 권한 때문에 sudo를 사용했다. 이제 ‘guest.img’만 남았다.

shinjaehun@losttemple:~$ sudo rm /var/lib/libvirt/images/virtual_machine.img
shinjaehun@losttemple:~$ sudo rm /var/lib/libvirt/images/virtual_machine-1.img
shinjaehun@losttemple:~$ sudo rm virtual_machines/virtual_machine-2.img
shinjaehun@losttemple:~$ sudo rm virtual_machines/clone.img
shinjaehun@losttemple:~$ ls virtual_machines
guest.img

안정적인 네트워크 환경을 고려해서 무선 네트워크보다는 유선 네트워크를 선택하자. 호스트의 네트워크 인터페이스 파일을 수정해서 eth0에 대한 정보를 입력한다.

shinjaehun@losttemple:~$ sudo vi /etc/network/interfaces

무선 네트워크 인터페이스 wlan0에 대한 설정 내용은 행 앞에 ‘#’ 표시를 붙여 주석 처리해서 무효로 한다. 케이블이 연결된 네트워크 인터페이스 eth0을 설정한다(설마 케이블을 연결하지도 않고 네트워크 연결이 가능할거라고 생각하지는 않는지?).

IP 주소 정보를 입력한다. 외부 네트워크 192.168.0.0에 연결하기 위해 192.168.0.2를 할당했다. 게이트웨이에서 IP 주소를 자동으로 받아온다면 2장의 ‘네트워크 설정하기’를 참고하여 dhcp 설정을 입력한다. 게스트와 연결되는 호스트의 가상 네트워크 인터페이스 virbr0에는 192.168.122.1이 부여될 것이다. 같은 IP 주소를 동일한 네트워크에서 사용하면 IP 주소가 충돌하므로 192.168.122.1에서 192.168.122.254까지의 주소는 피하도록 하자.

파일을 저장하고 편집기를 종료한다.

auto lo
#iface lo inet loopback

auto eth0
iface eth0 inet static
       address 192.168.0.2
       network 192.168.0.0
       netmask 255.255.255.0
       broadcast 192.168.0.255
       gateway 192.168.0.1
       dns-nameservers 8.8.8.8 8.8.4.4

#auto wlan0
#iface wlan0 inet dhcp
#   allow-hotplug wlan0
#   wpa-ssid "gateway"
#   wpa-psk "password"
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.