在 KVM 虚拟化系统下,给现有虚拟机扩充硬盘空间
经常会遇到,运行中虚拟主机遇到了硬盘空间不足的问题,那么,如何在现有的 KVM 系统下,为虚拟主机扩充硬盘空间呢。本文即为大家介绍操作的方法。
基本思路
在开始添加前,先要捋一下基本思路。为虚拟主机扩充硬盘,有两个方面,一方面是扩充虚拟主机的磁盘文件的大小,另外一个,就是在虚拟主机的主机系统中,识别并利用上扩充的磁盘空间。
扩充虚拟主机的磁盘文件,有两种做法,一个是直接扩大文件,还有一个,就是添加一个新的磁盘镜像文件。
而在虚拟主机的主机系统中,对扩充的磁盘空间进行识别并利用,主要用到了分区工具和 LVM 的扩充功能,如果虚拟主机中,没用使用 LVM ,那就只能使用直接加载硬盘分区的方式来扩充硬盘了。
本文以下的方法,主要讲述的是,在直接扩大虚拟主机磁盘镜像文件的基础上,借助虚拟主机系统(CentOS 7)的 LVM 功能的扩充功能,在不改变主机文件系统目录结构的情况下,扩充主机的磁盘空间。
扩大虚拟主机的磁盘镜像文件
- 先查看下目标虚拟主机当前的磁盘情况
# virsh domblklist <虚拟机名称>
该命令会列出目标虚拟机当前使用的磁盘镜像文件情况。
- 查看磁盘镜像文件的情况
# qemu-img info /data/kvm/images/vm1.img
- 关闭虚拟机
# virsh shutdown <虚拟机名称>
- 扩大镜像文件的容量(扩大 100G 的容量)
# qemu-img resize /data/kvm/images/vm1.img +100G
- 查看是否成功
# qemu-img info /data/kvm/images/vm1.img
扩大虚拟主机系统中的硬盘空间
- 启动虚拟主机
# virsh start <虚拟机名称>
- 连接进入虚拟机,查看系统中的磁盘信息
使用 ssh 或者通过控制台的方式,进入虚拟机系统后,查看系统的磁盘信息。
# lsblk
查看命令的输出,会发现,磁盘块存在未使用的空间。
- 对未使用的磁盘空间进行分区
# fdisk /dev/vda
进入磁盘分区的交互界面后,依次执行以下命令:
m - 打印命令菜单
p - 打印分区表
n - 添加一个新的分区
p - 分区类型选择主分区(primary)
t - 修改分区的系统类型(更改为 Linux LVM)
l - 列出所有的分区类型的代码(8e 为 Linux LVM)
8e - 将分区类型修改为 Linux LVM
p - 打印分区表
w - 将分区表的修改写入并退出
- 刷新虚拟机系统中的分区
# partprobe
将新创建的分区加入逻辑卷中
- 将新添加的分区做成物理卷(PV)
# pvcreate /dev/vda3
添加成功后,可使用 pvdisplay 命令查看一下。
- 将新创建的物理卷(PV)合并到要扩容的卷组(VG)中
# vgextend centos /dev/vda3
其中,“centos” 为卷组名,执行成功后,可通过 vgdisplay 命令查看一下情况
- 将需要扩容的逻辑卷进行扩容
在扩容前,可使用 lvdisplay 查看下现有的逻辑卷,确定需要扩容的逻辑卷名,及所在的卷组。
# lvextend -l +100%FREE /dev/mapper/centos-root
以上命令,将卷组所有的剩余可用空间都扩充到 /dev/mapper/centos-root 这个逻辑卷了。可使用 lvdisplay 再次查看一下。
- 同步文件系统
# xfs_groufs /dev/mapper/centos-root
centos 7 默认是使用 xfs 文件系统。
至此,虚拟主机的硬盘空间扩容完成。