文件系统块大小如何工作?

Sri*_*eni 12 storage disk

所有 Linux 文件系统都有 4kb 块大小。假设我有 10mb 的硬盘存储空间。这意味着我有 2560 个块可用,假设我复制了 2560 个文件,每个文件的大小为 1kb。每个 1 kb 块将占用 1 个块,尽管它没有填满整个块。

所以我的整个磁盘现在已满,但我仍然有 2560x3kb 的可用空间。如果我想存储另一个 1mb 的文件,文件系统是否允许我存储?它会写入单个块中剩余的可用空间吗?有没有解决这个问题的概念?

我希望得到一些澄清。提前致谢

Har*_*ald 4

自第一个 Linux 诞生以来,默认块大小为 512 字节。除了最近为了满足不断增加的磁盘大小而引入的 4k 块大小之外。这实际上几乎是由磁盘硬件决定的(请参阅更多信息: https: //unix.stackexchange.com/questions/178899/optimizing-logic-sector-size-for-physical-sector-size-4096-hdd)。

然而,对于您的具体问题:您是对的,所有文件都浪费了许多类型的文件系统上最后一个块的未使用字节,这对于小文件来说尤其浪费。但根据https://en.m.wikipedia.org/wiki/Block_suballocation,btfrs和 reiserfs 似乎能够应对


Ole*_*rov 0

  1. 文件系统的块大小可以为 512 到(通常)65536 字节。块大小可以通过 mkfs.xxx 选项指定。大多数 Linux 文件系统中的默认块大小 - 4096 字节。

  2. 某些文件系统支持尾部打包和/或子块分配。BTRFS、RaiserFS、ZFS、Raiser4 - 执行;XFS、Ext2/3/4 - 不需要。

如果您计划用多个小文件填充一个分区,则可以通过将块大小缩小到 512 或 1024 来减少浪费的“尾部”空间,或者使用支持尾部打包或子块分配功能的 FS。