文件系统也使用块存储吗?

文件系统也使用块存储吗?

我对文件系统的实际内部工作原理感到困惑。问题是关于文件存储与块存储。据我了解,区别在于我们访问数据的级别:文件级别的文件存储和块级别的块存储。

我的问题是:文件存储最终是否也会将文件分成块并再次存储在各个块上?因此,区别实际上在于谁负责组合这些块以形成文件?在块存储的情况下,这是由该块服务器上的操作系统完成的,而在文件存储的情况下,是操作系统在文件系统的帮助下完成的?

跟进:在块存储的情况下,操作系统如何在不使用文件系统的情况下跟踪同一文件的各个块?

答案1

磁盘驱动程序与磁盘或磁盘分区连接,并向系统提供对磁盘块 1 到 N 的访问。磁盘驱动程序隐藏了访问底层“设备”的脏细节。物理磁盘通过柱面/磁头/扇区 (C/H/S) 进行访问,在现实世界中,更改柱面涉及物理操作(将携带读/写磁头的臂滑入和滑出)。磁头“飞”过磁盘盘片。换头是以电子速度进行的,但扇区则是等待磁盘旋转的问题。优化包括按 C/H/S 对磁盘 I/O 进行排序、最小化臂的方向变化、分块以便您在单个磁头下读/写所有扇区、缓冲……所有磁盘和类磁盘设备之间的详细信息有所不同。磁盘驱动程序使程序可以忽略这些详细信息。所有磁盘驱动器都存在块 1 到 N。

磁盘受到 GPT 或更旧的 MBR 的限制。每个分区“看起来”都像一个磁盘(块 1 到 N)。维基百科解释了更多。

当一个分区被“挂载”时,它会在文件系统层次结构 ( man hier) 中分配一个位置,并检查其文件系统一致性,并在必要时进行修复。

i-nodes文件系统分配这些磁盘块(块 1 到 N),并在运行mkfs创建文件系统时跟踪它分配给自身的磁盘块(开销块) 。读man mkfs fsck。文件系统将块组织成“簇”和“超级簇”以实现 I/O 优化。所有 I/O(用户数据、fliesystem 开销)都会被缓冲,并且仅定期刷新到磁盘。系统可能会在文件系统分配块和文件系统元数据的磁盘副本之间崩溃,并变得不一致。文件系统使用冗余和日志记录来避免或。从不一致中恢复。

用户程序可以根据系统强制执行的访问规则,以字符或(二进制)数据块的形式读/写文件。

用户和硬件之间的每一层都可以进行优化(但是您希望将所有内存都用于缓冲区吗?),而不需要更改其他层。块 1 到 N。

答案2

对于文件存储,首先是超级块它提供了文件系统的高级审查:

超级块是文件系统特征的记录,包括其大小、块大小、空块和已填充块及其各自的计数、inode 表的大小和位置、磁盘块映射和使用信息以及块组的大小。

但是“负责将这些块组合起来形成文件”的是索引节点- 由以下机构管理文件系统本身,通常位于 inode 表(或其他类似的某种结构)中,并包含文件的元数据,包括对象数据的磁盘块位置

对于块存储,“跟踪同一文件的各个块”取决于实现。可能有一些软件负责管理块,通常以数据库的形式,尽管块存储服务器也可能只是将块存储在某个文件系统本身(或两者)上。

相关内容