这个简短的指南解释了什么是 虚拟大小 命令行工具以及如何在 Linux 中使用 Virt-resize 工具扩展或扩展 KVM 虚拟机磁盘大小。
前几天我注意到我的一个 KVM 虚拟机磁盘空间不足。 由于磁盘空间不足,我无法安装任何新应用程序或无法保存文件。 为了解决这个问题,我只是使用以下命令增加了 KVM 虚拟机磁盘的大小 virt-size
命令。 我亲自测试了下面给出的步骤来增加 CentOS 8 KVM 虚拟机的磁盘大小,它按预期工作。
虚拟大小调整工具
调整大小 是一个用于调整虚拟机磁盘大小的命令行工具。 使用 virt-resize,我们可以增加或减少虚拟机磁盘的大小。 我们也可以使用 virt-resize 命令删除虚拟磁盘内的分区。 请注意 virt-resize 实时机器。 在调整磁盘映像的大小之前,应关闭来宾系统。
要扩展虚拟机的磁盘大小,我们首先创建一个比源映像更大的磁盘映像。 然后我们将源图像复制到目标图像并最终调整其大小。
虚拟调整大小是 libguestfs-tools
包裹。 要在 Debian、Ubuntu 及其衍生产品上安装 libguestfs-tools 软件包,请运行:
$ sudo apt install libguestfs-tools
安装 libguestfs-tools 包 Fedora, RHEL 及其克隆,运行:
$ 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 -
正如你在上面的输出中看到的,我的磁盘镜像只有两个分区,即 /dev/sda1
大小为 1 GB 和 /dev/sda2
19GB。 磁盘映像的总大小为 20 GB。
现在我们将,
- 将总磁盘映像大小从 20 GB 增加到 30GB,
- 增加第一个分区的大小
/dev/sda1
从 1.0GB 到 1.5GB, - 展开第二个分区
/dev/sda2
来填充剩余空间。
Virt-resize 不能就地调整磁盘映像的大小。 此外,不应在实时虚拟机上使用 Virt-resize。 在调整磁盘映像大小之前,关闭虚拟机并备份原始磁盘映像。
$ mv centos8.qcow2 centos8.qcow2.backup
上面的命令将重命名名为的当前磁盘映像 centos8.qcow2
到 centos8.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 -
现在使用命令扩展/扩展 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.
检查分区及其大小 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 -
正如您在上面的输出中看到的,我的 CentOS8 KVM 磁盘映像大小已从 20 GB 调整为 30 GB。
现在使用新的磁盘映像启动虚拟机。 您还可以使用 Qcow2 映像创建新的虚拟机,如以下链接中所述。
- 在 Linux 中使用 Qcow2 镜像创建 KVM 虚拟机
如果它没有任何问题,那么彻底检查您的所有数据是否存在。 如果一切正常,删除旧的备份磁盘。
如果新磁盘有任何问题,请关闭虚拟机并将备份磁盘重命名为其原始名称。 再次小心地重复上述步骤。 不要忘记备份数据和磁盘映像。
资源:
- Virt-resize 网站
相关阅读:
- 使用 Libguestfs 访问和修改虚拟机磁盘映像
- 如何使用 Virt-rescue 来拯救虚拟机
磁盘调整基于内核的虚拟机KVMLinux虚拟磁盘镜像Virtual MachineVirtualization