KVM虛擬機磁盤管理和快照管理及虛擬機克隆-04

KVM磁盤的格式介紹

KVM支持的虛擬磁盤類型有raw、qcow2

  • raw磁盤格式介紹
    原始格式是磁盤映像的純二進制映像,非常便於移植。在支持稀疏文件的文件系統上,這種格式的圖像只使用其中記錄的數據實際使用的空間。你隨便dd一個file就模擬了一個raw格式的鏡像。由於裸的徹底,性能上來說的話還是不錯的。目前來看,KVM和XEN默認的格式好像還是這個格式。因爲其原始,有很多原生的特性,例如直接掛載也是一件簡單的事情。
  1. 格式簡單支持鏡像格式的轉換,平時也會被用在中間格式轉換,

  2. 支持磁盤容量的擴容和減少

  3. 不支持創建snapshot(虛擬機快照),
    它並不存儲元數據,因此可以作爲保證虛擬機兼容性的候選方案。然而,也正因爲它不存儲元數據,因此不能支持某些高級特性,比如快照和壓縮等

    稀疏文件介紹:稀疏文件與其他普通文件基本相同,區別在於文件中的部分數據是全0,且這部分數據不佔用磁盤空間

    元數據(Metadata),又稱中介數據、中繼數據,爲描述數據的數據(data about data),主要是描述數據屬性(property)的信息,用來支持如指示存儲位置、歷史數據、資源查找、文件記錄等功能。

  • qcow2磁盤格式介紹
    現在比較主流的一種虛擬化鏡像格式,經過一代的優化,目前qcow2的性能上接近raw裸格式的性能,對於qcow2的格式,幾點還是比較突出的,qcow2的snapshot,可以在鏡像上做N多個快照
  1. 按需進行分配磁盤空間,不管文件系統是否支持
  2. 支持快照
  3. 支持zlib的磁盤壓縮
  4. 支持AES的加密

AES:密碼學中的高級加密標準(Advanced Encryption Standard,AES),又稱Rijndael加密法,是美國聯邦政府採用的一種區塊加密標準。

講了raw和qcow2格式後我們瞭解一下vmdk磁盤格式

  • vmdk磁盤格式介紹
    VMDK(VMWareVirtual Machine Disk Format)是虛擬機VMware創建的虛擬硬盤格式,文件存在於VMware文件系統中,被稱爲VMFS(虛擬機文件系統)。一個VMDK文件代表VMFS在虛擬機上的一個物理硬盤驅動。所有用戶數據和有關虛擬服務器的配置信息都存儲在VMDK文件中,VMware環境當中默認使用的磁盤格式

創建raw和qcow2格式的磁盤

創建raw格式的磁盤,kvm默認使用的格式

[root@localhost ~]# qemu-img create /kvm/data/rawtest-01.raw 5G
Formatting ‘/kvm/data/rawtest-01.raw’, fmt=raw size=5368709120
[root@localhost ~]# qemu-img info /kvm/data/rawtest-01.raw
image: /kvm/data/rawtest-01.raw
file format: raw
virtual size: 5.0G (5368709120 bytes)
disk size: 0

創建qcow2格式的磁盤

[root@localhost ~]# qemu-img create -f qcow2 /kvm/data/qcow2-test01.qcow2 5G
Formatting ‘/kvm/data/qcow2-test01.qcow2’, fmt=qcow2 size=5368709120 encryption=off cluster_size=65536 lazy_refcounts=off
[root@localhost ~]# qemu-img info /kvm/data/qcow2-test01.qcow2
image: /kvm/data/qcow2-test01.qcow2
file format: qcow2
virtual size: 5.0G (5368709120 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false

對之前創建的虛擬機進行磁盤格式轉化
語法格式:qemu-img convert -f fmt -O output_fmt filename output_filename

[root@localhost data]# pwd
/kvm/data
[root@localhost data]# ls
qcow2-test01.qcow2 vm-storage-01.qcow2 vmtest-edit-01.img
rawtest-01.raw vmtest02.img vnc_centos.qcow2
[root@localhost data]# qemu-img info vmtest-edit-01.img
image: vmtest-edit-01.img
file format: raw
virtual size: 8.0G (8589934592 bytes)
disk size: 3.7G
[root@localhost data]# qemu-img convert -f raw -O qcow2 vmtest-edit-01.img vmtest_qcow_disk.qcow2

在這裏插入圖片描述
接下來我們對虛擬機的配置文件進行修改,其虛擬機調用qcow2的磁盤文件

[root@localhost data]# virsh edit  Centos7.4-01
-----省略部分代碼-----
  <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>  #將磁盤格式修改爲我們剛纔轉換的qcow2格式
      <source file='/kvm/data/vmtest_qcow_disk.qcow2'/>  #路徑爲剛纔轉換後的路徑
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>
-----省略部分代碼-----

啓動虛擬機Centos7.4-01
這時候我們就可以刪除之前虛擬機raw磁盤格式的文件

[root@localhost data]# rm -rf /kvm/data/vmtest-edit-01.img
[root@localhost data]# virsh start Centos7.4-01
域 Centos7.4-01 已開始

虛擬機快照管理

接下來我們說一下快照,要注意的是,如果你沒有選擇將磁盤格式轉化爲qcow2格式的話,是不支持快照功能的。我們現在有2個虛擬機,分別是兩種不同格式的磁盤,一個qcow2,一個raw,那麼我們就將這兩個虛擬機做一個對比。
Snapshot (help keyword ‘snapshot’)
snapshot-create 使用 XML 生成快照
snapshot-create-as 使用一組參數生成快照
snapshot-current 獲取或者設定當前快照
snapshot-delete 刪除域快照
snapshot-dumpxml 爲域快照轉儲 XML
snapshot-edit 編輯快照 XML
snapshot-info 快照信息
snapshot-list 爲域列出快照
snapshot-parent 獲取快照的上級快照名稱
snapshot-revert 將域轉換爲快照

使用raw磁盤格式創建快照

[root@localhost data]# virsh snapshot-create vmtest02
錯誤:unsupported configuration: internal snapshot for disk vda unsupported for storage type raw
創建快照是出現這個信息表示當前虛擬機的格式raw,需要將磁盤格式轉爲qcow2的格式

使用qcow2磁盤格式創建快照
需要注意的是,做快照後,磁盤空間會變大,因爲快照被會佔用磁盤空間,所以說是內部快照,創建完成後會生成一個快照名稱,這個快照名稱是根據Unix時間戳來生成的
語法格式:virsh snapshot-create <vmname>
在這裏插入圖片描述

查看快照列表

[root@localhost data]# virsh snapshot-list Centos7.4-01
名稱 生成時間 狀態
------------------------------------------------------------
1574827343 2019-11-26 23:02:23 -0500 running

恢復快照

[root@localhost data]# virsh snapshot-lrevert Centos7.4-01 1574827343

刪除指定快照
在這裏插入圖片描述

KVM虛擬機克隆

  • 通過爲KVM虛擬機安裝操作系統只是安裝最基本的操作系統模板。這是必須的,因爲每個虛擬機都需要操作系統。實際應用過程中,主要是基於操作系統安裝好環境之後,再作爲業務模板,方便快速部署或者遷移等。

  • 克隆KVM虛擬機使用到的命令是virt-clone,該工具主要用來克隆虛擬機,也可以使用一系列參數對克隆出的新虛擬機進行定製化。

  • 需要注意的是,virt-clone不會修改Guest OS內的任何信息,它僅僅只是複製虛擬機磁盤並在宿主機端做一些修改。所以,類似修改密碼、設置靜態IP地址等都無法通過virt-clone來完成。
    虛擬機克隆方式主要有兩種:完整克隆(自動克隆),(手動克隆)

virt-clone命令的用法
選項:optional arguments:
-h, --help show this help message and exit
–version show program’s version number and exit
–connect URI 通過 libvirt URI 連接到虛擬機管理程序

通用選項:
-o ORIGINAL_GUEST, --original ORIGINAL_GUEST
原始客戶機名稱;必須爲關閉或者暫停狀
態。
–original-xml ORIGINAL_XML
將 XML 文件用於原始客戶機。
–auto-clone 從原始客戶機配置中自動生成克隆名稱和
存儲路徑。
-n NEW_NAME, --name NEW_NAME
新客戶機的名稱
–reflink 使用 btrfs COW 輕量副本

存儲配置:
-f NEW_DISKFILE, --file NEW_DISKFILE
爲新客戶機使用新的磁盤鏡像文件
–force-copy TARGET 強制複製設備(例如:如果 ‘hdc’
是隻讀光驅設備,則使用 --force-copy=hdc)
–nonsparse 不使用稀疏文件作爲克隆的磁盤鏡像
–preserve-data 不克隆存儲,通過 --file
參數指定的新磁盤鏡像將保留不變

聯網配置:
-m NEW_MAC, --mac NEW_MAC
爲克隆客戶機生成新的固定 MAC
地址。默認爲隨機生成 MAC。

其它選項:
–replace 不檢查命名衝突,覆蓋任何使用相同名稱
的客戶機。
–print-xml 打印生成的 XML 域,而不是創建客戶機。
–check CHECK 啓用或禁用驗證檢查。例如:
–check path_in_use=off
–check all=off
-q, --quiet 抑制非錯誤輸出
-d, --debug 輸入故障排除信息

自動克隆(完整克隆)

使用virt-clone克隆虛擬機Centos7.4-01,克隆後虛擬機起名爲kvm-cone-01
需要注意的是虛擬機進行克隆時需要在關機狀態下進行
在這裏插入圖片描述

手動克隆

很簡單的一條命令,就已經完成了克隆。那麼,我們除了用這條命令能夠克隆之外,我們想一下,能不能夠用手動的方式克隆那?答案是可以的,kvm的虛擬機有2兩個文件,一個磁盤,一個配置文件,好的,那麼我們就來手動的克隆一臺虛擬機。
基於虛擬機Centos7.4-01進行克隆
配置文件路徑:/etc/libvirt/qemu/Centos7.4-01.xml
虛擬磁盤路徑:/kvm/data/vmtest_qcow_disk.qcow2
在克隆之前我們先將剛纔克隆的虛擬機刪除掉,刪除之前需要對剛纔克隆的kvm-clone-01啓動並且關機一次,不然刪除時會出現報錯

[root@localhost ~]# virsh destroy kvm-clone-01
錯誤:刪除域 kvm-clone-01 失敗
錯誤:Requested operation is not valid: domain is not running
[root@localhost ~]# virsh start kvm-clone-01
域 kvm-clone-01 已開始
[root@localhost ~]# virsh shutdown kvm-clone-01
域 kvm-clone-01 被關閉
[root@localhost ~]# virsh destroy kvm-clone-01
域 kvm-clone-01 被刪除
[root@localhost ~]# virsh undefine kvm-clone-01
域 kvm-clone-01 已經被取消定義
[root@localhost ~]# rm -rf /kvm/data/vmtest_qcow_disk-clone.qcow2
需要注意的是使用undefine刪除虛擬機時只會刪除配置文件信息,虛擬磁盤文件還是存在的

手動克隆虛擬機
其實就是將需要的克隆的虛擬機的配置文件和磁盤文件cp一份,修改配置文件的相應的信息

備份Centos7.4-01虛擬機配置文件爲clone-kvm-01
[root@localhost qemu]# virsh dumpxml Centos7.4-01 > /etc/libvirt/qemu/clone-kvm-01.xml
[root@localhost qemu]# ls /etc/libvirt/qemu
autostart Centos7.4-01.xml clone-kvm-01.xml csdn_vm-01.xml networks vmtest02.xml
備份磁盤文件
[root@localhost qemu]# cd /kvm/data/
[root@localhost data]# ls
qcow2-test01.qcow2 vm-storage-01.qcow2 vmtest_qcow_disk.qcow2
rawtest-01.raw vmtest02.img vnc_centos.qcow2
[root@localhost data]# cp vmtest_qcow_disk.qcow2 clone-kvm-01.qcow2

修改克隆後配置文件信息clone-kvm-01.xml
[root@localhost ~]#  vim /etc/libvirt/qemu/clone-kvm-01.xml 
a:  <name>clone-kvm</name> 
b: 刪除UUID
c: 刪除mac address
d: 修改虛擬機磁盤路徑及名字 <source file='/kvm/data/clone-kvm-01.qcow2'/>

導入配置修改好的配置文件信息

[root@localhost qemu]# virsh   define  /etc/libvirt/qemu/clone-kvm-01.xml  
定義域 clone-kvm-01(從 /etc/libvirt/qemu/clone-kvm-01.xml)
[root@localhost qemu]# virsh   list  --all  
 Id    名稱                         狀態
----------------------------------------------------
 -     Centos7.4-01                   關閉
 -     clone-kvm-01                   關閉
 -     csdn_vm-01                     關閉
 -     vmtest02                       關閉

[root@localhost qemu]# virsh   start clone-kvm-01
域 clone-kvm-01 已開始
發佈了16 篇原創文章 · 獲贊 6 · 訪問量 2866
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章