什么原因导致文件占用的磁盘空间比文件大小所建议的要多?

什么原因导致文件占用的磁盘空间比文件大小所建议的要多?

du显示一些驱动器的空间比我预期的要少得多,并且ls -alh顶部的总和比单个文件的总和高出三倍。以下这个答案,我用 进行了检查ls -s,果然,大多数文件占用的磁盘空间是其大小的三倍。这是什么原因造成的?我能做些什么来降低磁盘使用率?

编辑

我看到了如下输出ls -alhs

 50K -rw-------   1 xxx xxx 9.0K Jan 29 20:34 20120103.gz
242K -rw-------   1 xxx xxx  67K Jan 29 20:53 20121130.gz

所以问题不在于我的文件大小远小于 4k。

答案1

我不知道您使用的是什么文件系统或集群大小,但这里有一些应该有帮助的一般信息。

文件系统按组分配数据,有时称为簇(某些文件系统)。簇大小可变,但在许多情况下是 2 的幂,至少为 512 字节。512 字节代表所有硬盘的物理扇区大小,但最新硬盘的扇区大小为 4096 字节。

每个文件至少使用 1 个簇,在大多数情况下,最后一个簇未完全使用。每个文件的剩余空间仍然不可分配。使用 FAT、FAT32、NTFS 时,每个簇不可能超过 64kb,但对于 linux 来说并非如此。

ls -alhs

列表顶部的文件有多大..

因此,如果您有大量文件浪费了极少量的空间,那么这些文件加起来就会造成大量的空间浪费。

您必须查看文件系统的精确细节才能找到这些数据。 更改文件系统可能会对开销产生重大影响。 我尝试了 BTRFS,它浪费了大量空间。我进行了全新安装并运行了更新,它比其他文件系统占用的空间高出 2 倍或更多。

Ext4 在处理大量小文件时也表现不佳,一个很好的例子是 1 个内核源代码副本有数万个小文件。

您的文件系统完全有可能造成了空间浪费,而改变这种状况的唯一方法就是更改文件系统。

此外,一些文件系统支持快照,允许将同一文件的备份副本存储在文件系统中。发行版控制该功能的配置方式以及是否默认启用。您更改或删除的每个文件可以位于快照中,但实际上并未删除。有一个命令可以删除旧快照,但我不记得该命令是什么了。

相关内容