求助!专门用一块 2TB 的 ssd 创建 lvm 精简池用来存放虚拟机,用什么命令创建最好? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
wniming
V2EX    Linux

求助!专门用一块 2TB 的 ssd 创建 lvm 精简池用来存放虚拟机,用什么命令创最好?

  •  
  •   wniming 246 天前 2383 次点击
    这是一个创建于 246 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小弟我对 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 的文档:

    https://docs.redhat.com/fr/documentation/red_hat_enterprise_linux/9/html/configuring_and_managing_logical_volumes/overview-of-chunk-size_creating-and-managing-thin-provisioned-volumes

    14 条回复    2025-04-14 15:48:04 +08:00
    EvineDeng
        1
    EvineDeng  
       246 天前
    我之前一个更复杂的玩法,供参考: https://evine.win/p/pve-create-lvm-thin-with-cachepool/
    ranaanna
        2
    ranaanna  
       246 天前   1
    这还不简单,它的 warning 已经很明确告诉了呀,or ,也就是要么保持大的 chunk size 但 disable zeroing ,要么用小的 chunk size 但保持 pool zeroing

    建议是后者,因为 1. OP 将来又不会扩展到 508.01 TiB ,2. 提高空间利用率,3. 只是一个 2 TiB 的卷,何必选这么大的块大小,说实话 128 KiB 都已经足够,对性能影响微乎其微
    whileFalse
        3
    whileFalse  
       246 天前
    我理解快照这种线性存取的东西对性能不太敏感,也就是怎么着都行,瞎逼搞就完了
    wniming
        4
    wniming  
    OP
       246 天前
    @ranaanna 感谢回复,刚才问了一下 chatgpt 这个 zeroing 是干什么的,chatgpt 说这个是为了 “Protects against data leaks from uninitialized storage.” ,我这个是家用环境,不担心数据泄露,感觉应该把这个禁用掉,这样应该能提升一点点性能,另外对于 chunk size 我不太理解为啥 lvcreate 默认要给一个 2MiB 这么大的,难道只是简单粗暴的根据用户创建精简池的时候指定的逻辑卷大小来预估用户以后可能需要的最大逻辑卷大小,怕给小了用户以后无法扩展到更大的大小,是这么个道理吗?
    wniming
        5
    wniming  
    OP
       246 天前
    @whileFalse 或许是这样,不过我不把大文件存放在精简池当中一方面是因为不是很需要对大文件做快照,另一方面放到更便宜的 ssd 上更划算。
    ranaanna
        6
    ranaanna  
       246 天前   1
    @wniming #3 这个回答并不相关。这个-Z 是指定以后在这个池中配置新的精简逻辑卷时,先用零擦除相应的底层存储空间,因此显然会影响 thin provision 的速度(特别是对于大卷),但可以保证数据完整性,避免因为残留的数据出现问题。这无关数据泄露。一般是建议不要禁掉,如果已经禁掉用 lvchange -Z y 即可恢复。只要不是经常新建逻辑卷其实完全无关紧要,并且完全不会影响虚拟机性能。后面的问题是这个道理
    kokutou
        7
    kokutou  
       246 天前 via Android
    元数据区弄大点。。。
    你在硬盘最后最好留 10g ,万一呢?
    wniming
        8
    wniming  
    OP
       246 天前
    @kokutou 如果我就是以后都不打算扩容这个精简池,把元数据区弄大点有什么好处吗?我这台机有其他的硬盘作为系统盘使用,这种情况下这个盘最后预留 10g 有什么用呢?
    wniming
        9
    wniming  
    OP
       246 天前
    @ranaanna 明白了,感谢!
    laminux29
        10
    laminux29  
       246 天前
    你都说了你更看重性能,那么 FS 功能越少越好,别说 lvm-thin ,你连 lvm 都不应该用,直接 ext4 才是你最好的选择。
    wniming
        11
    wniming  
    OP
       246 天前 via Android
    @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
    qilme
        12
    qilme  
       246 天前
    看看这个系列文章,也是用 CoW/fork + lz4/zstd 透明压缩
    https://codesandbox.io/blog/how-we-clone-a-running-vm-in-2-seconds
    busier
        13
    busier  
       245 天前 via Android
    @wniming

    快照也不是非要 lvm ,我用 btrfs 快照。

    写个脚本,每天比较下文件系统相对于昨天的快照有没有改变,改变了就在做一个快照并设快照为只读。

    传说 btrfs 会挂壁,我反正是没遇到过。再说该备份还得备份,挂壁也没啥怕的。
    wniming
        14
    wniming  
    OP
       244 天前
    @busier pve 安装的时候如果选择 btrfs 文件系统就是你说的这种方式,但是我就是感觉上 btrfs 不如 lvm thin 稳定,而且虚拟机磁盘文件都是大文件,经常异地备份也非常占用资源,我用 lvm thin 就是想只要 ssd 本身没有硬件损坏并且没有人为导致的误删数据就不会丢失。

    另外我之前用 btrfs 存放虚拟机磁盘文件遇到过一些问题:

    https://v2ex.com/t/1121409
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5330 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 163ms UTC 06:40 PVG 14:40 LAX 22:40 JFK 01:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86