Hoo*_*ked 5 filesystems tar disk-usage files
我的印象是 tar 不压缩文件。想象一下,当我压缩一百万个小文件(du -h
~4.2G)并且生成的 tar 是它的四分之一(ls -lh mytar.tar
~1.3G)时,我会感到惊讶!
显然,这些小文件占用的空间超出了它们报告的大小,另一个问题的答案表明,每个非空文件无论大小如何都至少占用1KB。但是这 1KB 是从哪里来的,它在不同的文件系统(这是 ext4)中是否有所不同,并且 1.01 KB 的文件会占用 2KB 吗?
简而言之,我如何衡量真实的文件大小,尤其是目录中的许多文件?我试过了du --apparent-size -h
,我只得到 437M,所以我对这三个截然不同的数字感到很困惑。
正如克里斯托弗指出的那样,这个问题与为什么即使文本文件只有一个字节的文本文件也占用至少 4kB 的空间非常相似?
我不确定我个人是否将其归类为重复项。
但是这 1KB 是从哪里来的
这是更常见的 4KB
文件系统按字节块(也称为分配单元)而不是单个字节进行分配。因此,要将单个字节存储在文件中,该文件将需要整个块。这意味着块的其余部分留空,但没有其他文件可以使用它。
这个数字的起源尚不清楚,但它与许多东西相符。例如在低级别,不可能将单个字节写入磁盘,您只能写入其中的一个块。现代 HD 甚至 SSD 通常都有 4KB 的限制。这意味着如果你想写一个字节,你必须首先加载 4KB,改变那 1 个字节并将整个块写回。如果您尝试编写整个块,则无需读取其原始内容。因此,符合硬件限制的文件系统效率更高。
正如 Stephen Kitt 指出的那样,4KB 是许多内核支持的 ext3的最大块大小。(也在这里讨论)。通常,较大的块大小具有更有效的访问时间,这意味着“较大的块更好”。
它是否因文件系统而异(这是 ext4)
曾几何时 512 是一个常见的块大小,这个数字偶尔会作为默认值出现。Tar 文件非常旧,并且具有相同的 512 字节块大小(大概是为了与文件系统和硬件保持一致,从而使磁盘写入非常快)。因此,对于非常小的文件(<512 字节),tar 文件仍然非常浪费
现在有 4KB 对齐(不是 1KB)的文件系统更为常见。
是的,当您将文件系统格式化为使用不同的块大小时,可以对其进行配置。不同的文件系统有不同的限制,但大多数都可以配置。
1.01 KB 的文件是否占用 2KB?
假设 1KB 块大小,是的,正确。
归档时间: |
|
查看次数: |
859 次 |
最近记录: |