云服务器云盘(系统盘或数据盘)使用空间不足时,您可以扩容云盘的存储容量。本文介绍如何在不需要停止实例运行的情况下为Linux系统进行扩容云盘。
注意:在扩容云盘前,一定要为云盘创建快照,做好数据备份。
步骤一:在控制台扩容云盘容量
注意:控制台上扩容云盘容量后,您还不能直接使用已扩容的容量,需要在Linux系统内部扩容分区和文件系统。
步骤二:查看云盘分区情况
进入Linux系统,查看系统盘和数据盘的分区类型(MBR和GPT)和文件系统类型(ext4、xfs等)。不同的分区和文件系统,后续扩容分区和文件系统操作中存在差异。
步骤三:扩容分区
通过查看云盘分区情况,在Linux内分区和文件系统并未扩容。此步骤介绍如何在ECS实例内部扩容云盘分区。
步骤四:扩容文件系统
此步骤介绍如何在Linux扩容分区的文件系统。
支持不停机扩容的操作系统
支持不停机扩容的Linux公共镜像(或基于公共镜像制作的自定义镜像)包括:
- Aliyun Linux:Aliyun Linux 2.1903 LTS 64位
- CentOS:CentOS 6.8+、CentOS 7.2+、CentOS 8及以上版本
- Red Hat Enterprise Linux:RHEL 6.9+、RHEL 7.4+、RHEL 8及以上版本
- Ubuntu:Ubuntu 16及以上版本
- Debian:Debian 8及以上版本
- SUSE:SUSE 12 SP2及以上版本
- OpenSUSE:OpenSUSE42.3及以上版本
常见问题
- 问题:运行
growpart /dev/vda 1
时,提示unexpected output in sfdisk --version [sfdisk,来自 util-linux 2.23.2]
。解决方案:
- 运行
LANG=en_US.UTF-8
切换ECS实例的字符编码类型。 - 如果问题仍未解决,请您尝试运行
reboot
命令重启ECS实例。 - 如果问题仍未解决,请您尝试运行
localectl set-locale LANG=en_US.UTF-8
命令修改本地化环境变量,然后重启实例。
- 运行
- 问题:运行
growpart /dev/vda 1
时,提示-bash: growpart: command not found
。解决方案:
- 运行
uname -a
检查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及以上版本:运行命令
- 运行
其他扩容场景
- 如果数据盘需要使用新扩容容量创建新的分区,需要新增并格式化MBR分区或新增并格式化GPT分区。
- 如果数据盘没有创建分区,并且在裸设备上创建了文件系统,需要扩容裸设备文件系统。