我将备份保存在两个 1.5 GB 的外部硬盘上,直到最近,这两个硬盘都格式化为 ntfs。这两个硬盘保存着我的文件和文件夹的相同副本。最近我决定改为 ext4,所以我重新格式化了其中一个硬盘,并将所有内容复制(rsync)到那里。令我最惊讶的是,我有大约可用空间减少 100 GB在新的 ext4 驱动器上,所以我去调查原因。
我检查了两个驱动器上的可用空间,但我使用的每个应用程序/工具都显示完全不同的空间量。
对于 ext4 驱动器:
- df 给了我 196 GB 的可用空间,
- Nautilus 给了我 210 GB 的可用空间,
- 磁盘给了我 285 GB 的可用空间,
- Filelight 给了我 265.4 GB 的可用空间,并且
- GParted 给了我 265,42 GB 的可用空间。
因此可用空间范围从 196 GB 到 285 GB,相差近 100 GB!!
对于 ntfs 驱动器(其中包含另一个驱动器的相同副本):
- df 给了我 284 GB 的可用空间,
- Nautilus 给了我 304.9 GB 的可用空间,
- 磁盘给了我 305 GB 的可用空间,
- Filelight 给了我 284 GB 的可用空间,并且
- GParted 给了我 284 GB 的可用空间。
对于该硬盘,可用空间的测量更加一致,“仅”有 20 GB 的范围。
所以我的问题是:哪一个是真的?我应该真正相信哪一个?为什么他们报告的空间大小如此不同?尤其是对于 Linux 的原生格式 (ext4)?为什么两个系统上的可用空间之间有如此显著的差异?我希望 ext4 驱动器上有更多的可用空间。
谢谢您的见解!
答案1
应用程序之间的文件大小和可用空间计算并不一致。
这是由于文件系统的性质所致。数据存储在块在驱动器上。典型的块大小为 4096,这意味着每个块最多可包含 4096 字节的数据。
如果你有一个文件仅包含1 字节的数据,它实际上会占用4096 字节硬盘上的空间。
类似地,如果你有一个包含以下内容的文件4097 字节的数据,它将保留两个块,或者8192 字节儲存。
如果您有一个应用程序正在计算每个文件中数据的大小,则该值将比计算所有使用块的总和的应用程序更小。
在计算文件大小时,许多应用程序会使用一些“技巧”来估计或缓存文件大小,这样您的系统实际上就不需要读取硬盘的全部内容。这也会导致应用程序之间的差异。
再举一个例子,你可以在为什么ls -l
输出的大小不同于ls -s
答案2
不同应用程序报告可用/已用文件大小不同的其他一些原因:
- 有些报告以“千兆字节”为单位,而有些则以“吉比字节”
- 尤其是 Ext4 在文件系统上保留了一些用户无法使用的空间 - 如果用户在格式化时没有指定,则默认为 5%。有些应用程序可能会将这些空间包含在驱动器的总大小中,有些则不会。但这就是 ext4 驱动器通常看起来比预期的要小的原因。