ubuntu/debian 如何才能把 lvm thin 逻辑卷上的分区作为根文件系统? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
wniming
V2EX    Linux

ubuntu/debian 如何才能把 lvm thin 逻辑卷上的分区作为根文件系统?

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

    我想用物理机直接启动 pve 创建的虚拟机,pve 使用 lvm thin 逻辑卷来存储虚拟机的磁盘,如果虚拟机是 fedora 的话很容易就能实现,比如我对 fedora 虚拟机的 dracut 做了以下的一点修改:

    root@develop:/lib/dracut/modules.d# diff -u 90lvm/module-setup.sh 90lvm/module-setup.sh.bak --- 90lvm/module-setup.sh 2025-08-18 19:38:58.989838506 +0800 +++ 90lvm/module-setup.sh.bak 2025-08-18 19:30:54.839828659 +0800 @@ -49,7 +49,6 @@ # called by dracut install() { inst_multiple lvm grep - inst_multiple kpartx if [[ $hostonly_cmdline == "yes" ]]; then local _lvmconf root@develop:/lib/dracut/modules.d# root@develop:/lib/dracut/modules.d# diff -u 90lvm/lvm_scan.sh 90lvm/lvm_scan.sh.bak --- 90lvm/lvm_scan.sh 2025-08-18 19:39:06.604838587 +0800 +++ 90lvm/lvm_scan.sh.bak 2025-08-18 13:59:44.755601855 +0800 @@ -150,7 +150,6 @@ # if the LV is not lised as complete. # shellcheck disable=SC2086 lvm lvchange --yes -K -ay $activate_args "$LV" 2>&1 | vinfo - kpartx -av "/dev/$LV" fi done fi root@develop:/lib/dracut/modules.d# root@develop:/lib/dracut/modules.d# 

    然后用以下命令在虚拟机里生成一个用于物理机直接启动用的 initramfs:

    dracut -f ~/initramfs-6.14.0-63.fc42.x86_64.guest.img -a "lvm" --add-drivers "nvme" 

    然后把这个 initramfs 和虚拟机的内核以及虚拟机 /boot/loader/entries/ 目录下的 grub 启动项拷贝到物理机的 boot 分区,然后再给内核命令行上加上一个 "rd.lvm=1 rd.lvm.lv=thin/desktop" 这样的配置就能实现直接从物理机启动虚拟机的系统了,这个内核命令行结合上面对 dracut 的修改可以实现在 initramfs 里把名为 thin 的 thin pool 里的名为 desktop 逻辑卷上的分区激活,然后 dracut 就能通过虚拟机的根文件系统的 UUID 找到根分区了,也就和正常的启动没有区别了,启动后用 lsblk 查看效果如下:

    d@fedora-desktop:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS nvme1n1 259:0 0 3.6T 0 disk thin-pool_tmeta 252:0 0 3.6G 0 lvm thin-pool-tpool 252:2 0 3.6T 0 lvm thin-desktop 252:3 0 200G 0 lvm thin-desktop1 252:4 0 600M 0 part /boot/efi thin-desktop2 252:5 0 1G 0 part /boot thin-desktop3 252:6 0 198.4G 0 part /home / thin-pool 252:7 0 3.6T 1 lvm thin-pool_tdata 252:1 0 3.6T 0 lvm thin-pool-tpool 252:2 0 3.6T 0 lvm thin-desktop 252:3 0 200G 0 lvm thin-desktop1 252:4 0 600M 0 part /boot/efi thin-desktop2 252:5 0 1G 0 part /boot thin-desktop3 252:6 0 198.4G 0 part /home / thin-pool 252:7 0 3.6T 1 lvm 

    可以看到根文件系统所在的块设备是/dev/mapper/thin-desktop3 ,这个块设备是/dev/mapper/thin-desktop 这个 lvm thin 逻辑卷的一个分区。

    我想在 debian 13 系统上实现一样的效果,但是我对 debian 不熟悉,有没有非常熟悉 debian 或 ubuntu 的老哥们能帮我想一个简单一点的办法搞定这个,真的不想去啃 debian 系的 initramfs 的生成逻辑,感觉那一套和 redhat 系用 dracut 制作 initramfs 的方式比起来实在是太落后了。

    2 条回复    2025-08-18 23:10:58 +08:00
    pagxir
        1
    pagxir  
       52 天前 via Android
    那你可以直接使用 Fedora 的 initramfs+kernel+module 其他的用 Debian 就好了
    oott123
        2
    oott123  
       52 天前 via Android
    一般不是会有生成 fallback 的 initramfs 吗,啥也不改用那个直接启动就行了吧
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1252 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 17:05 PVG 01:05 LAX 10:05 JFK 13:05
    Do have faith in what you're doing.
    ubao 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