RHEL6 기반 KVM 가상화 시스템 구축하기
RHEL6 기반 KVM 가상화 시스템 구축하기
작성자 : 서진우 ( alang@clunix.com )
작성일 : 2011년 4월 11일
1. Kernel-based Virtual Machine (KVM) 이란
가상화란 기술에는 많은 방식이 있다. 근래 가상화 기술에 가장 많이 나오는 용어가
full virtualization(전가상화) 와 para-virtualization(반가상화) 이다.
full virtualization 은 물리적인 하드웨어 전체를 hypervisor단에서 가상화시켜
가상머신(GuestOS)에 제공하는 환경이다. 전통적으로 사용되던 하드웨어 에뮬레이터
가상화 방식에 비해 빠르지만, 모든 처리를 hypervisor에서 중계함으로 실제 성능
보다는 낮다. (대표적인 솔루션이 vmware 이다.)
para-virtualization 는 hypervisor를 통해 물리적인 하드웨어에 접근하는 형태는
전가상화 방식과 유사하지만, GuestOS가 hypervisor에 맞게 최적화되어 제공함으로
전가상화에 비해 보다 더 높은 성능을 발휘한다. (대표적인 솔루션이 Xen이다)
KVM의 경우 전가상화의 성능 저하 및 기타 문제를 해결하기 위한 하나의 해법으로
나온 기술이라 볼수 있다.
KVM은 리눅스 커널을 커널 모듈을 이용하여 hypervisor로 전환한다는 점에서
전가상화 방식이라 볼수 있다. 즉 hypervisor가 물리적인 하드웨어 전체에
직접 접근하지만, 이 hypervisor 자체가 실제 리눅스 커널의 모듈 형태로 제공
한다는 점에서 전 가상화에 비해 나은 성능과 가상화 관리 환경을 제공하게
된다.
본 문서는 KVM을 이용하여 가상화 시스템 환경을 구축하고, 운영에 필요한
관리 방법에 대해 알아보도록 한다.
가상화에 대한 자세한 부가 설명은 아래 자료를 참고하길 바란다.
http://blog.syszone.co.kr/2974
http://blog.syszone.co.kr/2884
http://blog.syszone.co.kr/category/85
2. KVM 설치 전 기본 환경 준비
2.1 가상화 확장 기능 확인
KVM을 사용하기 위해서는 장착된 프로세서에서 Intel VT나 AMD-V 기능이 포함되어
있어야 한다. 이를 확인 하는 방법은 아래와 같다.
– Intel CPU
# cat /proc/cpuinfo | grep vmx
– AMD CPU
# cat /proc/cpuinfo | grep svm
cpuinfo 의 flags 정보에 vmx or svm 이 포함되어 있다면 해당 시스템에 KVM을 이용하여
가상화 환경 구현이 가능하다.
2.2 Bridge 네트워크 환경 구성
KVM을 통해 기본적으로 가상화 운영체제 (Guest OS)를 설치하면 NAT 기반으로 사설 네트워크
환경에서 동작하게 된다. Guest OS를 실제 네트워크 환경에 포함시키기 위해서는 host OS의
네트워크 환경이 bridge 기반으로 구성될 필요가 있다.
일단 bridge 구성에 필요한 bridge-utils 패키지를 설치 한다.
# yum install bridge-utils
host OS 네트워크 환경을 bridge 구성으로 전환한다.
# chkconfig –level 345 NetworkManager off
# /etc/rc.d/init.d/NetworkManager stop
# /etc/rc.d/init.d/network restart
# cd /etc/sysconfig/network-scripts/
# vi ifcfg-eth0
—————————————————————————————
DEVICE=”eth0″
HWADDR=”00:25:90:22:3B:2E”
BOOTPROT=static
ONBOOT=”yes”
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
BRIDGE=br0
—————————————————————————————
# vi ifcfg-br0
—————————————————————————————
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
GATEWAY=192.168.123.254
IPADDR=192.168.123.40
NETMASK=255.255.255.0
ONBOOT=yes
—————————————————————————————
# vi ifcfg-eth1
—————————————————————————————
DEVICE=”eth1″
HWADDR=”00:25:90:22:3B:2F”
BOOTPROT=static
ONBOOT=”yes”
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
BRIDGE=br1
—————————————————————————————
# vi ifcfg-br1
—————————————————————————————
DEVICE=br1
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.123.60
NETMASK=255.255.255.0
ONBOOT=yes
—————————————————————————————
# /etc/rc.d/init.d/network restart
# ifconfig
—————————————————————————————
br0 Link encap:Ethernet HWaddr 00:25:90:22:3B:2E
inet addr:192.168.123.40 Bcast:192.168.123.255 Mask:255.255.255.0
inet6 addr: fe80::225:90ff:fe22:3b2e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:39 errors:0 dropped:0 overruns:0 frame:0
TX packets:58 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3238 (3.1 KiB) TX bytes:11585 (11.3 KiB)
br1 Link encap:Ethernet HWaddr 00:25:90:22:3B:2F
inet addr:192.168.123.60 Bcast:192.168.123.255 Mask:255.255.255.0
inet6 addr: fe80::225:90ff:fe22:3b2f/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:27 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:4943 (4.8 KiB)
eth0 Link encap:Ethernet HWaddr 00:25:90:22:3B:2E
inet6 addr: fe80::225:90ff:fe22:3b2e/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:10407645 errors:0 dropped:0 overruns:0 frame:0
TX packets:11541935 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:9816320504 (9.1 GiB) TX bytes:13960651544 (13.0 GiB)
Memory:faee0000-faf00000
eth1 Link encap:Ethernet HWaddr 00:25:90:22:3B:2F
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:fafe0000-fb000000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1460131 errors:0 dropped:0 overruns:0 frame:0
TX packets:1460131 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3566989451 (3.3 GiB) TX bytes:3566989451 (3.3 GiB)
———————————————————————————
위와 같이 bridge device를 여러개로 구성한 이유는 여러대의 가상머신이 동시에 운영될때
가상머신의 네트워크 장치를 각각 여러개의 물리적인 네트워크 장치로 분산시키기 위함이다.
# /etc/rc.d/init.d/libvirtd restart
3. KVM 환경 구축 하기
3.1 RHEL6 Host OS 환경
KVM 가상화를 계획한 상태에서 RHEL6를 설치하는 거라면 패키지 그룹 중 아래 그룹에
소속된 모든 패키지를 설치한다.
@virtualization
@virtualization-client
@virtualization-platform
@virtualization-tools
만일 Host OS로 RHEL6를 설치 시 가상화 계획이 없다가, 이후 KVM을 통해 가상화를 원할
경우 RHEL6 RPM 중 qemu, kvm, spice, virt keyword 가 들어 있는 모든 패키지를 설치한다.
qemu-kvm-0.12.1.2-2.113.el6.x86_64
qemu-kvm-tools-0.12.1.2-2.113.el6.x86_64
cairo-spice-1.8.7.1-4.el6.x86_64
spice-server-0.4.2-15.el6.x86_64
spice-client-0.4.2-18.el6.x86_64
pixman-spice-0.13.3-5.el6.x86_64
ffmpeg-spice-libs-0.4.9-0.15.5spice.20080908.el6.x86_64
libvirt-cim-0.5.8-3.el6.x86_64
virt-manager-0.8.7-1.noarch
virt-viewer-0.2.1-2.el6.x86_64
libvirt-java-0.4.5-2.el6.noarch
fence-virtd-serial-0.2.1-5.el6.x86_64
virt-top-1.0.4-3.1.el6.x86_64
libvirt-0.8.1-27.el6.x86_64
libvirt-devel-0.8.1-27.el6.x86_64
fence-virtd-libvirt-0.2.1-5.el6.x86_64
python-virtinst-0.500.3-7.el6.noarch
libvirt-java-devel-0.4.5-2.el6.noarch
libvirt-client-0.8.1-27.el6.x86_64
libvirt-python-0.8.1-27.el6.x86_64
fence-virtd-multicast-0.2.1-5.el6.x86_64
virt-v2v-0.6.2-4.el6.x86_64
libvirt-qpid-0.2.22-3.el6.x86_64
fence-virtd-0.2.1-5.el6.x86_64
qemu-img-0.12.1.2-2.113.el6.x86_64
gpxe-roms-qemu-0.9.7-6.3.el6.noarch
libguestfs-java-1.2.7-1.24.el6.x86_64
libguestfs-tools-1.2.7-1.24.el6.x86_64
perl-libguestfs-1.2.7-1.24.el6.x86_64
libguestfs-mount-1.2.7-1.24.el6.x86_64
libguestfs-1.2.7-1.24.el6.x86_64
3.2 RHEL5.4+ Host OS 환경
Host OS 가 RHEL5.4+ 버전일 경우의 패키지 구성은 아래와 같다.
kmod-kvm : kvm kernel module(s)
kvm : Kernel-based Virtual Machine
kvm-qemu-img : Qemu disk image utility
kvm-tools : KVM debugging and diagnostics tools
python-virtinst : Python modules and utilities for installing virtual machines
virt-manager : Virtual Machine Manager (GUI app, to install and configure VMs)
virt-viewer: Virtual Machine Viewer (another lightweight app to view VM console and/or install VMs)
bridge-utils : Utilities for configuring the Linux Ethernet bridge (this is recommended for KVM networking)
# yum groupinstall KVM
3.3 KVM 관련 주요 디렉토리 구성
패키지 설치가 완료된 상태의 KVM 가상화 관련 디렉토리 구조는 아래와 같다.
/etc/libvirt/
– 기본 설정 디렉토리
/etc/libvirt/qemu/
– 가상머신(VM)의 상세 설정 파일이 존재하는 디렉토리
xml 파일 형태로 존재하며, virt-manger 혹은 virsh edit <vm_name> 명령으로 수정이
가능하다.
/etc/libvirt/qemu/networks/
– KVM 가상 머신의 네트워크 환경 설정 디렉토리 .
기본적으로 NAT로 구성되며, 성능 향상을 위해서는 bridge 기반으로 재구성해야함.
/etc/libvirt/qemu/networks/default.xml
– The default NAT configuration used by NAT device virbr0.
/var/log/libvirt/
– The default log file directory. All VM specific logs files are stored here.
/etc/libvirt/libvirtd.conf
– Master libvirtd configuration file.
/etc/libvirt/qemu.conf
– Master configuration file for the QEMU driver.
/var/lib/libvrit/images
– 기본 VM 이미지 저장소. virt-manger를 통해 외부 저장소를 등록할 수 있다.
3.4 virt-manager 에 spice 기능 추가 하기
spice protocol을 이용하여 kvm으로 구성된 VM 의 graphic 관련 성능을 향상 시킬수 있다.
RHEL6 의 기본 설치되는 virt-manager 의 경우 spice의 기능 항목이 포함되지 않았다.
spice 기능이 포함된 virt-manager를 이용하기 위해서는 아래 두가지 추가 작업을 해야한다.
– virt-manager version upgrade
RHEL6 를 기본 설치 하면 virt-manager-0.8.4-8 가 설치된다. spice가 추가된 virt-manager
를 이용하기 위해서는 virt-manager-0.8.7 이상 버전을 사용해야 한다.
그리고 python-virtinst 역시 0.500.6 버전 이상을 설치 해야 한다.
wget http://virt-manager.et.redhat.com/download/sources/virtinst/virtinst-0.500.6.tar.gz
wget http://virt-manager.et.redhat.com/download/sources/virt-manager/virt-manager-0.8.7.tar.gz
# tar xzvf virtinst-0.500.6.tar.gz
# cd virtinst-0.500.6
# python setup.py install
# tar xzvf virt-manager-0.8.7.tar.gz
# cd virt-manager-0.8.7
# ./configure
# make rpm
# rpm -Uvh /root/rpmbuild/RPMS/noarch/virt-manager-0.8.7-1.el6.noarch.rpm
4.Guest OS 설치하기
Guest OS를 설치하는 방법은 크게 virt-manager를 이용한 방법과 command 를 이용한
방법 두가지가 있다.
Guest OS 설치 시 사용할 수 있는 명령은 virt-install 과 qemu-kvm 이다.
# virt-install –connect qemu:///system -n <vm_name> -r <mem_size> -vcpu <core_num> -f <vmimage_path> -s <disk_size> -c <install_media_path> –vnc –os-type=windows –accelerate –hvm
아래는 virt-install 명령을 이용한 몇가지 응용 설치 명령 예제이다.
– 기본 설치 방법
# virt-install –connect qemu:///system -n desktop_xp1 -r 2048 –vcpu 2 -f /home/vdimage/winxp01.qcow2 -s 40 -c /home/WindowsXP3/WindowsXP3.iso –vnc –os-type=windows –accelerate –hvm
– nfs 저장소를 이용한 원격 설치 방법
# virt-install –connect qemu:///system -n rhel5 -r 2048 –vcpus=2 -f /vos/HardDisks/rhel5.qcow2 -s 20 –vnc –os-type=linux –accelerate –hvm –location=nfs:192.168.123.2:/data1/os/rhes5/rhel5.5 –extra-args=”linux askmethod”
– Guest OS 네트워크 환경을 bridge 장치로 구성 (Linux)
# virt-install –connect qemu:///system -n rhel5 -r 2048 -c rhel5_5.iso –vcpus=2 -f /vos/HardDisks/rhel5.qcow2 -s 20 –vnc –os-type=linux –accelerate –network bridge:br0 –hvm
– Guest OS 네트워크 환경을 bridge 장치로 구성 (windows)
# virt-install –connect qemu:///system -n win7 -r 2048 -f /vos/HardDisks/win7.qcow2 -s 20 -c GRMCkPRFRER_KO_DVD.iso –vnc –os-type=windows –accelerate –network bridge:br0 –hvm
– Display 를 spice, vga를 qxl 로 직접 구성 (windows)
# virt-install –connect qemu:///system -n desktop_xp0 -r 2048 –vcpu 2 -f /home/vdimage/winxp00.qcow2 -s 40 -c /home/WindowsXP3/WindowsXP3.iso –os-type=windows –accelerate –hvm –network bridge=br0,model=virtio –graphics=spice –video=qxl
# /usr/libexec/spicec -h localhost -p 5901
5. VM 주요 관리 방법
5.1 Guest OS 성능 개선 방법
– video driver 변경 (QXL)
# virsh edit <vm_name>
——————————————————————————————
.
<video>
<model type=’vga’ vram=’9216′ heads=’1’/>
<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x02′ function=’0x0’/>
</video>
.
을 아래와 같이 변경
<video>
<model type=’qxl’ vram=’33000′ heads=’1’/>
<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x02′ function=’0x0’/>
</video>
——————————————————————————————-
windows guest 의 경우 http://www.spice-space.org/download 에서 qxl drvier 다운로드 후,
driver 업데이트를 진행한다.
# wget http://www.spice-space.org/download/binaries/qxl-win32-0.6.1.zip
– display 접속 방식 변경 (Spice)
# virsh edit <vm_name>
——————————————————————————————-
.
<graphics type=’vnc’ port=’-1′ autoport=’yes’ keymap=’en-us’/>
을 아래로 변경 .
<graphics type=’spice’ autoport=’yes’ listen=’0.0.0.0’/>
.
——————————————————————————————
– disk driver 변경 (virtio -> virtual scsi controller, cache mode -> writeback )
# virsh edit <vm_name>
————————————————————————————–
.
<disk type=’file’ device=’disk’>
<driver name=’qemu’ type=’raw’ cache=’none’/>
<source file=’/home/vdimage/winxp03.qcow2’/>
<target dev=’hda’ bus=’ide’/>
<address type=’drive’ controller=’0′ bus=’0′ unit=’0’/>
</disk>
을 아래로 변경
<disk type=’file’ device=’disk’>
<driver name=’qemu’ type=’raw’ cache=’writeback’/>
<source file=’/home/vdimage/winxp01.qcow2’/>
<target dev=’hda’ bus=’virtio’/>
<address type=’drive’ controller=’0′ bus=’0′ unit=’0’/>
</disk>
.
—————————————————————————————-
단 guest OS 가 windows 일 경우에는 virtio 상태로 운영체제를 설치할 수 없기에
IDE로 설치한 후, 별도의 non-system type의 disk 를 virtio 방식으로 추가를 한다.
그런 후 windows vm 을 부팅한후, virtio driver를 업데이트 한다.
reboot 후 해당 디스크를 포맷하여, VM OS 상에 virtio Disk 를 완전히 인식 가능하게
한다. 다시 VM을 종료한 후, virt-manger 상에서 추가된 virtio disk 를 제거하고,
운영체제가 설치된 IDE Disk1 의 Disk bus 설정을 IDE 에서 Virtio 로 변경한다.
다시 VM OS를 실행하고, 정상적으로 부팅하는지를 확인한다.
– network 구성 변경 (bridge, virtio)
# virsh edit <vm_name>
——————————————————————————————
.
<interface type=’network’>
<mac address=’52:54:00:41:b0:29’/>
<source network=’default’/>
<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x03′ function=’0x0’/>
</interface>
.
을 아래와 같이 변경
<interface type=’bridge’>
<mac address=’52:54:00:41:b0:29’/>
<source bridge=’br0’/>
<target dev=’vnet0’/>
<model type=’virtio’/>
<address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x03′ function=’0x0’/>
</interface>
—————————————————————————————–
virtio network driver는 아래에서 구할 수 있다.
wget http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/virtio-win-1.1.16.iso
지금까지의 vm의 설정 변경은 위의 방식과 같이 command 상에서도 가능하고, virt-manger GUI
환경에서도 수정이 가능하다.
5.2 KVM 주요 관리 팁
– Guest OS 의 clone OS 생성하기
# virt-clone -o <원본VM_name> -n <복제VM_name> -f <복제VM image file>
# virt-clone -o desktop_xp3 -n desktop_xp2 -f winxp02.qcow2
– Default Virtaul Netwrok 비활성화 하기
기본 NAT 구성을 하지 않을 경우 virbr0를 비활성화 시키는 방법이다.
# virsh net-autostart default –disable
# virsh net-destroy default
– qemu 명령을 통해 직접 VM 실행 방법
KVM에서 VM을 일관성 있게 관리하기 위해 VM 실행을 가급적 virt-manager 혹은 virsh 명령을
통해 실행하고 관리한다. 하지만 이를 위해서는 VM 이미지 파일 이외의 KVM VM 관련 설정이
모두 존재해 한다. 만일 단순히 VM 이미지 파일만 존재할때, 이를 실행하기 위해서는 qemu
명령을 직접 수행하여 VM을 실행할 수 있다.
RHEL6
# /usr/libexec/qemu-kvm -m 2048 -smp 2 -name desktop_xp4 -drive file=/home/vdimage/winxp01-clone.qcow2 -vga qxl -spice port=5900,disable-ticketing
RHEL5
# /usr/libexec/qemu-kvm -m 2048 -smp 2 -name windows_xp -drive file=/xfs/vfs/winxp00.qcow2 -qxl 1,ram=256 -spice port=5900,disable-ticketing
KVM 을 RHEL6 (virt-manager 0.8)에서 구성한 경우라면, virt-manager를 실행하고 “기존이미지 불러오기”
를 통해 기존 이미지를 쉽게 KVM에 등록하고 사용이 가능하다. 단 RHEL5 (virt-manager 0.6) 에서는
기존 이미지를 바로 불러서 virt-manager 에 등록하는 기능이 없다. virt-manager에 기존 이미지를 등록
하기 위해서는 virsh 명령을 이용해야 한다.
– 기존 VM 이미지 파일을 이용하여 KVM 에 VM 등록하기
RHEL5 기반의 KVM 의 경우 VM 이미지 파일만으로 virt-manager 에 기존 VM을 등록하기 어렵다.
이때 virsh 명령을 이용하여 몇가지 수동적인 작업을 해 줘야 한다.
1. /etc/libvirt/qemu 에 해당 이미지의 기존 xml 설정 파일이나 표준 xml 샘플 파일을 복사해 둔다.
2. uuidgen 명령을 통해 새로운 VM uid 를 생성하고, 이를 xml 파일에 적용한다.
# uuidgen
63369b94-61bd-4070-b31e-ee1499a0c667
# vi <vm_configfile.xml>
————————————————————————-
<domain type=’kvm’>
<name>windows_xp00</name> -> vm_name 수정
<uuid>63369b94-61bd-4070-b31e-ee1499a0c667</uuid> -> uuidgen 으로 받은 uid 적용
.
3. virsh define 명령으로 새로운 xml 설정 파일을 시스템에 반영
# virsh define windows_xp00.xml
4. virsh edit 명령으로 수동 등록한 xml 파일의 내용을 현재 시스템 상태에 맞게 변경
# virsh edit windows_xp00
————————————————————————–
<domain type=’kvm’>
<name>windows_xp00</name>
<uuid>63369b94-61bd-4070-b31e-ee1499a0c667</uuid>
<memory>2097152</memory> -> 메모리 지정
<currentMemory>2097152</currentMemory>
.
<os>
<type arch=’x86_64′ machine=’rhel5.5.0′>hvm</type> -> 운영체제 버전에 맞게 수정
<boot dev=’hd’/>
</os>
.
<disk type=’file’ device=’disk’>
<driver name=’qemu’ type=’raw’ cache=’none’/>
<source file=’/xfs/vfs/winxp00.qcow2’/> -> 기존 이미지 파일 위치 지정
<target dev=’hda’ bus=’ide’/>
<address type=’drive’ controller=’0′ bus=’0′ unit=’0’/>
</disk>
.
—————————————————————————-
가급적 xml 파일은 가장 기본적인 상태의 시스템 표준 설정을 사용하길 권장한다.
display 설정은 가급적 vnc 기본 상태로 ..
<graphics type=’vnc’ port=’-1′ autoport=’yes’ keymap=’en-us’/>
vga 설정은 기본 vga로 ..
<video>
<model type=’vga’ vram=’9216′ heads=’1’/>
</video>
5. virsh start <vm_name>
xml 설정이 정상적이라면 virsh start 로 정상적으로 VM 실행이 가능할 것이다.
# virsh start windows_xp00
도메인 windows_xp00가 시작됨
virt-viewer 명령으로 VM의 display 확인.
# virt-viewer windows_xp00
5.3 virsh 명령어를 통한 KVM 관리 방법
– Hypervisor 접속하기
# virsh -c qemu:///system
– 모든 VM 리스트 확인
# virsh list –all
————————————————-
8 desktop_xp0 실행중
– desktop_xp1 종료
– desktop_xp2 종료
– desktop_xp3 종료
– desktop_xp4 종료
– desktop_xp5 종료
– desktop_xp6 종료
– RHEL6_00 종료
– 사전에 정의된 VM 실행하기
# virsh start <vm_name>
– 실행 중인 VM 리스트 확인
# virsh list
Id 이름 상태
———————————-
7 desktop_xp1 실행중
8 desktop_xp2 실행중
9 desktop_xp3 실행중
10 desktop_xp4 실행중
– 실행 중인 VM shutdown
# virsh list
# virsh shutdown <vm_name>
# virsh shutdown desktop_xp1
# virsh shutdown 7
– 실행 중인 VM reboot
# virsh list
# virsh reboot <vm_name>
# virsh reboot desktop_xp4
# virsh reboot 10
– 실행 중인 VM 강제 종료하기
# virsh list
# virsh destroy <vm_name>
– 실행 중인 VM 의 정보 확인
# virsh list
# virsh dominfo <vm_name>
# virsh dominfo desktop_xp4
—————————————————————————-
Id: 10
이름: desktop_xp4
UUID: 83087882-2ba1-fb27-c11c-3eef6ed8da72
OS 유형: hvm
상태: 실행중
CPU: 2
CPU 시간: 40.7s
최대 메모리: 2097152 kB
사용된 메모리: 2097152 kB
Persistent: yes
Autostart: 비활성화됨
모안 모델: selinux
보안 DOI: 0
보안 레이블: system_u:system_r:svirt_t:s0:c418,c712 (enforcing)
——————————————————————————
– KVM Hosts machine 정보 확인
# virsh nodeinfo
——————————————————————————
CPU 모델: x86_64
CPU: 16
CPU 주파수: 1600 MHz
CPU 소켓: 2
소켓당 코어: 4
코어당 스레드: 2
NUMA cell: 2
메모리 용량: 24599776 kB
——————————————————————————
우와 정말 깔끔하게 다 정리해 놓으셨네요 ;;
제가 몇달 걸려 삽질했던 것들이 잘 나와있습니다.. 미리 알았으면 좋았을 것을 ㅠㅠ
대단하세요 ㅎㅎ
maxpaper님께서 고생하시면서 얻으신 내용이 더 의미 있을듯 합니다.
사실 직접 고생해서 답을 어렵게 얻고난 뒤에, 돌아보면 이미 주위에 답이 존재한 경우들이 많더군요. ㅎㅎ
Your article helped me a lot, is there any more related content? Thanks!
Great information shared.. really enjoyed reading this post thank you author for sharing this post .. appreciated
I just like the helpful information you provide in your articles