在Recovery模式下收缩系统根目录的LVM逻辑卷(LV)
我在 Incus使用ZFS作为存储 实践中,需要将操作系统根目录所在的 /dev/ubuntu-vg/ubuntu-lv 逻辑卷LV收缩,以便能够创建一个用于 ZFS 存储池的新LV逻辑卷。
操作的关键是 lvreduce 需要确保根文件系统卸载状态才能 resize2fs ,所以最简单的方式是 进入Recovery模式,这样可以避免挂载根文件系统,也就能够shrink EXT4文件系统。
重启主机,在物理主机POST自检完成后,立即长按
Shift键,强制唤醒GRUB引导菜单在GRUB菜单中,使用方向键选择
Advanced options for Ubuntu并回车选择带有 recover mode 的最新内核(
Ubuntu, with Linux 6.8.0-124-generic (recovery mode)),进入recovery模式
警告
实践发现进入recovery模式以后,根文件系统实际已经挂载,这导致我最初想要在recovery模式下shrink根文件系统失败。所以改为手工修订启动参数
再次重启熊,在选择 recover mode 的最新内核(
Ubuntu, with Linux 6.8.0-124-generic (recovery mode)) 时,不要回车直接进入,而是按下e进入GRUB脚本编辑模式将光标移动到
linux开头的行,将root=等内容清除掉,并在行尾提啊家init=/bin/sh,即修改
linux /vmlinuz-6.8.0-124-generic root=/dev/mapper/ubuntu--vg-ubuntu--lv ro single nomodeset dis_ucode_ldr
然后按下
ctrl-x引导启动,并看到提示符号如下
(initramfs)
备注
此时系统的系统提供了一个shell,但是没有挂载根文件系统,所以能够操作磁盘。注意,这是一个简单的运维环境,缺少很多常用的工具
执行以下命令,激活LVM,并检查文件系统和收缩LV:
# 激活磁盘上的蠲租
vgchange -ay
#强制进行文件系统自检
e2fsck -fy /dev/ubuntu-vg/ubuntu-lv
#缩减LVM
lvm lvreduce -L 400G /dev/mapper/ubuntu--vg-ubuntu--lv
警告
这里我实际上遇到了一个问题,就是Ubuntu发行版的 initramfs 实际上缺少维护LVM的工具,例如执行 lvreduce 命令实际上该工具没有集成在initramfs中。所以上述执行过程会报错,如果要通过这种方式,实际上要自己重构initramfs,将必要的哦凝固集成进去。
所以,我最终改成采用 Ubuntu Live CD 来完成上述操作,其步骤区别仅仅是启动方式不同。