使用KVM需要以下幾個前提條件:
1. CPU必需支持虛擬化,可以在/proc/cpuinfo文件中想找flags,如果是inter的顯示爲vmx,amd的顯示爲svm
2. CPU必需支持64位操作系統,可以在上述文件中查找lm標記,如果有則支持
3. 系統必需爲64爲的RHEL,且系統版本爲RHEL6.4及以上爲最佳
4. 必需在BIOS裏開啓CPU的VT功能
KVM虛擬機文件管理:
默認的KVM虛擬機工作目錄爲/var/lib/libvirt
配置文件存在於/etc/libvirt/qemu/目錄下,以主機名稱+xml結尾的文件即其相關虛擬機的配置文件,需要修改其配置,也可以直接修改xml文件實現(不建議)。其中autostart目錄定義的配置文件會隨主機一起啓動,而network定義了虛擬機使用橋接網絡時的網關網卡的相關配置。
KVM配置實例:
1. 配置安裝RHEL6/Centos 6服務器,並安裝虛擬化軟件
#yum groupinstall -y "Virtualization" "Virtualization Client" "Virtualization Platform" "Virtualization Tools"
2. 添加開機啓動,並啓動服務
#chkconfig libvirtd on
#service libvirtd start
3. 鏡像文件管理--直接創建
創建一個鏡像:# cd /var/lib/libvirt/images ; qemu-img create -f qcow2 test1.img 5G
更改鏡像格式:# qemu-img convert -f raw -o qcow2 test.img test1.img
增加鏡像文件空間: # qemu-img resize test1.img 1G
查看鏡像文件格式:# qemu-img info test1.img
4. 除了鏡像來管理存儲,kvm還支持存儲池
定義存儲池:virsh pool-define-as kvm_images dir "/kvm/images"
查看存儲池:virsh pool-list --all
建立基於文件夾的存儲池:virsh pool-build kvm_images
使存儲池生效:virsh pool-start kvm_images
驗證存儲池:virsh pool-info kvm_images
創建完存儲池後,就可以通過創建卷的方法來創建虛擬機的磁盤:
創建卷:virsh vol-create-as kvm_images test1.img 10G --format qcow2
刷新池:virsh pool-refresh kvm_images
查看存儲池裏面的卷信息:virsh vol-list kvm_images
查看單個卷的信息:virsh vol-info test1.img kvm_images
查看單個卷的詳細信息:virsh vol-dumpxml test1.img kvm_images
5. 使用virt-install初始化安裝一個Centos系統
# virt-install --connect qemu:///system \ #如果使用kvm安裝,並且使用的root,默認爲此,基於xen或者其它,可參考man virt-install
--n test1 \ #指定虛擬機的顯示名稱
--c /mnt/centos6.4-x86_64.iso #指定安裝鏡像,也可以指定cdrom直接安裝,如:-c /dev/sr0
--r 2048 \ #指定內存,默認爲MB
--arch=x86_64 \ #指定arch模型
--vcpus=2 --check-cpu --cpuset=0-1 \ #指定cpu0,1作爲虛擬機的CPU,此處綁定了CPU
--os-type=linux --os-variant=rhel6 \ #指定系統類型和版本
--disk path=/var/lib/libvirt/images/test1.img,device=disk,bus=virtio,spare=true -s 10 \ #指定磁盤信息,使用virtio驅動加載
--network bridge=br0 \ #指定橋接模式,並指定通過br0網卡進行橋接
--noautoconsol --autostart \ #不自動開啓控制檯,並且隨主機自啓動
--vnc #提供vnc端口訪問,在這裏可以設置密碼,也可以不設置
--force
6. 虛擬機管理--virsh
虛擬機狀態管理:
開機:virsh start test1
關機:virsh shutdown test1
強制關機:virsh destroy test1
重新啓動:virsh reboot test1
通過配置文檔啓動主機:virsh create /etc/libvirt/qemu/test1.xml
查看主機狀態:virsh list --all
停止/掛機虛擬機:virsh suspend test1
保存虛擬機:virsh save test1
還原虛擬機:virsh resume test1
從一個已存在的設備配置文件新建一個虛擬機:
virsh dumpxml test1 >/etc/libvirt/qemu/test2.xml
qemu-img create -f qcow2 test2.img 20G
這時需要對其配置中的uuid,id,name,以及新的硬盤鏡像文件,mac地址等信息進行更改,更改完成後,就可以通過下面的命令啓動虛擬機的安安
virsh create /etc/libvirt/qemu/test2.xml
修改內存/CPU:
修改內存大小:virsh setmem test1 4G #默認單位爲KB
設置內存的最大值:virsh setmaxmem test1 8G
增大VCPU數量:virsh setvcpus test1 8
添加/刪除設備:
添加一塊硬盤:
首先需要創建一個鏡像,但是qemu-img創建的鏡像沒有被處理過(分區及格式化),因此可以使用libguestfs插件創建一個可以直接使用的磁盤分區:
yum install -y libguestfs
virt-make-fs -F qcow2 -t ext4 -s 50G /var/lib/libvirt/image/test1-1.img
然後將新的磁盤信息錄入到test1.xml文件當中(通過命令virsh edit test1來修改爲佳):
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/image/test1-1.img'/>
<target dev='hdf' bus='virtio' type='virtio'/>
</disk>
最後執行添加設備的命令:
virsh attach-device test1 /etc/libvirt/qemu/test1.xml
如果需要刪除此設備,將xml文件中的設備信息刪除後,執行以下命令即可:
virsh detach-device test1 /etc/libvirt/qemu/test1.xml
備份/還原:
備份:virsh save --bypass-cache test1 /var/lib/libvirt/save/test1_1.save --running
還原:virsh restore /var/lib/libvirt/save/test1_1.save --bypass-cache --running
快照管理:
如果要使用kvm的快照功能,就必須使用qcow2的磁盤格式,而raw只支持內存快照,如果不是,請參考第3節內容修改
查看快照:virsh snapshot-list test1
創建快照:virsh snapshot-create test1 test1.snap1
恢復到快照:virsh snapshot-revert test1 test1.snap1
刪除快照:virsh snapshot-delete test1 test1.snap1
7. KVM虛擬機的遷移
其實瞭解了上面的操作之後,就明白,KVM虛擬機依靠兩個主要文件來啓動,一個是img文件,一個是xml配置文件。因此遷移的時候,可以直接遷移這兩個文件就能實現靜態遷移。如果img文件存放在共享存儲,則更爲方便,只用遷移xml配置文件,就可以實現靜態遷移。
當然,virsh命令也可以遷移虛擬機,不過要求目標主機與當前主機的應用環境須保持一致,其命令格式如下:
virsh migrate --live test1 qemu+tcp//destnationip/system tcp://destnationip
結語:KVM還有許多其它方面的功能,如與VM之間的遷移、windows的擴展支持等功能,如果有興趣的同學,可以參考man手冊,其中已經提供了非常詳細的用法說明。