小弟我对 lvm 精简池不熟悉,想用这个主要是因为有给虚拟机创建快照的需求,因为精简池创建后大小只能增加不能减小,所以干脆专门用一块 2TB 的 990 pro 来创精简池(并且专门给这个 ssd 创建一个卷组),不打算以后对这个精简池进行扩容,目前比较纠结到底该选用多大的 chunk 大小比较合适(因为 chunk 大小只能在创建精简池的时候指定,以后如果想更改就只能把数据捣腾出来再捣腾进去,太麻烦了),redhat 的文档说 chunk 大小会影响性能和空间效率(这两者之间我更看重性能,空间效率可以差一些),我的虚拟机里只打算存放例如 windows 和 linux 的系统分区以及其它的非大型的文件(比如游戏或电影原片,这些我打算存放在普通的 lvm 逻辑卷上),那么我该选多大的 chunk 大小比较合适?
如果我不指定 chunk 大小,lvcreate 会给 2 条警告,如下
root@f41-vm:~# lvcreate -l 100%FREE -T vg/pool
Thin pool volume with chunk size 2.00 MiB can address at most <508.01 TiB of data.
WARNING: Pool zeroing and 2.00 MiB large chunk size slows down thin provisioning.
WARNING: Consider disabling zeroing (-Zn) or using smaller chunk size (<512.00 KiB).
Logical volume "pool" created.
root@f41-vm:~#
我按照这个警告的建议添加 -Zn 参数就能消除这个警告,但是我不理解这个参数,man page 的解释我也看不懂,不知道添加这个参数是否适合我的使用场景,另外如果我指定 chunk size 为小于 512KiB 的值(比如 256KiB )也能消除这个警告,但是这和默认的 2MiB 的 chunk size 有比较大的差距,感觉会对性能有一些影响。
简而言之,我创建精简池后不打算以后扩容,并且希望性能尽可能的好,可以接受空间效率差一些,我该用什么命令创建这个精简池?
另外如果 linux 虚拟机又用了 btrfs 作为系统分区,那么这种 lvm 精简池叠加 btrfs 的用法会不会对性能和 ssd 寿命有不良的影响?
redhat 关于 chunk size 的文档:
![]() |
1
EvineDeng 1 天前
我之前一个更复杂的玩法,供参考: https://evine.win/p/pve-create-lvm-thin-with-cachepool/
|
2
ranaanna 1 天前 ![]() 这还不简单,它的 warning 已经很明确告诉了呀,or ,也就是要么保持大的 chunk size 但 disable zeroing ,要么用小的 chunk size 但保持 pool zeroing
建议是后者,因为 1. OP 将来又不会扩展到 508.01 TiB ,2. 提高空间利用率,3. 只是一个 2 TiB 的卷,何必选这么大的块大小,说实话 128 KiB 都已经足够,对性能影响微乎其微 |
3
whileFalse 23 小时 50 分钟前
我理解快照这种线性存取的东西对性能不太敏感,也就是怎么着都行,瞎逼搞就完了
|
4
wniming OP @ranaanna 感谢回复,刚才问了一下 chatgpt 这个 zeroing 是干什么的,chatgpt 说这个是为了 “Protects against data leaks from uninitialized storage.” ,我这个是家用环境,不担心数据泄露,感觉应该把这个禁用掉,这样应该能提升一点点性能,另外对于 chunk size 我不太理解为啥 lvcreate 默认要给一个 2MiB 这么大的,难道只是简单粗暴的根据用户创建精简池的时候指定的逻辑卷大小来预估用户以后可能需要的最大逻辑卷大小,怕给小了用户以后无法扩展到更大的大小,是这么个道理吗?
|
5
wniming OP @whileFalse 或许是这样,不过我不把大文件存放在精简池当中一方面是因为不是很需要对大文件做快照,另一方面放到更便宜的 ssd 上更划算。
|
6
ranaanna 23 小时 5 分钟前 ![]() @wniming #3 这个回答并不相关。这个-Z 是指定以后在这个池中配置新的精简逻辑卷时,先用零擦除相应的底层存储空间,因此显然会影响 thin provision 的速度(特别是对于大卷),但可以保证数据完整性,避免因为残留的数据出现问题。这无关数据泄露。一般是建议不要禁掉,如果已经禁掉用 lvchange -Z y 即可恢复。只要不是经常新建逻辑卷其实完全无关紧要,并且完全不会影响虚拟机性能。后面的问题是这个道理
|
![]() |
7
kokutou 23 小时 1 分钟前 via Android
元数据区弄大点。。。
你在硬盘最后最好留 10g ,万一呢? |
8
wniming OP @kokutou 如果我就是以后都不打算扩容这个精简池,把元数据区弄大点有什么好处吗?我这台机有其他的硬盘作为系统盘使用,这种情况下这个盘最后预留 10g 有什么用呢?
|
10
laminux29 22 小时 25 分钟前
你都说了你更看重性能,那么 FS 功能越少越好,别说 lvm-thin ,你连 lvm 都不应该用,直接 ext4 才是你最好的选择。
|
11
wniming OP @laminux29 我一开始就说了因为有对虚拟机做快照的需求,我过去很长一段时间就是不用 lvm ,直接 ext4 加上 qemu 的 qcow2 快照,但是 qcow2 快照的性能不好(尤其是多重快照的情况),而且如果我要克隆磁盘的话整个 qcow2 文件都要复制一份,对于那些特别大的磁盘复制也要好久,而且还非常占存储空间。
你可以了解一下 lvm 精简池的快照,感觉比 qcow2 强多了: https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/6/html/logical_volume_manager_administration/thinly-provisioned_snapshot_volumes |
![]() |
12
qilme 20 小时 35 分钟前
看看这个系列文章,也是用 CoW/fork + lz4/zstd 透明压缩
https://codesandbox.io/blog/how-we-clone-a-running-vm-in-2-seconds |