存储设备与操作系统
存储设备与操作系统
存储设备与操作系统
从 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) 负责调度
“
Multi-queue block I/O queuing
”
核心数据结构
struct request
struct bio
struct bvec_iter
真正的 I/O vector: sector_t 的 “扇区号”
(现在 vibe coding 真的好简单)
存储设备与操作系统
Multi-queue Block I/O Queuing