resize2fs /dev/sda1 10G #把文件系统大小调整为10G
parted /dev/sda #使用parted调整硬盘分区,注意是/dev/sda
(parted)resizepart 1 12G #调整分区大小,1代表/dev/sda1
#注意:parted分区大小计算方式不同,所以多留一些空间防止数据丢失
resize2fs /dev/sda1 #调整文件系统大小,使之与分区大小相匹配
6.重启,从本地硬盘启动,查看磁盘分区大小,可以看到/dev/sda1已经被压缩了。
7.在未分配的空间新建一个分区,然后全部置零
dd bs=64k if=http://www.likecs.com/dev/zero of=http://www.likecs.com/dev/sda2 #bs表示每次写的块的大小
在Gparted中可以看到File System变成了unknown
删除/dev/sda2,使之变成unallocated
8.关机后迁移虚拟机,把虚拟磁盘格式从“精简置备”改成“厚置备快速置零”。
之所以要多做这么一步,是因为上面的操作只是在把操作系统里把未使用的空间置零了,虚拟机并不知道,因此需要通过这步操作,让虚拟机把未使用的空间也置零。
9.再次迁移虚拟机,把虚拟磁盘格式从“厚置备”改成“精简置备”,可以看到已用空间减小到10GB,也就是实际占用的空间确实减小了。
通过上述实验,基本上验证了虚拟机回收空间的标准:
分配后尚未写入过数据;
分配后写入过数据,但在操作系统和虚拟机里均进行过置零操作。
以上方法回收的是Linux系统的空间,理论上Windows系统也可以通过这个方法回收,只是用到的软件不同。
由于这台占用了6T空间的虚拟机马上要迁移到物理机了,空间有限的问题不是很紧迫,因此等到迁移完成之后再测试,后面再把操作结果补充上来。