一、在虚拟机中
在虚拟机的使用过程中,虚拟机内的文件经过大量的增、删、改等操作后,会使得虚拟机磁盘的体积变大。即使删除了虚拟机内的文件,已经分配给虚拟磁盘的空间却并不会被回收。不过我们可以进行手动回收这些虚拟机没有使用的空间,只要用0字节数据写满磁盘再删了就可以了。
linux 中
dd if=/dev/zero of=/home/tmp
rm -rf /home/tmp
执行这个命令的目的,是把虚拟磁盘内部所有未被占用的空间用 0 字节填充
/home/tmp
为在需要填充硬盘目录下的临时文件。
windows 中
windows中没有这样的命令,但是可以使用fsutil file
遍历创建0字节文件。可以用下面bat脚本完成
@echo off
set "target=.DiskFill" REM 目标路径(可根据需求修改)
set "minSize=1073741824" REM 最小文件大小,磁盘最后剩余空间不大于这个值(单位:GB)
REM 创建目标目录
if not exist "%target%" mkdir "%target%"
cd /d "%target%"
:loop
REM 生成唯一文件名并创建文件
set "fileName=file_%random%%random%.dat"
fsutil file createnew "%fileName%" %minSize% >nul 2>&1
REM 检查结果
if %errorlevel% equ 0 (
echo 成功创建:%fileName% (%minSize% GB)
goto loop
) else (
cd ..
rd /s /Q %target%
echo 磁盘已被0字节填充完成!
pause
)
二、在pve宿主机上
qemu-img convert -c -O qcow2 vm-100-disk-0.qcow2 vm-db-backup.qcow2
vm-100-disk-0.qcow2
为需要备份的磁盘文件
三、导入qcow2硬盘
qm importdisk 100 /home/vm-100-disk-0.qcow2 local --format=qcow2
- 100:vm的id
- /home/vm-100-disk-0.qcow2:磁盘镜像路径和文件名
- local: 存储磁盘镜像的位置
- qcow2 : 磁盘镜像格式
导入后能在虚拟机后台硬件页面看到一个未使用的磁盘,添加就可以了