同容量(5TB)西数硬盘完整复制后新盘多出140GB+可用空间的原因排查
遇到这种情况确实会让人摸不着头脑——明明是完整复制了旧盘的所有内容,新盘怎么突然多出这么多可用空间?结合你给出的所有排查细节,我们一步步拆解可能的原因,最后再聚焦到你找到的核心解决方案:
先逐一排除你提到的猜测
1. 碎片整理导致空间减少?
首先,ext4文件系统确实很少需要碎片整理,而且碎片本身不会减少文件的实际占用空间——它只是让文件的存储变得零散,导致零散的小空间无法被大文件利用,但文件的总字节数(逻辑大小)和实际占用的磁盘块数是一致的。旧盘因为有坏道(重分配事件564、19个pending扇区),可能存在一些存储碎片,但这只会让旧盘的可用空间看起来更“挤”,不会让新盘复制后占用空间变少,所以这个猜测不成立。
2. 坏扇区绑定大量空间?
旧盘的坏扇区会被系统标记为不可用,相当于从可用空间里扣除了这部分容量,但你用rsync复制时,那些坏扇区里的数据已经被重分配到备用扇区了(否则rsync会报错无法读取),所以复制到新盘的是完好的数据。而且140GB的空间远大于普通硬盘坏扇区的数量(一般坏扇区都是KB/MB级),所以这也不是主要原因。
3. 硬盘出厂时的隐藏容量差异?
你已经用fdisk -l确认了两个盘的分区扇区数完全一致,都是9767471104个扇区,对应4.5TiB的可用空间,厂商标注的5TB是十进制计算,系统里识别为4.5TiB是正常的,所以这个可以直接排除。
4. 复制或检查时的错误?
你用的rsync -navxHAWXS --info=progress2参数很规范,其中-S就是专门用来处理稀疏文件的;而diff -rq只会检查文件内容是否一致,不会关注文件的存储结构(比如是否是稀疏文件)。这就解释了为什么文件内容完全一致,但磁盘实际占用空间差这么多——问题出在稀疏文件的存储方式上。
核心原因:稀疏文件的实际占用差异
你最后用ls -ksl对比发现稀疏文件的实际占用空间差异巨大,这就是关键:
- 旧盘上的稀疏文件(原本是“空洞”部分不占用实际空间的文件),可能因为长期使用、写入操作,或者坏道导致系统自动填充了空洞部分,变成了实际占用磁盘空间的普通文件;
- 而rsync的
-S参数在复制时,会识别文件的稀疏属性,在新盘上重新创建真正的稀疏文件——只占用有实际数据的部分,空洞部分不占用磁盘块。
举个例子:一个逻辑大小为100GB的稀疏文件,实际可能只占用1GB的磁盘空间;但如果旧盘上这个文件的空洞被填充了,实际占用就变成100GB,复制到新盘后变回1GB,这就会节省大量空间。你遇到的140GB差异,就是大量这类稀疏文件共同造成的。
额外验证方法
如果想进一步确认,可以用这两个命令对比:
du -sh /path/to/dir:显示目录实际占用的磁盘空间du -sh --apparent-size /path/to/dir:显示目录的逻辑大小(所有文件的总字节数)
如果两者差异很大,就说明存在大量稀疏文件,而新盘的du -sh数值更小,就是因为rsync正确还原了稀疏文件的存储结构。
备注:内容来源于stack exchange,提问作者Estatistics

