前言

本文档主要是介绍如何在ESXi上扩容安装了Linux系统的虚拟机

操作环境
操作系统:Esxi 6.0.0

虚拟机操作系统:Linux version 3.10.0-327.3.1.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Wed Dec 9 14:09:15 UTC 2015

当前硬盘大小:30GB

计划硬盘扩容大小:20GB

Linux磁盘管理基础知识介绍
物理卷(Physical Volume,PV):就是指硬盘分区,也可以是整个硬盘或已创建的软RAID,是LVM的基本存储设备。

卷组(Volume Group,VG):是由一个或多个物理卷所组成的存储池,在卷组上能创建一个或多个逻辑卷。

逻辑卷(Logical Volume,LV):类似于非LVM系统中的硬盘分区,它建立在卷组之上,是一个标准的块设备,在逻辑卷之上可以建立文件

系统。

可以做这样一个设想来理解以上三者的关系:如果把PV比作地球的一个板块,VG则是一个地球,因为地球是由多个板块组成的,那么在地

球上划分一个区域并标记为亚洲,则亚洲就相当于一个LV。

在Linux中规定,每个硬盘设备最多只能由4个主分区(其中包括一个扩展分区)构成任何一个扩展分区都要占用一个主分区号码,也就是在一个硬盘中,主分区和扩展分区一共最多是 4个。(Linux 下面每一个硬盘总共最多有 16 个分区)

操作步骤
1.确认分区类型

由于本方法只针对LVM类型的分区,故在扩容之前先通过以下命令检查分区类型是否为Linux LVM类型。

fdisk -l

wKiom1ebEV-Ch8ZmAABTZmKnH-Y620.png-wh_50

如上图所示,/dev/sda2 在system一栏中被标记为Linux LVM类型,他们的Id是8e。8e代表Linux LVM, 83代表Linux Native分区。确认为LVM之后,继续我们的扩容工作。

下图使用 df -h 命令,查看当前系统磁盘容量和使用情况,目前的大小大约有27GB,计划扩展20GB,总容量达到47GB。我们打算把20GB的新磁盘扩展到 /dev/mapper/centos-root 这个目录下面。

wKioL1ebEafSYSzIAAAdGhdLCFg786.png-wh_50

注:因为LVM是逻辑卷磁盘管理程序,故/dev/mapper/centos-root 实际上是在/dev/sda2 上,所以在fdisk -l 中显示的设备信息中只有/dev/sda2 的分区类型,而看不到/dev/mapper/centos-root 分区,因为它只是逻辑上存在。所以需要确认分区类型的是/dev/sda2 而不是 /dev/mapper/centos-root,不要晕。。。

2.增加虚拟物理硬盘大小

使用vSphere Client 客户端访问vCenter,选中需要扩容的虚拟机(本文选中211),右键点击该虚拟机,选择“编辑设置”。跳出以下画面

wKiom1ebEeqhQc-jAACUSa8elj8630.png-wh_50

选择“硬盘1”,将“磁盘置备”中的“30”GB,改为“50”GB。

注:如果你的虚拟机的“编辑设置”中无法修改硬盘大小的时候(图中“置备大小”后的值是灰色,无法修改),原因可能是你在这台虚拟机上使用了快照功能。你只需要关闭虚拟机,右键点击该虚拟机,选择“快照”,再选择“快照管理器”,然后将所有快照删除,再开启虚拟机,即可修改硬盘大小。

3.发现新磁盘

重启虚拟机,使用 fdisk -l 查看是否系统识别到新增的磁盘空间。

wKioL1ebEinwHtZWAABkqT_1BFo782.png-wh_50

如图所示,磁盘大小从32.2GB,扩容到53.7GB。

4.给新磁盘分区

好了,新的磁盘被识别到了,现在需要给磁盘分区,让系统能使用到这个新的磁盘空间。

我们现在要在磁盘 /dev/sda 上分区(注意:linux中一块硬盘的主分区个数不能超过4个,目前sda1,sda2已经占用了两个分区名额,新增的分区应该为第三个主分区,即sda3)。现在开始给磁盘 /dev/sda 分区。我们这里使用的工具是fdisk。输入以下命令:

fdisk /dev/sda

wKioL1ebEpGRbvitAAAasHN34U4171.png-wh_50

如果需要帮助,你可以输入m获取更多信息。

现在我们来创建新分区,输入 n

wKiom1ebErXR0NgKAAAawAFVr2Q452.png-wh_50

再输入p,代表我们现在要创建一个主分区

注:2 primary,0 extended,2 free表示目前我们这块硬盘上有2个主分区,0个拓展分区,还可以再创建2个主分区。

wKiom1ebEt-AEBFQAAAJjDydpcs337.png-wh_50

输入3,代表创建分区sda3

wKioL1ebEwfDQzdnAAAIJM3eCsY900.png-wh_50

接下来指定起始扇区和Last扇区,只要敲两下回车键,选择默认值就好了。

wKiom1ebEymjSCSMAAAeWN1QWl0907.png-wh_50

至此,分区工作已完成。

现在要给新建分区指定分区类型了。

输入t,再输入3,表示选择新建的sda3分区,最后输入8e,代表选择的是LVM类型。

wKiom1ebE0rCnHNGAAAa1G9__Sc509.png-wh_50

大功告成,最后输入w保存我们的配置结果吧。

wKioL1ebE3DhO-CuAAAhjcbuhac668.png-wh_50

可以用fdisk -l查看你新建的分区sda3.

wKioL1ebE5LT8oPWAABd9JDBTG0838.png-wh_50

5.新增逻辑卷LV

分区建好了,为了让之后的LVM可以使用到这个分区,我们需要在新的分区 /dev/sda3 上创建物理卷PV。

输入以下命令:

pvcreate /dev/sda3

wKiom1ebE7HRNEUSAAAI252mgYo404.png-wh_50

好吧,忘了和你说了,你需要重启电脑现在。。。 reboot

或者如果你不想重启电脑,也可以使用partprobe命令

wKiom1ebE9Sw_vo5AAAKCXkwCkE015.png-wh_50

再来一遍 pvcreate /dev/sda3

接下来,我们需要先确认卷组(VG),使用以下命令:

Vgdisplay

wKiom1ebFEXAaC8VAAAu4qnjqsg240.png-wh_50

现在开始扩容VG大小,使用以下命令:

vgextend centos /dev/sda3

wKioL1ebFGODZyH0AAAIypWAMus241.png-wh_50

注: centos 是本机的VG Name,每个系统的名字不同,需要用vgdisplay提前查看。

注:如果磁盘容量不足,会有错误提示:”Could’t create temporary archive name. Volume group “centos” metadata archive failed. Internal error:Attemp to unlock unlocked VG #orhans”. 原因是因为磁盘空间实在太小了,无法创建临时文件来操作磁盘空间扩展。解决方法是,删除一些系统中没用的文件,再进行操作。

这时,可以使用pvscan 检查当前系统的pv情况,看看 /dev/sda3上的PV是否建成了。

wKiom1ebFIWBsb_cAAAPtjjOD68394.png-wh_50

再接下来,我们需要增大逻辑卷了,这一步主要目的是把刚刚创建的新分区和新物理卷PV /dev/sda3扩展到当前的逻辑卷,让系统能识别并且使用这个新空间。

首先先确认当前的逻辑卷组,使用以下命令:

lvdisplay

wKioL1ebFKjTdhNnAABYgpXSwnc322.png-wh_50

如图,/dev/centos/root 是当前逻辑卷LV的挂载路径。使用以下命令扩展改逻辑卷:

lvextend /dev/centos/root /dev/sda3

wKiom1ebFMnC3MOAAAARZ3hlkGI496.png-wh_50

逻辑卷扩展成功!但是还没完,最后,你需要告诉系统有这块新领域,你可以使用了。输入以下命令:

xfs_growfs /dev/centos/root

wKioL1ebFOWA3wsTAAA0a2TNlT8067.png-wh_50

注:如果你使用的文件系统是ext,需要使用命令 resize2fs /dev/centos/root

使用df -TH 查看文件系统,一般centos 是xfs, unbuntu是ext3

wKioL1ebFQqTHzddAAAcnX2W5cw535.png-wh_50

最后检查一下你的成果吧

df -h

mkfs.xfs -f /dev/sdb1
echo '/dev/sdb1 /jk xfs defaults 0 0' >> /etc/fstab