[OS_21] 存储设备原理

海量的阅读帮助我们形成正确的 “计算机科学世界观”,用计算机科学的方式处理问题

  • 在计算机硬件五花八门的设备中,有一类专门负责持久化数据的存储设备
  • 而 “文件系统” 就是在存储设备上实现的,使我们的计算机能可靠地保存宝贵的数据。
  • 在短短几十年间,我们经历了存储器从 KB 到 TB 的跨越。

本文内容:1. 存储设备是如何持久保存数据的,2. 以及存储设备在操作系统中的抽象。


Review & Comments

设备和驱动程序

概念很简单

  • 实现了 struct file_operations 的一个 “东西”

实现很复杂

  • 打印机、扫描仪、显卡、kvm、……
  • 每种设备背后都有一整个产业链

正式进入 “持久化” 部分

Persistence: “A firm or obstinate continuance in a course of action in spite of difficulty or opposition.”

  • 我们的祖先就就希望数据能永久留存
  • 在石头上刻字就行啦 (呃,但我们还想修改)

21.1 1-Bit 的存储:磁铁

正 v.s. 反

“持久化” 可能没有想象的那么困难

一个 “能反复改写的状态”

  • 当然,要能寻址 + 用电路改写

电磁感应:物理和数字世界的桥梁

1D 存储设备:把 Bits “卷起来” (磁带:1928)

  • 纸带 (今天是塑料) 上均匀粘上铁磁性颗粒
  • 只需要一个机械部件 (转动) 定位
    • 读取:放大感应电流
    • 写入:电磁头 (电磁铁) 改变磁畴磁化方向

磁带:可以密度很高,也可以密度不那么高

磁带:作为存储设备的分析

存储特性

  • 价格低 (廉价材料,几乎不涉及大规模集成电路)
  • 容量高
  • 可靠性高 (适当封装)

读写性能

  • 顺序读写勉强 (需要等待定位)
  • 随机读写几乎完全不行

应用场景

  • 冷数据的存档和备份

磁鼓 (Magnetic Drum, 1932)

1D → 1.5D (1D x nn)

  • 用旋转的二维平面存储数据 (无法内卷,容量变小)
  • 读写延迟不会超过旋转周期 (随机读写速度大幅提升)

疯狂内卷:磁盘 (Hard Disk, 1956)

1.5D → 2.5D (2D x n)

  • 在二维平面上放置许多磁带

磁盘:克服各种工程挑战

磁盘:克服各种工程挑战 (cont'd)

磁盘:作为存储设备的分析

存储特性

  • 价格低:高密度、低成本
  • 容量高:2.5D,上万磁道
  • 可靠性高 (高速运转的机械部件是潜在的威胁)

读写性能

  • 顺序读写:较高
  • 随机读写:勉强 (需要等待定位)

应用场景

  • 计算机系统的主力数据存储 (便宜;坏了还有可能修)

磁盘:性能调优

为了读/写一个扇区

  1. 读写头需要到对应的磁道
    • 7200rpm → 120rps → “寻道” 时间 8.3ms
  1. 转轴将盘片旋转到读写头的位置
    • 读写头移动时间通常也需要几个 ms

通过缓存/调度等缓解

  • 例如著名的 “电梯” 调度算法
    • 成为了历史的尘埃
  • Advanced Host Controller Interface (AHCI); Native Command Queuing (NCQ)

软盘 (Floppy Disk, 1971)

把读写头和盘片分开——实现数据移动

  • 计算机上的软盘驱动器 (drive) + 可移动的盘片
    • 8" (1971), 5.25" (1975), 3.5" (1981)
      • 最初的软盘成本很低,就是个纸壳子
      • 3.5 英寸软盘为了提高可靠性,已经是 “硬” 的了

曾经,软件是通过软盘发行的

软盘:作为存储设备的分析

存储特性

  • 价格低:极低成本
  • 容量低:裸露介质,密度受限
  • 可靠性低:不要抱有太大的期望

读写性能

  • 顺序读写:低
  • 随机读写:低

应用场景

  • 存盘按钮

21.2 1-Bit 的存储:挖坑

坑 v.s. 平

坑:天然容易 “阅读” 的数据存储

跨越千年的持久化存储方法

现代工业:我们可以挖出更精细的坑!

Compact Disk (CD, 1980)

在反射平面 (1) 上挖上粗糙的坑 (0)

  • 激光扫过表面,就能读出坑的信息来
    • 44.1kHz, 16-bit, 2 声道贝多芬第九交响曲 (74 分钟, ~700MB),飞利浦 (碟片) 和索尼 (数字音频) 发明

光盘最有趣的特性:容易复制!

光盘的坑是挖在透明塑料上的

  • “压盘” 后镀上反射膜
  • 3s 生产一张 Blue Ray 100GB (33,000MB/s 写入速度)

光盘:作为存储设备的分析

存储特性

  • 价格极低
  • 容量高 (当然,也没有那么高)
  • 可靠性高 (你划伤的是没有数据的那一面)

读写性能

  • 顺序读:一般
  • 随机读:低;很难写入 (CD/R & CD/RW)

应用场景

  • 一个时代的数字内容分发

Project Silica: 回归 Rosetta Stone

Can we preserve data sustainably?

https://www.youtube.com/watch?app=desktop&v=-rfEYd4NGQg

(玻璃存储)

21.3 1-Bit 的存储:电荷

充电 v.s. 放电

Solid State Drive (1991)

存储介质的致命的缺陷

  • 磁:机械部件 (无法避免的 ms 级延迟)
  • 坑 (光):挖坑效率低、填坑很困难

我们想要的是电子的密度、电路的速度

  • Flash Memory “闪存”
  • 如何在电路中持久 1-bit?
    • 挖个坑
    • 把电子填进去 = 一个状态
    • 把电子放跑 = 另一个状态

1-Bit Flash Memory

闪存:作为存储设备的分析

存储特性

  • 价格低:大规模集成电路
  • 容量高
  • 可靠性高:集成电路封装,不怕摔

读写性能

  • 极高,而且有极高的扩展性 (电路是天然并行的)
    • 极为离谱的优点:容量越大,速度越快

应用场景

  • Tape is Dead, Disk is Tape, Flash is Disk, RAM Locality is King (Gim Gray, 2006)

开启 “优盘” 时代 (1999)

是!Flash Memory 会 Wear Out

放电 (erase) 做不到 100% 放干净

  • 放电数千/数万次以后,就好像是 “充电” 状态了
  • Dead cell; “wear out”

有没有感觉有点害怕?

  • 我竟然还在用优盘给大家上课?
  • 很多文件应该写了上千次了?

答案:软件定义磁盘

SSD、优盘,甚至是 TF 卡里都藏了完整的计算机系统

FTL: Flash Translation Layer

  • “Wear Leveling”: 用软件使写入变得 “均匀” (虚拟内存)

Flash Disk 与 NAND Flash

优盘, SD 卡, SSD 都是 NAND Flash

  • 但软件/硬件系统的复杂程度不同,效率/寿命也不同
    • 典型的 SSD
      • CPU, on-chip RAM, 缓存, store buffer, 操作系统 ...
      • 寿命: ~1 PB 数据写入 (~1,000 年寿命)
    • SD 卡/TF 卡
      • 标准没有规定必须内置 FTL
      • 但良心厂家依然有 ARM 芯片

结论:一定不要买过度便宜的优盘!

更不要保存重要数据

  • 还记得什么是 “设备” 吗?

  • 设备是可以 “伪造” 的
    • 可以假装成另一个厂商的设备
    • 甚至可以伪造容量
      • 超过容量的部分自动丢弃了

奸商什么事都干得出来

学了《操作系统》,你也可以当奸商

  • 挣钱的途径写在《刑法》第一百四十条【生产、销售伪劣产品罪】:生产者、销售者在产品中掺杂、掺假,以假充真,以次充好或者以不合格产品冒充合格产品

Prompt: 解释一下1-Bit NAND Flash的工作原理

1-Bit NAND Flash是一种非易失性存储器,每个存储单元只能存储1位二进制数据(0或1),属于SLC(Single-Level Cell)存储。其核心结构为浮栅晶体管(Floating Gate Transistor),存储单元通过是否存有电子来表示数据状态。

其工作原理如下:

  1. 存储结构:NAND Flash由许多浮栅晶体管串联组成“字线”和“位线”;每个晶体管对应一个存储单元,仅存储1 bit。
  2. 编程(写入):通过在控制门和源漏极施加一定电压,实现电子通过隧穿效应注入浮栅。当浮栅内有电子时,单元状态为“0”;无电子为“1”。
  3. 擦除:通过反向电压,使浮栅电子释放。擦除操作以“块”为单位进行。
  4. 读取:给控制门施加适当电压,根据浮栅是否有电子,当前存储单元的导通情况(阈值电压高为“0”,低为“1”)即可判断数据。
  5. 特点:SLC NAND Flash速度快、寿命长、可靠性高,适用高端存储领域。

总结,1-Bit NAND Flash通过控制浮栅晶体管中电子的有无,实现数据的写入、读取与擦除。

21.4 存储设备在操作系统中的抽象

存储设备与操作系统

从 1-Bit 到 1TB

实现 “寻址能力” 的代价

  • 磁盘:位置划分 + 扇区头
  • 电路:行 (字线) 和列 (位线) 选通信号
    • 这些都会消耗额外的资源 (面积)

解决方法:按块访问

  • “一块” 可以共享 metadata
    • 物理分割、Erase 信号、纠错码……
    • 磁盘是 struct block disk[NUM_BLOCKS]
      • Block 是读/写的最小单位
      • “Block devices” (ls -l /dev/sd*)

Block Devices

首先,block devices 也可以是普通的文件

  • “字节序列” 抽象
  • 可以直接 mmap 到进程的地址空间

透明抽象的代价

  • 不经意间的读/写放大 (read/write amplifications)
  • 存储设备在实际执行读写操作时,处理的数据量超过用户实际请求的数据量
    • 随机读/写一个 byte,都会导致大量数据传输
    • 文件系统的实现应该能够感知 “块” 的概念

Linux Bio

Request/response 接口

  • 上层 (进程、文件系统……) 可以任意提交请求
  • 下层 (Bio + Driver) 负责调度

        • 真正的 I/O vector: sector_t 的 “扇区号”
  • (现在 vibe coding 真的好简单)

Multi-queue Block I/O Queuing

总结

Take-away messages:

  • 无论是内存还是持久存储,最终胜出的仍然是——它的密度和速度是其他介质难以比拟的。
  • 但同时我们也看到,NAND Flash 作为持久存储时有着巨大的缺陷——写入寿命。
  • 但我们也看到了工业界竟然敢于试制这样跨时代的产品,在十多年的争议中终究成为了今天存储的主角。

如果更快的 non-volatile memory 到来又退场,我们的计算机系统是否会发生翻天覆地的变化?欢迎到大家在 AI 的帮助下扩展自己的知识面,例如 Coding for SSDs(之前有翻译过)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值