文件系统块大小

时间:2011-12-16 17:03:38

标签: filesystems size block significance

文件系统块大小的意义是什么?如果我的文件系统块大小设置为8K,这是否意味着所有读/写I / O都将发生在8K大小?因此,如果我的应用程序想要读取偏移4097处的16个字节,那么将读取从偏移量4096开始的4K块?

在这种情况下,写作是如何工作的?假设我想写64字节。

2 个答案:

答案 0 :(得分:19)

你是对的。块大小是文件系统的工作单元。每次读取和写入都以块大小的完整倍数完成。

块大小也是文件可以拥有的最小磁盘大小。如果块大小为16字节,那么16字节大小的文件占用磁盘上的完整块。

这本书"Practical file system design"陈述:

  

块:磁盘或文件系统可写的最小单位。一切都是   文件系统由在块上完成的操作组成。文件系统   block总是与大小相同或更大(以整数倍为单位)   磁盘块大小。

答案 1 :(得分:0)

通常,当你必须处理编程中的文件时,你应该使用Stream抽象。 通过代码进行的I / O操作通常是对流的读写操作;可以缓冲从流中读取和写入流,以便可以读取或写入文件块。

fs上的块大小是指映射磁盘表面;较小的单个块的大小主要是块的数量(以及表中保存文件分配信息的元素)。

因此OS可以根据块大小离散地映射磁盘上的文件,并且具有较小的“文件映射”。 据我所知,这不会影响API编程语言中的流抽象。