天天看點

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預設使用的格式

[[email protected] ~]# qemu-img create /kvm/data/rawtest-01.raw 5G

Formatting ‘/kvm/data/rawtest-01.raw’, fmt=raw size=5368709120

[[email protected] ~]# 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格式的磁盤

[[email protected] ~]# 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

[[email protected] ~]# 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

[[email protected] data]# pwd

/kvm/data

[[email protected] data]# ls

qcow2-test01.qcow2 vm-storage-01.qcow2 vmtest-edit-01.img

rawtest-01.raw vmtest02.img vnc_centos.qcow2

[[email protected] 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

[[email protected] data]# qemu-img convert -f raw -O qcow2 vmtest-edit-01.img vmtest_qcow_disk.qcow2

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

接下來我們對虛拟機的配置檔案進行修改,其虛拟機調用qcow2的磁盤檔案

[[email protected] 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磁盤格式的檔案

[[email protected] data]# rm -rf /kvm/data/vmtest-edit-01.img

[[email protected] 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磁盤格式建立快照

[[email protected] 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>

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

檢視快照清單

[[email protected] data]# virsh snapshot-list Centos7.4-01

名稱 生成時間 狀态

------------------------------------------------------------

1574827343 2019-11-26 23:02:23 -0500 running

恢複快照

[[email protected] data]# virsh snapshot-lrevert Centos7.4-01 1574827343

删除指定快照

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

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虛拟機磁盤管理和快照管理及虛拟機克隆-04
手動克隆

很簡單的一條指令,就已經完成了克隆。那麼,我們除了用這條指令能夠克隆之外,我們想一下,能不能夠用手動的方式克隆那?答案是可以的,kvm的虛拟機有2兩個檔案,一個磁盤,一個配置檔案,好的,那麼我們就來手動的克隆一台虛拟機。

基于虛拟機Centos7.4-01進行克隆

配置檔案路徑:/etc/libvirt/qemu/Centos7.4-01.xml

虛拟磁盤路徑:/kvm/data/vmtest_qcow_disk.qcow2

在克隆之前我們先将剛才克隆的虛拟機删除掉,删除之前需要對剛才克隆的kvm-clone-01啟動并且關機一次,不然删除時會出現報錯

[[email protected] ~]# virsh destroy kvm-clone-01

錯誤:删除域 kvm-clone-01 失敗

錯誤:Requested operation is not valid: domain is not running

[[email protected] ~]# virsh start kvm-clone-01

域 kvm-clone-01 已開始

[[email protected] ~]# virsh shutdown kvm-clone-01

域 kvm-clone-01 被關閉

[[email protected] ~]# virsh destroy kvm-clone-01

域 kvm-clone-01 被删除

[[email protected] ~]# virsh undefine kvm-clone-01

域 kvm-clone-01 已經被取消定義

[[email protected] ~]# rm -rf /kvm/data/vmtest_qcow_disk-clone.qcow2

需要注意的是使用undefine删除虛拟機時隻會删除配置檔案資訊,虛拟磁盤檔案還是存在的

手動克隆虛拟機

其實就是将需要的克隆的虛拟機的配置檔案和磁盤檔案cp一份,修改配置檔案的相應的資訊

備份Centos7.4-01虛拟機配置檔案為clone-kvm-01

[[email protected] qemu]# virsh dumpxml Centos7.4-01 > /etc/libvirt/qemu/clone-kvm-01.xml

[[email protected] qemu]# ls /etc/libvirt/qemu

autostart Centos7.4-01.xml

clone-kvm-01.xml

csdn_vm-01.xml networks vmtest02.xml

備份磁盤檔案

[[email protected] qemu]# cd /kvm/data/

[[email protected] data]# ls

qcow2-test01.qcow2 vm-storage-01.qcow2 vmtest_qcow_disk.qcow2

rawtest-01.raw vmtest02.img vnc_centos.qcow2

[[email protected] data]# cp vmtest_qcow_disk.qcow2 clone-kvm-01.qcow2

修改克隆後配置檔案資訊clone-kvm-01.xml
[[email protected] ~]#  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'/>
           

導入配置修改好的配置檔案資訊

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

[[email protected] qemu]# virsh   start clone-kvm-01
域 clone-kvm-01 已開始
           

繼續閱讀