如何在Linux中扩展KVM虚拟机磁盘大小

本简要指南说明了什么是 病毒大小 命令行工具,以及如何使用Linux中的Virt-resize工具扩展或扩展KVM虚拟机磁盘大小。

前几天,我注意到我的一个KVM虚拟机磁盘空间不足。 由于磁盘空间不足,我无法安装任何新应用程序或无法保存文件。 要解决此问题,我只是使用以下方法增加了KVM虚拟机的磁盘大小: virt-size 命令。 我亲自测试了以下给出的步骤,以增加CentOS 8 KVM虚拟机的磁盘大小,它可以按预期工作。

病毒大小调整工具

病毒大小调整 是用于调整虚拟机磁盘大小的命令行工具。 使用virt-resize,我们可以增加或减少虚拟机磁盘的大小。 我们也可以使用virt-resize命令删除虚拟磁盘中的分区。 请注意,virt会调整实时计算机的大小。 在调整其磁盘映像大小之前,应关闭来宾系统。

为了扩展虚拟机的磁盘大小,我们首先创建一个比源映像更大的磁盘映像。 然后,我们将源图像复制到目标图像,并最终调整其大小。

调整病毒大小是 libguestfs-tools 包裹。 要在Debian,Ubuntu及其衍生版本上安装libguestfs-tools软件包,请运行:

$ sudo apt install libguestfs-tools

要在Fedora,RHEL及其克隆上安装libguestfs-tools软件包,请运行:

$ sudo dnf install libguestfs-tools

在Fedora 34中, guestfs-tools 软件包提供了virt-resize工具。 因此,如果您使用的是Fedora 34,请安装 guestfs-tools 包装如下:

$ sudo dnf install guestfs-tools

现在让我们看看如何使用以下方法扩展虚拟机磁盘大小 virt-resize 命令。

在Linux中扩展或扩展KVM虚拟机磁盘大小

就本指南而言,我将使用名为以下内​​容的CentOS 8虚拟机磁盘映像 centos8.qcow2。 我已将此法师存储在当前工作目录中。 您可以使用 virsh dumpxml 命令以找到要调整大小的磁盘映像。

例子:

$ virsh dumpxml centos8

在上述命令中,将centos8替换为您的VM名称。

找到要调整大小的磁盘映像后,检查此磁盘映像中的分区详细信息。 要打印分区详细信息及其磁盘映像的大小,请运行:

$ virt-filesystems --long --parts --blkdevs -h -a centos8.qcow2 

样本输出:

 Name       Type       MBR  Size  Parent
 /dev/sda1  partition  83   1.0G  /dev/sda
 /dev/sda2  partition  8e   19G   /dev/sda
 /dev/sda   device     -    20G   -

在Linux中使用virt-filesystems命令显示当前分区及其大小

从上面的输出中可以看到,我的磁盘映像只有两个分区,即 /dev/sda1 大小为1 GB,并且 /dev/sda2 与19GB。 磁盘映像的总大小为20 GB。

现在我们将

  • 将总磁盘映像大小从20 GB增加到 30 GB
  • 增加第一个分区的大小 /dev/sda1 从1.0GB到 1.5GB
  • 展开第二个分区 /dev/sda2 填补剩余的空间。

Virt-resize无法就地调整磁盘映像的大小。 此外,Virt-resize不应在实时虚拟机上使用。 在调整磁盘映像大小之前,请关闭虚拟机电源并备份原始磁盘映像。

$ mv centos8.qcow2 centos8.qcow2.backup

上面的命令将重命名当前的磁盘映像,名为 centos8.qcow2centos8.qcow2.backup

使用以下命令创建一个名称相同且大小为30GB的新磁盘映像:

$ qemu-img create -f qcow2 -o preallocation=metadata centos8.qcow2 30G

样本输出:

Formatting 'centos8.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off preallocation=metadata compression_type=zlib size=32212254720 lazy_refcounts=off refcount_bits=16

确保新创建的磁盘大小为30GB:

$ virt-filesystems --long --parts --blkdevs -h -a centos8.qcow2

样本输出:

Name      Type    MBR  Size  Parent
 /dev/sda  device  -    30G   -

使用qemu-img命令创建新的虚拟磁盘映像

现在,使用以下命令扩展/扩展KVM虚拟机磁盘映像大小:

$ virt-resize --resize /dev/sda1=+500M --expand /dev/sda2 centos8.qcow2.backup centos8.qcow2

这里,

  • --resize /dev/sda1=+500M -增加了 /dev/sda1 分区到500 MB。
  • –expand / dev / sda2-调整大小 /dev/sda2 分区以填充所有剩余空间。 就我而言,它将从19.0G调整为28.5G。
  • centos8.qcow2.backup -它是原始输入磁盘映像。
  • centos8.qcow2 -这是新创建的输出磁盘映像。

上面命令的示例输出是:

[   0.0] Examining centos8.qcow2.backup
 
 Summary of changes:
 /dev/sda1: This partition will be resized from 1.0G to 1.5G.  The 
 filesystem ext4 on /dev/sda1 will be expanded using the ‘resize2fs’ 
 method.
 /dev/sda2: This partition will be resized from 19.0G to 28.5G.  The LVM PV 
 on /dev/sda2 will be expanded using the ‘pvresize’ method.
 
 [   4.2] Setting up initial partition table on centos8.qcow2
 [   5.6] Copying /dev/sda1
  100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00
 [   9.7] Copying /dev/sda2
  100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00
 [  45.1] Expanding /dev/sda1 using the ‘resize2fs’ method
 [  45.3] Expanding /dev/sda2 using the ‘pvresize’ method
 Resize operation completed with no errors.  Before deleting the old disk, 
 carefully check that the resized disk boots and works correctly.

扩展或扩展KVM虚拟机磁盘大小扩展或扩展KVM虚拟机磁盘大小

使用以下命令检查分区及其大小 virt-filesystems 命令:

$ virt-filesystems --long -h --all -a centos8.qcow2

样本输出:

 Name          Type        VFS   Label  MBR  Size  Parent
 /dev/sda1     filesystem  ext4  -      -    1.4G  -
 /dev/cl/root  filesystem  xfs   -      -    17G   -
 /dev/cl/swap  filesystem  swap  -      -    2.0G  -
 /dev/cl/root  lv          -     -      -    17G   /dev/cl
 /dev/cl/swap  lv          -     -      -    2.0G  /dev/cl
 /dev/cl       vg          -     -      -    29G   /dev/sda2
 /dev/sda2     pv          -     -      -    29G   -
 /dev/sda1     partition   -     -      83   1.5G  /dev/sda
 /dev/sda2     partition   -     -      8e   29G   /dev/sda
 /dev/sda      device      -     -      -    30G   -

使用virt-filesystems命令在KVM虚拟机磁盘中打印分区及其大小使用virt-filesystems命令在KVM虚拟机磁盘中打印分区及其大小

如您在上面的输出中看到的,我的CentOS8 KVM磁盘映像大小已从20 GB调整为30 GB。

现在使用新的磁盘映像启动虚拟机。 您还可以使用Qcow2映像创建新的虚拟机,如以下链接中所述。

  • 在Linux中使用Qcow2映像创建KVM虚拟机

如果可以正常使用,请彻底检查是否所有数据都存在。 如果一切正常,请删除旧的备份磁盘。

如果新磁盘有任何问题,请关闭虚拟机,然后将备份磁盘重命名为其原始名称。 再次仔细重复上述步骤。 不要忘记备份数据和磁盘映像。

资源:

相关阅读:

  • 使用Libguestfs访问和修改虚拟机磁盘映像
  • 如何使用虚拟救援来营救虚拟机

磁盘大小调整基于内核的虚拟机KVMLinux虚拟磁盘映像虚拟机虚拟化

Sidebar