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


11

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

因此,我的整个磁盘已装满,但仍有2560x3kb的可用空间。如果我要存储另一个文件,例如1mb,文件系统是否可以存储?它会写在各个块剩余的可用空间中吗?有没有解决这个问题的概念?

我希望澄清一下。提前致谢


好的,有2560个文件,每个文件都是1kb,即2560 * 0.001 mb = 2.56 mb。每个1kb文件应该占据大约1/4的块,因为1000 * 4 = 4000,对吗?块大小为4096,因此您需要4个文件来填充块。1mb的文件将花费1000000/4096 = 244块。
Sergiy Kolodyazhnyy

Answers:


3

自第一个Linux以来,默认块大小为512字节。直到最近才引入4k块大小,以适应不断增长的磁盘大小。实际上,这几乎是由磁盘硬件决定的(请参阅更多信息:https : //unix.stackexchange.com/questions/178899/optimizing-logical-sector-size-for-physical-sector-size-4096-hdd)。

但是对于您的特定问题:您是对的,所有文件都浪费许多类型的文件系统上最后一块的未使用字节,这对于小文件而言特别浪费。但是btfrs和reiserfs似乎能够应付,采用https://en.m.wikipedia.org/wiki/Block_suballocation


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

  2. 一些文件系统支持尾部打包和/或子块分配。ext2 / 3/4-可以,xfs-可以。如果计划用几个小文件填充分区,则可以通过将块大小缩小到512或1024来减少浪费的“尾部”空间。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.