管理kvm虛擬機命令
virsh uri: 查看當前主機上hypervisor的連接路徑;
virsh connect:
virsh define: 創建一個虛擬機,根據事先定義的xml格式的配置文件;創建以后不會自動啟動(也可以認為是識別新添加的而沒有識別出來的虛擬機--激活);
virsh create: 創建,創建完成后會自動啟動;
virsh undefine: 取消定義的虛擬機(只是針對虛擬機的配置文件的刪除)
virsh list --all 查看虛擬機列表
virsh destroy rhel6 強制關掉虛擬機電源
virt-install --os-variant list
virsh start rhel66 開啟rhel66 或 virsh create /etc/libvirt/qemu/rhel66.xml
virsh shutdown rhel66
virsh reboot rhel66
virsh dominfo centos-A 查看虛擬機的信息
virsh console rhel66
virsh suspend rhel66 掛起
virsh resume rhel66 恢復掛起
virsh pool-list --all #
virsh pool-start vmware_pool #啟動存儲池
virsh pool-destroy vmware_pool #銷毀存儲池
virsh pool-undefine vmware_pool #取消存儲池的定義
virsh pool-info vmware_pool #查看存儲域(池)信息
1.undefine 和 destroy 刪除
如果說一不小心把正在啟動着的 kvm虛擬機配置文件刪掉了,也可以進行恢復的,例如:
# virsh dumpxml centos-C > /etc/libvirt/qemu/centos-C.xml //在關閉虛擬機之前,重新定義一個配置文件即可恢復
如果是在關閉着的服務器上執行的virsh undefine centos-C 刪除命令,則會把對應的配置文件清空,虛擬機再也啟動不了,重新定義也不行
如果在關閉着的kvm虛擬機上運行destroy命令,則會報錯,執行不成功
# virsh destroy kvm-name //此命令只針對運行的kvm虛擬機有效,相當於強制拔電源
如果在運行着的kvm虛擬機上運行此命令,將正在運行的虛擬機強制關閉,此命令可以在kvm卡機,死機,但kvm還未關機的狀態下,執行是最好不過的命令了
# /etc/libvirt/qemu/ 虛擬機xml配置文件目錄
# virsh edit rhel66 編輯xml配置文件,vi編輯的不會立即生效
2.解決virsh shutdown無法關閉KVM虛擬機 (注:以下操作都在客戶機,不是宿主機)
# yum -y install acpid # service acpid restart # chkconfig --level 2345 acpid on # chkconfig acpid --list
3.解決KVM中宿主機通過console無法連接客戶機(注:以下操作都在客戶機,不是宿主機)
a)添加ttyS0的安全許可,允許root登錄:
echo "ttyS0" >> /etc/securetty
b)在/etc/grub.conf文件中為內核添加參數:
console=ttyS0
這步要注意:
console=ttyS0一定要放在kernel這行中(大約在第16行),不能單獨一行,即console=ttyS0是kernel的一個參數,不是單獨的
c)在/etc/inittab中添加agetty:
S0:12345:respawn:/sbin/agetty ttyS0 115200
4.kvm虛擬機的重命名
a)重命名kvm虛擬機最好是將虛擬機先關機,然后再導出其xml文件
# cd /etc/libvirt/qemu
# virsh dumpxml rhel6 > CentOS02.xml
b)為了讓重命名后的虛擬機名字與磁盤文件名一致、我們可以先將之前的磁盤文件命名成CentOS02.img
# cd /var/lib/libvirt/images # mv rhel6.1.img CentOS02.img
c)編輯CentOS02.xml文件,修改<name>標簽對以及磁盤文件,這里我們將磁盤文件修改成CentOS02.img
<domain type='kvm'> <name>CentOS02</name> ...... ...省略...... ...... <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none'/> <source file='/var/lib/libvirt/images/CentOS02.img'/>
d)使用virsh undefine命令刪除之前的虛擬機,根據新的xml文件定義新的kvm虛擬機只是刪除對應的xml配置文件,磁盤文件不會刪除
# virsh undefine rhel6 //刪除rhel6虛擬機 # virsh define /etc/libvirt/qemu/CentOS02.xml //重新定義新的kvm虛
5.克隆的幾種方法:
第一種:直接復制 kvm鏡像文件里的鏡像(/var/lib/libvirt/images)和 Kvm配置文件里的文件(/etc/libvirt/qemu)然后進行修改,啟動即可
第二種:
# virt-clone -o oeltest01 -n oeltest02 -f /var/lib/libvirt/image/test02.img
說明:以oeltest01做為源,克隆oeltest01虛擬機,並創建名稱為oeltest02虛擬機,使用磁盤文件/data/test02.img
第三種:圖形界面克隆(操作略)
6.快照條件:
磁盤鏡像格式,不能是raw格式,不支持,想用快照功能的話,首先要關機,轉換鏡像格式為 qcow 和 qcow2格式,修改配置文件(如下圖1-1),修改其鏡像類型和新的鏡像格式文件,再重新啟動即可
這種將raw格式的鏡像虛擬機轉換成 qcow2格式的鏡像虛擬機,用qemu-img命令進行轉換,最好是從原來的raw格式的鏡像新生成一個新的qcow2格式的磁盤鏡像,在進行配置,方能正常使用;如若在原來的raw鏡像文件上直接做修改,讓其直接變成qcow2格式的鏡像文件,則會毀掉raw(原來的鏡像文件),虛擬機則會起不來
切記千萬不要這樣轉換格式,會使原來的失效,虛擬機就不能用了,被覆蓋了
# qemu-img convert -p -f raw -O qcow2 centos-A.img centos-A.img
注意修改鏡像名字和磁盤類型
7.Kvm 快照 磁盤鏡像管理
Kvm創建鏡像網址(推薦用virsh命令)
http://ilanni.blog.51cto.com/526870/1535627/
創建快照命令 (可以開關機執行此命令均可)
# virsh snapshot-create-as centos centos_snap1
查看虛擬機的快照列表
# virsh snapshot-list centos-X (虛擬機名)
查看虛擬機快照的信息
# virsh snapshot-info centos-X centos-snap1
恢復快照(注意:恢復快照時,虛擬機一定要處於關機狀態下)
# virsh snapshot-revert centos-X centos_snap
刪除快照
# virsh snapshot-delete centos-X centos_snap1
創建磁盤鏡像文件
# qemu-img create /var/lib/libvirt/images/test 20G (raw格式)
創建一個10G的鏡像,格式為qcow2,名字為test.qcow2
# qemu-img create /var/lib/libvirt/images/test.qcow2 -f qcow2 10G
查看磁盤鏡像信息
# qemu-img info /var/lib/libvirt/images/test
鏡像格式的轉換
(使用qemu-img convert 命令進行轉換,在這里原來的test的格式是raw,最后轉換成qcow2格式)
# qemu-img convert -p -f raw -O qcow2 centos-A.img centos-A.qcow2
-p是顯示轉換進度 -f是指原有的鏡像格式, -O是輸出的鏡像格式
切記千萬不要這樣轉換格式,會使原來的失效,被覆蓋了,如果轉換之后的鏡像也不能用,那么兩個鏡像就都廢了,虛擬機就不能用了。
# qemu-img convert -p -f raw -O qcow2 centos-A.img centos-A.img
8.kvm遷移(物理主機之間的kvm虛機) 靜態遷移-----動態遷移
靜態遷移:很好理解,關機,將*.xml配置文件 和.img 或.qcow2磁盤鏡像文件拷貝到目的地物理主機
動態遷移:在線遷移kvm虛擬機,但是不影響正常服務的使用
動態遷移有兩種方法
第一種:就是利用共享nfs服務,進行遷移(不建議使用)
第一種參考網址- - - - > http://www.linuxidc.com/Linux/2012-12/75492p3.htm
口述為:一台nfs服務器、兩台服務器(vm1,vm2)
前提環境是在nfs環境上面搭建的kvm虛擬機,才能遷移,也就是說kvm虛擬機所處在的目錄就是通過配置,將nfs服務器上掛載過來的磁盤,實際使用的空間是nfs服務器,真正運行在的服務器還是虛擬機所處在的物理機,這樣方便遷移
第二種:無共享存儲環境下操作(常用)
從entos6.4開始,支持在線的帶存儲遷移,就時不需要共享存儲也能在線遷移
在進行遷移之前需要注意:兩台物理主機的主機名不能相同,並且都需要添加hosts解析,否則遷移不成功,切記
A: 在備用宿主機上通過qemu-img create 命令創建好空文件,大小和要備份的kvm虛擬機一模一樣,也要注意格式,名稱,大小
# qemu-img create -f qcow2 -o preallocation=metadata centos-X.qcow2 10G
空文件需家預分配參數,否則復制過去的文件會是按照qcow2預分配文件的大小。
B: 設置遷移速度,一般不希望遷移的時候對正常業務造成影響,設置遷移速度限制到600M/s
# virsh migrate-setspeed centos-X 600
C: 開始遷移
# virsh migrate --live --copy-storage-all --unsafe centos-X qemu+ssh://192.168.4.211/system
遷移時間隨磁盤空間大小而不同,磁盤空間越大,遷移時間越長。遷移的過程是先遷移磁盤,然后遷移內存,遷移內存的時候,一般業務會瞬斷下,虛擬機一瞬間會在一邊關閉,另一邊的宿主機開啟
提示:遷移速度和成功率與網絡有很大的關系,宿主機的網絡盡量是萬兆或者千兆多網卡綁定,可以提高遷移速度和成功率
用循環進行監測,是否啟動
for ((i=1;i>0;i++)) ; do virsh list; sleep 2; done
擴展:
Kvm宿主機系統崩潰的修復方法:
(1) 如果是系統故障,使用引導盤進入rescue 模式修復系統故障,無法修復或修復時間無法預計時,重裝kvm宿主機系統
(2) 如果不能修復,重裝宿主機系統
在重裝系統之前,建議先用LiveCD啟動機器,建立nfs,現將虛擬機相關鏡像文件,xml配置文件復制到備用的宿主機上,在備用宿主機上開啟虛擬機,先恢復業務,然后對系統進入徹底重裝