系统盘扩容 扩展分区与文件系统_Linux系统盘


本文提供了如何使用growpart和resize2fs工具完成Linux系统盘分区扩容及文件系统扩展的操作指导。

适用范围

本文的操作步骤适用于以下分区和文件系统格式的云盘:

分区格式支持:mbr、gpt

文件系统支持:ext、xfs、btrfs、ufs

准备工作

通过ECS控制台或者API扩容云盘。

创建快照以备份数据。

实例已处于运行中状态。连接方式请参见连接方式导航。

根据操作系统安装growpart扩容格式化工具。

CentOS 7、Aliyun Linux:

yuminstallcloud-utils-growpart

Ubuntu 14、Ubuntu 16、Ubuntu 18、Debian 9:

aptinstallcloud-guest-utils

Debian 8、OpenSUSE 42.3、OpenSUSE 13.1、SUSE Linux Enterprise Server 12 SP2:请使用上游版本(upstream)的growpart工具

检查实例的内核版本,如通过uname -a查看内核版本。

内核版本大于3.6.0,则无需重启reboot便能完成扩容分区和文件系统。该情况请参见高内核版本的操作步骤。

内核版本小于3.6.0,如CentOS 6、Debian 7和SUSE Linux Enterprise Server 11 SP4等发行版,需要经过一次重启reboot才能完成分区扩容。该情况请参见低内核版本的操作步骤。

高内核版本的操作步骤

此处以CentOS 7操作系统为例演示分区扩展的步骤。

运行fdisk -l查看现有磁盘大小。示例返回磁盘(/dev/vda)容量是100 GiB。

[root@localhost ~]# fdisk -lDisk /dev/vda:107.4GB,107374182400bytes,209715200sectorsUnits = sectors of1*512=512bytesSector size (logical/physical):512bytes /512bytesI/O size (minimum/optimal):512bytes /512bytesDisk label type: dosDisk identifier:0x0008d73aDevice Boot      Start        End      Blocks  Id  System/dev/vda1  *2048419430392097049683Linux

运行df -h查看磁盘分区大小。示例返回分区容量(/dev/vda1)是20 GiB。

[root@localhost ~]# df -hFilesystem      Size  Used Avail Use% Mounted on/dev/vda120G1.5G18G8% /devtmpfs7.8G07.8G0% /devtmpfs7.8G07.8G0% /dev/shmtmpfs7.8G344K7.8G1% /runtmpfs7.8G07.8G0% /sys/fs/cgrouptmpfs1.6G01.6G0% /run/user/0

运行growpart 调用growpart为需要扩容的磁盘和对应的第几个分区扩容。示例命令表示为系统盘的第一个分区扩容。

[root@localhost ~]# growpart /dev/vda 1CHANGED:partition=1start=2048 old:size=41940992end=41943040 new:size=209710462,end=209712510

运行resize2fs调用resize2fs扩容文件系统。示例命令表示为系统盘的/dev/vda1分区扩容文件系统。

[root@localhost ~]# resize2fs /dev/vda1resize2fs1.42.9(28-Dec-2013)Filesystem at /dev/vda1ismounted on /; on-line resizing requiredold_desc_blocks =2, new_desc_blocks =7The filesystem on /dev/vda1isnow26213807blocks long.

运行df -h查看磁盘分区大小。返回分区(/dev/vda1)是100 GiB,表示已经成功扩容。

[root@localhost ~]# df -hFilesystem      Size  Used Avail Use% Mounted on/dev/vda199G1.6G93G2% /devtmpfs7.8G07.8G0% /devtmpfs7.8G07.8G0% /dev/shmtmpfs7.8G500K7.8G1% /runtmpfs7.8G07.8G0% /sys/fs/cgrouptmpfs1.6G01.6G0% /run/user/0

低内核版本的操作步骤

此处以CentOS 6操作系统为例演示分区扩展的步骤。

安装dracut-modules-growroot工具。

[root@AliYunOS~]# yum install -y dracut-modules-growroot

如果您使用的是其他软件包管理器,请将yum修改为对应的命令。

覆盖已有的initramfs文件。

[root@AliYunOS~]# dracut -f

运行fdisk -l查看现有磁盘大小。示例返回磁盘(/dev/vda)容量是100 GiB。

[root@AliYunOS ~]# fdisk -lDisk /dev/vda:107.4GB,107374182400bytes255heads,63sectors/track,13054cylindersUnits = cylinders of16065*512=8225280bytesSector size (logical/physical):512bytes /512bytesI/O size (minimum/optimal):512bytes /512bytesDisk identifier:0x0003a7b4Device Boot      Start        End      Blocks  Id  System/dev/vda1  *126112097049683Linux

运行df -h查看磁盘分区大小。示例返回分区容量(/dev/vda1)是20 GiB。

[root@AliYunOS ~]# df -hFilesystem      Size  Used Avail Use% Mounted on/dev/vda120G1.1G18G6% /tmpfs7.8G07.8G0% /dev/shm

运行growpart调用growpart为需要扩容的磁盘和对应的第几个分区扩容。示例命令表示为系统盘的第一个分区扩容。

[root@AliYunOS ~]# growpart /dev/vda 1CHANGED:partition=1start=2048 old:size=41940992end=41943040 new:size=209710462,end=209712510

重启实例。

[root@AliYunOS~]# reboot

再次远程连接实例。

运行resize2fs调用resize2fs扩容文件系统。示例命令表示为系统盘的/dev/vda1分区扩容文件系统。

[root@AliYunOS ~]# resize2fs /dev/vda1resize2fs1.41.12(17-May-2010)Filesystemat/dev/vda1ismountedon/;on-line resizing requiredold desc_blocks =2, new_desc_blocks =7Performing anon-line resizeof/dev/vda1to26213807(4k) blocks.The filesystemon/dev/vda1isnow26213807blocks long.

运行df -h查看磁盘分区大小。返回分区(/dev/vda1)是100 GiB,表示已经成功扩容。

[root@AliYunOS ~]# df -hFilesystem      Size  Used Avail Use% Mounted on/dev/vda199G1.1G93G2% /tmpfs7.8G07.8G0% /dev/shm
need-to-insert-img