본문 바로가기

OS

Ubuntu - KVM 사용법

우분투 환경에서 KVM 사용하는 방법을 정리한다.


KVM 은 Kernel Based Virtual Machine 의 약자로 리눅스에서 사용할 수 있는 VM 패키지이다.


리눅스용 VMware라고 생각하면 된다.


설치하는 VM은 우분투 10.04.4 LTS를 기준으로 한다.





우선 KVM에 필요한 패키지를 설치한다.


apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils virt-manager qemu-system


qemu-kvm : KVM 패키지

libvirt-bin : VM들을 다루기 위한 툴

ubuntu-vm-builder : 터미널 환경에서 VM 이미지를 생성하기 위한 패키지

virt-manager : UI 환경에서 VM 이미지를 생성하기 위한 패키지

qemu-system : 이미지 생성할 때 필요했던 듯.

bridge-utils : VM 네트워크 사용을 위해 Virtual Bridge를 사용하는데 이를 다루는 패키지


패키지 그룹에 계정을 추가한다. (권한문제 때문에 하는듯 한데 root로 사용하면 상관없는듯)

adduser hong libvirtd

adduser hong kvm


터미널내에서도 이미지 생성이 가능하지만, UI 환경에서 하는게 더 직관적이고 편하므로 UI 환경을 사용한다.


서버에 가서 모니터를 통해 해도 되지만 귀찮으므로 원격제어를 위한 패키지를 설치한다.

apt-get install xrdp


우분투 데스크탑이 아니라면 UI화면이 없기 때문에 없으면 아래 패키지도 추가 설치.

apt-get install ubuntu-desktop


윈도우 원격제어를 통해서 해당 서버로 접속.


그런데 회색화면만 보일 수 있다. 원인은 못 찾음.


검색해보니 접속할 계정의 홈 디렉토리에 다음 파일을 생성 후 내용을 추가하면 된다고한다.


vi ~/.xsession

gnome-session --session=ubuntu-2d

 


근데... 안된다...


해서 다른 패키지도 설치한다.


apt-get install xfce4


이것도 원격제어를 위한 패키지인 듯 하다.


xsession 파일의 내용을 다음과 같이 수정한다.

vi ~/.xsession

 xfce4-session

 


xsession 파일이 원격접속할 때 사용할 패키지 정하는 파일인듯..


어쨋든 위와 같이 하면 올바르게 접속이 이루어지고, UI화면을 볼 수 있다.


근데 xfce4로 접속하는거라 그런지 기존 우분투 화면과 다르다.


어쨋든 기능은 다 되니까


다시 본론으로 돌아가서 우분투 화면에 접속했으면 Virtual Machine Manager를 실행한다.


Application Menu - System - Virtual Machine Manager


첫번째 버튼을 사용하여 새로운 VM 생성을 시작한다.


iso 파일 이미지로 생성할것이므로 Local install media 선택 후 다음


Use ISO image 를 선택하고 Browse를 선택하여 iso 파일을 선택한다. OS type 및 Version은 설치하는 이미지에 맞게 선택한다.


VM에 할당할 메모리와 CPU 코어 수를 선택한다. 필요한 만큼 설정하도록 한다. 필자는 기본값으로 진행한다.


VM에 할당할 하드 용량을 선택한다. 역시 기본값 설정.


설정한 값들을 확인하고 Finish. Advanced options에서 이것 저것 설정할 수 있으나 기본값으로 진행.


Finish를 하고 나면 iso파일의 OS 설치환경이 뜬다.

각 OS 설치법에 따라 진행한다.


설치가 완료되면 다음과 같이 VM이 하나 생성되었음을 확인할 수 있다.



생성한 VM 이미지 파일은 /var/lib/libvirt/images/VM1.img 에 존재한다.

이미지 파일의 설정파일은 /etc/libvirt/qemu/VM1.xml 에 존재한다.



VM에 원격 터미널로 접속을 위해 콘솔 설정을 해야한다.


VM에서 ttyS0.conf 파일을 생성 후 수정한다.


vi /etc/init/ttyS0.conf

# ttyS0 -getty

start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]
respawn
exec /sbin/getty -L 115200 ttyS0 xterm

 


ttyS0를 서비스를 시작한다.

start ttyS0


다시 호스트서버에서 VM의 설정값을 변경해야 한다.


virsh을 실행한다. 이는 앞에서 설치한 libvirt-bin 패키지에서 제공하는 툴이다.


VM을 다루는 작업들은 모두 virsh을 사용한다.


HOST# virsh

virsh# shutdown VM1

virsh# edit VM1


그럼 xml 파일이 하나 열리는데 위에서 말한 VM 설정파일인 VM1.xml이다.


내용중에 아래 내용이 있어야 콘솔기능이 가능하다. 없으면 추가하고 저장한다.

<console type='pty'>
  <target type='serial' port='0'/>
</console>

 


VM1을 다시 시작한다.

virsh# start VM1


VM의 상태정보는 아래 명령을 통해 볼 수 있다.

virsh# list --all

 Id    Name                           State
----------------------------------------------------
 -     VM1                            shut off


VM1이 부팅되었다면 콘솔로 접속 해보자.

virsh# console VM1


접속됨을 알 수 있다.


하지만 콘솔은 불편하므로 VM에 텔넷이나 ssh를 설치하여 앞으로는 텔넷으로 접속하도록 한다.


텔넷으로 접속하려면 네트워크 설정을 해줘야 하는데 ip 설정은 필자의 다른 포스팅을 참조하도록 하고, 이후에 할 작업인데 VM을 클론시키거나 했을때 네트워크 인터페이스 이름이 꼬일 수 있는데 이를 초기화 해줘야한다.


아래 파일을 보면 네트워크 인터페이스에 대해 정의되어 있는데, 이 파일을 삭제한다.


/etc/udev/rules.d/70-persistent-net.rules


삭제하고 재부팅하면 /etc/network/interfaces의 내용만큼 새로 생성된다.


이 작업을 하지 않으면, eth0부터가 아닌 eth5 6 등으로 인터페이스명이 매겨질 수 있다.


ip 설정도 끝냈다면, 호스트서버에서 텔넷으로 접속이 가능한지 확인하자.


이제 텔넷접속이 가능하게 되었지만 호스트서버에 텔넷으로 접속했다가 다시 VM으로 텔넷으로 접속하려면 번거롭기 때문에 호스트서버에 포트포워딩을 설정한다.


포트포워딩 설정은 필자의 아래 포스팅에 나와있으니 참조하도록하자.

http://blog.naver.com/hji0223/220233475508




생성한 VM을 클론 기능을 통해 복제할 수 있다.


GUI 환경에서 Virtual Machine Manager를 통하여 클론이 가능하고


터미널 환경에서 클론하려면 다음 명령을 사용한다.


virt-clone -o [기존 VM 이름] -n [새로운 VM 이름] -f /var/lib/libvirt/images/[새로운 VM 이름].img


ex>

virt-clone -o RUT -n RUT_OSPF -f /var/lib/libvirt/images/RUT_OSPF.img


클론 끝이다. 아주 간단하다.


클론 후에는 네트워크가 올라오지 않아 텔넷 접속이 불가능하다.

앞에서 콘솔이 가능하게 설정해두었기 때문에 콘솔로 접속하여 네트워크를 설정한다.

GUI 환경에서도 가능하나, 무지 갑갑함을 느낄 수 있으므로 터미널로 진행한다.

추가적으로 클론 후에는 반드시 인터페이스 더미 정보 제거, 호스트네임 변경, IP 설정 등의 작업을 진행하자.

자세한 내용은 본 블로그의 다른 포스팅에 있으니 참조