云盘(系统盘或数据盘)使用空间不足时,您可以扩容云盘的存储容量。如果您的ECS实例不支持在线扩容云盘,可以通过离线扩容的方式为Linux实例进行扩容云盘。离线扩容云盘需要重启实例,您的业务会短暂中断,建议在业务不繁忙时操作。
前提条件
资源 | 限制条件 |
---|---|
实例 |
|
云盘 |
注意 一个已有分区采用了MBR分区格式,则不支持扩容到2 TiB及以上。如果您的MBR分区容量需要扩容到2 TiB以上,建议您先创建一块大于2 TiB的云盘并格式化为GPT分区,再将MBR分区中的数据拷贝到GPT分区中。格式化GPT分区操作,请参见
分区格式化大于2 TiB数据盘。
|
背景信息
本文示例中使用的配置如下所示。
资源 | 描述 |
---|---|
ECS实例的镜像 | 公共镜像Alibaba Cloud Linux 2.1903 LTS 64位 |
系统盘 | /dev/vda:使用MBR分区和ext4文件系统,由40 GiB扩容到60 GiB。 |
数据盘 |
|
步骤一:创建快照
在扩容云盘前,为云盘创建快照,做好数据备份。
步骤二:在控制台扩容云盘容量并重启(或启动)ECS实例
步骤三:查看云盘分区情况
进入ECS实例内部,查看系统盘和数据盘的分区类型(MBR和GPT)和文件系统类型(ext4、xfs等)。不同的分区和文件系统,后续扩容分区和文件系统操作中存在差异。
步骤四:扩容分区
通过查看云盘分区情况,在ECS实例内分区和文件系统并未扩容。此步骤介绍如何在ECS实例内部扩容云盘分区。
步骤五:扩容文件系统
此步骤介绍如何ECS实例内部扩容分区的文件系统。
常见问题
- 问题:运行
growpart /dev/vda 1
时,提示unexpected output in sfdisk --version [sfdisk,来自 util-linux 2.23.2]
。解决方案:- 运行
locale
命令查看ECS实例的字符编码类型,将非en_US.UTF-8的字符编码类型切换成en_US.UTF-8。- 运行以下命令,切换字符编码类型。
LANG=en_US.UTF-8
- 如果问题仍未解决,运行以下命令,切换字符编码类型。
export LC_ALL=en_US.UTF-8
- 如果问题仍未解决,运行以下命令,切换字符编码类型。
localectl set-locale LANG=en_US.UTF-8
- 如果采用以上方案无法解决问题时,运行以下命令,切换字符编码类型。
export LANGUAGE=en_US.UTF-8
- 运行以下命令,切换字符编码类型。
- 如果问题仍未解决,请您尝试运行
reboot
命令重启ECS实例。
注意当您通过切换字符编码,成功完成扩容分区后,建议您按需切回原有字符编码。
- 运行
- 问题:运行
growpart /dev/vda 1
时,提示-bash: growpart: command not found
。解决方案:- 运行
uname -a
检查Linux内核的版本。本文操作适用于Linux内核版本3.6.0及以上的系统。如果Linux内核低于3.6.0版本,扩容分区操作请参见扩展低内核版本实例的系统盘分区和文件系统和扩展分区和文件系统_Linux数据盘。
- 安装growpart工具。
- CentOS 7及以上版本运行以下命令。
yum install -y cloud-utils-growpart
- Debian 9及以上版本、Ubuntu14及以上版本运行以下命令。
apt install -y cloud-guest-utils
- CentOS 7及以上版本运行以下命令。
- 运行
- 问题:为什么在CentOS 6.5中不能安装growpart进行扩容分区?
解决方案:CentOS 6操作系统的Linux内核低于3.6.0版本,如果您需要在CentOS 6中使用growpart,请参考以下步骤:
- 在CentOS 6中切换yum源。具体操作,请参见CentOS 6 EOL如何切换源。
说明 CentOS 6操作系统版本已结束生命周期(EOL),如果您需要使用yum安装软件包,需要先切换yum源。
- 在CentOS 6中安装dracut-modules-growroot并扩容云盘分区。具体操作,请参见扩展低内核版本实例的系统盘分区和文件系统。
- 在CentOS 6中切换yum源。具体操作,请参见CentOS 6 EOL如何切换源。
其他扩容场景
- 如果数据盘需要使用新扩容容量创建新的分区,请参见选项二:新增并格式化MBR分区或选项四:新增并格式化GPT分区。
- 如果数据盘没有创建分区,并且在裸设备上创建了文件系统,请参见选项五:扩容裸设备文件系统。