![分区的 df 大小与具有稀疏标志的 dd-ed 图像不匹配](https://linux22.com/image/10998/%E5%88%86%E5%8C%BA%E7%9A%84%20df%20%E5%A4%A7%E5%B0%8F%E4%B8%8E%E5%85%B7%E6%9C%89%E7%A8%80%E7%96%8F%E6%A0%87%E5%BF%97%E7%9A%84%20dd-ed%20%E5%9B%BE%E5%83%8F%E4%B8%8D%E5%8C%B9%E9%85%8D.png)
分区的大小接近 2Gb,实际使用的大小为 1.5Gb,我正在尝试使用启用标志来制作该分区的dd
映像conv=sparse
。
生成的图像dd
大小为1.8Gb。
du
显示分区实际使用大小为1.5Gb。
最让我困惑的是,当天早些时候,当我dd
编辑分区时,显示的是du
.然后我在分区中做了一些更改,然后再次运行dd
。这次出现了不匹配。
是什么原因造成的呢?我猜虽然内存是空闲的,但它不是空/零,所以dd
稀疏算法不起作用?
答案1
你的猜测是正确的。dd
没有文件系统使用的概念,它只是复制数据(或不复制,如果conv=sparse
设置了并且整个块为零)。
也可能有一个 100% 完整的文件系统,但还有一个很小的 dd 稀疏映像。假设您的文件全是零。
可用空间和故意归零但已使用的空间之间存在差异,但dd
没有这方面的概念。因此conv=sparse
应谨慎使用,尤其是在恢复时。
当使用 恢复稀疏图像时conv=sparse
,目标设备必须完全清零,否则旧的非零数据将保留在应该为零的位置。结果是文件系统损坏。