더북(TheBook)

virt-clone으로 게스트 복제하기

게스트를 생성할 때마다 운영체제를 설치를 반복하는 일은 매우 번거롭습니다. virt-clone을 이용하면 동일한 게스트를 다른 이름으로 복제할 수 있습니다. virt-clone 역시 virtinstall 패키지에 포함되어 있는 스크립트입니다.

virt-clone으로 게스트를 복제해봅시다. original에 복사할 원본, name에 생성할 대상을 입력합니다. file은 복사 후 생성된 게스트가 사용할 가상 디스크 이미지 경로를 지정합니다. 명령을 실행하면 가상 디스크 이미지를 먼저 생성하고 게스트 정보를 복사해옵니다. 복사 시간은 가상 디스크 이미지 용량에 따라 다릅니다. 용량이 클수록 시간이 오래 걸립니다.

shinjaehun@losttemple:~$ sudo virt-clone --original guest \
> --name clone \ 
> --file /home/shinjaehun/virtual_machines/clone.img

새로운 게스트 clone이 생성되었습니다. guest와 중복되는 네트워크 설정을 수정하는 일이 남아 있지만 그래도 virt-install로 운영체제를 설치하는 과정에 비하면 매우 빠르게 게스트를 생성했습니다.

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

게스트를 복제한 다음 호스트 이름을 수정하거나 IP 주소 정보를 변경해야 합니다. 호스트 이름 변경은 아래에서, IP 주소 변경은 ‘초보 시스템 관리자의 일기 | 실습에 필요한 가상 게스트 준비하기’에서 설명합니다.

복사 과정에서 네트워크 인터페이스의 하드웨어 주소(mac address)는 그대로 복사하지 않고 새로운 값을 생성해서 적용한다는 점이 중요합니다. 가상 디스크 이미지를 그대로 복사해서 사용하면 동일한 네트워크 인터페이스의 하드웨어 주소가 중복되어 발생하는 충돌 문제를 피할 수 없습니다. virt-clone으로 복제한 게스트는 하드웨어 주소가 중복되지 않습니다.

diff 명령으로 복제한 게스트 환경 설정 파일을 비교해봅시다. diff는 파일을 비교하는 명령이며, diff [원본파일] [대상파일] 형식으로 입력합니다. 게스트 이름 name과 고유번호인 uuid, 가상 디스크 이미지 파일 경로 뿐 아니라 하드웨어 주소도 자동적으로 변경되어 있습니다.

shinjaehun@losttemple:~$ sudo diff /etc/libvirt/qemu/guest.xml /etc/libvirt/qemu/clone.xml
4c4
<   virsh edit guest
---
>   virsh edit clone
9,10c9,10
<   <name>guest</name>
<   <uuid>40290cba-e71f-0a3e-2225-885bff08dc63</uuid>
---
>   <name>clone</name>
>   <uuid>dc785847-ecda-6e90-b224-8a333954d6d6</uuid>
31c31
<       <source file='/home/shinjaehun/virtual_machines/guest.img'/>
---
>       <source file='/home/shinjaehun/virtual_machines/clone.img'/>
49c49
<       <mac address='52:54:00:da:92:4a'/>
---
>       <mac address='52:54:00:5d:33:a8'/>

virt-clone으로 복제한 게스트를 시작하고 콘솔에 접속합니다.

shinjaehun@losttemple:~$ virsh start clone
shinjaehun@losttemple:~$ vv clone
이렇게 하세요!

virt-viewer로 가상 콘솔에 접속해도 됩니다. ‘virsh로 가상 시스템 관리하기’를 참고하세요.

네트워크 정보 중에서 호스트 이름은 변경하도록 합니다. 호스트 이름은 /etc/hostname에서 수정합니다.

administrator@guest:~$ sudo vi /etc/hostname

‘guest’라는 이름을 새로운 이름으로 수정합니다. 파일을 저장합니다.

clone

호스트 이름을 변경한 다음에는 반드시 시스템을 다시 시작해야 합니다. 재부팅하고 로그인하면 명령 프롬프트의 호스트 이름이 ‘aministrator@clone:~$’처럼 바뀌게 됩니다.

administrator@guest:~$ sudo reboot
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.