逻辑卷的瞬时生成、以空间换时间副本

LVM 快照在时间上定格一块块设备

LVM 快照既不是拷贝,也不是 reflink:它是一个挂在源逻辑卷上的、大小固定的写时复制异常存储。lvcreate -s -L 5G -n snap vg/data 从卷组里划走 5 GiB,之后 device-mapper 的 snapshot 目标会在某个源 chunk 第一次被写时,把它的原始内容记录下来。无论源卷多大,创建都是瞬时的,因为创建时什么都没复制。 这个大小就是你全部的安全余量,也正是最常被写错的参数。按“一周内没什么写入”配的存储,会被一次数据库 checkpoint 或一次 rsync 在一小时内吃光;而它填满时快照不会降级,而是直接失效并开始返回 I/O 错误。恢复点恰好在你最需要它的那一刻消失,所以存储的剩余空间该进监控面板,而不是躺在 runbook 里。 异常存储,不是副本 一个经典的 LVM 快照用到两个 device-mapper 目标:源卷被重新映射为 snapshot-origin,另有一个新的 snapshot 设备把它与 COW 设备组合起来。读未改动的 chunk 直接落到源卷;某个 chunk 第一次被写时,旧 chunk 被复制进 COW 设备,然后新数据才写下去。所以消耗量跟“发生过改动的不同 chunk 数”成正比,而不是跟写入次数成正比:fixture 往 16 个热 chunk 写了一百万次,只消耗 15 个异常,约 60 KiB。 ...

四月 10, 2028 · 1 分钟 · XB Field Notes