我尝试缩小 KVM 客户机的根分区。我设法缩小了它,没有丢失数据(就我们仅考虑其中的数据而言),但现在系统不再启动。这是一个 Debian 系统,根分区是/dev/mapper/vg0-root
(LVM)。如果我启动系统救援光盘我可以安装它并且可以访问所有内容。
为了缩小它,我在启动实时 SystemRescueCD 时执行以下操作:
e2fsck -f /dev/mapper/vg0-root
resize2fs /dev/mapper/vg0-root 25G
lvreduce -r --size 30G /dev/mapper/vg0-root
pvresize --setphysicalvolumesize 30G /dev/vda1
gdisk /dev/vda
请注意,我是凭记忆写下这些步骤的,也许这不是我使用的确切语法,但它提供了我所做事情的线索。
我gdisk
想缩小分区,为此我删除了现有分区并创建一个具有相同起始扇区(2048)、相同类型(8E00 Linux LVM)但大小较小(30G 而不是 200G)的新分区。gdisk
建议从扇区 34 而不是 2048 开始,但我不想移动分区,所以我手动输入了 2048。
然后我重启了系统,但是 grub 挂了。回到 SystemRescueCD,我挂载了 LVM 根分区/mnt/custom
,然后尝试重新安装 GRUB:
mount /dev/mapper/vg0-root /mnt/custom
cd /mnt/custom
mount -o bind /dev dev
mount -o bind /proc proc
mount -o bind /sys sys
chroot . /bin/bash
grub-install /dev/vda
结果是:
Installing for i386-pc platform
Warning: not using lvmetad with older version.
Warning: not using lvmetad with older version.
Warning: not using lvmetad with older version.
grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub-install: error: embedding is not possible, but this is required for RAID and LVM install.
现在我怀疑使用gdisk
而不是fdisk
上面的,它隐式地将分区表从 MBR 转换为 GPT,我不确定,但现在我看到一个 GPT 分区表甚至有fdisk
,所以在我看来这是很有可能的。
有没有办法重新将其设为 MBR?或者,有没有教程,教你如何从 live CD 系统和 chroot 手动将 Debian 系统从 grub-pc 升级到 grub-efi?
答案1
比我想象的要简单,这是解决方案将 GPT 转换回 MBR。
简而言之,运行gdisk /dev/vda
,使用r
,然后g
。成功了。