kvm命令總結和虛機器備份遷移


管理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服務器、兩台服務器(vm1vm2 

前提環境是在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配置文件復制到備用的宿主機上,在備用宿主機上開啟虛擬機,先恢復業務,然后對系統進入徹底重裝

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM