重定向写怎么工作
重定向写(ROW)处理写入时不覆盖原来的数据块,而是把新数据写到空闲位置,再把映射指针改到新块上,旧块原地不动留给快照引用。相对写时复制(COW)先搬走旧数据再原地覆盖的做法,ROW 的写入路径少了一次复制,但会留下大量不连续的空洞,长期运行后对空间整理与读性能提出更高要求。
基本信息
| 写入路径 | 新数据写新位置,指针重定向,不做旧块搬运 |
|---|---|
| 空间口径 | 快照占用约等于自创建以来被覆盖的数据量 |
| 代价结构 | 写入便宜,元数据与碎片管理变重 |
| 是否预留 | 取决于产品实现,有的预留比例,有的按需占用 |
典型使用场景
- 高写入负载:ROW 可减少写入路径上的额外复制开销
- 密集快照需求:秒级快照与即时克隆常基于该机制实现
- 空间核算:按被覆盖数据量估算快照占用更为直接
- 性能评估:判断性能波动来自元数据、碎片还是后端介质
- 容量治理:识别碎片化导致的可用空间虚高现象
写入路径与空间对照
| 维度 | 写时复制 | 重定向写 |
|---|---|---|
| 首次改写 | 先复制旧块,再原地覆盖 | 直接写新块,旧块保留 |
| 写放大 | 存在一次额外复制 | 主要为元数据与映射更新 |
| 空间增长 | 按被改写的数据量增长 | 按被覆盖的数据量增长 |
| 长期形态 | 原位置内容较连续 | 出现空洞,需整理与回收 |
观察与核算要点
观察与核算要点
# 核对池内已用量的增长斜率,与业务改写量做对照
# 区分账面对外容量与物理已用容量,避免误判余量
# 关注碎片与空间整理任务的运行状态和频率
# 快照保留量大时单独评估元数据开销与读延迟变化
# 清理快照前后各测一次序列读写,确认回收效果无论叫写时复制还是重定向写,空间核算的口径可以统一理解为:快照占用取决于自它创建以来源卷被覆盖了多少数据,而不是快照的创建数量。数量影响的是元数据与管理复杂度,改写量才决定空间。