我认为您很困惑,可能是因为您已经阅读了一些使用不同术语的文档。甚至在文件系统文献中,“块大小”和“群集大小”之类的术语也没有通用含义。
文件系统
对于ext2或ext3,情况相对简单:每个文件占用一定数量的块。给定文件系统上的所有块都具有相同的大小,通常为1024、2048或4096字节之一。一个文件大小在N个块加一个字节与N + 1个块之间,占N + 1个块。该块大小是您使用指定的大小mke2fs -b
。没有单独的集群概念。
特别是MS-DOS和Windows的早期版本使用的FAT文件系统具有类似的简单空间分配。ext2称为块,FAT称为簇;概念是相同的。
一些文件系统具有更复杂的分配方案:它们具有固定大小的块,但是可以使用同一块存储一个以上文件的最后几个字节。这被称为块子分配;Reiserfs和Btrfs做到了,但ext3甚至ext4都不这样做。
实用工具
Unix实用程序通常使用“块”一词来表示任意大小的单位,通常为512字节或1kB。此用法与任何特定的文件系统或磁盘硬件无关。从历史上看,之所以出现512B块,是因为当时的磁盘和文件系统通常以512B块的形式进行操作,但是现代用法是任意的。传统的unix实用程序和接口有时仍使用512B块,尽管现在通常首选1kB块。您需要检查每个实用程序的文档,以了解其使用的块大小(有些具有开关,例如在Linux上du -B
或df -B
在Linux上)。
在GNU / Linux stat
实用程序中,该blocks
数字是文件使用的512B块数。该IO Block
图是文件输入输出的首选大小,原则上无关紧要,但通常表示底层文件系统的块大小(如果要调用它,则为集群大小)。在这里,您有一个13字节的文件,它在ext3文件系统上占据一个块,块大小为2048;因此,该文件占用4 512字节单位(被称为“块” stat
)。
磁碟
大多数磁盘都提供一个界面,该界面将磁盘显示为一堆扇区。磁盘只能写入或读取整个扇区,而不能写入单个位或字节。大多数硬盘具有512字节的扇区,尽管几年前开始出现4kB扇区的磁盘。
磁盘扇区大小与文件系统块大小不直接相关,但是将块设为扇区总数可以提高性能。
¹
例外:稀疏文件可节省空间。