外存

重点掌握磁盘存储器的结构,为操作系统磁盘管理的基础,常常在大题中考察。也许了解 RAID 和 SSD 的原理,可能在选择题中考察。

机械硬盘

机械硬盘(Hard Disk Drive, HDD)是一种使用磁性存储介质来存储和读取数据的非易失性存储设备,广泛应用于计算机和数据存储系统中。

Sector
Sector
Cylinder / Track
Cylinder / Track
6 Heads, 3 platters
6 Heads, 3 platters
Text is not SVG - cannot display

存储区域

为了理解机械硬盘是如何存储数据的,需要理解如下概念:

  1. 磁头(Heads):磁头是位于硬盘驱动器的读/写臂上的设备,用于读取和写入磁盘上的数据。每个盘片(硬盘通常包含多个盘片,每个盘片都有两个表面)上都有一个磁头,因此每个磁头都可以读取或写入盘片上的数据。磁头通过移动到不同的磁道(track)来寻找并访问数据。
  2. Track(磁道):磁道是磁盘上的一个同心圆环。
  3. Cylinders(柱面):柱面是硬盘上的一个数据存储区域,由相同半径位置上的多个盘片上的磁道组成。换句话说,它是所有盘片上相同半径位置的磁道的集合。
  4. Sectors(扇区):扇区是磁盘上的最小数据存储单元。磁盘通常被划分成许多扇区,每个扇区可以存储一定数量的数据。扇区的大小通常是 512 字节或 4KB。操作系统和磁盘控制器使用扇区作为数据的最小单元,以读取和写入数据。
magnetic layeraluminum plate1 bitcylindersectortrackdisk read-and-writeheadsdisk read-and-write headfloating on a cushion of air

CHS 地址

当磁盘驱动器访问磁盘中的扇区时,需要根据 CHS 地址(Cylinder-Head-Sector Address,柱面 - 磁头 - 扇区地址)定位到特定的扇区。 CHS 地址可以理解为盘块在磁盘中的编号,它通过以下三个字段来唯一标识磁盘上的一个扇区:

  • 柱面号(Cylinder Number):目标扇区在哪一个柱面上 $$\text{\small 柱面号位数} =\lceil log_2 \text{\small(柱面数量)} \rceil$$

  • 磁头号:目标扇区在哪一个盘面上 $$\text{\small 磁头号位数} =\lceil log_2 \text{\small(盘面数量)} \rceil$$

  • 扇区号:目标扇区具体是磁道中的哪一个扇区 $$\text{\small 扇区号位数} =\lceil log_2 \text{\small(磁道中的扇区数量)} \rceil$$

提示

一个磁盘有多个盘片,每个盘片有两个盘面,对个盘面对应一个磁头,每个盘面包含多个磁道和多个扇区,开始读取数据时,磁头从某个磁道和扇区的交叉位置开始扫描。

示例

假设一个磁盘有 1000 个柱面、4 个盘面、32 个扇区/磁道:

  • 柱面号位数:$\lceil \log_2(1000) \rceil \approx \lceil 9.97 \rceil = 10$ 位
  • 磁头号位数:$\lceil \log_2(4) \rceil = 2$ 位
  • 扇区号位数:$\lceil \log_2(32) \rceil = 5$ 位
  • CHS 地址总位数:$10 + 2 + 5 = 17$ 位

通过 CHS 地址(例如,C=500, H=2, S=15),磁盘驱动器可以精确定位到特定扇区。

性能指标

平均存取时间

平均存取时间是磁盘完成一次读写操作的平均耗时,由寻道时间(Seek Time)、旋转延迟(Rotational Latency)和传输时间(Read/Write Time)这三部分构成:

  • 寻道时间:磁头从当前位置移动到目标磁道所需的时间,通常与磁头移动距离和致动器性能有关。
  • 旋转延迟:盘片旋转使目标扇区到达磁头下方所需的时间,通常为盘片旋转半圈的平均时间,取决于转速。
  • 传输时间:读取或写入目标扇区数据的实际时间,与扇区大小和数据传输率相关。

平均存取时间的计算公式为:

$$\text{\small 平均存取时间} = \text{\small 寻道时间} + \text{\small 旋转延迟时间} + \text{\small 传输时间}$$

数据传输率

数据传输率表示磁盘每秒向主机传输数据的字节数,反映硬盘的读写速度。假设磁盘转速为 $r$ 传/秒,每条磁道容量为 $N$ 字节,则数据传输率 $D_r$ 为:

$$D_{r} = rN$$

RAID

RAID 全称为独立磁盘冗余阵列(Redundant Arrar of Independent Disks) 由于磁盘存储介质数据的可靠性容易受到环境影响,而发生数据错误的代价非常大,因此需要考虑存储的容灾与恢复。

RAID 将多个独立的物理磁盘组成一个独立的逻辑盘,数据在多个物理盘上分割交叉存储、并行访问,具有更好的存储性能、可靠性和安全性。

RAID 的实现涉及以下核心技术:

  • 磁盘镜像:将相同数据写入多块磁盘,提高可靠性。典型如 RAID1。
  • 条带化:将数据分段交叉存储在多个磁盘上,提升性能。典型如 RAID0,但不具备容错能力。
  • 奇偶校验:通过冗余校验位在部分磁盘损坏时重建数据,兼顾可靠性与存储效率。用于 RAID3/5/6。
  • Cache 机制:提高读写性能,但本身不增加可靠性,除非使用掉电保护的写缓存。

常见 RAID 等级如 RAID1(镜像)、RAID5(条带化 + 奇偶校验)、RAID6(双重奇偶校验)等在性能与容错能力之间做出不同权衡。

固态硬盘

固态硬盘(Solid State Drive, SSD)是一种使用闪存(NAND Flash)作为存储介质的非易失性存储设备,与传统机械硬盘(HDD)相比,SSD 在性能、耐用性和能效等方面具有显著优势。SSD 具备以下特点:

  • 无机械部件:SSD 没有旋转盘片、磁头或机械臂等移动部件,它使用闪存存储芯片来存储数据。这意味着它不会受到机械故障的威胁,具有更高的耐用性。
  • 更快的读写速度:SSD 的读写速度远远超过传统的机械硬盘,因为数据可以立即访问,无需等待盘片旋转和磁头寻道。这使得计算机启动更快,应用程序响应更迅速。
  • 低访问时间:由于 没有机械延迟,SSD 的访问时间极低,通常在微秒级别。这有助于加快文件读取和数据检索。
  • 长寿命:虽然每个存储单元有写入次数的限制,但现代 SSD 使用错误检查和纠正(ECC)技术,以延长其寿命,并且通常拥有较长的保修期。
  • 无碎片化:SSD 的数据存储方式基于闪存单元,读取速度不受数据物理位置的影响,因此不会像 HDD 那样因数据碎片化而降低性能。
  • 局限性
    • 容量限制:SSD 的高容量型号(例如 4TB 以上)价格昂贵,而 HDD 在大容量存储上更具优势。
    • 写入寿命有限:尽管现代技术已大幅延长寿命,但重度写入场景下仍需关注寿命问题。

机械和固态硬盘对比

以下是从多个维度对 SSD 和 HDD 进行的详细对比:

特性SSD(固态硬盘)HDD(机械硬盘)
存储介质闪存(NAND Flash)旋转盘片 + 磁头
机械部件无,纯电子存储有,盘片、磁头、机械臂等
读写速度极快(500 MB/s 至 7000 MB/s,视接口而定)较慢(100-200 MB/s)
随机访问时间极低(0.1 毫秒以下)较高(5-10 毫秒)
耐用性抗震抗摔,无机械故障风险易受震动、摔落影响,机械故障风险较高
噪音无噪音有盘片旋转和磁头移动的噪音
重量与体积轻薄,适合移动设备较重,体积较大
碎片化问题无需碎片整理需定期碎片整理以维持性能
适用场景系统盘、高性能计算、移动设备大容量存储、备份、成本敏感场景