1. 程式人生 > >KVM命令集管理虛擬機

KVM命令集管理虛擬機

兩種 虛擬機克隆 browser delet mem 功能 rev type 明顯

使用KVM命令集管理虛擬機

查看虛擬機狀態

[root@localhost ~]# virsh list --all
 Id    名稱                         狀態
----------------------------------------------------
 2     c01                            running

虛擬機的關機與開機

[root@localhost ~]# virsh shutdown c01
域 c01 被關閉

[root@localhost ~]# virsh list --all
 Id    名稱                         狀態
----------------------------------------------------
 -     c01                            關閉
[root@localhost ~]# virsh start c01
域 c01 已開始

[root@localhost ~]# virsh list --all
 Id    名稱                         狀態
----------------------------------------------------
 3     c01                            running

還有一種強行關機的方式,類似於直接斷電關機的。

[root@localhost ~]# virsh destroy c01
域 c01 被刪除

[root@localhost ~]# virsh list --all
 Id    名稱                         狀態
----------------------------------------------------
 -     c01                            關閉

啟動還有一種通過配置文件啟動虛擬機

[root@localhost ~]# virsh create /etc/libvirt/qemu/c01.xml 
域 c01 被創建(從 /etc/libvirt/qemu/c01.xml)

[root@localhost ~]# virsh list --all
 Id    名稱                         狀態
----------------------------------------------------
 4     c01                            running

掛起和恢復虛擬機

[root@localhost ~]# virsh suspend c01
域 c01 被掛起

[root@localhost ~]# virsh list --all
 Id    名稱                         狀態
----------------------------------------------------
 4     c01                            暫停

掛起後,可以使用下面的命令恢復虛擬機。

[root@localhost ~]# virsh resume c01
域 c01 被重新恢復
[root@localhost ~]# virsh list --all
 Id    名稱                         狀態
----------------------------------------------------
 4     c01                            running

配置虛擬機實例伴隨宿主機自啟動

[root@localhost ~]# virsh autostart c01
域 c01標記為自動開始

導出虛擬機配置

這裏為了下一步刪除虛擬機,先導出一份xml配置文件

[root@localhost ~]# virsh dumpxml c01 > /etc/libvirt/qemu/c02.xml

刪除和添加虛擬機

[root@localhost ~]# virsh shutdown c01
域 c01 被關閉
[root@localhost ~]# virsh undefine c01
錯誤:取消定義域 c01 失敗
錯誤:所需操作無效:無法刪除使用 1 快照的不活躍域

這個錯誤的原因可以明顯看出來,因為之前我對c01做過快照,刪除虛擬機必須要把快照刪除後,在進行undefine

[root@localhost ~]# virsh shutdown c01

[root@localhost ~]# virsh snapshot-delete c01 1533630255
已刪除域快照 1533630255
[root@localhost ~]# virsh undefine c01
域 c01 已經被取消定義

這裏undefine後,c01.xml文件會消失,但是c01.img磁盤文件還在,所以要刪除虛擬機,需要再把c01.img刪除。

[root@localhost ~]# ls /etc/libvirt/qemu/
autostart  c02.xml  networks
[root@localhost ~]# ls /vdir/
c01.img  c01.qcow2
[root@localhost ~]# virsh list --all
 Id    名稱                         狀態
----------------------------------------------------

通過備份的配置文件重新定義虛擬機

[root@localhost ~]# mv /etc/libvirt/qemu/c02.xml /etc/libvirt/qemu/c01.xml
[root@localhost qemu]# virsh define c01.xml
定義域 c01(從 c01.xml)
[root@localhost qemu]# virsh list --all
 Id    名稱                         狀態
----------------------------------------------------
 -     c01                            關閉

KVM文件管理

通過文件管理可以直接查看、修改、復制虛擬機的內部文件。虛擬機磁盤文件有raw和qcow2兩種格式。KVM虛擬機默認使用raw格式,raw格式性能最好,速度最快,但是缺點就是不支持一些新功能,如鏡像、Zlib磁盤壓縮,AES加密。針對兩種格式的文件有不同工具,通過yum安裝libguestfs-tools後產生的命令行工具,可以直接讀取qcow2格式的磁盤文件,所以需要將raw磁盤文件轉換成qcow2的格式。

轉換raw格式磁盤文件至qcow2格式。

查看當前磁盤格式:

[root@localhost vdir]# qemu-img info /vdir/c01.img 
image: /vdir/c01.img
file format: raw
virtual size: 20G (21474836480 bytes)
disk size: 1.1G

將虛擬機關閉後,轉換磁盤文件格式。

[root@localhost vdir]# virsh list --all
 Id    名稱                         狀態
----------------------------------------------------
 -     c01                            關閉

[root@localhost vdir]# qemu-img convert -f raw -O qcow2 /vdir/c01.img /vdir/c01.qcow2
[root@localhost vdir]# ls /vdir/
c01.img  c01.qcow2

修改c01.xml配置文件。

[root@localhost vdir]# vim /etc/libvirt/qemu/c01.xml

 <disk type=‘file‘ device=‘disk‘>
      <driver name=‘qemu‘ type=‘qcow2‘/>
      #這裏的type從raw改成qcow2
      <source file=‘/vdir/c01.qcow2‘/>
      #將源文件類型也要修改
      <target dev=‘vda‘ bus=‘virtio‘/>
      <address type=‘pci‘ domain=‘0x0000‘ bus=‘0x00‘ slot=‘0x06‘ function=‘0x0‘/>
    </disk>

通過yum安裝libguestfs-tools後,可以使用一些命令行工具查看qcow2文件。

[root@localhost vdir]# yum install libguestfd-tools -y

[root@localhost vdir]# virt-cat -a /vdir/c01.qcow2 /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
MAC="52:54:00:AE:FC:8A"

虛擬機克隆

[root@localhost vdir]# virsh list --all
 Id    名稱                         狀態
----------------------------------------------------
 -     c01                            關閉
#保證虛擬機已經關閉
[root@localhost vdir]# virt-clone -o c01 -n c02 -f /vdir/c02.qcow2
WARNING  設置圖形設備端口為自動端口,以避免相互沖突。
WARNING  當卷已經被全部分配後,需要的卷容量將超過可用池空間。(20480 M 需要的容量 > 12822 M 可用容量)
正在分配 ‘c02.qcow2‘                                          |  20 GB  00:00:32     

成功克隆 ‘c02‘。

[root@localhost vdir]# virsh list --all
 Id    名稱                         狀態
----------------------------------------------------
 -     c01                            關閉
 -     c02                            關閉

虛擬機快照

KVM虛擬機要使用鏡像功能,磁盤格式必須為qcow2,下面對c01創建快照。

[root@localhost vdir]# virsh snapshot-create c01
已生成域快照 1533777836

查看虛擬機快照版本信息。

[root@localhost vdir]# virsh snapshot-current c01
<domainsnapshot>
  <name>1533777836</name>
  <state>shutoff</state>
  <creationTime>1533777836</creationTime>
  <memory snapshot=‘no‘/>
  <disks>
  .....省略

查看快照信息

[root@localhost vdir]# virsh snapshot-list c01
 名稱               生成時間              狀態
------------------------------------------------------------
 1533777836           2018-08-09 09:23:56 +0800 shutoff

恢復虛擬機至指定的快照狀態。

[root@localhost vdir]# virsh snapshot-revert c01 1533777836

KVM命令集管理虛擬機