在使用虚拟机的时候,会经常遇到虚拟硬盘空间不足的情况。本文对Hyper-V的虚拟机硬盘扩容方法进行整理记录,为大家提供参考。本文的内容基于Win10 Pro系统上的Hyper-V虚拟机进行实例演示。Hyper-V虚拟机硬盘扩展需要两步:第一步,扩展虚拟硬盘大小;第二步,扩展虚拟机操作系统的文件系统硬盘,本文将介绍Win7虚拟机和CentOS虚拟机的硬盘扩展方法。

虚拟硬盘扩容

Hyper-V虚拟机硬盘扩容的第一步是扩大虚拟机的VHD虚拟硬盘。注意需要关闭正在使用虚拟硬盘的虚拟机。进入虚拟硬盘扩容界面有两种操作,一种是在Hyper-V的操作栏点击编辑磁盘(Fig.1),选择虚拟硬盘文件路径(Fig.2),然后选择扩展操作(Fig.5);另一种是点击虚拟机的设置操作(Fig.1),点击虚拟硬盘选项下的编辑操作(Fig.3),确认后(Fig.4)选择扩展操作(Fig.5)进入硬盘扩展编辑界面。进入硬盘扩展编辑界面后,根据需要修改硬盘大小,确认保存即可(Fig.6)。

Fig.1 点击操作中的编辑磁盘,或特定虚拟机的设置操作
Fig.2 在编辑磁盘对话框中选择虚拟硬盘文件路径,并选择编辑操作
Fig.3 在特定虚拟机的设置操作中,点击磁盘驱动器的编辑按钮
Fig.4 点击确认,进入磁盘编辑
Fig.5 选择扩展操作
Fig.6 修改硬盘大小,点击下一步确认完成

扩展虚拟机硬盘

由于操作系统对硬盘一般采用分层管理,硬盘是最底层的硬件。在硬盘之上,我们可以创建启动分区,逻辑分区等。在分区上,才是最终用户操作的文件系统。因此,当我们增加一个硬盘或者对硬盘进行扩容后,只是增大了硬盘的容量,没有相应增加分区,增加文件系统容量,是没法在操作系统中使用新扩展的硬盘空间的。本节分Windows和CentOS两种虚拟机系统,分别介绍硬盘扩展方法。

Window扩容

Windows系统硬盘的扩容相对简单,进入磁盘管理,在未分配硬盘去右键选择新建卷即可将硬盘加入Windows的文件系统。

CentOS扩容

CentOS扩容相对比较复杂。在开始之前,我们首先看一下Linux硬盘管理的分层, Fig.7。CentOS采用LVM方式管理硬盘空间。LVM的分区方式为将一个分区分配为一个物理卷PV,多个PV构成一个卷组VG。然后在此VG中划分逻辑卷LV,并将逻辑卷挂载到文件系统的对应目录。扩容即是对增加逻辑卷的容量,因此,对分区进行扩容时,需要经过以下步骤:

将扩容空间划分为新的硬盘分区-->将新的硬盘分区创建为物理卷PV-->将PV加入到要扩容的卷组VG-->对现有逻辑卷LV进行扩容-->按文件系统类型格式化扩容后的LV

Fig.7 Linux LVM 分层

下面详细介绍CentOS硬盘扩容的每个步骤:

1.使用命令fdisk -l 命令查看磁盘容量,如Fig.8 中红框里的内容。可以看到硬盘空间已经扩展到64G。

Fig.8 查看硬盘容量

2. 使用命令fdisk /dev/sda进入硬盘分区环境,使用n命令创建新的分区,硬盘序号,开始扇区,结束扇区不用填写,直接确认为默认值。输入w命令保存硬盘分区。再次使用命令fdisk -l查看硬盘容量,如Fig.9, 可以看到新增了分区/dev/sda3。此时可直接将此分区挂载到操作系统。为了Linux系统对硬盘空间进行统一管理,我们使用LVM管理硬盘空间,需要继续执行后面的步骤。

Fig.9 查看新分区

3. 修改分区类型为LVM。使用命令fdisk /dev/sda进入分区环境,使用命令p查看分区列表(Fig.10),可以看到我们新建的分区/dev/sda3的类型为Linux,我们需要将其修改为Linux LVM。Linux LVM分区类型的编号时8e,可以使用命令l查看不同分区类型的编号,如Fig.11.  然后,如Fig.12,使用命令t,按照提示输入分区编号3,新分区类型编号8e, 然后输入命令w保存新的分区配置。

Fig.10 查看新分区类型
Fig.11 查看分区类型编号
Fig.12 设置新分区类型为Linux LVM

4. 创建物理卷PV. 物理卷操作的相关命令如下:

pvchange   pvcreate   pvmove     pvresize   pvscan
pvck       pvdisplay  pvremove   pvs

首先用命令pvdisplay查看当前物理卷

Fig.13 查看物理卷

使用pvcreate /dev/sda3命令创建新的物理卷

Fig.14 创建新的物理卷

5. 添加新物理卷到卷组。卷组操作相关的操作命令如下:

vgcfgbackup    vgconvert      vgextend       vgmknodes      vgs
vgcfgrestore   vgcreate       vgimport       vgreduce       vgscan
vgchange       vgdisplay      vgimportclone  vgremove       vgsplit
vgck           vgexport       vgmerge        vgrename

使用vgdisplay查看现有的卷组,注意卷组命令VG Name的值。

Fig.15 查看卷组名称

使用vgextend将新的物理卷添加到卷组中。

Fig.16 将新物理卷添加到卷组

5. 创建逻辑卷LV。逻辑卷操作相关命令如下:

lvchange     lvextend     lvmconfig    lvmpolld     lvremove     lvscan
lvconvert    lvm          lvmdiskscan  lvmsadc      lvrename
lvcreate     lvmchange    lvmdump      lvmsar       lvresize
lvdisplay    lvmconf      lvmetad      lvreduce     lvs

首先用lvdisplay命令查看逻辑卷路径。

Fig.17 查看逻辑卷路径

使用lvresize命令扩展逻辑卷。-l 后面的参数是扩展的大小,+100%FREE表示全部剩余空间,也可以扩展50%FREE,或者直接为类似5G这样的具体容量大小。

Fig.18 扩展逻辑卷

6. 增大文件系统容量。首先需要查看文件系统类型,下图所示的文件类型为xfs。

Fig.19 查看文件系统类型

根据不同的文件系统类型,使用不同命令对文件系统进行扩容,如xfs文件系统扩容命令为xfs_growfs.

Fig.20 使用xfs_growfs命令对xfs文件系统进行扩容s

也可以使用统一的命令resize2fs -p ${lv_path}扩展文件系统容量。

7. 使用df -h命令查看扩容后的文件系统容量