在 KVM 虚拟化系统下,给现有虚拟机扩充硬盘空间

2021-07-19
3分钟阅读时长

经常会遇到,运行中虚拟主机遇到了硬盘空间不足的问题,那么,如何在现有的 KVM 系统下,为虚拟主机扩充硬盘空间呢。本文即为大家介绍操作的方法。

基本思路

在开始添加前,先要捋一下基本思路。为虚拟主机扩充硬盘,有两个方面,一方面是扩充虚拟主机的磁盘文件的大小,另外一个,就是在虚拟主机的主机系统中,识别并利用上扩充的磁盘空间。

扩充虚拟主机的磁盘文件,有两种做法,一个是直接扩大文件,还有一个,就是添加一个新的磁盘镜像文件。

而在虚拟主机的主机系统中,对扩充的磁盘空间进行识别并利用,主要用到了分区工具和 LVM 的扩充功能,如果虚拟主机中,没用使用 LVM ,那就只能使用直接加载硬盘分区的方式来扩充硬盘了。

本文以下的方法,主要讲述的是,在直接扩大虚拟主机磁盘镜像文件的基础上,借助虚拟主机系统(CentOS 7)的 LVM 功能的扩充功能,在不改变主机文件系统目录结构的情况下,扩充主机的磁盘空间。

扩大虚拟主机的磁盘镜像文件

  1. 先查看下目标虚拟主机当前的磁盘情况
# virsh domblklist <虚拟机名称>

该命令会列出目标虚拟机当前使用的磁盘镜像文件情况。

  1. 查看磁盘镜像文件的情况
# qemu-img info /data/kvm/images/vm1.img
  1. 关闭虚拟机
# virsh shutdown <虚拟机名称>
  1. 扩大镜像文件的容量(扩大 100G 的容量)
# qemu-img resize /data/kvm/images/vm1.img +100G
  1. 查看是否成功
# qemu-img info /data/kvm/images/vm1.img

扩大虚拟主机系统中的硬盘空间

  1. 启动虚拟主机
# virsh start <虚拟机名称>
  1. 连接进入虚拟机,查看系统中的磁盘信息

使用 ssh 或者通过控制台的方式,进入虚拟机系统后,查看系统的磁盘信息。

# lsblk

查看命令的输出,会发现,磁盘块存在未使用的空间。

  1. 对未使用的磁盘空间进行分区
# fdisk /dev/vda

进入磁盘分区的交互界面后,依次执行以下命令:

m - 打印命令菜单
p - 打印分区表
n - 添加一个新的分区
p - 分区类型选择主分区(primary)
t - 修改分区的系统类型(更改为 Linux LVM)
l - 列出所有的分区类型的代码(8e 为 Linux LVM)
8e - 将分区类型修改为 Linux LVM
p - 打印分区表
w - 将分区表的修改写入并退出
  1. 刷新虚拟机系统中的分区
# partprobe

将新创建的分区加入逻辑卷中

  1. 将新添加的分区做成物理卷(PV)
# pvcreate /dev/vda3

添加成功后,可使用 pvdisplay 命令查看一下。

  1. 将新创建的物理卷(PV)合并到要扩容的卷组(VG)中
# vgextend centos /dev/vda3

其中,“centos” 为卷组名,执行成功后,可通过 vgdisplay 命令查看一下情况

  1. 将需要扩容的逻辑卷进行扩容

在扩容前,可使用 lvdisplay 查看下现有的逻辑卷,确定需要扩容的逻辑卷名,及所在的卷组。

# lvextend -l +100%FREE /dev/mapper/centos-root

以上命令,将卷组所有的剩余可用空间都扩充到 /dev/mapper/centos-root 这个逻辑卷了。可使用 lvdisplay 再次查看一下。

  1. 同步文件系统
# xfs_groufs /dev/mapper/centos-root

centos 7 默认是使用 xfs 文件系统。

至此,虚拟主机的硬盘空间扩容完成。

Avatar
吴思源 二十多年互联网从业经历,互联网全栈开发工程师,资深技术管理人员,资深游戏开发工程师。具有丰富的搭建海量数据处理系统的经验,大容量、高并发、高可靠线上运营系统的搭建和维护的丰富经验。