Linux下AWS磁盘扩容实操
实操背景
目前AWS上EC2部署的MYSQL服务器空间快满了,需要扩容,全部增加200G空间
大体操作流程:AWS操作修改磁盘大小->lsblk看磁盘信息->fdisk/gdisk创建物理分区->继续创建pv->将PV添加到VG组中->商用 lvextend 将容量分配给逻辑卷->查看成功后->resize2fs 更新文件系统
磁盘情况 使用 df -Th 命令可以看到文件系统使用的是 ext4:
使用 fdisk -l 命令查看分区情况 磁盘 xvda (gpt分区) 是主系统盘挂载在/下,本次扩容目标是 xvdb 它目前有两个主分区 xvdb1和xvdb2 ,而且其 disklabel type 类型是 dos (是 MBR分区)
开始操作
第一步,AWS平台操作,及查看磁盘情况(重要)
AWS平台上找到该服务器挂载对应的磁盘,点击修改可以调整磁盘大小
调整保存之后该磁盘状态就会进入:optimizating 优化中的状态,这时就可以链接到EC2实例中,查看磁盘状态
使用 lsblk 命令查看状态,可以看到目前的分区情况,使用LVM的方式管理磁盘,可以这么理解LVM就是一个虚拟大磁盘,他可以吧所有物理磁盘创建的pv 整合到他的 vg 组中,然后vg 组下就可以按自己所需分区了,好处就是可以动态分区热扩容;
第二步,创建物理分区
本次AWS修改优化的是扩容了对应的 xvdb 这块磁盘给它加200G的空间,原来如上图是1T,AWS那边修改后,这边会变成1.2T
其实如果是gpt盘可以参考AWS官方文档 https://aws.amazon.com/cn/premiumsupport/knowledge-center/create-lv-on-ebs-partition/
只要下面分区的空间之和 小于 上面总空间就说明有富余空间了,好可以开始创建分区
这时看分区类型MBR类型选择 fdisk 工具,如果是 gpt 类型选择 gdisk,我的磁盘是 MBR的 我用fdisk给它分区
使用下列命令:
$ sudo fdisk /dev/xvdb
....
Command (m for help): n ##这里输入n 回车 创建,
...:p ##输入p 回车 创建主分区 如果是逻辑分区 是 e
....:3 #分区编号 ,可以再它指定的访问写,貌似主分区只能4个
....: #回车只建立一个区所以他会自己计算起始磁柱头
....: #回车只建立一个区所以默认使用最后的磁柱头
Command (m for help): w ##输入W即可保存 关于字母的命令说明 可以输入?查看 q是不保存退出;
注意保存后可能会报错,可能需要重启什么的,不用管他,直接使用下面 fdisk -l 命令 查看分区表情况是否分区正确,确认好之后执行下一个 保存分区表的命令 就可以不用重启了
$ sudo fdisk -l ##查看分区表情况 正确之后继续
....
$ sudo partprobe #使分区表生效,无需重启(重要) 如果没有这个命令需要安装,sudo apt install pared 软件
上面保存之后 就可以开始创建 pv了 没有lvm 需要安装 apt install lvm2
$ sudo pvcreate /dev/xvdb3 #使用pvcreate转换
...提示成功后
$ sudo pvdisplay #查看已经存在的pv
...
第三步,加入到VG组中并分配空间
使用 vgs 或者 vgdisplay 命令看是否存在 vg 组;如果没有就说明你是最初始的时候了创建的时候 就直接会把PV加入你创建的VG组了 同时要初始创建文件系统等等 可以参考AWS的文档;这里我已经有组了直接把这个PV加入到这个VG组中
$ sudo pvs ##继续使用 pvs 或 pvdisplay 命令查看 物理卷 pv情况中
$ sudo vgs ##继续使用 vgs 或 vgdisplay 命令查看 卷组 vg情况
确定无误后,使用 vgextend 命令,将上面创建的PV xvdb3加入到这个已经存在的 vol_data 组中
$ sudo vgextend vol_data /dev/xvdb3
查看是否成功加入组中
$ sudo pvs ##继续使用 pvs 或 pvdisplay 命令查看 物理卷 pv情况中
$ sudo vgs ##继续使用 vgs 或 vgdisplay 命令查看 卷组 vg情况
确定无误后运行 lvextend 命令以扩展逻辑卷,上面lsblk命令看到MYSLQ是挂在这个逻辑卷下面的,我们吧空间分配给这个逻辑卷(这里我们使用+200G会报错,柱头没那么精确,就是用 -L +199G 吧,之前我用了 -l +100%FREE 好像不行):
$ sudo lvextend -L +199G /dev/vol_data/lg_mysql
或者
$ sudo lvextend -l +100%FREE /dev/vol_data/lg_mysql
使用 lvs 或 lvdisplay 命令查看逻辑卷的信息:
$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lg_mysql vol_data -wi-a----- 1224.00g
最后一步,调整文件系统的大小
注意:根据您的使用案例,请按照适用于 XFS 或 Ext2、Ext3 和 Ext4 文件系统的步骤执行操作。
Ext2、Ext3 和 Ext4 文件系统(这里我的是 EXT4文件系统直接使用这个命令就可以完成了):
$ sudo resize2fs /dev/vol_data/lg_mysql
XFS 文件系统:
$ sudo xfs_growfs /dev/examplegroup1/lvexample1
非LVM管理模式扩容
1.如果需要,调整分区的大小
执行lsblk命令查看系统分区情况:
在以下示例输出中,根卷 (xvda) 有一个分区 (xvda1),而额外的卷 (xvdf) 没有分区。
[ec2-user ~]$ sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 16G 0 disk
└─xvda1 202:1 0 8G 0 part /
xvdf 202:80 0 24G 0 disk
如果卷具有分区,则继续执行下一步。如果卷没有分区,请跳到步骤 3。
检查是否需要扩展分区。在上一步的 lsblk 命令输出中,比较分区大小和卷大小。
如果分区大小小于卷大小,则继续执行下一步。如果分区大小等于卷大小,则无法扩展分区。
扩展分区。使用 growpart 命令并指定要扩展的分区。
例如,若要扩展名为 xvda1 的分区,请使用以下命令执行后可以 lsblk 命令查看下扩容情况。
[ec2-user ~]$ sudo growpart /dev/xvda 1
2.扩展文件系统
获取需要扩展的文件系统的名称、大小、类型和挂载点。使用 df -hT 命令
[ec2-user ~]$ df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/xvda1 ext4 8.0G 1.9G 6.2G 24% /
/dev/xvdf1 xfs 24.0G 45M 8.0G 1% /data
扩展文件系统的命令因文件系统类型而异。根据您在上一步中记录的文件系统类型选择以下正确命令
如果是[Ext4 文件系统] 使用 resize2fs 命令并指定您在上一步中记录的文件系统的名称。
例如,若要扩展名为 /dev/xvda1 的挂载文件系统,请使用以下命令。
[ec2-user ~]$ sudo resize2fs /dev/xvda1
如果是[XFS 文件系统] 使用 xfs_growfs 命令并指定您在上一步中记录的文件系统的挂载点。
例如,若要扩展挂载在 / 上的文件系统,请使用以下命令。
[ec2-user ~]$ sudo xfs_growfs -d /
上面选择对应的文件系统的命令 应用之后就完成了, 现在再 lsblk 命令看看 就知道是否成功了!!很多情况细心多看,多看看稳定 ,查找别人的经验,可以避坑!