注意事项
系统类型
- 系统:我的系统是Alibaba Cloud Linux 3.2104 LTS 64位
核心参考文章
- 参考阿里云文章1: 《扩容云盘容量》
- 参考阿里云文章2: 《扩容分区和文件系统(Linux)》
- 参考阿里云文章3: 《扩容分区和文件系统(Windows)》
我参考文章
- 参考阿里云文章1: 《扩容云盘容量》
- 主要看:《步骤二:扩容分区及文件系统》的第2小结的说明
-
如果您未挂载文件系统但并未加载自动配置挂载点界面,请登录操作系统利用mount指令手动挂载后,再根据操作系统类型进行手动扩容。具体操作,请参见扩容分区和文件系统(Linux)或扩容分区和文件系统(Windows)。
- 参考阿里云文章2: 《扩容分区和文件系统(Linux)》的《方法二:登录实例,自行扩容分区和文件系统》的步骤1、步骤2、步骤3
盘符分区类型
- MBR
- GPT
解决步骤
背景
我的系统云盘分区是默认的,和官方教程不一样。他们都在一个上面
第1步:确定云盘名称及分区信息
sudo fdisk -lu
确定云盘是否分区。 如上图所示,表示该实例有3块云盘,系统盘/dev/vda、数据盘/dev/vdb和数据盘/dev/vdc,我们以数据盘为例。其中:
- vdb1表示数据盘/dev/vdb已分区,数字1是分区编号。
- vdc表示数据盘/dev/vdc未分区(裸设备)****。
确定待扩容分区云盘。 我们以数据盘/dev/vdb为例。其中:
SIZE表示容量大小,从图中可知/dev/vdb1分区的容量小于云盘/dev/vdb的容量,即/dev/vdb1分区需要扩容。
说明
您也可以通过运行lsblk命令查看哪个分区待扩容。
确定待扩容云盘的分区类型。 Disklabel type表示云盘的分区类型,值为dos表示MBR分区,值为gpt表示GPT分区。 我们以存在分区的数据盘/dev/vdb为例。示例中的数据盘的云盘名称为/dev/vdb,分区名称为/dev/vdb1,分区类型为MBR分区。
说明
- 不同操作系统的显示略有不同。如果没有Disk label type字段,可通过System字段判断。System值为Linux表示MBR分区,值为GPT表示GPT分区。
- 较低版本的fdisk可能不能正常显示GPT分区表。您可以通过gdisk -l /dev/vdb命令查看分区类型。
我的信息
sudo fdisk -lu
GPT PMBR size mismatch (125829119 != 335544319) will be corrected by write.
The backup GPT table is not on the end of the device. This problem will be corrected by write.
Disk /dev/vda: 160 GiB, 171798691840 bytes, 335544320 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
Disklabel type: gpt
Disk identifier: 0F2F0AED-A1BF-46F2-AEC4-E8727122801F
Device Start End Sectors Size Type
/dev/vda1 2048 6143 4096 2M BIOS boot
/dev/vda2 6144 415743 409600 200M EFI System
/dev/vda3 415744 125829086 125413343 59.8G Linux filesystem
我的需求
我目前是需要把扩容的100G附加到系统文件上,根据上图看出我目前云盘容量是160G,/dev/vda3 的容量是59.8G; 也就是我需要把我扩容的100G附加/dev/vda3 上。 并且,我通过上面命令可以看出我的盘符分区类型是Disklabel type: gpt
第2步:扩容分区
这些命令主要用于在基于Red Hat的Linux系统(如CentOS或Fedora)上安装、更新并使用growpart和sgdisk工具来调整磁盘分区大小。
执行命令1
type growpart || sudo yum install -y cloud-utils-growpart
- 检查系统中是否已安装growpart命令。如果没有安装,则通过yum包管理器自动安装cloud-utils-growpart软件包,该软件包包含了growpart工具,用于扩展分区的大小。
执行命令2
sudo yum update cloud-utils-growpart
- 更新cloud-utils-growpart软件包到最新版本,确保拥有最新的功能和安全补丁。
执行命令3
type sgdisk || sudo yum install -y gdisk
- 类似地,检查系统中是否已安装sgdisk命令。如果没有安装,则自动安装gdisk软件包,sgdisk是一个强大的命令行工具,用于管理GPT磁盘分区。
执行命令4
sudo LC_ALL=en_US.UTF-8 growpart /dev/vdb 1
- 使用growpart工具对/dev/vdb设备上的第一个分区(编号为1)进行扩展操作。这里设置了环境变量LC_ALL=en_US.UTF-8,以确保命令执行时使用统一的语言编码设置,避免因区域设置差异可能引起的错误。
根据我的需求,我执行的命令是:
sudo LC_ALL=en_US.UTF-8 growpart /dev/vda 3
完整命令执行截图
[root]# type growpart || sudo yum install -y cloud-utils-growpart
growpart is /usr/bin/growpart
[root]# sudo yum update cloud-utils-growpart
Last metadata expiration check: 0:27:12 ago on Thu 20 Feb 2025 04:21:29 PM CST.
Dependencies resolved.
Nothing to do.
Complete!
[root]# type sgdisk || sudo yum install -y gdisk
sgdisk is /usr/sbin/sgdisk
[root]# sudo LC_ALL=en_US.UTF-8 growpart /dev/vda 3
CHANGED: partition=3 start=415744 old: size=125413343 end=125829086 new: size=335128543 end=335544286
如下图所示,输出CHANGED字样时,表示分区扩容成功。
第3步:确定《扩容分区》是否成功
执行命令
sudo fdisk -lu
命令结果
[root]# sudo fdisk -lu
Disk /dev/vda: 160 GiB, 171798691840 bytes, 335544320 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
Disklabel type: gpt
Disk identifier: 0F2F0AED-A1BF-46F2-AEC4-E8727122801F
Device Start End Sectors Size Type
/dev/vda1 2048 6143 4096 2M BIOS boot
/dev/vda2 6144 415743 409600 200M EFI System
/dev/vda3 415744 335544286 335128543 159.8G Linux filesystem
从结果上看我已经成功了,但这还没有结束……
第4步:扩容文件系统-获取待扩容设备的挂载目录
命令
df -Th
Type值为文件系统类型,Mounted on值为分区的挂载目录。如下图表示/dev/vdb1分区的文件系统类型为ext4,挂载目录为**/mnt**。
如果Filesystem取值后缀不带数字(例如/dev/vdc),则为裸设备。
我的信息
[root]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 7.6G 0 7.6G 0% /dev
tmpfs tmpfs 7.6G 16K 7.6G 1% /dev/shm
tmpfs tmpfs 7.6G 848K 7.6G 1% /run
tmpfs tmpfs 7.6G 0 7.6G 0% /sys/fs/cgroup
/dev/vda3 ext4 59G 43G 14G 77% /
tmpfs tmpfs 7.6G 228K 7.6G 1% /tmp
/dev/vda2 vfat 200M 5.8M 195M 3% /boot/efi
overlay overlay 59G 43G 14G 77% /var/lib/docker/overlay2/eb6d5a338a95c1e6f96f6e9c37d07ef786a7b4fdf8824c7e433f026dc1341c0c/merged
overlay overlay 59G 43G 14G 77% /var/lib/docker/overlay2/8feb9ddca4f7036ebefcb102d480723990e053f5aec051498f11598c6c9065f4/merged
tmpfs tmpfs 1.6G 0 1.6G 0% /run/user/1002
overlay overlay 59G 43G 14G 77% /var/lib/docker/overlay2/b27a96baeabd990d3032586decbf3a0941cce0e265ec524ad7250e71310f1507/merged
overlay overlay 59G 43G 14G 77% /var/lib/docker/overlay2/cb46085915b145572a75bd9b7c2accfe6cc27ad53fcf0c0b16dc0a81f1be183f/merged
tmpfs tmpfs 1.6G 0 1.6G 0% /run/user/0
- 看我的/dev/vda3还是59G;
- 到这里你可以理解成,扩容分区已经完成了,但扩容文件系统还没有完成。
第5步:扩容文件系统
云盘和文件系统在使用的状态下,采用resize2fs等工具在线扩容文件系统,有可能会触发文件系统数据问题,该问题与镜像内核版本、resize2fs工具版本相关,与云盘扩容本身无关。建议您为云盘创建快照,做好数据备份。
-
以扩容云盘分区/dev/vdb1的**ext***文件系统为例,则运行如下命令:
sudo resize2fs /dev/vdb1
说明
如果您扩容的是系统盘,命令中的/dev/vdb1需要替换为/dev/vda1。
-
以扩容裸设备/dev/vdc的**ext***文件系统为例,则运行如下命令:
sudo resize2fs /dev/vdc
我的命令
sudo resize2fs /dev/vda3
命令结果
[root]# sudo resize2fs /dev/vda3
resize2fs 1.46.0 (29-Jan-2020)
Filesystem at /dev/vda3 is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 10
The filesystem on /dev/vda3 is now 41891067 (4k) blocks long.
第6步:确定《扩容文件系统》是否成功
命令
df -Th
命令结果
[root]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 7.6G 0 7.6G 0% /dev
tmpfs tmpfs 7.6G 16K 7.6G 1% /dev/shm
tmpfs tmpfs 7.6G 848K 7.6G 1% /run
tmpfs tmpfs 7.6G 0 7.6G 0% /sys/fs/cgroup
/dev/vda3 ext4 158G 43G 108G 29% /
tmpfs tmpfs 7.6G 228K 7.6G 1% /tmp
/dev/vda2 vfat 200M 5.8M 195M 3% /boot/efi
overlay overlay 158G 43G 108G 29% /var/lib/docker/overlay2/eb6d5a338a95c1e6f96f6e9c37d07ef786a7b4fdf8824c7e433f026dc1341c0c/merged
overlay overlay 158G 43G 108G 29% /var/lib/docker/overlay2/8feb9ddca4f7036ebefcb102d480723990e053f5aec051498f11598c6c9065f4/merged
tmpfs tmpfs 1.6G 0 1.6G 0% /run/user/1002
overlay overlay 158G 43G 108G 29% /var/lib/docker/overlay2/b27a96baeabd990d3032586decbf3a0941cce0e265ec524ad7250e71310f1507/merged
overlay overlay 158G 43G 108G 29% /var/lib/docker/overlay2/cb46085915b145572a75bd9b7c2accfe6cc27ad53fcf0c0b16dc0a81f1be183f/merged
tmpfs tmpfs 1.6G 0 1.6G 0% /run/user/0
从截图上看,我的/dev/vda3 已经是158G啦,至此完成!!!
评论前必须登录!
注册