如何在两个PV上创建LV瘦池并优先使用快速PV
如何在两个PV上创建LV瘦池并优先使用快速PV
我太懂你这个痛点了!LVM默认的分配逻辑真的不怎么“听话”,哪怕你指定了PV的顺序,它也会按自己的规则来,根本不会优先用你想先用完的快速盘。咱们一步步来解决这个问题:
先搞清楚问题根源
你之前尝试的几种方法为什么没用?
- 直接用默认命令:
lvcreate --thin -L 0.5TB pve/thinpool_vms
LVM会自动选择它认为“合适”的PV分配空间,很大概率会先用慢盘,完全不符合你的需求。 - 指定PV顺序:
lvcreate --thin -L 0.5TB pve/thinpool_vms /dev/sdb3 /dev/sda1
别指望LVM会按你写的顺序优先分配——它的分配算法会忽略这个顺序,该怎么选还是怎么选。 - 指定具体extents:
lvcreate --thin -L 0.5TB pve/thinpool_vms /dev/sdb3:5632-59361 /dev/sda1
瘦池的extent管理逻辑和普通LV不一样,这种指定方式对它不生效。
解决方案一:先占满快速PV,再扩展到慢PV
这是最直观也最可靠的方法,能确保快速盘的空间被完全用完后,再动用慢盘:
先查看快速PV的可用容量
用这条命令确认/dev/sdb3能贡献多少空间:pvs --units h /dev/sdb3看输出里的
Free列,比如显示是450.00GiB(小于你要的0.5TB=512GiB)。创建仅使用快速PV的瘦池
把快速盘的所有可用空间都分配给瘦池:lvcreate --thin -l 100%FREE pve/thinpool_vms /dev/sdb3扩展瘦池到目标大小,用慢盘补差额
计算需要补的容量:512GiB - 450GiB = 62GiB,然后执行:lvextend -L +62GiB pve/thinpool_vms /dev/sda1这样就完美实现了“先用完快速盘,再用慢盘”的需求。
解决方案二:给快速PV设置更高分配优先级
如果你不想分两步操作,可以给快速PV设置更高的优先级,让LVM自动优先选它:
提升快速PV的优先级
LVM默认PV优先级是100,咱们把快速盘设得更高,比如200:pvchange -p 200 /dev/sdb3慢盘保持默认的100就行。
直接创建目标大小的瘦池
现在再执行你原来的命令,LVM会优先从优先级高的/dev/sdb3分配空间,用完后才会用/dev/sda1:lvcreate --thin -L 0.5TB pve/thinpool_vms
两种方法都能达到你的目的,我个人更推荐第一种,毕竟步骤清晰,能明确控制空间分配的顺序,不容易出意外。
备注:内容来源于stack exchange,提问作者Tim
相关产品推荐
相关产品推荐

