系统盘扩容分区及文件系统(Linux)
概述
在完成磁盘物理空间扩容操作后,在操作系统层面仍需分别进行分区和文件系统扩容,才能让扩容空间可用。
本文档介绍 Linux 系统实例完成系统盘物理空间扩容后,在操作系统内进行分区和文件系统扩容的方法。
如果想扩容 Windows 系统实例的云磁盘,请您查看 扩容分区及文件系统(Windows)。
前提条件
- 扩容分区和文件系统前,请确认已完成磁盘物理空间的扩容操作,详情可参考 扩容概述。
- 该云磁盘已挂载至 BCC 实例,且实例状态为运行中。
- 待扩容分区和文件系统的云磁盘状态为使用中。
-
Linux 实例内核不低于 3.6.0 版本的操作系统支持在线进行分区扩容。
注意:
Linux 实例内核版本低于 3.6.0 的操作系统,例如 CentOS 6 及以下、OpenSUSE 42.3、Debian 8 及以下版本,完成分区扩容后需要重启云服务器实例才可生效;
- 若您已完成系统盘物理空间扩容操作且无需在线扩容,可通过重启云服务器实例使系统盘自动完成分区和文件系统扩容;数据盘则必须手动进行分区和文件系统扩容。
准备工作
说明:
在线分区扩容支持确认
- 可以通过控制台远程登录、SSH 等方式登录 BCC 实例,具体登录方式请参考 登录实例。
- 执行以下命令确认 Linux 内核版本,并判断当前操作系统是否支持在线扩容分区。
1uname -r
操作步骤
本文档中以 BaiduLinux 4.1 x86_64 (64bit) 系统中的系统盘扩容为例。
步骤一:确认云磁盘分区状态和格式
执行 fdisk -l 查看当前分区大小、磁盘设备名和分区编号。当前系统盘为/dev/vda,且该云磁盘已由 40GB 扩展到 50GB。
1fdisk -l
返回结果有如下类似信息:
1[root@instance-xxx ~]# fdisk -l
2Disk /dev/vda: 50 GiB, 53687091200 bytes, 104857600 sectors
3Units: sectors of 1 * 512 = 512 bytes
4Sector size (logical/physical): 512 bytes / 512 bytes
5I/O size (minimum/optimal): 512 bytes / 512 bytes
6Disklabel type: dos
7Disk identifier: 0xe543cca0
8
9Device Boot Start End Sectors Size Id Type
10/dev/vda1 * 2048 83886046 83883999 40G 83 Linux
待扩容云磁盘容量大于分区总容量时,需要扩容分区。本例中系统盘vda容量为50GiB,存在1个分区,分区总容量为40GiB,需对编号为1的分区vda1扩容。
说明:
- 仅支持对单块云磁盘的最后一个分区扩容。
- 在 Disk /dev/vdx 下有同名前缀的形如 /dev/vdx1 、/dev/vdx2 等的 Device,表示该云磁盘有分区.
在 fdisk -l 的返回结果中,查看 Disklabel type 字段来确定分区表的格式:
- 若 Disklabel type 值为 dos,表示分区表为 MBR 格式。
- 若 Disklabel type 值为 gpt,表示分区表为 GPT 格式。
注意:系统盘都有/dev/vda1分区。
步骤二:查看文件系统类型
执行 df -Th 命令查看当前文件系统类型。
1df -Th
返回结果有如下类似信息:
1[root@instance-xxx ~]# df -Th
2Filesystem Type Size Used Avail Use% Mounted on
3devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev
4tmpfs tmpfs 984M 0 984M 0% /dev/shm
5tmpfs tmpfs 394M 6.2M 388M 2% /run
6/dev/vda1 ext4 40G 4.4G 34G 12% /
7tmpfs tmpfs 197M 0 197M 0% /run/user/0
根据 Type 列确认系统盘分区的文件系统类型,文件系统类型包括:
- XFS 表示文件系统为 XFS
- ext4 表示文件系统为 EXT4
- ext3 表示文件系统为 EXT3
步骤三:扩容分区
-
根据文件系统类型安装 gdisk 工具。
说明:
- 若分区类型为 MBR,无需安装此工具,直接执行下一步安装 growpart 工具。
- 若分区类型为 GPT,则请对应云服务器操作系统类型,执行以下命令安装工具。
-
CentOS
安装
gdisk工具。Bash1yum install gdisk -y -
Ubuntu(14.04 及以上)、Debian(9 及以上)
安装
gdisk工具。Bash1apt-get install gdisk -y
-
根据操作系统版本安装对应 growpart 扩容工具。
-
CentOS 6
安装
dracut-modules-growroot工具。Bash1yum install -y dracut-modules-growroot运行以下命令覆盖
initramfs文件。Bash1dracut -f -
CentOS 7、CentOS 8
安装
cloud-utils-growpart和xfsprogs。Bash1yum install -y cloud-utils-growpart xfsprogs -
Ubuntu(14.04 及以上)、Debian(9 及以上)
安装
cloud-guest-utils和xfsprogs。Bash1apt install -y cloud-guest-utils xfsprogs
-
-
执行分区扩容命令,使用 growpart 工具扩容分区。
Bash1growpart <DeviceName> <PartitionNumber>其中
<DeviceName>为磁盘设备名,<PartitionNumber>为分区编号。注:本示例以扩容系统盘 /dev/vda1 分区为例,命令中 /dev/vda 与 1 间需使用空格分隔。您需要按需修改命令。
Bash1growpart /dev/sda 1返回结果如下所示,则表示分区扩容成功。
Bash1[root@instance-xxx ~]# growpart /dev/vda 1 2CHANGED: partition=1 start=2048 old: size=83883999 end=83886046 new: size=104855519 end=104857566注意:
内核版本低于 3.6.0 的Linux操作系统,需要在此操作后重启 BCC 实例。
- 分区扩容完成后,再次执行
fdisk -l查看分区大小。文件系统容量需要在下一步扩展文件系统后生效。
步骤四:扩展文件系统
-
根据步骤二:查看文件系统类型获取到的文件系统类型,执行对应扩容文件系统命令。
-
ext 文件系统,使用
resize2fs扩展。Bash1resize2fs 裸设备名(如/dev/vdb)或分区名(如/dev/vdb1)本例中系统盘分区 /dev/vda1为 EXT4 文件系统,因此执行 resize2fs /dev/vda1,执行过程中按照系统提示,可能需要执行esfsck相关指令。执行返回结果如下所示:
Bash1[root@instance-xxx ~]# resize2fs /dev/vda1 2resize2fs 1.46.5 (30-Dec-2021) 3Filesystem at /dev/vda1 is mounted on /; on-line resizing required 4old_desc_blocks = 5, new_desc_blocks = 7 5The filesystem on /dev/vda1 is now 13106939 (4k) blocks long. -
XFS 文件系统,使用
xfs_growfs扩展。其中文件系统挂载点可以通过命令df -Th查看。Bash1xfs_growfs <挂载点>本例为/dev/vda1 挂载至 /,则执行以下命令。
Bash1xfs_growfs /
-
-
执行
df -Th命令检查文件系统扩容结果。Bash1df -Th本例返回结果如下所示:
Bash1[root@instance-xxx ~]# df -Th 2Filesystem Type Size Used Avail Use% Mounted on 3devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev 4tmpfs tmpfs 984M 0 984M 0% /dev/shm 5tmpfs tmpfs 394M 6.2M 388M 2% /run 6/dev/vda1 ext4 50G 4.4G 43G 10% / 7tmpfs tmpfs 197M 0 197M 0% /run/user/0确认系统盘(/dev/vda1)目标分区的文件系统容量已扩展到磁盘扩容后的容量。
- 扩容成功后请检查数据完整性,观察 BCC 实例中的业务是否正常运行。
评价此篇文章
