这门课解决什么问题

这门课解决的是底层分布式存储架构的硬核问题。当你面对内核态与用户态的I/O瓶颈、内核旁路的SPDK加速、以及用户态文件系统(FUSE)的定制化开发时,往往缺乏从硬件到软件栈的系统性认知。它帮你打通从NVMe块设备读写、文件系统分区布局到底层存储引擎调用的全链路,让原本晦涩的存储原理变得可落地、可改造。无论是优化现有系统的存储性能,还是自主搭建定制化存储组件,这门课都提供了从硬件寄存器到分布式数据库存储层的完整视角。

适合什么基础

适合具备Linux内核基础、C/C++编程经验,且对分布式存储或后端开发有浓厚兴趣的开发者。建议读者先掌握块设备原理、文件系统基本概念和异步I/O机制,再进入本课程。若已有内核态编程经验,学习速度会显著加快;若对存储引擎(如TiDB、RockDB)有一定了解,也能更高效地理解上层架构的设计意图。切忌跳过底层直接学上层引擎,否则容易迷失在复杂的代码实现中。

建议先看哪几块

建议按学习顺序从NVMe的LBA与nblocks概念入手,理解块设备的底层数据组织方式;接着看block_device对NVMe的读写与sector大小的代码实现,建立硬件I/O的动手直觉;然后学习io_uring的异步I/O场景,掌握用户态高效并发处理的方法;之后进入SPDK与FUSE的协同架构分析,理解内核旁路与用户态文件系统的协作机制;最后结合分区布局设计与实现,将前述知识串联成完整的存储栈认知。这一顺序确保每一步都有扎实基础,避免跳跃式学习导致的理解断层。

学完能独立做什么

学完能独立完成基于SPDK或FUSE的用户态文件系统定制开发,并理解TiDB等分布式数据库在存储层的设计逻辑,能参与底层存储架构的调优与改造。具体而言,你可以自主实现一个高性能的块设备抽象层,用io_uring替代传统的epoll进行异步I/O,用SPDK绕过内核驱动实现零拷贝的NVMe读写,甚至搭建一个自定义的分区布局文件系统。这些能力足以支撑你在实际项目中落地存储相关的性能优化方案。

资料怎么配合练习

资料配合练习时,建议不要只看视频,而是跟着代码走。从理解mkfs.zvvfs的分区布局设计逻辑开始,逐步动手实现block_device的读写与sector操作,再用io_uring替换同步调用以提升并发吞吐,最后结合SPDK完成端到端的I/O路径改造。每一段代码实现,都是检验你是否真正吃透底层存储逻辑的最好试金石。遇到卡壳的地方,回到视频重新梳理原理,比反复观看更有效。

课程目录

课程目录40 集
  • 视频
  • 001.存储课程技术点介绍视频_.mp4 93.94M
  • 002.【zerofs1】文件系统需求分析与mkfs.zvvfs的两种实现方式_.mp4 153.69M
  • 003.【zerofs2】nvme的lba与nblocks的重要性_.mp4 151.06M
  • 004.【zerofs3】block_device对nvme的读写与sector大小代码实现_.mp4 197.47M
  • 005.【zerofs4】 文件系统partition layout设计与实现_.mp4 167.22M
  • 006.【zerofs5】mkfs.zvvfs实现partition layout的5步曲_.mp4 185.53M
  • 007.【zerofs6】mkfs.zvvfs的partition layout完善与nvme读写_.mp4 203.38M
  • 008.【io_uring1】与epoll媲美的io_uring(1)_.mp4 161.84M
  • 009.【io_uring2】与epoll媲美的io_uring(2)_.mp4 225.62M
  • 010.【io_uring3】io_uring的使用场景(1)_.mp4 153.34M
  • 011.【io_uring4】 io_uring的使用场景(2)_.mp4 262.38M
  • 012.【fuse1】fuse协同事件 用户态文件系统(1)_.mp4 203.09M
  • 013.【fuse2】fuse协同事件 用户态文件系统(2)_.mp4 289.75M
  • 014.【SPDK项目1】 SPDK的工作原理与文件系统架构分析(1)_.mp4 155.72M
  • 015.【SPDK项目2】SPDK的工作原理与文件系统架构分析(2)_.mp4 173.66M
  • 016.【SPDK项目3】文件系统的posix api实现(1)_.mp4 175.88M
  • 017.【SPDK项目4】文件系统的posix api实现(2)_.mp4 229.09M
  • 018.【SPDK项目5】文件系统的性能测试(1)_.mp4 148.03M
  • 019.【SPDK项目6】文件系统的性能测试(2)_.mp4 195.22M
  • 020.【KV项目-1】KV存储拆解 Set,Get,Mod,Del_.mp4 283.97M
  • 021.【KV项目-2】bdev与blob对于kv存储的选择_.mp4 264.34M
  • 022.【KV项目-3】kv service接口 set_get_modify_delete_.mp4 192.69M
  • 023.【KV项目-4】pagechunk的get与put_.mp4 161.66M
  • 024.【KV项目-5】btreehashmapradixtreerbtree之间的选择_.mp4 272.84M
  • 025.【KV项目-6】-slab分配slot与释放slot_.mp4 192.44M
  • 026.【KV项目-7】-为kv存储加上conf文件_.mp4 232.38M
  • 027.【KV项目-8】-kv存储测试用例与性能测试_.mp4 190.16M
  • 028.【fastdfs1】fastdfs架构分析和配置_.mp4 331.50M
  • 029.【fastdfs2】FastDFS集群部署和同步机制分析_.mp4 359.69M
  • 030.【fastdfs3】 fastdfs存储原理_.mp4 353.34M
  • 031.【fastdfs4】高负载nginxfastcgi_.mp4 381.88M
  • 032.【fastdfs5】文件传输和接口设计_.mp4 385.12M
  • 033.【fastdfs6】 产品上云公网发布测试用例_.mp4 342.34M
  • 034.【ceph1】 内核级支持的分布式存储ceph_.mp4 309.19M
  • 035.【ceph2】 docker安装ceph分布式存储系统(高可用)_.mp4 235.56M
  • 036.【ceph3】分布式ceph存储集群部署_.mp4 165.06M
  • 037.【RockDB】不一样的kv存储RocksDB的使用场景_.mp4 262.28M
  • 038.【TiDB1】TiDB存储引擎的原理_.mp4 237.78M
  • 039.【TiDB2】TiDB集群方案与Replication原理_.mp4 238.53M
  • 工具+图书带货自下而上-存储全栈 (TiDB_RockDB_SPDK_fuse_ceph_NVMe)/
  • 002.【z.mp4