最近虚拟机的文件体积越来越大,磁盘空间不够用了 虚拟机的实体文件在宿主机上文件格式为:qcow2 奇怪的是虚拟机上实际占用30g,宿主机上占用70g。
完全额外占用了空间,并且虚拟机的qcow2只会根据文件写入扩容,并不会因为虚拟机删除文件缩容。
本文就简单讲一下怎么给qcow2文件进行压缩。
问下AI知道有两种方法,第一个是在虚拟机上用零填充所有未使用的空间,然后再进行压缩。
另外一种是用工具进行,这里我使用的工具是:virt-sparsify(qcow2压缩) + tmux(后台终端)
virt-sparsify
是 libguestfs-tools
包的一部分,用于精简虚拟机磁盘镜像。根据不同的 Linux 发行版,安装方法如下:
Debian/Ubuntu:
sudo apt update
sudo apt install libguestfs-tools
CentOS/RHEL:
sudo yum install libguestfs-tools-c
Fedora:
sudo dnf install libguestfs-tools
tmux
是一个终端复用器,可在单个终端窗口中管理多个会话。安装方法如下:
Debian/Ubuntu:
sudo apt update
sudo apt install tmux
CentOS/RHEL:
sudo yum install tmux
Fedora:
sudo dnf install tmux
macOS(使用 Homebrew):
brew install tmux
验证安装:
安装完成后,可以通过以下命令验证版本:
virt-sparsify --version
tmux -V
首先我们使用tmux创建一个新的终端窗口,因为处理时间比较长 为了防止终端因为网络问题断开 任务中断。
操作 | 命令 | 说明 |
---|---|---|
创建新会话 | tmux new -s 会话名 | 例如 tmux new -s sparsify (处理稀疏化任务) |
列出所有会话 | tmux ls 或 tmux list-sessions | 查看当前运行的会话 |
进入已有会话 | tmux attach -t 会话名/会话ID | 例如 tmux attach -t sparsify |
临时退出会话(后台运行) | 按 Ctrl+B 后松开,再按 d | SSH 断开后,会话会自动后台运行 |
关闭会话 | tmux kill-session -t 会话名 | 结束指定会话(谨慎使用,会终止其中进程) |
再使用下面的命令去压缩qcow2:
virt-sparsify \
--compress \
--tmp /home/kvm/tmp \
/opt/kvm/kvm656-system1.qcow2 \
/opt/kvm/kvm656-system.qcow2
大家根据自己的需求修改路径就行了,根据我的多次测试压缩率大概在30-60% 还会出现虚拟机上占用10g,在宿主机上压缩后才3g的情况。