(2021) 22 [持久化] 1-Bit的存储
南京大学操作系统课蒋炎岩老师网络课程笔记。
视频:https://www.bilibili.com/video/BV1HN41197Ko?p=22
讲义:http://jyywiki.cn/OS/2021/slides/12.slides#/
背景
回顾
操作系统是什么?一组对象 + 一组API
- 一组对象
- UNIX: everything is a file
- 数据
/bin/sh
,a.txt
, … - 设备
/dev/tty
,/dev/sda
, …
- 数据
- UNIX: everything is a file
- 一组 API
- open, read, write, fork, execve, exit, mmap, …
最后没有解释的部分 :持久化
- 文件是如何实现的?
- 为什么关机以后文件还在?
本次课程的目标
理解 1-bit 在物理世界中是如何存储的,以及它们背后的存储设备
- 磁:磁带、磁盘、软盘
- 光:光盘、CD-RW
- 电:NAND Flash
为什么要在这门课讨论持久化?持久化:有关 “操作系统对象” 的故事
- “最小” 操作系统里的对象
- 进程 (状态机)
- (持久保存) 的数据 (文件)
- making information persist, despite computer crashes, disk failures, or power outages is a tough and interesting challenge
- 文件系统接管了 UNIX 世界的 “对象管理”
存储介质及评估方法
持久化:需要 “non-volatility”
- 能把 1-bit 稳定持久地存储在物理世界
- 再次见证人类的历史!
存储设备
- 逻辑上可以看成是一个 bit/byte array
- 1 TB 的磁盘 = 1T 个 1-byte (8∗1012 个 1-bit)
- 通常支持按块 (block) 的方式读写
- 区别于 RAM (Random Access Memory)
- 评价方法:价格、扩展性 (容量)、速度、可靠性
存储介质:磁
磁带
介绍
用 “磁化方向” 表示 1-Bit 信息,物理空间一定区域的磁介质,将N/S 极的朝向作为 1-bit。
分析
-
价格:非常低
-
扩展性 (容量):非常高
-
读写速度:顺序读取:勉强;随机读取:几乎完全不行。
-
可靠性:存在机械部件、需要保存的环境苛刻。
-
今天的应用场景:冷数据的专用备份
磁鼓
介绍
“并行版” 磁带
如果把磁带看成 “一维” 存储,磁鼓就是磁带的集合。
分析
- 更快的速度
- 更好的随机 read/write 性能
磁盘*
介绍
“二维并行版” 磁带
- 我们可以用整个二维平面来存储 bits
- 在二维平面上寻址需要两个维度的控制
依靠 3D 技术,有望突破 100 TB 存储。
盘片 + 柱面 + 磁道 + 扇区 = 定位到 512 字节
- 为了读/写一个扇区
- 读写头需要到对应的磁道
- 转轴将盘片旋转到读写头的位置
分析
分析
-
价格:很低
-
扩展性 (容量):很高 (二维平面上铺满的磁带 + 多个盘片)
-
读写速度:顺序读取:较高;随机读取:勉强。
-
可靠性:存在机械部件、磁头划伤盘片导致数据损坏
-
今天的应用场景:计算机系统的主力数据存储 (
海量数据:便宜才是王道)
性能调优
为了读/写一个扇区
- 读写头需要到对应的磁道
- 7200rpm → 120rps → “寻道” 时间 8.3ms
- 转轴将盘片旋转到读写头的位置
- 读写头移动时间通常也需要几个 ms
通过缓存/调度等缓解
- 例如著名的 “电梯” 调度算法
- 现代 HDD 都有很好的 firmware 管理磁盘 I/O 调度
/sys/block/[dev]/queue
noop deadline [cfq]
软盘
介绍
降低交换数据的成本:把磁盘 (硬盘) 的读写头和盘片分开,分成电脑上的读写头 (drive) 和磁盘 (disk)。
分析
-
价格:低
-
扩展性 (容量):低 (暴露的存储介质)
-
读写速度:顺序/随机读取:低
-
可靠性:低 (暴露的存储介质)
-
今天的应用场景:躺在博物馆供人参观
存储介质:坑(光)
除了磁介质以外,还有别的办法可以存储 1-bit 吗?
CD (Compact Disk)
介绍
在完美反射光线的表面上挖出 (几乎) 不反射光线的坑,激光扫过表面,就能读出坑的信息来。
由飞利浦 (激光碟片) 和索尼 (数字音频) 发明。
分析
-
价格:很低 (而且很容易通过 “压盘” 复制)
-
扩展性 (容量):高
-
读写速度:顺序读取速度高;随机读取勉强;写入速度近乎为零 (挖坑容易填坑难)
-
可靠性:高
-
今天的应用场景:数字媒体的分发 (即将被互联网 “按需分发” 淘汰)
”挖坑“ 技术的进展
CD (740 MB):780nm 红外激光
DVD (4.7 GB):635nm 红色激光
Blue Ray (100 GB):405nm 蓝紫色激光
“挖坑” 不只是数据存储
光刻机
CD-RW
能否克服只读的限制?
-
方法 1
- 用激光器烧出一个坑来 (“刻盘”)
- 使用持久化数据结构 (append-only)
-
方法 2:改变材料的反光特性
- PCM (Phase-change Material)
- How do rewriteable CDs work?
存储介质:电
之前的持久存储介质都有致命的缺陷
- 磁:机械部件导致 ms 级延迟
- 坑 (光): 一旦挖坑,填坑很困难 (CD是只读的)
最后还得靠电 (电路) 解决问题
Solid State Drive
介绍
Flash Memory “闪存”:floating gate 的充电/放电实现 1-bit 信息的存储。
分析
- 价格:低 (大规模集成电路,便宜)
- 扩展性 (容量):高 (3D 空间里每个 (x,y,z) 都是一个 bit)
- 读写速度:高(直接通过电路读写)
- 不讲道理的 IMBA 特性:容量越大,速度越快 (电路级并行)
- 快到需要淘汰了旧的 SATA 接口标准 (NVMe)
- 可靠性:高 (没有机械部件,随便摔)。
但有一个意想不到的缺点 (大家知道是什么吗?) —> 寿命较短。
寿命
放电 (erase) 做不到 100% 放干净
- 放电数千/数万次以后,就好像是 “充电” 状态了
- dead cell; “wear out”
- 必须解决这个问题 SSD 才能实用
USB Flash Disk
介绍
优盘容量大、速度快、相当便宜。很快就取代了软盘,成为了人手 n n n 个的存储介质。
- Compact Flash (CF, 1994)
- USB Flash Disk (1999, “朗科”)
NAND Wear-Out 的解决:软件定义磁盘
每一个 SSD 里都藏了一个完整的计算机系统
- FTL: flash translation layer,“wear leveling”: 软件管理那些可能出问题的 blocks。
wear leveling
维护一个 block lookup table (BLT)
- 然后 copy-on-write!
- 垃圾回收、block 重分配……
U盘和SSD的区别
优盘, SD 卡, SSD 都是 NAND Flash
- 但软件/硬件系统的复杂程度不同,效率/寿命也不同
- 典型的 SSD
- CPU, on-chip RAM, 缓存, store buffer, 操作系统 …
- 寿命: ~1 PiB 数据写入 (~1,000 年寿命)
- SD 卡
- SDHC 标准未规定
- 黑心商家一定会偷工减料 (毕竟接口完全一样)
- 但良心厂家依然有 ARM 芯片
- SDHC 标准未规定
- 典型的 SSD
一定不要用便宜的优盘保存重要数据
FTL: 性能、可靠性、安全性的难题
大家可记得修电脑引发的血案?
- 首先,(快速) 格式化是没用的(如实验M5)。
- 在你理解了 FTL 之后,即便格式化后写入数据 (不写满),同一个 LBA 被覆盖,PBA 依然存储了数据 (copy-on-write)。
总结
本次课内容与目标
- 理解 1-bit 在物理世界中是如何存储的
- 磁、光、电和它们对应的存储设备
Takeaway messages
- 存储技术一直在发展
- 多核心处理器、GPU、TPU, … 全部都对内存带宽有巨大的需求
- NVM 容量超过 DRAM, 性能开始接近 DRAM, 会发生什么?
- 例子: Intel/Micron 3D XPoint (PCM)
- 将来,计算机系统基础/操作系统书的教科书必将被改写