virt-resize 重新排列分区表后如何修复它(KVM)?

virt-resize 重新排列分区表后如何修复它(KVM)?

我有 Ubuntu 18.04 作为客户操作系统,我需要使用以下命令调整分区大小virt-resize

#:/var/lib/uvtool/libvirt/images# virt-resize --shrink /dev/sda1 guest1.qcow guest1-shrunk.qcow
[   0.0] Examining guest1.qcow
**********

Summary of changes:

/dev/sda14: This partition will be left alone.

/dev/sda15: This partition will be left alone.

/dev/sda1: This partition will be resized from 17.9G to 5.5G.  The 
filesystem ext4 on /dev/sda1 will be expanded using the 'resize2fs' method.

**********
[   3.3] Setting up initial partition table on guest1.qcow
[  11.7] Copying /dev/sda14
[  11.7] Copying /dev/sda15
[  11.8] Copying /dev/sda1
 100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00
 100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00
[  29.9] Expanding /dev/sda1 (now /dev/sda3) using the 'resize2fs' method

Resize operation completed with no errors.  Before deleting the old disk, 
carefully check that the resized disk boots and works correctly.

我检查了一切是否正常:

#:/var/lib/uvtool/libvirt/images# virt-df -h guest1-shrunk.qcow 
Filesystem                                Size       Used  Available  Use%
guest1-shrunk.qcow:/dev/sda2       104M       3.6M       101M    4%
guest1-shrunk.qcow:/dev/sda3       5.3G       4.6G       612M   89%

但是,当我尝试启动它时virsh start guest1-shrunk,我无法使用 ssh 甚至使用 登录到服务器virsh console guest1-shrunk。没有显示任何错误,并virsh list --all显示客户机正在运行。但是,无法使用 关闭它virsh shutdown,我必须使用virsh destroy。显然,它无法正常启动,我怀疑这是因为分区被重新排列了。这里有一个类似的问题:KVM .img 通过 virt-resize 调整大小后无法启动尽管在这种情况下人们可以清楚地看到错误。

我该如何修复分区表?

答案1

在这里找到答案:https://askubuntu.com/questions/795504/grub-boot-error-on-cloned-virtual-machine

为了澄清步骤,我必须:

  1. 跑步virt-rescue quest1-shrinked.qcow
  2. 然后运行以下命令:
mkdir /mnt
mount /dev/sda3 /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt
grub-install /dev/sda

此后系统启动正常。

答案2

当我使用 virt-resize --expand 扩展磁盘分区时,我遇到了一个问题,我的虚拟机无法启动,它让我使用 grub 救援,然后出现错误:未知文件系统,我找到了一种解决这个问题的方法,

首先我运行此命令来获取我的分区名称。

virt-df -h -a <image-name>

我的磁盘分区是 /dev/sdaX

所以我知道我的分区,

我运行这个命令来重新安装 grub 然后我启动正常并且像以前一样:

virt-customize -a <image-name> --run-command 'grub install /dev/sda'

此后我就可以出发了。

相关内容