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
'Legacy Skills > VM' 카테고리의 다른 글
KVM on CentOS 설치 (1) | 2014.04.18 |
---|---|
CentOS6에 KVM 설치하기 (0) | 2014.04.18 |
가상화의 형태 - 하이퍼바이저[Hypervisor] (0) | 2014.03.25 |
Cisco 클라우드 데이터 센터의 기술들 (0) | 2014.03.25 |
Cisco Nexus 1000V Series Switches Data Sheet.(한글해석) 1편 (0) | 2014.03.25 |
댓글