目錄
Red Hat Enterprise Linux 7 提供多個 libguestfs 工具,可訪問、編輯和創建客戶機虛擬機磁盤或其他磁盤鏡像。這些工具有多種用途,包括:
- 查看或下載位于客戶機虛擬機磁盤中的文件。
- 在客戶機虛擬機磁盤上編輯或上傳文件。
- 讀取或寫入客戶機虛擬機配置.
- 準備包含文件、目錄、文件系統、分區、邏輯卷和其他選項的新磁盤鏡像。
- 修復無法引導的客戶機虛擬機,或者需要啟動配置更改的客戶機虛擬機。
- 監控客戶機虛擬機的磁盤使用情況.
- 審計客戶虛擬機合規性,例如組織安全標準。
- 通過克隆和修改模板來部署客戶機虛擬機.
- 讀取 CD 和 DVD ISO 映像以及軟盤磁盤映像.
- guestfish
- guestmount
- virt-alignment-scan
- virt-cat
- virt-copy-in
- virt-copy-out
- virt-df
- virt-edit
- virt-filesystems
- virt-inspector
- virt-ls
- virt-rescue
- virt-sysprep
- virt-tar-in
- virt-tar-out
1.virt-inspector
顯示 os 版本、內核、驅動、掛載點、應用等等,執行時間比較長,輸出內容也多 很少使用。
virt-inspector -a /images/kvm/study02.qcow2 > report.xml
virt-inspector -d study02 > report.xml
結果將是一個 XML 報告 (report.xml)。XML 文件的主要組件是一個頂層 <operatingsytems> 元素,它通常包含一個 <operatingsystem> 元素。
2.virt-cat
類似于 cat 命令,參數:-a 需要指定虛擬機儲存文件;-d 需要指定虛擬機名稱,用法相同。
3.virt-edit
類似于 vim,執行命令后在文本編輯器內修改文件內容。例如在下面修改主機名,原主機名為 localhost,修改后主機名為 study02,通過 virt-cat 命令查看主機名已經修改成功。
virt-copy-out -d study02 /etc/os-release ./
virt-copy-in -d study02 /etc/hostname /opt/
virt-cat -d study02 /opt/hostname
4.virt-df
類似于 df -h 用于查看虛擬機磁盤信息
5.virt-copy-out/virt-copy-in
類似于 scp 命令,把虛擬機中的文件遠程復制到宿主機中或者把宿主機中的文件遠程復制到虛擬機中。
# 要指定兩個虛擬機,您必須在第一個 guest 中使用 -a 或 -d 選項,
#第二個客戶機使用 -A 或 -D 選項。
virt-diff -a /images/kvm/study02.qcow2 -A /images/kvm/study03.qcow2
virt-diff -d study02 -D study03
拷貝宿主機的 hostname 文件到虛擬機 study02
6.guestmount
在一些使用場景中,直接把虛機鏡像文件掛接在本地系統中,也是一個簡便的辦法。
# 設置時區
virt-customize -a /images/kvm/study02.qcow2 --timezone "Asia/Shanghai"
# 追加配置
virt-customize -a /images/kvm/study02.qcow2 --append-line '/root/.bash_profile:export LANG="en_US.UTF-8"'
如果事先不知道虛機內部分區的路徑信息,則可以使用參數 - i 來讓 guestmount 自己決定使用哪一個磁盤路徑,掛載后,進入 mnt 目錄下就是 myvm01 的根目錄,可以進行正常操作。
[root@kvm kvm]# ll -h
total 24G
-rw-------. 1 qemu qemu 32G Sep 1 17:34 study01.img
-rw-------. 1 qemu qemu 21G Sep 1 16:47 study02.qcow2
-rw-r--r--. 1 qemu qemu 193K Aug 11 19:03 study03.qcow2
-rw-------. 1 qemu qemu 193K Aug 29 15:29 test1.qcow2
drwxr-xr-x. 2 root root 6 Sep 1 17:34 tmp
-rw-r--r--. 1 root root 1.4G Aug 18 15:46 vmdk-vmware.vmdk
[root@kvm kvm]# virt-sparsify --compress /images/kvm/study02.qcow2 /images/kvm/study02-new.qcow2 --tmp /images/kvm/tmp/
[ 0.1] Create overlay file in /images/kvm/tmp/ to protect source disk
[ 0.1] Examine source disk
[ 4.1] Fill free space in /dev/centos/root with zero
100% ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 00:00
[ 172.6] Fill free space in /dev/sda1 with zero
[ 178.9] Copy to destination and make sparse
[ 369.8] Sparsify operation completed with no errors.
virt-sparsify: Before deleting the old disk, carefully check that the
target disk boots and works correctly.
[root@kvm kvm]# ll -h
total 25G
-rw-------. 1 qemu qemu 32G Sep 1 18:07 study01.img
-rw-r--r--. 1 root root 536M Sep 1 17:40 study02-new.qcow2
-rw-------. 1 qemu qemu 21G Sep 1 16:47 study02.qcow2
-rw-r--r--. 1 qemu qemu 193K Aug 11 19:03 study03.qcow2
-rw-------. 1 qemu qemu 193K Aug 29 15:29 test1.qcow2
drwxr-xr-x. 2 root root 6 Sep 1 17:40 tmp
-rw-r--r--. 1 root root 1.4G Aug 18 15:46 vmdk-vmware.vmdk
將 / mnt 下的掛載進行卸載
7.virt-diff
virt-diff 命令行工具可用于列出兩個虛擬機磁盤映像中的文件差異。輸出顯示了虛擬機運行之后虛擬機磁盤映像的更改。命令也可用于顯示覆蓋的不同。
# 要指定兩個虛擬機,您必須在第一個 guest 中使用 -a 或 -d 選項,
#第二個客戶機使用 -A 或 -D 選項。
virt-diff -a /images/kvm/study02.qcow2 -A /images/kvm/study03.qcow2
virt-diff -d study02 -D study03
8.virt-customize
virt-customize 命令行工具可用于自定義虛擬機,提早安裝和配置虛擬機。例如,通過安裝軟件包并編輯配置文件:
要使用 virt-customize,客戶端虛擬機必須離線,因此您必須在運行命令前關閉它。請注意,virt-customize 修改客戶機或磁盤鏡像而無需復制它。如果要保留客戶端虛擬機的現有內容,則必須首先復制或克隆磁盤。
# 設置時區
virt-customize -a /images/kvm/study02.qcow2 --timezone "Asia/Shanghai"
# 追加配置
virt-customize -a /images/kvm/study02.qcow2 --append-line '/root/.bash_profile:export LANG="en_US.UTF-8"'
9.virt-sparsify
virt-sparsify 命令行工具可用于生成虛擬機磁盤(或任何磁盤鏡像)稀疏。這也被稱為精簡配置。磁盤鏡像上的可用磁盤空間轉換為主機上可用空間。
virt-sparsify 命令可以處理大多數文件系統,如 ext2、ext3、ext4、btrfs、NTFS。它還可用于 LVM 物理卷。virt-sparsify 可以針對任何磁盤鏡像操作,而不只是虛擬機磁盤鏡像。
如下示例命令解釋:使用 virt-sparsify 工具將原鏡像 /images/kvm/study02.qcow2 稀疏,最后得到 study02-new.qcow2。
其中會在 / images/kvm/tmp / 目錄下生成一個臨時文件,其目的是為了保護原鏡像磁盤文件不會損毀。
--tmp 選項可自行指定,也可不用,具體根據服務器的情況來選擇。
virt-sparsify --compress /images/kvm/study02.qcow2 /images/kvm/study02-new.qcow2 --tmp /images/kvm/tmp/
具體操作步驟
[root@kvm kvm]# ll -h
total 24G
-rw-------. 1 qemu qemu 32G Sep 1 17:34 study01.img
-rw-------. 1 qemu qemu 21G Sep 1 16:47 study02.qcow2
-rw-r--r--. 1 qemu qemu 193K Aug 11 19:03 study03.qcow2
-rw-------. 1 qemu qemu 193K Aug 29 15:29 test1.qcow2
drwxr-xr-x. 2 root root 6 Sep 1 17:34 tmp
-rw-r--r--. 1 root root 1.4G Aug 18 15:46 vmdk-vmware.vmdk
[root@kvm kvm]# virt-sparsify --compress /images/kvm/study02.qcow2 /images/kvm/study02-new.qcow2 --tmp /images/kvm/tmp/
[ 0.1] Create overlay file in /images/kvm/tmp/ to protect source disk
[ 0.1] Examine source disk
[ 4.1] Fill free space in /dev/centos/root with zero
100% ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 00:00
[ 172.6] Fill free space in /dev/sda1 with zero
[ 178.9] Copy to destination and make sparse
[ 369.8] Sparsify operation completed with no errors.
virt-sparsify: Before deleting the old disk, carefully check that the
target disk boots and works correctly.
[root@kvm kvm]# ll -h
total 25G
-rw-------. 1 qemu qemu 32G Sep 1 18:07 study01.img
-rw-r--r--. 1 root root 536M Sep 1 17:40 study02-new.qcow2
-rw-------. 1 qemu qemu 21G Sep 1 16:47 study02.qcow2
-rw-r--r--. 1 qemu qemu 193K Aug 11 19:03 study03.qcow2
-rw-------. 1 qemu qemu 193K Aug 29 15:29 test1.qcow2
drwxr-xr-x. 2 root root 6 Sep 1 17:40 tmp
-rw-r--r--. 1 root root 1.4G Aug 18 15:46 vmdk-vmware.vmdk
參考地址:
21.13. virt-diff: 列出虛擬機文件間的差異 | Red Hat Product Documentation