1. 外存的组织方式
1.1 连续组织方式
又被称为连续分配方式,为每个文件分配一组相邻的物理块,并将文件中的信息按逻辑顺序依次存放在这些物理块中,文件首个物理块的地址被登记在它的 FCB 内。这样所形成的文件物理结构被称为顺序结构,相应的物理文件称为顺序文件。
1.2 链接组织方式
1.2.1 隐式链接
将文件离散地存放在外存上,它的首个物理块地址被登记在该文件 FCB 地物理地址字段中,而每个后续物理块的地址则登记在分配给它的前一个物理块中,从而使得存放在同一个文件的所有物理块信息的逻辑顺序形成一个链。
1.2.2 显式链接
显式链接方式将链接各个物理块的指针显式地登记在系统的一张文件分配表 FAT 中。FAT 表的每个表项对应于文件存储空间的一个物理块,表项的序号即对应物理块的块号,而表项的内容则是分配给文件的下一个物理块的指针。
但采用显示链接分配方式时,对较大文件的随机存取,须先在 FAT 表中顺序查找许多盘块号,故它不能支持高效的随机存取;如果文件存储介质容量较大,则 FAT 也需占用较大的存储空间,此时将整个 FAT 装入内存显然是不现实的,会进一步影响到文件随机存取的效率。
1.3 索引组织方式
索引组织方式为每个文件简建立一个索引块(表),用来登记分配给该文件的所有物理块号,而文件 FCB 的物理地址字段中则填上指向该索引表的指针。
若文件较大,则可能要分配给索引表多个物理块。此时,可为索引表本身再建立一个索引表,从而形成两级索引。如果文件非常大,还可用三级甚至更多级索引的方式。
采用索引组织方式,在打开文件时,可将索引表读入内存,以后便可在内存中查找分配给某个逻辑块的物理块号,因此该方式可支持高效的随机存取。但索引本身可能要花费较多的外存空间。
1.4 增量式索引分配方式
UNIX 中采用了一种特别的文件分配方式,它将索引分配方式结合在一起。在 UNIX System V 中,用来存放文件的物理地址等属性信息的文件索引节点中。
- 直接地址。索引节点中 i_addr[0]~i_addr[9]共10个地址项,称为直接地址,其中可以存放分配给相应文件的前十个物理块的地址。
- 一次间址。地址项 i_addr[10] 称为一次间址,其中存放的是分配给文件的一次间址块的地址,而在一次间址块中则登记有分配给文件的第 10 个物理块及后续物理块的地址。
- 多次间址。地址项 i_addr[11] 称为二次间址,其中登记的是分配给文件的二次间址块的地址,在二次间址块中可登记 1 K 个一次间址的地址,而每个一次间址块中又可登记分配给文件的 1 K 个物理块的地址。
1.5 NTFS 的文件组织方式
在 NTFS 中,以卷为单位,将一个卷中的所有文件信息、目录信息以及可用的未分配空间信息,都以文件记录的方式记录在一张主控文件表 MFT 中,该表是 NTFS 卷结构的中心。从逻辑上讲,卷中的每个文件作为一条记录,在 MFT 表中占有一行,其中还包括了 MFT 自己的这一行,每行大小固定为 1KB,每行称为该行所对应文件的元数据,也称为文件控制字。
2. 文件存储空间的管理
2.1 空闲表法
与内存动态分区分配方式类似,系统可用一张空闲表来管理空闲的文件存储空间,其中每个表项对应于一个空闲区,并登记有该空闲区的起始块号和块数等信息。可采用首次适应算法、最佳适应等算法,而回收时,同样要进行空闲区的合并。
2.2 空闲链表法
将文件存储空间中的所有空闲区拉成一条空闲链。如果构成链的基本元素时盘块,则称之为空闲盘块链;如果构成链的基本元素是空闲盘区,则称之为空闲盘区链。只适合离散分配,分配时系统将从链首开始依次摘下适当数目的空闲分配给用户,回收时将回收块依次插入链的末尾。既可以采用离散分配,也适合连续分配。
2.3 位示图法
m 行 n 列的位示图,可用来描述 mxn 块的文件存储空间,0 表示对应块空闲,1 表示对应块已分配。,则在进行存储空间的分配时,可顺序扫描位示图,从中找出一个或一组其值为 0 的二进制位,将对应的块分配出去,并将这些置为 1。
2.4 成组链接法
3. 提高磁盘 I/O 速度的途径
3.1 磁盘高速缓存
在内存中为磁盘块设置的一个缓冲区,其中存放有磁盘中某些盘块的副本。当有一进程请求访问某个盘块中的数据,系统首先检查该盘块是否在磁盘高速缓存中,则无需读盘而可直接从高速缓存中提取数据交付给请求进程。
3.2 提前读
在读当前盘块的同时,将下一个可能要访问到的盘块中的数据也读入缓冲区。
3.3 延迟写
不立即将对应缓冲区中的数据写入磁盘,而只将它置上“延迟写”标志并挂到空闲缓冲队列的末尾。当该缓冲区移到空闲缓冲队列的首部,并作为空闲缓冲被分配出去时,才将缓冲区中的数据写入磁盘。
3.4 优化物理块布局
另一种提高磁盘 I/O 速度的重要措施,是优化文件物理块的分布,从而使访问呢文件时,磁头的移动距离尽量的小。
3.5 虚拟盘(RAM盘)
利用内存空间去仿真磁盘。只用来存放临时性文件。
3.6 廉价磁盘冗余阵列(RAID)
利用一台磁盘阵列控制器,来统一管理和控制一组磁盘驱动器,从而组成一个高度可靠的、快速的大容量磁盘系统。
用户数据和系统数据可分布在阵列的所有磁盘中,并可采取并行传输的方式,因此可大大地减少数据的传输时间。
RAID 的另一个特点就是高可靠性。RAID 方案可分成 RAID0~RAID7这几级。
4. 提高磁盘可靠性的技术
磁盘容错技术又称系统容错技术 SFT,它常被分为低级磁盘容错技术 SFT-Ⅰ、中级磁盘容错技术 SFT-Ⅱ和高级系统容错技术 SFT-Ⅲ三个级别。
4.1 第一级容错技术 SFT-Ⅰ
防止因磁盘表面发生的缺陷而引起的数据丢失。
- 双份目录和双份文件分配表。
- 热修复重定向。
- 写后读校验。
4.2 第二级容错技术 SFT-Ⅱ
防止由磁盘驱动器和磁盘控制器的故障。
- 磁盘镜像。
- 磁盘双工。
4.3 基于集群技术的容错功能
- 双机热备份模式。
- 双机互为备份模式。
- 公用磁盘模式。
4.4 后备系统
5. 数据一致性控制
5.1 事务
5.2 重要数据结构的一致性检查
- 盘块的一致性检查。
- 链接计数的一致性检查。