为什么我重写了一遍 LVM(还给出了更弱的保证)
来源:depot.dev — 2026-08
📋 概述
Depot 的基建工程师讲述了为什么他们在超算宿主上重写了稳定的 LVM:运行微虚拟机(microVM)的负载太特殊了。他们的微 VM 要在亚秒级启动,并行装配块设备时,LVM 大约 100ms 的卷组级全局锁直接卡在关键路径上,而这正是每秒钟要做最多 200 次的操作。于是他们保住了内核的 device-mapper(数据平面),自己写了一套控制平面,并干脆放弃了对「瞬时负载」来说根本不用的崩溃安全——换取约 100 倍的分配提速。
🔑 核心要点
- LVM 用了二十年依然稳定,但它的卷组级全局锁(约 100ms)对微 VM 是致命瓶颈。
- 微 VM 要亚秒级启动,而并行装配块设备时该锁会进入关键路径,每秒要做至多 200 次操作。
- 方案:保留内核 device-mapper 数据平面,自己重写控制平面,弃用全局锁。
- 放弃对瞬时负载从不使用的崩溃安全,换来约 100 倍的分配提速。
💡 金句
LVM 真的很可靠——但当一个操作每周只需一次时,那个 100ms 的全局锁才没问题。
👍 0
👎 0
← 返回 Lobsters 首页