文件名称:磁盘组织-轻松实现高速串行io--fpga应用设计者指南
文件大小:3.09MB
文件格式:PDF
更新时间:2024-06-29 04:49:09
UNIX 系统 内幕 pdf
9.6 硬盘结构 要想了解影响磁盘性能的因素,首先要看一下数据是怎样在磁盘上放置的。图 9-7 显示 了在 20 世纪 80 年代中早期生产的磁盘的格式。磁盘由很多盘片(platters)组成,每个盘片 都对应与一个磁头⑤。每个盘片(platter)包含好多磁道,这些磁道形成一组以盘片中心为圆 心的同心圆;最外面的是 0 磁道,依此类推。每个磁道又被细分成为扇面(sector),扇面也 是顺序排号的。扇面的尺寸一般是 512 字节,这也是每次磁盘 I/O 操作的最小单位。柱面 (cylinder)是由一组磁道组成,这些磁道分布在不同的盘片上,每个盘片上一个磁道,并且 这些磁道与磁盘中轴的距离也都相同。所以柱面零由所有盘片的零磁道组成,依此类推。在 很多磁盘中,所有的磁盘头(head)同时移动。因此在任一给定时间,所有的磁头都在每个盘 片的相同磁道和相同扇面上。 图 9-7 磁盘的概念图 UNIX 把磁盘看成是磁盘块的线性数组。一个块内包含有 2 的整次幂个磁道,在本节,我 们假设一个块内正好有一个扇面。当一个 UNIX 进程试图读取一特定块号时,设备驱动程序将 该块号转化成一逻辑扇面号,并且由此计算出物理磁道号,磁盘头号以及扇面号。这个过程 中扇面号首先增加,其次是磁盘道号,最后是柱面号。因此,每个柱面包含一组序号连续的 磁盘块。在计算出块号的位置后,磁盘驱动器首先把磁盘头移到相应的柱面。这个磁盘头定 位过程是磁盘 I/O 中最耗时的部分,其延迟也直接与磁盘头必须移动的距离有关。这个延迟 叫做旋转延迟。一旦正确的扇区转到磁盘头下面,数据传输便可以开始。实际的传输时间也 正好是一个扇区移动经过磁盘头的时间。要想使 I/O 带宽最大,必须要使磁盘头定位的次数 和磁盘头移动的距离最小,同时通过合理地安排磁盘上的磁盘块以减小旋转延迟。 9.7 磁盘组织 一个磁盘分区由磁盘上的一纽连续柱面组成。格式化过的磁盘分区包含有一个自我包含 的文件系统。FFS 将分区进一步划分成一个或多个柱面组,每个柱面组中有一小组连续的柱 面。这样 UNIX 就可以将相关的数据存在同—柱面组中,从而使磁头移动距离最小。9.7.2 小 节对此做了详细的讨论。 传统的超级块包含的信息分为两个结构。FFS 超级块包含有整个文件系统的有关信息— —柱面组的数目、大小和位置,磁盘块大小,磁盘块和 i 节点的总数目,等等。除非重建文 件系统,否则超级块中的信息不会发生变化。而且,每个磁盘组都有一个描述有关本组数据 结构的概括性信息,其中包括空闲 i 节点表和空闲块表。超级块在分区的开始位置(在启动块 区的后面),然而这还不够。超级块中的数据是很关键的,必须要保证不能发生磁盘错误。因 此,每个柱面组都包含有超级块的一个复制,FFS 将这些超级块复制放在每个柱面组的不同