김씨의 IT 이야기

cloud

kvm 설치 및 virtio 사용

leave a comment »

먼저 kvm을 설치해야 함.

지금 나와 있는 대부분의 pc나 노트북은 가상화를 지원하므로 가상화 체크하는 부분은 생략.
하지만 혹시 모르니 놋북(pc)를 리부팅하고 cmos로 들어가서 가상화 지원 부분이 체크되어 있는지 확인하자. 가끔 언체크 되어 있는 경우가 있다. 바이오스 제조사마다 명칭과 설정메뉴로 들어가는 방법이 다르니 이 부분은 생략.

h/w 체크 및 기초적인 설치는 공식문서를 활용해 봅시다.

https://help.ubuntu.com/community/KVM/Installation

나의 경우에는 얼마전까지 lubuntu를 사용하다가 xubuntu로 옆그레이드(?) 했다. lubuntu보다 xubuntu가 더 빠르고, 패키징이 잘 되어 있는 것 같다.

각설하고. 설치는

$ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
위와 같이 하면 기본적인 것이 설치된다. 주의 할 것은 기본만 설치된다는 것이다. virtio를 쓰기 위한 것은 설치가 안된 상태이다.

$ sudo apt-get install virt-manager
정신건강을 위해서 virt-manager를 설치하자. 단 아직 gui에서 되지 않는 것들이 많다.

위 패키지만 깔아도 기본적으로 kvm을 설치할 준비는 되었다. 다만 이 상태로 설치될 경우. 느리다. ㅠ.ㅠ

1.LVM
2.VIRTIO
3.VIRT-SCSI
위 세가지가 virtio를 이용한 블록디스크를 가상머신에 사용하는 방법이다.

1.LVM
먼저 hdd 파티션을 다시 나눠야 한다. 기본적으로 kvm은 다른 가상화 솔루션(virtualbox,vmware..) 처럼 기본적으로 디스크용 파일을 생성하고, 그것을 이용해서 가상머신의 hdd로 사용한다. 그러므로 disk io가 빈번하고, 속도가 느리다.
이를 해결하고자 virtio를 이용하면서 lvm도 병행해서 사용하게 되는 것이다. lvm에 대한 설명은 주제에서 벗어나므로 생략한다.
나의 경우에는 
나의 설정을 아래와 같다.
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    80078219    40038086   83  Linux
/dev/sda2        80078848   508985343   214453248   83  Linux
/dev/sda3       958984192   976771071     8893440   82  Linux swap / Solaris
/dev/sda4       508985344   958984191   224999424    5  Extended
/dev/sda5       508987392   958984191   224998400   8e  Linux LVM

sda4를 확장볼륨(extended)으로 설정하였다.그리고 여기에 sda5로 lvm을 잡아 주었다.
나의 경우에는 primary 볼륨을 4개 이상 설정할 수 없어서 sda4를 확장으롤 설정하였으나, lvm을 포함해서 4개 미만의 파티션으로 사용할 수 있다고 하면, 굳이 확장볼륨에 설치할 필요는 없다.
(참고로, /dev/sda2를 데이터 저장용 볼륨으로 사용하고 있다.)
저 /dev/sda5 밑에 virtio를 위한 가상 hdd들이 생성될 것이다.
lvm이 제대로 생성이 되었다면 /dev/lvm을 확인할 수 있다.
또한 lvm밑에 kvm용 volume group을 생성하고, volume을 생성하였다고 하면 그 볼륨은 /dev/disk/by-id/ 밑에서 나타난다. ls -l을 이용해 보면 간단하게 확인할 수 있다.
예를 들어 내가 만든 볼륨들은 아래와 같이 나타난다.

lrwxrwxrwx 1 root root 10 Feb 24 09:42 dm-name-lvm-cent -> ../../dm-4
lrwxrwxrwx 1 root root 10 Feb 24 08:29 dm-name-lvm-porte -> ../../dm-0
lrwxrwxrwx 1 root root 10 Feb 24 08:29 dm-uuid-LVM-nQenPODMbXRIkWOaVP8SLdZlfx39rL9Fgm6WGC7JCC6DH9CyaEpuBuGR6DlGG85o -> ../../dm-0
lrwxrwxrwx 1 root root 10 Feb 24 09:42 dm-uuid-LVM-nQenPODMbXRIkWOaVP8SLdZlfx39rL9FvJPeIAQT1YpjI1VDn0y13cTeXdHytybP -> ../../dm-4

명령어로도 확인 가능하다.
$ virsh pool-list
Name                 State      Autostart 
-----------------------------------------
default              active     no        
vol                  active     yes   

기본으로 생성되는 volume group은 사용하지 않고, lvm 볼륨을 vol이라는 volume group으로 만들어서 사용하고 있다.

http://www.linux-kvm.org/page/Virtio
위 페이지를 방문해보자
virtio를 사용하기 위한 기본 조건들이 나와 있다.
virtio를 제대로 사용하기 위해서, libvirt와 관련된 패키지들을 설치했다. 

현재 설치된 패키지들을 보면,
$ dpkg --get-selections | grep virt
libvirt-bin                    install
libvirt0                    install
python-libvirt                    install
virt-manager                    install
virt-viewer                    install
virtinst                    install
msk@msx:/dev/disk/by-id$ dpkg --get-selections | grep kvm
qemu-kvm                    install
msk@msx:/dev/disk/by-id$ dpkg --get-selections | grep scsi
open-iscsi                    install
open-iscsi-utils                install
$ dpkg --get-selections | grep qemu
ipxe-qemu                    install
qemu                        install
qemu-keymaps                    install
qemu-kvm                    install
qemu-launcher                    install
qemu-system                    install
qemu-system-arm                    install
qemu-system-common                install
qemu-system-mips                install
qemu-system-misc                install
qemu-system-ppc                    install
qemu-system-sparc                install
qemu-system-x86                    install
qemu-user                    install
qemu-utils                    install
qemuctl                        install

위 설치된 패키지들 중에 일부는 굳이 설치 되지 않아도 되는 것들이 있을 수 있다.

virtio를 사용할 때, 최근에는 virt-scsi를 사용한다고 한다.
http://wiki.qemu.org/Features/VirtioSCSI
http://www.ovirt.org/Features/Virtio-SCSI
위 사이트에 보면 virtio의 block device의 io를 개선하기 위해서 나온가란다. 일단 믿고 가자.

먼저 앞에서 만들어 놓은 lvm에 volume을 하나 만든다.(특별한 이야기가 없으면, virt-manager를 이용해서 만들어도 된다.)
볼륨을 생성할 때는 역시. 용량을 넉넉하게 설정해 줘야 한다.

가상머신으로 windows를 사용한다고 할 때, 생각지 않은 이슈가 발생한다. 공식사이트에 나와 있는 윈도우즈 게스트 드라이버를 이용하면 윈도우즈가 설치되지 않는다 ㅠ.ㅠ
hdd가 인식되지 읺는다.

https://forge.univention.org/websvn/listing.php?repname=dev&path=%2Fbranches%2Fucs-3.0%2Fucs%2Fvirtualization%2Funivention-kvm-virtio%2F&rev=5204&peg=5204#a078d284e1a63083ecbf2b5e5b0df0e1e

여기에서  virtio-win-1.1.16.iso  파일을 다운받아서 두번째 시디롬으로 추가하여 드라이버를 로드하면 설치할 수 있다. 

가상머신을 생성하고나서, 제대로 설정이 되었는지 확인하기 위해서 virsh edit 가상머신명 으로 파일을 열어서 확인할 수 있다.

http://libvirt.org/formatdomain.html#elementsControllers

위 링크에 보면 가상머신에서 블럭디바이스 등이 어떻게 설정되어야 하는지 보여준다. 자신의 설정과 비교/확인해 보면서 수정하면 된다.
또한가지 방법으로는 필요한 모듈이 제대로 설정되지 않았다고 하면, virt-manager에서 스토리지를 선택할 때, bus로 virtio가 선택되지 않을 것이다.
xml로 virtio를 강제로 설정해 두어도, 필요한 모듈이 설치되어 있지 않다면 bus가 disable 되어 있을 것이다. 이럴 때는 위에 나의 설치된 패키지 리스트와 비교해 보기 바란다.
입으로는 open-iscsi와 libvirt를 참조하기 바란다.
virtio block disk
제대로 설정이 되었다면 위와 같이 나타날 것이다. cache와 io는 위의 옵션을 대부분 추천해 주어서 설정하였다.

ps : 그냥 virtualbox로 편하게 쓸까? ㅠ.ㅠ

ps2 : 가상머신 생성 명령을 참고로 남김.

sudo virt-install --name=dev --ram=2048 --vcpus=2 --cdrom=/data/BIN/MS/OS/ko_windows_7_enterprise_k_with_sp1_x86_dvd_u_677732.iso --os-type=windows --os-variant=win7 --hvm --arch=x86_64 --connect=qemu:///system --network network=default,model=virtio --disk path=/dev/lvm/dev,bus=virtio,cache=none --disk path=/data/BIN/linux/virtio-win-1.1.16.iso,device=cdrom --graphics spice --accelerate

Written by moris Kim

2014/02/24 , 시간: 11:01

ubuntu에 게시됨

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중

%d 블로거가 이것을 좋아합니다: