2011-12-16 117 views
16

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

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

回答

0

正常情况下,如果您不得不在编程中处理文件,则应使用流抽象。 通过代码进行的I/O操作通常是读写流;读写流和流,可以被缓冲,以便可以读取或写入文件块。

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

因此,操作系统可以根据块大小离散地映射文件,并具有更小的“文件映射”。 据我所知,这并不影响编程语言API的流抽象。

+0

我的问题更多的是了解文件系统如何工作以及它们如何与块设备进行交互。在这种情况下块大小的意义是什么。 – user880946 2011-12-16 17:18:07

16

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

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

"Practical file system design"状态:

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

相关问题