方案有两种,从原有的磁盘中直接扩容,另一种是利用逻辑卷的操作,动态进行扩容。
一.第一种方案,简单快捷,不需要进行关机停服务。
在控制台对云硬盘扩容之后,操作系统的分区并未扩容,需要您手动扩容。本实例为Linux 操作系统,版本为CentOS7.2_64bit,已经挂载一块数据盘。扩容前的数据盘只有一个主分区(/dev/vdb1),ext3文件系统,挂载点/test,扩容前40G,扩容后50G,扩容完成后数据盘仍只有一个主分区。
注意事项
1. 云硬盘正在创建快照时,不允许进行扩容操作。
2. 包月云磁盘无法进行扩容操作。
3. 扩容只是扩容数据盘的容量,不是扩大文件系统容量。
4. 磁盘扩容只能扩容数据盘,不能对系统盘进行扩容。
扩容已有分区
操作步骤
1. 登录linux实例。
2. 输入 df –h查看分区挂载目录
3. 卸载分区umount /dev/vdb1。
4. 删除原来的分区并创建新分区,fdisk /dev/vdb。
(1)输入 d 键,然后回车,删除已有的分区。
说明:
- 删除分区数据盘不会丢失盘内数据。
- 硬盘有多个分区不建议此操作。
(2)输入 n 键,然后回车,开始创建新的分区。
(3)输入 p 键,然后回车,创建主分区。
(4)输入分区编号,示例使用默认 1 编号,回车。
(5)输入第一个扇区编号,示例使用默认值,回车。
(6) 输入最后一个扇区编号,示例使用默认值,回车。
(7) 最后输入 w 键,然后回车,写入更改。
5. 检查文件系统e2fsck -f /dev/vdb1,刷新文件系统大小resize2fs /dev/vdb1。
6. 重新挂载分区mount /dev/vdb1 /test,使用df –h查看扩容后的分区。
二. 逻辑卷的操作
在Linux系统中使用云硬盘时,需要对云硬盘进行分区。伴随着存储需求的不断提升,会出现分区容量不足的情况。当容量不足时,通常会采用替换原有分区的方式进行扩容(具体方法可参见扩容云硬盘)。该方法操作过程复杂,需要经过备份数据、清除硬盘、重新分区、数据恢复等多个环节,此外,还需要中断业务运行。
通过逻辑卷管理LVM来管理云硬盘后,文件系统不再受限于云硬盘的大小,可以分布在多个云硬盘上,并且可以动态扩容。
逻辑卷管理LVM(Logical Volume Manager)是在Linux环境下对磁盘分区管理的一种机制。LVM是建立在云硬盘和分区之间的一个逻辑层,可以将若干个磁盘物理分区连接为一个整块的卷组VG(Vloume Group),形成一个存储池,然后,在卷组上创建逻辑卷LV(Logical Volumes))。通过这样一种方式,可以在线动态调整存储卷的大小,提高磁盘分区管理的灵活性。
LVM的基本工作原理是将底层的云硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。
- 最底层的存储设备为云硬盘。
- 云硬盘被格式化为物理卷PV(Physical Volume)。物理卷可以是实际云硬盘上的分区,也可以是整个云硬盘,也可以是RAID设备。
- 在物理卷PV之上建立卷组VG。一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。
- 在卷组之上建立逻辑卷LV。卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展或缩小空间。
I.构建逻辑卷
本文以/dev/vdb、/dev/vdc和/dev/vdd三块云硬盘为例说明如何创建LVM。如下图所示,系统已经挂载了三块云硬盘,大小是20GB。
步骤一:安装LVM
- 执行如下命令,检查系统是否安装过LVM。
rpm -qa |grep lvm2
- 执行如下命令,安装LVM。
yum install lvm2
执行后,若出现如下信息,则说明安装成功。
步骤二:将云硬盘创建为物理卷
- 以root用户登录云服务器。
- 执行如下命令,查看当前设备挂载的云硬盘。
fdisk -l
从上述的显示信息中我们可以看出,当前系统挂载了三块云硬盘,分别是/dev/vdb、/dev/vdc和/dev/vdd。
- 创建物理卷,将希望添加到卷组的所有分区或者云硬盘创建为物理卷。将整个硬盘创建为物理卷的命令为:
pvcreate <磁盘设备名1> <磁盘设备名2 > … <磁盘设备名n>
多个磁盘之间用空格来分隔。
本示例中,执行pvcreate /dev/vdb /dev/vdc /dev/vdd
命令,显示如下。
- 执行如下命令,查看新创建的物理卷详细信息。
pvdisplay
从显示信息中,我们可以看到新创建的三个物理卷,分别是/dev/vdb、/dev/vdc 、/dev/vdd。
步骤三:创建卷组
- 将多个物理卷创建为一个卷组。
vgcreate <卷组名> <物理卷名称1> <物理卷名称2> … <物理卷名称n>
本示例中,执行 vgcreate lvm_example /dev/vdb /dev/vdc /dev/vdd
。
如果出现如上提示信息,则说明卷组创建成功。
- 查看卷组详细信息
vgdisplay
- (可选)卷组创建完成后,如果想将新的物理卷添加到该卷组,可以执行如下命令。
vgextend <卷组名> <物理卷名称1>
步骤四:在卷组中创建逻辑卷
- 创建逻辑卷。
lvcreate -L <逻辑卷大小> -n <逻辑卷名称> <卷组名称>
本示例中,执行lvcreate -L 20G -n lv1 lvm_example
。
- 查看逻辑卷详情。
lvdisplay
步骤五:创建并挂载文件系统
- 创建文件系统。
mkfs.<文件格式> <逻辑卷路径>
本示例中,执行mkfs.ext3 /dev/lvm_example/lv1
。
- 创建挂载目录。
mkdir <挂载目录>
示例
mkdir /Data
- 挂载逻辑卷。
mount <逻辑卷路径> <挂载目录>
示例
mount /dev/lvm_example/lv1 /Data
- 查看挂载是否成功。
df -h
可以看到该逻辑卷已经成功挂载在/Data下。
II。扩容逻辑卷
当逻辑卷容量不足时,可以在线动态扩展逻辑卷容量。
- 扩展逻辑卷容量。
lvextend -L +/- <增减容量> <逻辑卷路径>
示例
//样例1:将逻辑卷lv1增加350M容量
lvextend -L +350M /dev/lvm_example/lv1
//样例2:将逻辑卷lv1所在卷组所有空闲空间分配到lv1中
lvextend –l +100%FREE /dev/lvm_example/lv1
- 扩展文件系统容量。
resize2fs <逻辑卷路径>
示例
resize2fs /dev/lvm_example/lv1
- 查看扩展后的逻辑卷大小。
df -h
可以看到,新增加的1G容量已经加到逻辑卷上了,容量总量变为21G。