首页/云/云平台与虚拟化速查/LVM thin pool 承载精简磁盘
虚拟化操作94 条

LVM thin pool 承载精简磁盘

LVM 精简池(thin pool)按需分配空间,支持快照与超配,适合承载 KVM 磁盘;使用前评估数据与元数据水位,避免池写满。

云平台与虚拟化速查云更新于 2026-10-13

LVM thin pool 是什么

LVM thin pool 用一个精简池为多个卷按需分配空间,很适合承载虚机磁盘:逻辑容量可以超配,实际占用随写入增长,配合 virtio-scsi 的 discard 还能回收空间。代价是必须监控数据与元数据两个水位——池写满会导致所有使用该池的虚机同时出现 I/O 错误。

基本信息

建池lvcreate --type thin-pool --size 500G --poolmetadatasize 4G -n thinpool vg_data
建卷lvcreate -V 100G --thin -n vm1_lv vg_data/thinpool
观察lvs -a -o +lv_size,data_percent,metadata_percent
超配风险Data% 与 Meta% 任一接近上限都会引发故障
扩容lvextend 扩池;元数据与数据可分别扩

典型使用场景

  • 单机虚拟化宿主上用精简置备承载多台虚机磁盘
  • 希望按实际占用而非申请容量消耗物理空间
  • 搭配 discard 让删除数据的空间真正释放回池
  • 做磁盘模板时快速从精简卷克隆出多份实例
  • 容量紧张时用超配提高装机密度

从物理盘到精简卷

从物理盘到精简卷
pvcreate /dev/sdb1                                   # 初始化物理卷
vgcreate vg_data /dev/sdb1                            # 建卷组
lvcreate --type thin-pool --size 500G --poolmetadatasize 4G -n thinpool vg_data
lvcreate -V 100G --thin -n vm1_lv vg_data/thinpool     # 建 100G 的精简卷(暂不占满)
lvs -a -o +data_percent,metadata_percent vg_data       # 观察两个水位

水位观察

观察项字段关注点
数据占用data_percent接近 100% 时池写满,相关虚机 I/O 报错
元数据占用metadata_percent同样要盯,写满后池直接不可写
池容量lv_size(thinpool 行)物理容量决定超配倍数上限
精简卷lv_size(各卷行)虚拟容量,与实际占用不同
超配倍数虚拟容量总和 / 池容量倍数过高时同时写入会迅速打满
精简池超配后必须监控水位:池写满会导致使用该池的虚机 I/O 报错,且恢复需要扩容并处理已有损坏的文件系统。
扩容时的顺序与方式要注意:池的元数据区不能事后无损缩小,扩容元数据用 lvextend --poolmetadatasize,数据区用 lvextend --size,扩容后再跑一次 lvs 确认水位下降。

运维要点

  • 把 data_percent 与 metadata_percent 都接入监控并按阈值告警,不要只看其中一项
  • 超配倍数要留出冗余,按最坏情况下多台虚机同时写入来估算
  • 扩容优先在池接近阈值前完成,池写满后的恢复会涉及文件系统修复
  • 定期执行 fstrim 或确保 discard 生效,让删除的数据真正归还池
  • 池上承载的虚机不要都在同一时间段做批量写入与备份,避免瞬时打满

易错点

  • 只监控数据占用不监控元数据:元数据写满同样让池不可写
  • 超配倍数过高,多台虚机同时大量写入时池被瞬间打满
  • 池写满后只扩数据区不扩元数据,问题依旧存在
  • 未开启 discard 却按精简置备预估空间,删除文件后空间不会归还池

数据来源与参考

  • lvmthin(7) man 手册
  • Red Hat 文档:LVM 精简置备
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌