跳转至

大容量存储

本章问题:磁盘读一个块的时间花在哪里?怎样安排请求、保存冗余,并理解SSD的额外写入?

学习顺序:

  1. 把机械盘服务时间拆成寻道、旋转、传输等部分。
  2. 按方向和端点规则画磁盘调度路径。
  3. 分清物理设备、分区、文件系统与网络存储接口。
  4. 看SSD更新、垃圾回收和写放大。
  5. 计算RAID容量、校验和故障恢复边界。

机械盘的一次读取

机械盘有旋转盘片;圆环形记录区域称磁道,磁道再划分成扇区。磁头移动到目标磁道后,还要等目标扇区转到磁头下,才能读出内容。

同一半径上的多个盘面磁道构成柱面。题目用柱面编号画寻道路径时,先算的是移动距离。

flowchart LR
    Q["请求进入队列"] --> S["寻道:磁头移动到目标磁道"]
    S --> R["旋转等待:目标扇区转到磁头下"]
    R --> T["传输:读出目标字节"]
    T --> F["完成与控制器收尾"]

响应时间覆盖排队至完成,服务时间只统计设备为本请求实际工作的阶段。请求越多,排队可能越长,即使同一个块的寻道和传输时间没有变化。

机械盘用磁头选择磁道,再等待目标扇区旋转到磁头下,最后传输数据。一次服务时间通常由寻道、旋转等待、传输和控制器开销组成;若请求先排队,响应时间还要加排队时间。

转速 \(r\) 转/分钟时,一周为 \(60/r\) 秒。目标相位均匀时,平均旋转等待为半周 \(30/r\) 秒。读取D字节、传输速率V字节/秒,传输耗时 \(D/V\)。

6000转/分钟对应一周10 ms,平均5 ms;5000 B按50 MB/s传输,若MB为 \(10^6\) B,耗时0.1 ms。

再加寻道4 ms、控制器0.2 ms,总服务9.3 ms。

磁头走过多少柱面是距离,不能直接当毫秒,除非题目给出距离到时间的关系。柱面、磁道、扇区坐标的映射也须按题给编号、每磁道扇区数和磁头数逐级除余。

练习 1

题目

自编题:机械盘6000转/分钟,平均寻道4 ms,控制器开销0.2 ms。读取5000 B,速率50 MB/s;MB=\(10^6\) B。目标相位均匀,无请求排队。

  • ① 求平均旋转、传输、总服务时间。
  • ② 有人把磁头移动30柱面直接写为30 ms,指出缺失的条件。

参考解答

解答

  • 一周60/6000=0.01 s=10 ms。
  • 平均旋转为半周,得5 ms。
  • 传输5000/(50×1,000,000)=0.0001 s,即0.1 ms。
  • 总服务时间4+5+0.1+0.2=9.3 ms。
  • 30柱面是距离,不是时间;
  • 还缺寻道时间与距离的关系或明确速率模型。
  • 本题没有排队,不能额外加入未知排队时间。

判分要点

  • 须用半周而非一周作平均旋转等待。
  • 须区分MB与bit并统一ms单位。
  • 须明确柱面距离不能无条件转换为毫秒。

六种调度先定方向

手算先把请求按柱面位置画在轴上,再记录初始方向。

SCAN/LOOK的区别在“走到物理端点还是最后一个请求”;普通与循环版本的区别在“反向途中服务,还是回绕后再按同一方向服务”。路径写全后,把相邻位置之差的绝对值相加。

若题目要求最后请求完成就停止,不再补上之后尚未走的端点。

  • FCFS按请求到达次序;
  • SSTF选离当前磁头最近者,可能让远请求饥饿。
  • SCAN向一个方向服务,到物理端点再反向;
  • LOOK只到该方向最远请求就反向。
  • C-SCAN只单向服务,到端点后回另一端,回程不服务;
  • C-LOOK从最远请求回到另一端最远请求。

例子与推演

例:柱面0—99,起点40,初始向大号,请求按70、20、90、10到达且全部已排队,无新请求。所有移动都计距离,完成最后请求立即停止:

算法 路径 总柱面数
FCFS 40→70→20→90→10 230
SSTF 40→20→10→70→90 110
SCAN 40→70→90→99→20→10 148
LOOK 40→70→90→20→10 130
C-SCAN 40→70→90→99→0→10→20 178
C-LOOK 40→70→90→10→20 140

SCAN多走到99再回来,比LOOK多18;C-SCAN回绕99→0也计99。题目若明确回绕不计费,只减那一段,不改变服务顺序。

若请求动态到达,还要判断磁头经过时它是否已存在,不能把晚到请求提前排序。

练习 2

题目

自编题:柱面0—99,起点40,初始向大号。全部请求同时已到达,队列70、20、90、10;以后无新请求,完成最后一个请求立即停止计数。SCAN到物理端点反向;C-SCAN到99后回0,回绕期间不服务,所有实际移动都计距离。

  • ① 分别写SCAN、C-SCAN路径和距离。
  • ② 若误把SCAN按LOOK计算,少算多少?
  • ③ 仅改成C-SCAN回绕不计距离,结果多少?

参考解答

解答

  • SCAN:40→70→90→99→20→10。
  • 距离(99−40)+(99−10)=59+89=148柱面。
  • 最后在10完成,不再补到0。
  • C-SCAN:40→70→90→99→0→10→20。
  • 距离59+99+20=178柱面。
  • LOOK在90反向:40→70→90→20→10,距离50+80=130柱面,少算18柱面,即90到99再返回90的两段。
  • 回绕不计费时C-SCAN为59+20=79柱面;
  • 服务顺序不变,只扣99→0的99柱面。

判分要点

  • 须保留SCAN的99端点,并在最后请求停止。
  • 须区分SCAN反向服务与C-SCAN回绕不服务。
  • 须计入题设回绕距离,改口径时仅扣对应段。
  • 答案须有服务路径及柱面单位,不只给总数。

从物理设备到卷

低级格式化建立设备可识别的扇区等结构,分区划定区域,逻辑格式化创建文件系统;它们解决不同层次的问题。坏块需要检测、替换或重映射,引导区域和交换区也有专门用途。

交换区可用分区或文件承载,其目标是为内存回收提供后备空间。

  • 存储可直接接本机;
  • NAS通过网络提供文件服务;
  • SAN通常通过网络提供块设备视图。
  • 看到“网络存储”还要区分上层使用的是文件还是块接口。
  • 稳定存储是一种希望数据在故障后仍可恢复的抽象,实际需通过冗余、写入顺序和恢复协议实现。

SSD省掉寻道后

**FTL(闪存转换层)**是设备内部维护逻辑地址与闪存物理位置对应关系的层。主机请求“覆盖逻辑页A”时,设备可把新内容写入另一个空闲物理页,再更新映射;旧页随后失效。

因为擦除以更大的块为单位,回收时可能必须搬走同块内仍有效的其他页面,这些搬写就产生写放大。

SSD没有机械寻道与旋转,不能照搬“减少柱面移动”的优化目标。闪存通常按页读写、按更大的擦除块擦除;覆盖更新常写到新页,由FTL维护逻辑到物理映射,旧页标失效。

垃圾回收先搬走仍有效的页,再擦除整块供复用;磨损均衡分散擦写次数,TRIM帮助设备得知哪些逻辑数据不再需要。

主机写2 MiB,回收额外写3 MiB,设备总写5 MiB,写放大为 \(5/2=2.5\)。有效页仍需保留时不能直接擦掉所在块。

RAID保住什么

  • RAID 0只条带化,无冗余;
  • 镜像把同一数据存多份;
  • RAID 5用一份容量的分布式校验,保证单盘故障可恢复;
  • RAID 6需两组独立校验,可承受双盘故障。
  • N块等容量C的盘,忽略开销时,RAID 5容量 \((N-1)C\),RAID 6为 \((N-2)C\)。
  • 重复同一校验不增加独立恢复方程。

异或校验例:A=1010、B=1100,P=A异或B=0110。

A改为0011时,可用“旧P异或旧A异或新A”算新P=1111;无缓存读改写需读旧A、旧P,写新A、新P,共2读2写。B丢失可由新A异或新P恢复1100。

重建会占带宽,并在冗余下降期间增加风险;更新中断电还可能造成数据与校验不一致。RAID冗余不替代原子更新协议,也不替代防误删和历史版本的备份。

练习 3

题目

自编题:

  • ① 4块等容量3 TiB盘,忽略管理开销。求RAID 5、RAID 6可用容量及保证承受故障盘数。两份相同XOR校验能否替代两组独立校验?
  • ② 单重校验条带A=1010,B=1100,P=0110。无缓存读改写,把A改成0011,求新P,列所需块读写;若丢失B,怎样恢复B?
  • ③ SSD主机写2 MiB,回收额外搬写3 MiB,求写放大;某擦除块仍有有效页能否直接擦除?

参考解答

解答

  • RAID 5容量(4−1)×3=9 TiB,保证单盘故障。
  • RAID 6容量(4−2)×3=6 TiB,保证双盘故障。
  • 重复同一校验不增加独立方程,不能替代双重校验。
  • 新P=0110异或1010异或0011=1111。
  • 读旧A、旧P,再写新A、新P,共2读2写。
  • 丢B后用新A异或新P:0011异或1111=1100。
  • 若更新中断电致新旧不一致,仅冗余不能保证原子性。
  • 设备总写量2+3=5 MiB,写放大5/2=2.5。
  • 不可直接擦掉仍需保留的有效页;
  • 先迁移并更新映射,再整块擦除,迁移也可能增加写放大。

判分要点

  • 给容量和故障模型,双重校验须独立。
  • 异或结果正确,写成本含读取旧值的两次访问。
  • 写放大分子含主机写与搬写,解释有效页保存条件。

记忆要点

本章记忆要点

  • 机械盘先寻道,再等旋转,再传输;平均旋转等待是半周。
  • 柱面距离与毫秒之间需要题给模型,不能直接等同。
  • SCAN到端点,LOOK到最远请求;循环版回绕是否计距离看题设。
  • SSD按页读写、按更大块擦除;有效页迁移会增加实际写入。
  • RAID按独立冗余恢复指定故障;容量、更新原子性与备份分别判断。