学习分布式存储系统中的 块存储(Block Storage), 是进入云原生、分布式数据库、虚拟化存储领域的关键一环,但是掌握块存储需要什么技能,该怎么学习呢?
unsetunset一、基础知识打底unsetunset
1. 操作系统 I/O 子系统
- 文件系统 vs 块设备 vs 字符设备
- 缓存机制(page cache、buffer cache)
- I/O 调度器(noop、deadline、cfq、bfq)
- I/O 栈路径(用户态 -> VFS -> 块设备 -> 驱动 -> 硬件)
2. 计算机组成原理与存储设备
- 磁盘、SSD、NVMe、NVDIMM 等存储介质的原理、性能特征
- 顺序读写 vs 随机读写
- DMA、PCIe、cache line、TLB
3. 网络与协议基础
- TCP/IP、RDMA、RoCE
- RPC、gRPC、RESTful
- 分布式网络模型(Client-Server vs Peer-to-Peer)
unsetunset二、块存储系统核心模块unsetunset
1. 块设备抽象
- Linux 内核的
block_device、gendisk - Loop device、nbd、rbd 等虚拟块设备
- Udev & device mapper(如 LVM、dm-cache、dm-thin)
2. IO 请求路径与调度
- BIO 层、request queue、blk-mq
- 多队列 IO 框架(blk-mq + NVMe)
- IO 合并、IO 电梯算法
3. 分布式块存储系统架构
- 核心组成:Client、Metadata Server、Storage Node
- 数据路径:读写流程、负载均衡、失败恢复
- 元数据存储与定位:RADOS/Ceph、TiKV、etcd
4. 一致性与副本机制
- 强一致 vs 最终一致
- 同步复制、异步复制、仲裁机制
- Paxos/Raft/ZAB 协议基础
unsetunset三、性能与优化技术unsetunset
1. 零拷贝与用户态 IO
- mmap、splice、sendfile
- DPDK、SPDK(用户态绕过内核 IO 栈)
- IO_uring、AIO、poll 模式
2. IO 性能评测工具
- fio、ioping、perf、iostat
- QPS、IOPS、延迟(p50/p95/p99)、带宽
3. 数据压缩与去重
- LZ4、ZSTD、Snappy
- Chunking、Hash Index、Fingerprinting
unsetunset四、典型分布式块存储系统研究unsetunset
unsetunset五、进阶方向unsetunset
- 云原生环境下块存储:如 Kubernetes CSI 插件、Longhorn
- 分布式一致性算法实现与调优
- 故障注入与数据恢复演练:理解系统的鲁棒性设计
- 存储调度与冷热数据分层策略
unsetunset六、推荐学习路径unsetunset
| | |
|---|
| | |
| | 阅读 Ceph、OpenStack、SPDK 文档 |
| | |