UNIX文件系统解析与磁盘空间使用计算
1. 收集文件系统信息的方法
在某些情况下,我们需要收集单个文件系统中所有文件的大量信息,例如进行磁盘空间核算,为每个用户使用的磁盘空间计费。一种方法是读取顶级目录(文件系统挂载点),然后递归遍历其所有子目录,但这种方法非常慢,因为它需要大量操作系统开销来确定每个目录项的类型和打开文件系统中的每个目录。
因此,通常最好直接从磁盘读取信息,而不通过文件系统。这涉及解读磁盘上记录文件系统的数据结构,有时还需要读取文件系统中文件的实际数据块。
2. 磁盘术语
在描述文件系统如何布局在磁盘上之前,需要了解一些磁盘驱动器相关的术语:
-磁盘驱动器:通常由两部分组成,磁盘组(存储实际数据)和用于在磁盘组与其他设备之间传输数据的硬件。
-磁盘组:由多个盘片组成,盘片类似于留声机唱片,相互堆叠且中间有间隙。每个盘片有两个可记录信息的表面,但顶部和底部盘片的外表面通常不使用。
-读写头:每个磁盘组表面都有一个读写头,读写头可以从盘片边缘移动到中心,通常磁盘驱动器中的所有读写头会作为一个整体移动。
-磁道:在读写操作期间,读写头静止在盘片的特定部分,而磁盘组高速旋转。单个静止读写头可读写的区域称为磁道,磁道是同心圆。
-柱面:所有盘片表面上同时位于读写头下方的磁道集合称为柱面。
-扇区:磁道被划分为更小的单元,称为扇区,扇区是磁道