目录
一、简介
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-edit -d study02 /etc/hostname
4.virt-df
类似于df -h用于查看虚拟机磁盘信息
5.virt-copy-out/virt-copy-in
类似于scp命令,把虚拟机中的文件远程复制到宿主机中或者把宿主机中的文件远程复制到虚拟机中。
virt-copy-out -d study02 /etc/os-release ./
virt-copy-in -d study02 /etc/hostname /opt/
virt-cat -d study02 /opt/hostname
拷贝宿主机的hostname文件到虚拟机study02
6.guestmount
在一些使用场景中,直接把虚机镜像文件挂接在本地系统中,也是一个简便的办法。
guestmount -d 虚拟机名 -m 磁盘路径 --rw 挂载点
如果事先不知道虚机内部分区的路径信息,则可以使用参数-i来让guestmount自己决定使用哪一个磁盘路径,挂载后,进入mnt目录下就是myvm01的根目录,可以进行正常操作。
guestmount -d study02 -i --rw /mnt
将/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