본문 바로가기
  • AI (Artificial Intelligence)
Legacy Skills/VM

CentOS6.3에서 KVM/QEMU 설치 방법

by 로샤스 2014. 4. 18.

  CentOS6.3에서 KVM/QEMU 설치 방법
 =====================================
              2011.12.05

 

* 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이 출력되어야만 한다. 아무것도 출력이 되지 않는 다면,
PC의 BIOS에서 하드웨어 가상화(H/W Virtualization)를 지원하지 않으므로,
virt-manager을 실행하여 KVM이라는 가상화를 정상적으로 실행이 불가능하다.
* vmx flag : Intel CPUs
* svm flag : AMD CPUs
CENT6#> egrep '(vmx|svm)' --color=always /proc/cpuinfo
CENT6#> dmesg | grep kvm
CENT6#> uname -a
Linux localhost.localdomain 2.6.29.6-217.2.3.fc11.i686.PAE #1 SMP Wed Jul 29 16:05:22 EDT 2009


1.2 KVM 모듈 설치
KVM (커널레벨의 가상화 모듈)과 virtinst (가상화 머신을 생성하기 위한 User-Space 툴)을 설치한다.
CENT6#> yum install kvm qemu libvirt python-virtinst
CENT6#> modprobe kvm kvm-intel  (or kvm-amd)
CENT6#> lsmod | grep kvm
kvm_intel              39696  0
kvm                   128388  1 kvm_intel
CENT6#> 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" 서비스 데몬을 시작한다.
CENT6#> /etc/init.d/libvirtd start

KVM이 성공적으로 설치가 되었는지 아래 명령으로 에러가 출력되지 않는지 체크하도록 한다.
CENT6#> virsh -c qemu:///system list
 Id 이름               상태
----------------------------------


2. KVM  네트웍 환경 설정.

가상화머신(virtual machine)이 Host을 통해서 인터넷이 가능하도록 네트웍 브리지를 설정해야 한다.
그리고나서, NetworkManager를 disable한후에 네트웍 설정을 한후에 다시 enable하도록 한다.
CENT6#> yum install bridge-utils
CENT6#> chkconfig NetworkManager off
CENT6#> chkconfig --levels 35 network on
CENT6#> /etc/init.d/network restart
CENT6#> cat /etc/resolv.conf
CENT6#> system-config-network
CENT6#> 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"

CENT6#> 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

CENT6#> reboot
CENT6#> 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 마스크레이딩을 설정해야만 한다.
CENT6#> 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
--------------------------------------------
CENT6#>


3.  GUI 가상화 매니저 설치.
CENT6#> su
CENT6#> yum install virt-manager (sudo aptitude install virt-manager)
CENT6#>
CENT6#>
가상화 매니저(vrit-manager)를 이용하여 생성된 OS이미지는 아래의
디렉토리에 위치한다.
CENT6#> /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. Image 기반의 Debian 5.03 Lenny Guest 만들기

CENT6#> man virt-install

리눅스 설치 시디를 이용하여 GuestOS를 만들고자 할 경우의 방법이다.
CENT6#> 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

CENT6#>
리눅스 ISO 이미지를 이용하여 GuestOS를 만들고자 할 경우의 방법이다.
CENT6#> 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)

CENT6#> 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
CENT6#>
CENT6#>

 

5. Guest에 접속하기
CENT6#> virt-manager    (GUI  관리 프로그램)
- "Error determining default hypervisor. " 에러 메세지가 보인다면 무시해도 됨.
-  CENT6 KVM 호스트에 연결하기 위해 File > Add Connection . . .
  . Hypervisor: QEMU/KVM
  . Connection: Remote tunnel over SSH
  . Name: -
  . Hostname: 75.2.179.52
CENT6#> virsh --connect qemu:///system
CENT6#> start vm10
CENT6#> 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 게스트 관리
CENT6#> virsh --connect qemu:///system
virsh # help
virsh # list
virsh # list --all
 Id Name                 State
----------------------------------
  2 vm10                 running
virsh # quit
CENT6#> virsh --connect qemu:///system
CENT6#> define /etc/libvirt/qemu/vm10.xml
virsh #
virsh # start vm10
virsh # shutdown vm10
virsh # destroy vm10
virsh # suspend vm10
virsh # resume vm10
virsh # quit
CENT6#>

 

7. LVM 기반 GUEST생성하기
CENT6#> vgdisplay
CENT6#> lvdisplay
CENT6#> lvcreate -L20G -n vm11 vg_server1
CENT6#> 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
CENT6#>
CENT6#>


8. 이미지 기반 Guest --> LVM기반 Guest으로 변환하기

CENT6#> virsh --connect qemu:///system
virsh # shutdown vm10
virsh # quit
virsh #
CENT6#> lvcreate -L12G -n vm10 vg_server1
CENT6#> dd bs=1M if=/dev/zero of=/dev/vg_server1/vm10
qemu-img convert ~/vm10.qcow2 -O raw /dev/vg_server1/vm10
CENT6#> rm -f ~/vm10.qcow2
CENT6#> 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>
[...]

CENT6#> virsh --connect qemu:///system
CENT6#> define /etc/libvirt/qemu/vm10.xml
virsh #  start vm10
virsh #  quit
CENT6#>
CENT6#>
CENT6#>

 

END. 










출처 : http://blog.naver.com/invain?Redirect=Log&logNo=80174704563









댓글