KVM과 QEMU 설치하기

                  Fedora에서 kvm/QEMU 설치 방법 퀵노트입니다.
               ===================================
                           (   Written by 인베인)
* kvm동영상 강의
– Japan Linux Symposium: The kvm qemu Storage Stack (by Christoph Hellwig)
   http://video.linuxfoundation.org/video/1644
–  Review: Red Hat Virtual Experience 2009
   http://www.montanalinux.org/review-red-hat-virtual-experience-2009.html
kvm(Kernel-based Virtual Machine)는 Intel VT 및 AMD-V와 같은 가상화 확장을 포함하는 X86하드웨어에서 리눅스를 위한 전가상화(Full virtualization)솔류션이다.
이것은 가상화 인프라스트럭쳐 코어를 위한  kvm.ko이라는 커널 모듈과  kvm-intel.ko(kvm-amd.ko)라는 CPU 의존적 커널모듈을 구성한다. kvm을 실행하기 위해서는 /proc/cpuinfo에 vmx/svm과 같은 CPU지원과 수정된 QEMU인 qemu-kvm 유틸리티가 필요하다.
CPU지원이 있어야 하지만, kvm이 QEMU보다 하드웨어적인 성능 향상이 있다.
KVM을 사용해서 수정되지 않은(XEN은 Guest가 수정되어야함.) Linux배포판 및 WinXP을 실행할수 있다. 각 가상화 머신들(Guests)은 사설로 가상화된 하드웨어(예: 네트웍카드, 그래픽어뎁터, 기타)를 가지고 있다. KVM은 VServer(http://linux-vserver.org/Welcome_to_Linux-VServer.org), 솔라리스 containers(http://www.sun.com/software/solaris /containers_learning_center.jsp)처럼 리눅스 2.6.20부터 포함되기 시작한 GPL2오픈소스이다.
0. 참고
http://www.howtoforge.com/virtualization-with-kvm-on-a-fedora-11-server
http://www.linux-kvm.org/
1. 필요한 유틸리티 설치
1.1 CPU가 가상화 지원하는지 체크
CPU가 하드웨어 가상화를 지원하는지 체크를 하도록한다.
아래 명령을 리눅스 데스크탑의 Xwindow상의 그놈콘솔에서 실행시
빨간색의 vmx 또는 svm이 출력되어야 한다. 아무것도 출력이 되지 않는 다면
하드웨어 가상화(H/W Virtualization)을 지원하지 않으므로 kvm을 사용할수 없다.
* vmx flag : Intel CPUs
* svm flag : AMD CPUs
fedora-invain#> egrep ‘(vmx|svm)’ –color=always /proc/cpuinfo
1.2 kvm 모듈 설치
kvm과 virtinst (가상화 머신을 생성하기 위한 툴)을 설치한다.
fedora-invain#> yum install kvm qemu libvirt python-virtinst
fedora-invain#> modprobe kvm kvm-intel  (or kvm-amd)
fedora-invain#> lsmod | grep kvm
kvm_intel              39696  0
kvm                   128388  1 kvm_intel
fedora-invain#> ls /usr/bin/qemu-*
/usr/bin/qemu-alpha       /usr/bin/qemu-sparc32plus
/usr/bin/qemu-arm         /usr/bin/qemu-sparc64
/usr/bin/qemu-armeb       /usr/bin/qemu-system-arm
/usr/bin/qemu-cris        /usr/bin/qemu-system-cris
/usr/bin/qemu-i386        /usr/bin/qemu-system-m68k
/usr/bin/qemu-img         /usr/bin/qemu-system-mips
/usr/bin/qemu-kvm         /usr/bin/qemu-system-mips64
/usr/bin/qemu-m68k        /usr/bin/qemu-system-mips64el
/usr/bin/qemu-mips        /usr/bin/qemu-system-mipsel
/usr/bin/qemu-mipsel      /usr/bin/qemu-system-ppc
/usr/bin/qemu-nbd         /usr/bin/qemu-system-ppc64
/usr/bin/qemu-ppc         /usr/bin/qemu-system-ppcemb
/usr/bin/qemu-ppc64       /usr/bin/qemu-system-sh4
/usr/bin/qemu-ppc64abi32  /usr/bin/qemu-system-sh4eb
/usr/bin/qemu-sh4         /usr/bin/qemu-system-sparc
/usr/bin/qemu-sh4eb       /usr/bin/qemu-system-x86_64
/usr/bin/qemu-sparc       /usr/bin/qemu-x86_64
1.3 가상화 머신 생성을 위한 서비스 데몬 시작
“libvirtd” 서비스 데몬을 시작한다.
fedora-invain#> /etc/init.d/libvirtd start
kvm이 성공적으로 설치가 되었는지 아래 명령으로 에러가 출력되지 않는지 체크하도록 한다.
fedora-invain#> virsh -c qemu:///system list
Id 이름               상태
———————————-
2. kvm  네트웍 환경 설정.
가상화머신(virtual machine)이 Host을 통해서 인터넷이 가능하도록 네트웍 브리지를 설정해야 한다. 그리고나서, NetworkManager를 disable한후에 네트웍 설정을 한후에 다시 enable하도록 한다.
fedora-invain#> yum install bridge-utils
fedora-invain#> chkconfig NetworkManager off
fedora-invain#> chkconfig –levels 35 network on
fedora-invain#> /etc/init.d/network restart
fedora-invain#> cat /etc/resolv.conf
fedora-invain#> system-config-network
fedora-invain#> vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
DNS1=10.32.192.11
DNS2=210.220.163.82
DNS3=219.250.36.130
GATEWAY=75.2.179.1
IPADDR=75.2.179.52
NETMASK=255.255.255.0
ONBOOT=yes
SEARCH=”intomail.net”
fedora-invain#> vi /etc/sysconfig/network-scripts/ifcfg-eth0# Networking Interface
DEVICE=eth0
#BOOTPROTO=none
#DNS1=10.32.192.11
#DNS2=210.220.163.82
#DNS3=219.250.36.130
#GATEWAY=75.2.179.1
#HWADDR=00:1e:90:f3:f0:02
#IPADDR=75.2.179.52
#NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
BRIDGE=br0
fedora-invain#> reboot
fedora-invain#> ifconfig  ( virtbr0 이라는 네트웍크 브리지가 보여야 함.)
———————–
eth0      Link encap:Ethernet  HWaddr 00:07:E9:00:6E:D6  
         inet addr:75.2.179.52  Bcast:75.2.179.255  Mask:255.255.255.0
virbr0    Link encap:Ethernet  HWaddr 66:E1:5C:B7:EC:8D  
         inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
vnet0     Link encap:Ethernet  HWaddr 66:E1:5C:B7:EC:8D  
         inet6 addr: fe80::64e1:5cff:feb7:ec8d/64 Scope:Link
——————————
virbr0 가 192.168.122.1이라는 사설 IP으로 설정되기때문에, 외부 인터넷을 위해서는
아래와 같이 “/etc/rc.d/rc.local” 파일에 IP 마스크레이딩을 설정해야만 한다.
fedora-invain#> vi /etc/rc.d/rc.local
——————————————-
### IP Sharing Setting (IP Masquerading )
# IP forward setting
/sbin/depmod -a
/sbin/modprobe ipt_MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
# IP forwarding  Auto Setting
# -eth0 : internet connection  NIC
iptables -t nat  -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
iptables -t nat  -A POSTROUTING -s 192.168.122.0/24 -o eth0 -j MASQUERADE
——————————————–
fedora-invain#>
3.  GUI 가상화 매니저 설치.
fedora-invain#> su
fedora-invain#> yum install virt-manager (sudo aptitude install virt-manager)
fedora-invain#>
fedora-invain#>
가상화 매니저(vrit-manager)를 이용하여 생성된 OS이미지는 아래의
디렉토리에 위치한다.
fedora-invain#> /var/lib/libvirt/images/
합계 2696748
drwx—— 2 root root        4096 2009-12-14 13:40 .
drwxr-xr-x 9 root root        4096 2009-10-19 20:20 ..
-rw——- 1 root root 16106127360 2009-12-14 20:31 Ubuntu910.img
4. 이미지 기반의 데비안 5.03 Lenny Guest 만들기
fedora-invain#> man virt-install
리눅스 설치 시디를 이용하여 GuestOS를 만들고자 할 경우의 방법이다.
fedora-invain#> virt-install –connect qemu:///system -n vm10 -r 512 –vcpus=2 -f ~/vm10.qcow2 -s 12 -c /dev/cdrom –vnc –noautoconsole –os-type=linux –os-variant=debianlenny –accelerate –network=bridge:virbr0 –hvm
fedora-invain#>
리눅스 ISO 이미지를 이용하여 GuestOS를 만들고자 할 경우의 방법이다.
fedora-invain#> wget http://ftp.kr.debian.org/debian-cd/5.0.3/i386/iso-cd/debian-503-i386-netinst.iso  (150M, debian Lenny ver 5.03)
fedora-invain#> virt-install –connect qemu:///system -n vm10 -r 512 –vcpus=2 -f ~/vm10.qcow2 -s 12 -c debian-503-i386-netinst.iso –vnc –noautoconsole –os-type=linux –os-variant=debianlenny –accelerate –network=bridge:virbr0 –hvm
fedora-invain#>
fedora-invain#>
5. Guest에 접속하기
fedora-invain#> virt-manager    ( GUI  관리 프로그램)
– “Error determining default hypervisor. ” 에러 메세지가 보인다면 무시해도 됨.
–  fedora kvm 호스트에 연결하기 위해 File > Add Connection . . .
 . Hypervisor: QEMU/kvm
 . Connection: Remote tunnel over SSH
 . Name: –
 . Hostname: 75.2.179.52
fedora-invain#> virsh –connect qemu:///system
fedora-invain#> start vm10
fedora-invain#> quit
“debian-503-i386-netinst.iso”이미지로 데비안 설치시에 네트웍이 안되는 경우
최소설치를 하도록 한다. 그리고나서, 부팅을 하면 Xorg은 지원이 되지않고,
콘솔만 지원이 되는것을 확인할수 있다. Xorg의 Gnome환경을 위해서
debian503#> apt-get update
debian503#> apt-get upgrade
debian503#> apt-get install xorg scim*
debian503#> vi /etc/default/locale
LANG=”en”
debian503#> uname -a
Linux debian-invain 2.6.26-2-686 #1 SMP Wed Aug 19 06:06:52 UTC2009  i686 GNU/Linux
debian503#> startx
debian503#> /etc/init.d/networking start
debian503#> /etc/init.d/network-manager start
을 차례대로 실행한다.
6. kvm 게스트 관리
fedora-invain#> virsh –connect qemu:///system
virsh # help
virsh # list
virsh # list –all
Id Name                 State
———————————-
 2 vm10                 running
virsh # quit
fedora-invain#> virsh –connect qemu:///system
fedora-invain#> define /etc/libvirt/qemu/vm10.xml
virsh #
virsh # start vm10
virsh # shutdown vm10
virsh # destroy vm10
virsh # suspend vm10
virsh # resume vm10
virsh # quit
fedora-invain#>
7. LVM 기반 GUEST생성하기
fedora-invain#> vgdisplay
fedora-invain#> lvdisplay
fedora-invain#> lvcreate -L20G -n vm11 vg_server1
fedora-invain#> virt-install –connect qemu:///system -n vm11 -r 512 –vcpus=2 –disk path=/dev/vg_server1/vm11 -c ~/debian-500-amd64-netinst.iso –vnc –noautoconsole –os-type linux –os-variant debianlenny –accelerate –network=bridge:br0 –hvm
fedora-invain#>
fedora-invain#>
8. 이미지 기반 Guest –> LVM기반 Guest으로 변환하기
fedora-invain#> virsh –connect qemu:///system
virsh # shutdown vm10
virsh # quit
virsh #
fedora-invain#> lvcreate -L12G -n vm10 vg_server1
fedora-invain#> dd bs=1M if=/dev/zero of=/dev/vg_server1/vm10
qemu-img convert ~/vm10.qcow2 -O raw /dev/vg_server1/vm10
fedora-invain#> rm -f ~/vm10.qcow2
fedora-invain#> vi /etc/libvirt/qemu/vm10.xml
[…]
   < disk type=’file’ device=’disk’>
     < source file=’/root/vm10.qcow2’/>
     < target dev=’vda’ bus=’virtio’/>
   < /disk>
[…]
————————————————-
[…]
   < disk type=’block’ device=’disk’>
     < source dev=’/dev/vg_server1/vm10’/>
     < target dev=’vda’ bus=’virtio’/>
   < /disk>
[…]
fedora-invain#> virsh –connect qemu:///system
fedora-invain#> define /etc/libvirt/qemu/vm10.xml
virsh #  start vm10
virsh #  quit
fedora-invain#>
fedora-invain#>
fedora-invain#>
이상.

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

5 Responses

  1. gate.io 말해보세요:

    I have read your article carefully and I agree with you very much. This has provided a great help for my thesis writing, and I will seriously improve it. However, I don’t know much about a certain place. Can you help me?

  2. gate.io 말해보세요:

    Your article made me suddenly realize that I am writing a thesis on gate.io. After reading your article, I have a different way of thinking, thank you. However, I still have some doubts, can you help me? Thanks.

  3. Bossa jazz 말해보세요:

    Bossa jazz

  4. chicago night jazz 말해보세요:

    chicago night jazz

  5. Thanks for sharing. I read many of your blog posts, cool, your blog is very good.

페이스북/트위트/구글 계정으로 댓글 가능합니다.