登录实例扩容文件系统

在ECS控制台上完成磁盘扩容后,磁盘每个分区的文件系统并未扩容。您需要登录实例扩容文件系统。
在本示例中,假设数据盘挂载在一台Linux实例上,实例的操作系统为CentOS 7.6 64位,未扩容前的数据盘只有一个主分区(/dev/vdb1,ext4文件系统),文件系统的挂载点为/data,文件系统扩容完成后,数据盘仍然只有一个主分区。

在线扩容前提条件

在线扩容云盘之前,请确保资源满足以下条件。

  • 待扩容的云盘状态为使用中,并且所挂载的实例状态为运行中。
  • 确认云盘所挂载的实例是否满足以下条件,从而判断是否支持在线扩容。不支持在线扩容的实例,请参见离线扩容云盘
    ◆ 实例为I/O优化实例。
    ◆ Linux实例,需运行uname -a查看并确认内核版本不低于3.6.0。

概要

此实例是针对内核版本低于3.6 离线扩容
数据盘200G扩容至500G,需重启实例使扩容生效,需做如下操作:

1、用xhell工具登入实例
2、df -hT 显示各分区磁盘空间使用情况

# df -hT
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/vda1      ext4    40G   21G   17G  56% /
tmpfs          tmpfs   7.8G    0   7.8G  0% /dev/shm
/dev/vdb1      ext4    197G  151G   37G  81% /data

3、 fdisk -l 显示分区信息

# fdisk -l
Disk /dev/vda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00078f9c

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *           1        5222    41940992   83  Linux

Disk /dev/vdb: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x44949368

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048   419430399   209714176   83  Linux

4、重启实例(为了使/dev/vda1分区生效)
5、运行 umount 命令卸载主分区

# umount /data

注:卸载挂载点时,会遇到“device is busy”提示这时fuser就能查出谁在使用这个资源;当然umount -lf [挂载点] 也可以强制卸载。
①使用fuser -m -v /data 看哪个用户,哪个进程占用此设备
②再用fuser -m -v -k /data杀掉该进程
③或者fuser -m -v -k -i /data (每杀掉一下进程会让你确认)
④执行umount就可以正常卸载了

参数说明:
-k :杀掉访问文件的进程。如果没有指定-signal就会发送SIGKILL信号。结合 –signal
-v :详细模式。输出似ps命令的输出,包含PID,USER,COMMAND等许多域,如果是内核访问的那么PID为kernel.
-m name: 指定一个挂载文件系统上的文件或者被挂载的块设备(名称name)。这样所有访问这个文件或者文件系统的进程都会被列出来。如果指定的是一个目录会自动转换成"name/",并使用所有挂载在那个目录下面的文件系统。
-i :杀掉进程之前询问用户,如果没有-k这个选项会被忽略。

6、使用 fdisk 命令删除原来的分区并创建新分区

说明 如果您使用 parted 工具操作分区,不能与 fdisk 交叉使用,否则会导致分区的起始扇区不一致。关于 parted 工具的使用说明可以参考这里

1.运行命令 fdisk -l 罗列分区信息并记录扩容前数据盘的最终容量、起始扇区(First sector)位置。
2.运行命令 fdisk [数据盘设备名] 进入 fdisk 界面。本示例中,命令为 fdisk /dev/vdb。
3.输入 d 并按回车键,删除原来的分区。 说明 删除分区不会造成数据盘内数据的丢失。
4.输入 n 并按回车键,开始创建新的分区。
5.输入 p 并按回车键,选择创建主分区。因为创建的是一个单分区数据盘,所以只需要创建主分区。 说明 如果要创建4个以上的分区,您应该创建至少一个扩展分区,即选择 e。
6.输入分区编号并按回车键。因为这里仅创建一个分区,所以输入 1。
7.输入第一个可用的扇区编号:为了保证数据的一致性,First sector需要与原来的分区保持一致。在本示例中,按回车键采用默认值。 说明 如果发现First sector显示的位置和之前记录的不一致,说明之前可能使用 parted 来分区,那么就停止当前的 fdisk
操作,使用 parted 重新操作。
8.输入最后一个扇区编号:因为这里仅创建一个分区,所以按回车键采用默认值。
9.输入 wq 并按回车键,开始分区。

详细过程为: fdisk /dev/vdb 然后输入(d,n,p,1),然后两次回车,最后(wq)保存,这样就创建了一个新分区并且使用了最大的磁盘容量

7、部分操作系统里,修改分区后可能会重新自动挂载文件系统。建议先执行 df -h 重新查看文件系统空间和使用情况。如果文件系统重新被挂载,执行 umount [文件系统名称] 再次卸载文件系统。

8、检查文件系统,并变更文件系统大小。

# e2fsck -f /dev/vdb1 # 检查文件系统
# resize2fs /dev/vdb1 # 变更文件系统大小

说明 :
1.使用 e2fsck 时,由于系统需要检查并订正文件系统元数据,所以速度较慢、耗时较长,请耐心等待。
2.正确使用 e2fsck 和resize2fs 指令,不会造成原有数据丢失。

9、将扩容完成的文件系统挂载到原来的挂载点(如本示例中的 /data)

# mount /dev/vdb1 /data

10、挂在成功后可运行df -h命令验证挂载是否成功。如果出现扩容后的文件系统信息,说明挂载成功,可以使用扩容后的文件系统了。

文章如有不足之处,望可以指出,共同进步!感谢你的阅读!!

参考文章:https://www.jianshu.com/p/595550be0f55
https://www.cnblogs.com/gaoyuechen/p/9927631.html

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐