文件系统块大小

use*_*946 19 filesystems size block significance

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

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

dme*_*ter 20

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

块大小也是文件可以具有的最小磁盘大小.如果块大小为16字节,则16字节大小的文件占用磁盘上的完整块.

"实用文件系统设计"一书指出:

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


And*_*oni 0

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

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

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