目錄
本文包括KVM虛擬化操作中的:
基本命令操作、虛擬機刪除與恢復、虛擬機自啓動、虛擬機克隆、虛擬機鏡像操作
1、基本操作指令
[root@linux-node1 /]# virsh shutdown CentOS-7.1-x86_64
域 CentOS-7.1-x86_64 被關閉
[root@linux-node1 /]# virsh start CentOS-7.1-x86_64
域 CentOS-7.1-x86_64 已開始
[root@linux-node1 /]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
2 CentOS-7.1-x86_64 running
[root@linux-node1 /]# virsh suspend CentOS-7.1-x86_64
域 CentOS-7.1-x86_64 被掛起
[root@linux-node1 /]# virsh resume CentOS-7.1-x86_64
域 CentOS-7.1-x86_64 被重新恢復
[root@linux-node1 ~]# virsh dominfo CentOS-7.1-x86_64
Id: 1
名稱: CentOS-7.1-x86_64
UUID: 2e66d4f3-96b4-43ad-9da1-b5007f110c23
OS 類型: hvm
狀態: running
CPU: 1
CPU 時間: 643.7s
最大內存: 1048576 KiB
使用的內存: 1048576 KiB
持久: 是
自動啓動: 啓用
管理的保存: 否
安全性模式: none
安全性 DOI: 0
2、vm刪除與恢復
# 刪除vm
[root@linux-node1 qemu]# cd /etc/libvirt/qemu
[root@linux-node1 qemu]# ls
CentOS-7.1-x86_64.xml networks
[root@linux-node1 qemu]# virsh undefine CentOS-7.1-x86_64
域 CentOS-7.1-x86_64 已經被取消定義
# 此時雖然running,一旦關閉vm就會消失
[root@linux-node1 qemu]# virsh list
Id 名稱 狀態
----------------------------------------------------
2 CentOS-7.1-x86_64 running
[root@linux-node1 qemu]# ls
networks
# 備份當前運行vm狀態,生成備份配置文件
[root@linux-node1 qemu]# virsh dumpxml CentOS-7.1-x86_64 > kvm1.xml
[root@linux-node1 qemu]# ls
kvm1.xml networks
# 關閉虛擬機,vm已消失
[root@linux-node1 qemu]# virsh shutdown CentOS-7.1-x86_64
域 CentOS-7.1-x86_64 被關閉
[root@linux-node1 qemu]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
# vm加載備份配置文件,恢復虛擬機
[root@linux-node1 qemu]# virsh define kvm1.xml
定義域 CentOS-7.1-x86_64(從 kvm1.xml)
[root@linux-node1 qemu]# virsh list --all
Id 名稱 狀態
----------------------------------------------------
- CentOS-7.1-x86_64 關閉
[root@linux-node1 qemu]# virsh start CentOS-7.1-x86_64
域 CentOS-7.1-x86_64 已開始
[root@linux-node1 qemu]# virsh list
Id 名稱 狀態
----------------------------------------------------
3 CentOS-7.1-x86_64 running
# 相應配置文件已自動重新生成
[root@linux-node1 qemu]# ls
CentOS-7.1-x86_64.xml kvm1.xml networks
3、設置vm自啓動
[root@linux-node1 qemu]# virsh autostart CentOS-7.1-x86_64
域 CentOS-7.1-x86_64標記爲自動開始
[root@linux-node1 qemu]# ls
autostart CentOS-7.1-x86_64.xml kvm1.xml networks
[root@linux-node1 qemu]# cat autostart/
cat: autostart/: 是一個目錄
[root@linux-node1 qemu]#
[root@linux-node1 qemu]# ll autostart/
總用量 0
lrwxrwxrwx 1 root root 39 4月 10 19:00 CentOS-7.1-x86_64.xml -> /etc/libvirt/qemu/CentOS-7.1-x86_64.xml
4、vm克隆
# virt-clone命令直接克隆(命令遷移)
[root@linux-node1 qemu]# virsh shutdown CentOS-7.1-x86_64
域 CentOS-7.1-x86_64 被關閉
[root@linux-node1 qemu]# virt-clone -o CentOS-7.1-x86_64 -n centos7 -f /opt/centos7.img --check all=off
等待克隆成功即可。
#因爲直接克隆後vnc端口設置-1,隨機,mac地址,UUID也都是隨機
#所以在開機之前先根據編寫好的mac地址與vnc端口進行編輯xml配置文件
<graphics type='vnc' port='5913' autoport='no' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
#vm在克隆後,會出現網卡衝突,需要修改此配置文件
vi /etc/udev/rules.d/70-persistent-net.rules
# 拷貝xml與disk文件克隆(異機遷移)
[root@linux-node1 qemu]# cp /opt/CentOS-7.1-x86_64.raw /opt/newvm.raw # 複製虛擬機文件
[root@linux-node1 qemu]# cp /etc/libvirt/qemu/CentOS-7.1-x86_64.xml /etc/libvirt/qemu/newvm.xml # 複製配置文件
[root@linux-node1 qemu]# vim newvm.xml # 修改爲實際新的配置
<name>newvm</name>
<uuid>cce3195a-4fd6-4fcd-8f4b-5757021e2330</uuid>
...
<source file='/opt/newvm.img'/>
...
<mac address='52:54:00:37:5f:a6'/>
...
<graphics type='vnc' port='5914' autoport='no' listen='0.0.0.0'>
[root@linux-node1 qemu]# virsh define newvm.xml # 加載配置文件定義虛擬機
[root@linux-node1 qemu]# virsh start newvm # 啓動
[root@linux-node1 qemu]# virsh console newvm # 連接到客戶會話
5、vm快照
# 首先關閉vm
[root@linux-node1 qemu]# virsh shutdown CentOS-7.1-x86_64
域 CentOS-7.1-x86_64 被關閉
# 默認raw磁盤不支持快照
# kvm虛擬機默認使用raw格式的鏡像格式,性能最好,速度最快,它的缺點就是不支持一些新的功能,如支持鏡像,zlib磁盤壓縮,AES加密等。
[root@linux-node1 qemu]# cd /opt/
[root@linux-node1 opt]# qemu-img info CentOS-7.1-x86_64.raw
image: CentOS-7.1-x86_64.raw
file format: raw
virtual size: 5.0G (5368709120 bytes)
disk size: 1.3G
# 轉換鏡像格式,虛擬機必須先關機
[root@linux-node1 opt]# qemu-img convert -f raw -O qcow2 CentOS-7.1-x86_64.raw CentOS-7.1-x86_64.qcow2
[root@linux-node1 opt]# ll
總用量 3644904
-rw-r--r-- 1 root root 1385365504 4月 10 19:45 CentOS-7.1-x86_64.qcow2
-rw-r--r-- 1 qemu qemu 5368709120 4月 10 20:06 CentOS-7.1-x86_64.raw
-rw-r--r-- 1 qemu qemu 950009856 4月 10 14:50 CentOS-7-x86_64-DVD-1503-01.iso
# 修改配置文件的disk模塊,把磁盤改成最新的qcow2的這個文件,同時格式也改成qcow2的
[root@linux-node1 opt]# virsh edit CentOS-7.1-x86_64
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/opt/CentOS-7.1-x86_64.qcow2'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
# 生成快照
[root@linux-node1 opt]# virsh shutdown CentOS-7.1-x86_64
[root@linux-node1 opt]# virsh start CentOS-7.1-x86_64
[root@linux-node1 opt]# virsh snapshot-create CentOS-7.1-x86_64
已生成域快照 1586528255
[root@linux-node1 opt]# virsh snapshot-info CentOS-7.1-x86_64 1586528255
名稱: 1586528255
域: CentOS-7.1-x86_64
當前: 是
狀態: running
位置: 內部
上級: -
下級: 0
降序: 0
元數據: 是
# 快照存放目錄已有文件生成
[root@linux-node1 snapshot]# ls /var/lib/libvirt/qemu/snapshot
CentOS-7.1-x86_64
# 恢復快照到某個版本
[root@linux-node1 CentOS-7.1-x86_64]# virsh snapshot-list CentOS-7.1-x86_64
名稱 生成時間 狀態
------------------------------------------------------------
1586528255 2020-04-10 22:17:35 +0800 running
1586528708 2020-04-10 22:25:08 +0800 running
1586528743 2020-04-10 22:25:43 +0800 running
[root@linux-node1 CentOS-7.1-x86_64]# virsh snapshot-revert CentOS-7.1-x86_64 1586528255
# 刪除快照
[root@linux-node1 CentOS-7.1-x86_64]# virsh snapshot-delete CentOS-7.1-x86_64 1586528708
已刪除域快照 1586528708