应用场景
使用sgdisk将分区类型由MBR转换为GPT后,使用growpart扩容之后会提示分区SuperBlock 损坏导致无法继续扩容,使用parted resizepart 也无法正常扩展分区大小。
- 推荐使用growpart完成分区空间的扩展
- 删除分区再新建分区的操作为高危操作,务必确认现有快照可以满足数据备份、还原要求
操作方法
以扩容第一个数据盘(且只有一个分区)/dev/vdb1为例
前提条件
- 已控制台下单扩容了磁盘并且服务器内已识别扩容空间
- 已umount 磁盘,umount /dev/vdb1 ,若swap分区保存在/dev/vdb1 上,则关闭交换分区或者/etc/fstab 中注释掉vdb1 自动挂载并重启ECS
查看分区起始位置
执行parted /dev/vdb 进入交互模式
输入unit S
输入print 打印分区起始位置并记录
(parted) unit S (parted) print Model: Virtio Block Device (virtblk) Disk /dev/vdb: 209715200s Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 2048s 209715166s 100713119s ext4
如果不支持unit S 则默认以byte显示起始扇区,推荐使用扇区作为单位
删除分区
(parted) rm 1 # 删除分区1
新建分区
(parted) mkpart data ext4 2048s 100%
- data 是分区名字,可以随意设置
- ext4 是之前分区的文件系统,要保持一致
- 2048s 是分区起始扇区必须与之前一致
- 100% 表示将磁盘所有可用空间都给这个新建的分区(就意味着是扩容了)
挂载分区并扩容文件系统
将分区挂载到一个空目录验证是否可用
mount /dev/vdb1 /mnt
执行df -hT
看是否正常挂载上了,若挂载无问题,根据文件系统类型选择工具扩容文件系统:
ext4 使用
resize2fs /dev/vdb1
若xfs 执行
xfs_growfs /mnt