virt-sparsify –compress ${ori_img_path} ${dest_img_path} 告警(WARNING)tmp不足。
~]# df -h
Filesystem Size Used Avail Use% Mounted on
... ...
/dev/sda5 1.6T 88G 1.5T 6% /data
~]# mkdir /data/tmp
~]# chmod 1777 /data/tmp/
~]# export TEMP=/data/tmp
~]# export TMPDIR=/data/tmp
如此可以解决virt-sparsify 压缩镜像tmp空间不足的告警,但是该配置变量只在当前terminal生效,如果需要永久生效可以将变量编辑到/etc/profile里。
~]# echo 'export TEMP=/data/tmp' >> /etc/profile
~]# echo 'export TMPDIR=/data/tmp' >> /etc/profile
~]# source /etc/profile
# 备注:该配置影响全局
virt-sparsify:回收 Empty 磁盘空间
virt-sparsify 命令行工具可用于生成虚拟机磁盘(或任何磁盘镜像)稀疏。这也被称为精简配置。磁盘镜像上的可用磁盘空间转换为主机上可用空间。
virt-sparsify 可以针对任何磁盘镜像操作,而不只是虚拟机磁盘镜像。
警告
使用 此命令之前,必须 关闭虚拟机。另外,不应同时编辑磁盘镜像。
命令也可用于在某些磁盘格式间进行转换。例如,virt-sparsify 可以将原始磁盘镜像转换为精简置备的 qcow2 镜像。
注意
如果虚拟机有多个磁盘并使用卷管理,virt-sparsify 将正常工作,但它不会非常有效。
如果输入是 raw sparse。输出镜像的大小必须使用了解稀疏性的工具进行检查。
ls -lh test1.img -rw-rw-r--. 1 rjones rjones 100M Aug 8 08:08 test1.img $ du -sh test1.img 3.6M test1.img
请注意,du 命令可以正确地显示到 3.6M 的镜像大小。
重要限制
以下是一些重要限制列表:
-
在使用 前必须关闭虚拟机。
-
在最糟糕的情况中,virt-sparsify 可能需要最多 2 个源磁盘镜像的虚拟大小。用于临时复制,另一个用于目标镜像。如果您使用
--in-place
选项,则不需要大量的临时空间。 -
virt-resize。
-
virt-sparsify 无法使用加密磁盘,因为加密磁盘无法被解析。
-
virt-sparsify 无法对分区之间的空间进行解析。此空间通常用于引导加载程序等关键项目,因此这不是实际未使用的空间。
-
在
复制
模式中,qcow2 内部快照不会复制到目的地镜像。
示例
要安装
virt-sparsify
,请运行以下命令之一:
yum install /usr/bin/virt-sparsify
或
yum install libguestfs-tools-c
sparsify 一个磁盘:
virt-sparsify /dev/sda1 /dev/device
将
/dev/device
的格式。
在格式间进行转换:
disk.qcow2
尝试在源磁盘镜像中找到的每个文件系统上归零并报出可用空间。
要防止特定文件系统上的零覆盖可用空间:
/dev/sda1 /dev/device
从磁盘镜像中的所有文件系统创建稳定的磁盘映像,而不会用零覆盖文件系统上的可用空间。
在不创建临时副本的情况下生成磁盘镜像稀疏:
disk.img
使指定的磁盘镜像稀疏,覆盖镜像文件。
virt-sparsify 选项
以下命令选项可用于 virt-sparsify:
virt-sparsify 选项
命令 | 描述 | 示例 |
---|---|---|
--help |
显示有关特定命令或 virt-sparsify 实用程序的简短帮助条目。详情请查看 virt-sparsify man page。
|
virt-sparsify --help |
--check-tmpdir 失败
|
估计,如果 tmpdir 有足够的空间来完成操作。如果没有足够的空间来完成操作,则指定选项将决定该行为。
--in-place 选项一起使用。
|
/dev/sda1 /dev/device
/dev/sda1 /dev/device
/dev/sda1 /dev/device
/dev/sda1 /dev/device
|
--compress | 压缩输出文件。--in-place 选项一起使用。 | /dev/sda1 /dev/device |
--convert |
使用指定格式创建稀疏镜像。如果没有指定格式,则使用输入格式。
支持以下输出格式并已知可以正常工作:raw、qcow、vdi
您可以使用 QEMU 模拟器支持的任何格式。
建议您使用
virt-sparsify 不需要猜测输入格式。
这个选项不能与
--in-place 选项一起使用。
|
/dev/sda1 /dev/device
/dev/sda1 /dev/device
other_format indisk outdisk
|
--format | 指定输入磁盘镜像的格式。如果没有指定,则会从镜像中检测到格式。在使用不受信任的原始格式客户机磁盘镜像时,请确保指定格式。 |
/dev/sda1 /dev/device
/dev/sda1 /dev/device
|
--ignore |
忽略指定的文件系统或卷组。
当指定文件系统且未指定
--in-place 选项时,该文件系统将完全忽略。
当指定卷组时,卷组将被忽略。应该在没有 --ignore vg_foo
--ignore 选项可以多次包含在命令中。
|
/dev/sda1 /dev/device
/dev/sda1 /dev/device
|
--in-place |
使镜像稀疏原位,而不是制作临时副本。虽然原位问题比复制问题更高效,但它不能像复制差异一样恢复太多的磁盘空间。使用丢弃(也称为 trim 或 unmap)支持进行原位升级。
要使用原位解析,请指定一个要进行替换的磁盘镜像。
当指定原位升级时,无法使用以下选项:
|
virt-sparsify --in-place disk.img |
-x | 启用 libguestfs API 调用追踪。 | /dev/sda1 /dev/device |