第九章 大容量存储系统
9.1 大容量存储系统概述
大容量存储系统 (Mass-Storage Systems) 是文件系统的最底层,包括二级存储 (Secondary Storage) 和三级存储 (Tertiary Storage) 结构。文件系统从逻辑上由三个部分组成:用户和程序员的文件系统接口、实现接口的内部数据结构和算法,以及最底层的二级和三级存储结构。
9.1.1 存储层次结构
现代计算机系统采用分层存储结构,从CPU寄存器到缓存、主存储器,再到二级存储和三级存储,存储容量递增而访问速度递减。
二级存储 (Secondary Storage) 主要由磁盘组成,提供计算机系统的大容量存储。三级存储 (Tertiary Storage) 通常使用可移动介质,如磁带、光盘等,主要用于备份和归档。
9.1.2 磁盘存储原理
一、磁盘物理结构
磁盘 (Magnetic Disk) 是现代计算机系统中二级存储的主要形式,具有以下关键组件:
- 盘片 (Disk Platter):覆盖磁性材料的圆形盘片,以60-200转/秒的速度旋转
- 磁道 (Track):盘片表面被逻辑划分为同心圆形的磁道
- 扇区 (Sector):每个磁道被细分为若干扇区,是数据存储的基本单位
- 柱面 (Cylinder):所有盘片上相同位置的磁道组成一个柱面
- 磁头 (Read-Write Head):在每个盘片表面上方“飞行”,负责读写数据
- 磁臂 (Disk Arm):控制所有磁头作为一个整体移动
二、磁盘性能参数
磁盘的性能主要由以下参数决定:
传输速率 (Transfer Rate):数据在驱动器和计算机之间传输的速率,通常为每秒数兆字节。
定位时间 (Positioning Time),也称为随机访问时间,包括:
- 寻道时间 (Seek Time):磁臂移动到目标柱面所需的时间
- 旋转延迟 (Rotational Latency):等待目标扇区旋转到磁头下方所需的时间
定位时间通常为几毫秒,是影响磁盘性能的主要因素。
磁盘带宽 (Disk Bandwidth):从第一个服务请求到最后一个传输完成之间传输的总字节数除以总时间。
三、I/O总线与控制器
I/O总线 (I/O Bus) 是磁盘驱动器连接到计算机的线路集合,常见类型包括:
- EIDE, ATA, SATA
- SCSI (SAS)
- USB, 光纤通道 (Fibre Channel), 火线 (Firewire)
主机控制器 (Host Controller) 位于计算机端的I/O总线,CPU通过内存映射I/O端口向主机控制器发送命令。
磁盘控制器 (Disk Controller) 位于磁盘驱动器端,内置在每个磁盘驱动器或存储阵列中,负责执行磁盘硬件操作。
9.1.3 磁带存储
磁带 (Magnetic Tape) 是早期的二级存储介质,现在主要用于以下场景:
- 备份 (Backup):存储大量数据的备份副本
- 归档存储:存储不经常使用的数据
- 系统间数据传输:在不同系统间传输大量数据
磁带的特点:
- 存储容量大:典型容量为20-200GB
- 随机访问速度慢:比磁盘慢约1000倍
- 顺序访问性能较好:一旦数据位于磁头下,传输速率可与磁盘媲美
- 成本低:适合长期存储
常见磁带技术包括4mm、8mm、19mm、LTO-2和SDLT等。
9.2 磁盘结构与管理
9.2.1 磁盘逻辑结构
一、逻辑块地址
逻辑块 (Logical Block) 是磁盘传输的最小单位,通常为512字节到4KB。磁盘驱动器被寻址为逻辑块的大型一维数组,这个一维数组按顺序映射到磁盘扇区上。
扇区0 是最外层柱面第一个磁道的第一个扇区,映射按以下顺序进行:
- 首先映射最外层柱面的第一个磁道
- 然后是同一柱面的其他磁道
- 接着是下一个柱面的磁道
二、地址转换
将逻辑块号转换为磁盘地址(柱面号、磁道号、扇区号)在实际应用中比较困难,原因包括:
- 缺陷扇区处理:大多数磁盘都有一些缺陷扇区,映射过程需要用磁盘其他地方的备用扇区替代
- 变扇区数:某些驱动器每个磁道的扇区数不是常数
三、磁盘速度模式
恒定线速度 (Constant Linear Velocity, CLV):
- 应用于CD-ROM、DVD-ROM
- 每个磁道的位密度均匀
- 外层磁道包含更多扇区
- 磁头从外向内移动时驱动器需要提高转速以保持相同的数据传输速率
恒定角速度 (Constant Angular Velocity, CAV):
- 应用于硬盘
- 磁盘转速保持恒定
- 位密度从内磁道向外磁道递减以保持恒定的数据传输速率
9.2.2 磁盘连接方式
现代计算机系统中磁盘可以通过三种主要方式连接:
一、主机连接存储
主机连接存储 (Host-Attached Storage) 通过本地I/O端口访问,支持的I/O端口技术包括:
IDE/ATA:每个I/O总线支持两个驱动器
SATA (Serial ATA):串行ATA接口,提供更高的传输速率
SCSI (Small Computer System Interface):
- 在一根电缆上支持多达16个设备
- 主机中有1个控制器卡(SCSI发起器)
- 最多15个存储设备(SCSI目标)
- 每个目标可以有多达8个逻辑单元
- 每个I/O总线总共支持15×8=120个逻辑单元(通常是磁盘)
SAS (Serial Attached SCSI):串行连接SCSI
光纤通道 (Fibre Channel, FC):
- 高速串行架构
- 可以通过光纤或四导体铜缆运行
- 可以是具有24位地址空间的交换结构(存储区域网络的基础)
- 可以是126个设备的仲裁环 (FC-AL)
适合用作主机连接存储的设备包括:硬盘驱动器、RAID阵列、CD/DVD、磁带驱动器等。
二、网络连接存储
网络连接存储 (Network-Attached Storage, NAS) 是通过网络远程访问的专用存储系统,而不是通过本地连接(如总线)。
特点:
- 客户端/主机通过RPC接口访问NAS,如NFS (UNIX)和CIFS (Windows)
- 通常实现为带有软件的RAID阵列,该软件实现RPC接口
- 新的iSCSI协议使用IP网络承载SCSI协议
- 相比本地存储,效率较低,性能较差
三、存储区域网络
存储区域网络 (Storage Area Network, SAN) 解决了NAS消耗数据网络带宽的问题。
特点:
- 使用存储协议连接服务器/主机和存储单元的专用网络
- 多个主机连接到多个存储阵列,提供灵活性
- 在大型存储环境中常见(并且变得越来越普遍)
9.3 磁盘调度算法
操作系统负责高效使用磁盘硬件,主要目标是获得快速的访问时间和大的磁盘带宽。访问时间主要由寻道时间和旋转延迟组成,其中寻道时间是主要因素。
9.3.1 磁盘调度概述
磁盘带宽 是从第一个服务请求到最后一个传输完成之间传输的总字节数除以总时间。
可以通过合理调度磁盘I/O请求的服务顺序来改善访问时间和带宽。当磁盘驱动器和控制器空闲时,请求可以立即得到服务;如果驱动器或控制器忙,新请求将被放入该驱动器的待处理请求队列中。
9.3.2 磁盘调度算法
以下算法分析基于示例:磁盘请求队列包含对柱面(0-199)上块的I/O请求:98, 183, 37, 122, 14, 124, 65, 67,磁头初始位置在柱面53。
一、先来先服务调度
先来先服务 (First-Come, First-Served, FCFS) 是最简单的调度算法。
- 工作原理:按照请求到达的顺序处理
- 示例分析:按顺序访问98→183→37→122→14→124→65→67,总磁头移动距离为640个柱面
- 优缺点:
- 优点:简单公平,无饥饿现象
- 缺点:平均寻道时间可能很长,效率低
二、最短寻道时间优先
最短寻道时间优先 (Shortest-Seek-Time-First, SSTF) 选择距离当前磁头位置寻道时间最短的请求。
- 工作原理:从当前磁头位置选择寻道时间最小的请求
- 示例分析:访问顺序为65→67→37→14→98→122→124→183,总磁头移动距离为236个柱面
- 优缺点:
- 优点:比FCFS性能更好
- 缺点:可能导致某些请求饥饿,是SJF调度的一种形式
三、扫描算法
扫描算法 (SCAN),有时称为电梯算法。
工作原理:
- 磁头从磁盘一端开始,向另一端移动,沿途服务请求
- 到达另一端后,磁头运动方向反转,继续服务
- 磁头在磁盘上连续扫描
示例分析:假设向柱面199方向扫描,访问顺序为65→67→98→122→124→183→(199)→37→14,总移动距离为236个柱面
优缺点:
- 优点:不会产生饥饿现象
- 缺点:对刚访问过位置附近的请求响应时间较长
四、循环扫描算法
循环扫描 (Circular SCAN, C-SCAN) 提供比SCAN更均匀的等待时间。
工作原理:
- 磁头从磁盘一端移动到另一端,沿途服务请求
- 到达另一端后,立即返回磁盘开始处,不在返回途中服务任何请求
- 将柱面视为从最后一个柱面到第一个柱面的循环列表
示例分析:访问顺序为65→67→98→122→124→183→(199→0)→14→37
优缺点:
- 优点:提供更均匀的等待时间
- 缺点:返回过程中的移动时间较长
五、LOOK算法
LOOK / C-LOOK 算法类似于SCAN/C-SCAN算法的改进版本。
工作原理:
- 磁臂只移动到每个方向上最远的请求位置,然后立即反转方向
- 不需要先移动到磁盘的最端点
优缺点:
- 优点:减少了不必要的磁头移动
- 缺点:实现稍微复杂
9.3.3 磁盘调度算法选择
选择磁盘调度算法需要考虑以下因素:
- 负载特性:性能取决于请求的数量和类型
- 系统负载:对于磁盘负载较重的系统,SCAN和C-SCAN性能更好
- 文件分配方法:磁盘服务请求受文件分配方法影响
- 模块化设计:磁盘调度算法应该作为操作系统的独立模块编写,便于替换
推荐选择:SSTF或LOOK是默认算法的合理选择。
9.4 磁盘管理技术
9.4.1 磁盘格式化
一、低级格式化
低级格式化 (Low-Level Formatting) 也称为物理格式化,将磁盘划分为磁盘控制器可以读写的扇区。
每个扇区由以下部分组成:
- 头部 (Header):包含扇区号和错误校正码(ECC)等信息
- 数据区域 (Data Area):通常为512字节,大小可选择
- 尾部 (Trailer):包含磁盘控制器使用的信息
低级格式化通常由供应商完成。
二、分区
分区 (Partition) 将硬盘划分为一个或多个柱面组,操作系统可以将每个分区视为独立的磁盘。
9.4.2 逻辑格式化与文件系统
逻辑格式化 (Logical Formatting) 创建文件系统,构建文件系统的元数据结构:
- 空闲和已分配空间的映射
- 初始的空目录
一、簇
簇 (Cluster) 是为了提高效率,大多数文件系统将块组合成簇:
- 磁盘I/O通过块完成
- 文件I/O通过簇完成,确保更多顺序访问,减少随机访问
二、原始磁盘
原始磁盘 (Raw Disk) 是没有任何文件系统数据结构的磁盘,允许某些应用程序在原始分区上实现自己的专用存储服务,如:
- 数据库系统
- 交换空间
9.4.3 启动块管理
启动过程 (Booting Process):
- 加电或重启:CPU、设备控制器、主内存内容需要初始化
- 运行引导程序:初始化系统的所有方面
- 启动操作系统:在磁盘上找到OS内核,加载到内存,跳转到初始地址
启动块 (Boot Block) 管理:
引导程序存储在ROM中(PC的BIOS),由于ROM是只读的,修改引导代码需要更换ROM硬件芯片。因此采用以下方案:
- 在ROM中存储小型引导加载程序
- 完整的引导程序存储在可引导分区的“启动块”中
Windows 2000示例:
- ROM中的引导加载程序
- 启动代码(主引导记录MBR)存储在第一个扇区(启动扇区)
- 启动分区包含OS和设备驱动程序
9.4.4 坏块处理
磁盘有移动部件,容易发生故障:
- 完全故障:整个磁盘不可用
- 部分故障:某些扇区缺陷,成为坏块 (Bad Block)
处理方式:
- IDE磁盘:坏块手动处理
- SCSI磁盘:坏块智能处理
- 扇区备用 (Sector Sparing):用备用扇区替换坏扇区
- 扇区滑动 (Sector Slipping):重新分配扇区编号
9.5 交换空间管理
9.5.1 交换概念
一、传统交换
传统交换 (Traditional Swapping):当物理内存达到临界低点时,将一个或多个进程完全从内存移动到硬盘的交换空间。
二、现代交换
现代交换 (Modern Swapping):将交换与虚拟内存技术结合,交换进程的部分(如页面),而不是整个进程。在许多系统中等同于分页。
9.5.2 交换空间管理
虚拟内存 使用磁盘空间作为主内存的扩展。由于磁盘访问比内存访问慢得多,交换空间设计和实现的主要目标是为虚拟内存系统提供最佳吞吐量。
一、交换空间使用
交换空间可以用于保存:
- 整个进程映像:包括代码和数据段
- 页面:仅存储被换出的页面
二、交换空间大小
交换空间大小取决于:
- 物理内存量
- 虚拟内存量
- 虚拟内存的使用方式
原则:高估比较安全(浪费磁盘空间),低估比较危险(系统不稳定)。
9.5.3 交换空间位置
交换空间可以位于两个地方之一:
一、普通文件系统
在普通文件系统中开辟交换空间:
- 优点:实现简单
- 缺点:效率低,因为需要导航目录结构和磁盘分配数据结构,需要额外访问
- 实例:Windows 3.1, Windows 2000/XP
二、独立原始分区
在独立的原始分区中创建交换空间:
- 特点:使用独立的交换空间存储管理器分配和释放块
- 优点:算法针对速度而非存储效率进行优化
- 实例:Solaris, Linux
三、混合方式
同时使用两种方式:Linux支持两种方式。
9.5.4 UNIX系统实例
传统UNIX:交换整个进程
后期UNIX:交换与分页结合
4.3BSD:进程启动时分配交换空间,保存文本段(程序)和数据段
Solaris 1:使用交换空间作为匿名内存页面(栈、堆等)的后备存储
Solaris 2:仅当页面被强制从物理内存中取出时才分配交换空间,而不是在首次创建虚拟内存页面时
内核交换映射:内核使用交换映射跟踪交换空间使用情况。
9.6 RAID冗余磁盘阵列
9.6.1 RAID基本概念
RAID 用于解决硬盘的性能和可靠性问题。
一、RAID发展
过去:
- RAID: Redundant Array of Inexpensive Disks(廉价磁盘冗余阵列)
- 由小型、廉价磁盘组成,被视为大型、昂贵磁盘的经济替代方案
现在:
- RAID: Redundant Array of Independent Disks(独立磁盘冗余阵列)
- 用于提高可靠性和数据传输速率(性能),而不是出于经济原因
- 经常与NVRAM(非易失性随机访问内存)结合以提高写入性能
二、可靠性改进
无冗余的情况:
- 假设单个磁盘的平均故障时间为100,000小时
- 100个磁盘阵列中某个磁盘的平均故障时间为100,000/100 = 1000小时 = 41.66天
通过冗余改进可靠性:
- 镜像 (Mirroring):如果一个磁盘的故障概率为p,则两个磁盘同时故障的概率为p×p
三、性能改进
通过并行性改进性能:
镜像:
- 读请求可以发送到任一磁盘
- 两个磁盘可以同时服务不同的读请求
- 每单位时间的读次数可以翻倍
数据条带化 (Data Striping):
位级条带化 (Bit-Level Striping):
- 将每个字节的位分布到多个磁盘
- 例如,4个磁盘阵列,位i和位4+i写入磁盘i
- 每个磁盘参与每次访问
- 4个磁盘阵列可以视为扇区大小和访问速率为正常4倍的单个磁盘
字节级条带化 (Byte-Level Striping)
扇区级条带化 (Sector-Level Striping)
块级条带化 (Block-Level Striping):
- 文件的块分布到多个磁盘
- 对于n个磁盘,文件的块i写入磁盘(i mod n)+1
- 最常见的方式
数据条带化的目标:
- 通过负载平衡增加多个小访问(即页面访问)的吞吐量
- 减少大访问的响应时间
9.6.2 RAID级别详解
RAID级别提供不同的成本-性能权衡。镜像提供高可靠性但昂贵;数据条带化提供高数据传输速率但不提高可靠性。
一、RAID 0
特点:
- 具有块级数据条带化但无任何冗余的磁盘阵列。
- 优点:高性能。
- 缺点:无容错能力,任何一个磁盘故障都会导致整个阵列数据丢失。
- 工作原理:数据被分成固定大小的“块”,然后这些块以轮询的方式分散写入到阵列中的所有磁盘上。例如,第一个块写入磁盘 1,第二个块写入磁盘 2,依此类推。这使得数据可以并行读写,从而显著提高吞吐量。
- 适用场景:对性能要求高但数据丢失不重要的应用,如临时数据存储、视频编辑等。
二、RAID 1
特点:
- 磁盘镜像。
- 优点:高可靠性,故障恢复快,读取性能有潜力提升。
- 缺点:成本高(需要双倍磁盘),写入性能受限于最慢的磁盘。
- 工作原理:数据同时写入到两个(或更多)磁盘上,形成完全相同的副本。例如,写入一个数据块时,它会同时被写入到主磁盘和镜像磁盘上。当一个磁盘发生故障时,系统可以立即切换到另一个健康的镜像磁盘,数据不会丢失。
- 适用场景:要求高可靠性和快速恢复的应用,如数据库系统、关键业务应用等。
三、RAID 2
特点:
- 位级或字节级条带化。
- 使用海明码(内存式错误纠正码 ECC)进行冗余,可以检测和纠正所有单位错误。
- 工作原理:数据在位或字节级别进行条带化,并写入到数据磁盘上。同时,根据海明码的计算,生成额外的校验位,并写入到专门的校验磁盘上。当读取数据时,如果检测到错误,可以通过校验位进行纠正。如果一个磁盘完全故障,可以根据剩余数据和校验位重建丢失的数据。
- 缺点:实现复杂,且需要较多的校验磁盘(例如,4 个数据磁盘需要 3 个校验磁盘),导致成本较高。在实际应用中很少使用,因为硬件磁盘控制器通常已经内置了错误检测机制。
四、RAID 3
特点:
- 位交错奇偶校验组织。
- 使用一个独立的奇偶校验磁盘来存储所有数据磁盘的奇偶校验信息。
- 优点:对于大块数据的读写操作具有很高的传输速率,因为所有磁盘可以并行工作;只需要一个校验磁盘,存储效率高于 RAID 1 和 RAID 2。
- 缺点:每次写入操作都需要更新奇偶校验磁盘,导致该磁盘成为性能瓶颈;不支持多个并发的小型 I/O 请求,因为所有磁盘(包括奇偶校验盘)都必须参与每次 I/O 操作。
- 工作原理:数据在位或字节级别进行条带化,分散存储在多个数据磁盘上。阵列中有一个专门的奇偶校验磁盘,存储着所有对应数据位的异或结果。当任何一个数据磁盘发生故障时,系统可以通过读取其他健康的数据磁盘和奇偶校验磁盘上的对应位,通过异或运算重建丢失的数据。
- 适用场景:适用于大文件存储和处理(如视频编辑、图像处理)这类对吞吐量要求高、但并发小文件 I/O 较少的应用。
五、RAID 4
特点:
- 块交错奇偶校验组织。
- 使用块级条带化,并在一个独立的磁盘上保留所有奇偶校验块。
- 优点:支持并发读操作(只要读取的数据块不在同一个磁盘上);比 RAID 3 更适合处理小文件或随机读操作。
- 缺点:与 RAID 3 类似,独立的奇偶校验磁盘在写入操作时会成为瓶颈,因为每次写入都需要更新校验盘。单次写入需要“读-修改-写”四次磁盘访问。
- 工作原理:数据以块为单位进行条带化,分散写入到数据磁盘上。与 RAID 3 不同的是,每个数据块的奇偶校验信息都集中存储在一个专用的奇偶校验磁盘上。当一个数据块被修改时,系统需要读取旧的数据块和旧的奇偶校验块,计算新的奇偶校验,然后写入新的数据块和新的奇偶校验块。
- 适用场景:适用于读操作频繁但写操作不那么频繁的应用,但由于写瓶颈,其应用场景受限。
六、RAID 5
特点:
- 块交错分布式奇偶校验。
- 将数据和奇偶校验信息分布在阵列中的所有磁盘上,没有独立的奇偶校验盘。
- 优点:与 RAID 4 相比,消除了奇偶校验盘的写入瓶颈,提升了写入性能和并发 I/O 能力;存储效率较高(N+1 块中只有 1 块用于奇偶校验)。
- 缺点:任意一个磁盘故障后,重建数据需要访问所有其他磁盘,重建过程对性能影响较大;在同一时间只能容忍一个磁盘故障。
- 工作原理:数据块和对应的奇偶校验块以循环的方式分布在阵列中的所有磁盘上。例如,在一个包含 N 个磁盘的 RAID 5 阵列中,每个逻辑条带(由 N-1 个数据块和一个奇偶校验块组成)的奇偶校验块位于不同的磁盘上。这意味着读写操作可以更均匀地分散到所有磁盘,消除了 RAID 4 的奇偶校验盘瓶颈。当一个磁盘故障时,其上的数据可以通过其他磁盘上的数据和奇偶校验信息进行重建。
- 适用场景:RAID 5 是最常见的奇偶校验 RAID 系统,广泛应用于数据库、文件服务器等需要兼顾性能、可靠性和存储效率的场景。
七、RAID 6
特点:
- P+Q 冗余方案,即除了一个奇偶校验块外,还额外增加了一个独立的校验块(通常是基于伽罗瓦域运算的另一个冗余校验)。
- 优点:能够容忍任意两个磁盘同时故障而不会丢失数据,提供了比 RAID 5 更高的数据可靠性。
- 缺点:需要更多的磁盘(N+2 个),存储效率低于 RAID 5;写入性能相对较低,因为每次写入需要计算和更新两份校验信息,开销更大。
- 工作原理:与 RAID 5 类似,数据块和两份独立的奇偶校验块(P 校验和 Q 校验)被分布在阵列中的所有磁盘上。这两份校验信息是独立计算的,因此即使两个磁盘发生故障,仍能通过剩下的数据和校验信息恢复数据。这种双重校验提供了更高的容错能力。
- 适用场景:对数据可靠性要求极高的应用,例如大型数据中心、归档系统等,即使在磁盘故障后仍需保证业务连续性。
八、混合RAID / 嵌套RAID (Nested RAID)
RAID 0+1 (条带化+镜像):
- 工作原理:首先将多个磁盘组成 RAID 0(进行数据条带化),形成一个或多个“条带集”(Set A)。然后,将这些“条带集”进行 RAID 1 镜像,即为每个条带集创建一个完全相同的镜像副本(Set B)。
- 优点:同时提供了 RAID 0 的高性能和 RAID 1 的冗余性。
- 缺点:当 Set A 中某个磁盘发生故障时,整个 Set A 都会被视为失效,需要使用 Set B 的完整副本进行恢复,导致恢复成本较高;存储效率较低(50%)。
RAID 1+0 (镜像+条带化):
- 工作原理:首先将磁盘两两配对进行 RAID 1 镜像,形成多个“镜像对”(Pair A, Pair B 等)。然后,将这些“镜像对”组成一个 RAID 0 阵列(进行数据条带化)。
- 优点:提供了高可靠性和高性能。当一个镜像对中的一个磁盘故障时,该对仍然可用,并且重建只影响到该对,不会影响整个阵列;恢复速度快。
- 缺点:存储效率仍然是 50%,成本较高。
RAID 1+0 通常被认为是比 RAID 0+1 更好的选择,因为它在单个磁盘故障后,恢复的粒度更小,对阵列的整体性能影响更小,且有更好的可用性。在实际应用中,企业级存储系统通常会根据具体需求和预算来选择合适的 RAID 级别。
9.6.3 RAID实现与选择
一、RAID实现方式
- 软件实现:在内核或系统软件层的卷管理软件中实现
- 主机总线适配器硬件实现:在主机总线适配器(HBA)硬件中实现
- 存储阵列硬件实现:在存储阵列的硬件中实现
- SAN互连层实现:通过磁盘虚拟化设备在SAN互连层实现
二、复制和快照
复制 (Replication):
- 存储阵列内的RAID在阵列故障时仍可能失败
- 复制涉及在独立站点之间自动复制写入以实现冗余和灾难恢复
同步复制 (Synchronous Replication):
- 每个块必须在本地和远程写入后才认为写入完成
异步复制 (Asynchronous Replication):
- 写入被分组并定期写入
热备盘 (Hot-Spare):
- 通常保留少量热备磁盘未分配,自动替换故障磁盘并重建数据
三、RAID级别选择
重建性能考虑:
- RAID 1重建最容易
- 其他级别需要访问阵列中的所有其他磁盘来重建故障磁盘中的数据
- 如果需要连续数据供应,重建性能可能是重要因素
应用场景:
- RAID 0:用于数据丢失不重要的高性能应用
- RAID 1:用于要求高可靠性和快速恢复的应用
- RAID 0+1和RAID 1+0:用于性能和可靠性都重要的场合
- RAID 5:通常首选用于存储大量数据
四、扩展应用
RAID概念已推广到其他存储设备:
磁带阵列:
- 即使阵列中的一个磁带损坏也能恢复数据
无线系统数据广播:
- 数据块分成短单元并与奇偶校验单元一起广播
- 如果任何单元因任何原因未收到,可以重建
9.6.4 RAID问题与解决方案
一、RAID问题
RAID并不总是确保数据对OS及其用户可用:
- 指向文件的指针可能错误
- 不完整的写入
- RAID防范物理介质错误,但不防范其他硬件和软件错误
- 存在大量软件和硬件错误
二、Solaris ZFS解决方案
ZFS特性:
- 添加所有数据和元数据的校验和
- 校验和不与其块保存在一起,指向该块的指针与校验和一起存储
- 可以检测和纠正数据和元数据损坏
池化存储:
- ZFS还删除卷、分区
- 磁盘在池中分配
- 池内的文件系统共享该池,像
malloc
和free
内存分配/释放调用一样使用和释放空间
9.7 稳定存储实现
9.7.1 稳定存储概念
稳定存储 (Stable Storage) 是指驻留在稳定存储中的信息永远不会丢失。预写日志方案需要稳定存储支持。
9.7.2 实现机制
实现稳定存储需要:
信息复制:在具有独立故障模式的多个非易失性存储介质上复制信息
受控更新:以受控方式更新信息,确保在数据传输或恢复期间的任何故障后都可以恢复稳定数据
这种实现方式确保了即使在硬件故障的情况下,关键数据也不会丢失,为数据库系统和其他关键应用提供了可靠的存储基础。
9.8 三级存储结构
9.8.1 三级存储设备
三级存储 (Tertiary Storage) 的定义特征是低成本,通常使用可移动介质构建:
一、存储介质类型
- 软盘:传统的可移动存储介质
- 磁光盘 (Magneto-Optic Disk):结合磁性和光学技术
- 光盘:CD-ROM和DVD等只读或可写光学存储
- WORM盘:“一次写入,多次读取”磁盘
- 磁带:大容量备份和归档存储
9.8.2 操作系统支持
三级存储的操作系统支持包括:
一、应用程序接口
文件名管理:为三级存储设备上的文件提供统一的命名空间
二、分层存储管理
分层存储管理 (Hierarchical Storage Management, HSM):
- 自动在不同存储层次间移动数据
- 将不常用数据从快速但昂贵的存储移动到慢速但便宜的存储
- 为用户提供统一的文件系统视图
三、性能问题
速度:三级存储的访问速度通常比二级存储慢得多
可靠性:可移动介质的可靠性考虑
成本:三级存储的主要优势是成本低,适合大容量数据的长期存储