virt-sparsify工具对KVM虚拟机的虚拟存储块进行压缩
  6FOKnKX7A0pt 2023年11月02日 31 0

一、简介:

virt-sparsify 命令行工具可用于生成虚拟机磁盘(或任何磁盘镜像)稀疏。这也被称为精简配置。磁盘镜像上的可用磁盘空间转换为主机上可用空间。

virt-sparsify 命令可以处理大多数文件系统,如 ext2、ext3、ext4、btrfs、NTFS。它还可用于 LVM 物理卷。virt-sparsify 可以针对任何磁盘镜像操作,而不只是虚拟机磁盘镜像。

下面的内容主要是对kvm虚拟机的虚拟存储块进行压缩优化。


二、背景:

公司机房的服务器上所运行的虚拟机当时设置的磁盘大小为200G,运行了一年后,虚拟机实际还未使用到100G,但是虚拟机存储块已经达到了恐怖214G,这个对实际的物理机受到很大的影响。当时在网上查了一些资料和解决方案,最后我把我觉得最好用最简单的方案记录一下。


三、操作步骤:

#安装工具 virt-sparsify
yum -y install libguestfs-tools-c.x86_64

#后台运行避免时间太长,终端断开,异常停止
nohup virt-sparsify --compress /home/centos-141.qcow2 /home/centos-141-new.qcow2 --tmp /home/1.141/ &
该命令解释一下:使用virt-sparsify工具将原镜像/home/centos-141.qcow2 稀疏,最后得到/home/centos-141-new.qcow2文件。
其中他会在/home/1.141目录下生成一个临时文件,其目的是为了保护原镜像磁盘文件不会损毁。
--tmp选项可自行指定,也可不用,具体根据服务器的情况来选择。


214G大概压缩时间为3个小时左右,可以通过nohup.out文件查看稀疏的步骤:

[root@105 data]# tailf nohup.out  
[   0.7] Examine source disk

[  44.5] Fill free space in /dev/centos/home with zero

[  57.4] Fill free space in /dev/centos/root with zero

[4713.8] Clearing Linux swap on /dev/centos/swap

[4722.2] Fill free space in /dev/sda1 with zero

[4736.0] Fill free space in volgroup centos with zero

[4741.8] Copy to destination and make sparse

[11747.7] Sparsify operation completed with no errors.

virt-sparsify: Before deleting the old disk, carefully check that the  
target disk boots and works correctly.

通过该日志可以看到在11747秒后稀疏操作完成,并且还会建议:删除旧磁盘前,请仔细检查目标磁盘是否能够正常启动和工作。

#将原来的存储块改名
mv centos-141.qcow2 centos-141-old.qcow2
#将新压缩的存储块改为虚拟机中的默认名称。
mv centos-141-new.qcow2 centos-141.qcow2

[root@106 home]# du -sh centos-141*
214G    centos-141-old.qcow2
4.4G    centos-141.qcow2

通过对比可以看到,稀疏后的虚拟存储块为4.4G.

重启虚拟机,无问题后删掉centos-141-old.qcow2。


四、额外拓展:

 

1.提示磁盘空间不足:

当服务器上的磁盘空间不够使用virt-sparsify工具时,可以临时挂在移动硬盘(ntfs格式硬盘使用mount挂载报错的解决方案):

1.1 安装 EPEL 存储库:EPEL 存储库(Extra Packages for Enterprise Linux)提供了额外的软件包,包括 ntfs-3g。

yum install epel-release


1.2 安装 ntfs-3g 软件包:

yum install ntfs-3g


1.3 使用mount -t ntfs-3g 将移动硬盘等挂载到目标目录:

mount -t ntfs-3g /dev/sdb1 /lws/



2提示/var/tmp 空间不足:

virt-sparsify --compress命令使用时,会在/var/tmp 目录下创建一个临时目录以及一些文件,大概几百M大小,如果创建服务器时/var目录分配的资源很小时,可以使用以下命令临时设置一下变量:

export TMPDIR=/lws/tmp
export TMP=/lws/tmp

PS: 在后边使用时,发现有时候会报错/lws/tmp/.g 什么目录权限不对,到时候可以设置给/lws/tmp目录设置成777权限试试。






【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  wwLZeziuqjLR   2023年12月06日   26   0   0 sarcentos
  wwLZeziuqjLR   2023年12月11日   31   0   0 Dockercentos
  LE2wsiBPlOhg   2023年12月06日   32   0   0 Dockercentos
  wwLZeziuqjLR   2023年12月08日   100   0   0 Dockercentosbash
  wwLZeziuqjLR   2023年12月07日   34   0   0 Dockercentos
  wwLZeziuqjLR   2023年12月06日   26   0   0 abTime数据centos