(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
介紹
優盤容量大、速度快、相當便宜。很快就取代了軟盤,成為了人手 nnn 個的存儲介質。
- 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)
- 將來,計算機系統基礎/操作系統書的教科書必將被改寫