在线扩容云盘(Linux系统)

云盘(系统盘或数据盘)使用空间不足时,您可以扩容云盘的存储容量。本文介绍如何在不需要停止实例运行的情况下为Linux系统进行扩容云盘。

限制条件:实例的Linux内核不低于3.6.0版本。您可以使用uname -a命令查看内核版本

步骤一:创建快照

  1. 登录ECS管理控制台。
  2. 在左侧导航栏,选择实例与镜像 > 实例。
  3. 在顶部菜单栏左上角处,选择地域。
  4. 找到需要扩容云盘的实例,单击实例ID。
  5. 在实例详情页,单击云盘页签。
  6. 找到需要扩容的云盘,在操作列单击创建快照。
  7. 在弹出的对话框中,输入快照名称,并按需绑定标签后,单击创建。
  8. 单击快照页签,查看已创建的快照。
  9. 当快照的进度为100%时,表示快照创建完成,您可以执行后续操作。

步骤二:在控制台扩容云盘容量

  1. 在实例详情页,单击云盘页签。
  2. 选择需要扩容的云盘,在操作列单击更多 > 云盘扩容。
  3. 如果需要批量扩容多个云盘,请使用阿里云账号在存储与快照 > 云盘页面选择多个云盘后,单击底部的云盘扩容。挂载在同一ECS实例下的云盘不支持批量扩容功能。
  4. 说明 只有阿里云账号可以执行批量扩容,RAM用户无权限操作,请使用阿里云账号登录ECS管理控制台。
  5. 在磁盘扩容页面,选中在线扩容,并设置扩容后容量。
  6. 设置的扩容后容量不允许小于当前容量。
  7. 确认费用,阅读并选中《云服务器ECS服务条款》后,单击确认扩容。
  8. 阅读磁盘扩容须知后,单击已阅读,继续扩容,完成支付。

步骤三:查看云盘分区情况

fdisk -lu
序号 分区 说明
/dev/vda1 系统盘,System取值Linux表示为MBR分区。
/dev/vdb1 数据盘,System取值Linux表示为MBR分区。
/dev/vdc1 数据盘,System取值GPT表示为GPT分区。

步骤四:扩容分区

安装growpart工具。

yum install -y cloud-utils-growpart

运行以下命令扩容分区

growpart /dev/vda 1

步骤五:扩容文件系统

扩容ext*(例如ext4)文件系统:运行以下命令扩容文件系统

resize2fs /dev/vda1  
/dev/vda1和/dev/vdb1都是分区名称,您需要根据实际情况修改。  

扩容xfs文件系统:运行以下命令扩容数据盘/dev/vdc1的文件系统。

xfs_growfs /media/vdc
/media/vdc为/dev/vdc1的挂载点,您需要根据实际情况修改。

扩容btrfs文件系统:如果您的数据盘文件系统为btrfs,则需要运行以下命令扩容文件系统

btrfs filesystem resize max /mountpoint
/mountpoint为数据盘对应的挂载点,您需要根据实际情况修改。

运行以下命令检查扩容后结果。

df -Th

扩容完成后,您需要根据实际情况检查数据是否正常。
如果扩容成功,ECS实例中的业务程序能够正常运行,则完成操作。
如果扩容失败,则通过备份的快照回滚数据。

支持在线扩容的操作系统

支持在线扩容的Linux公共镜像(或基于公共镜像制作的自定义镜像)包括:
Alibaba Cloud Linux:Alibaba Cloud Linux 2版本和Alibaba Cloud Linux 3版本
CentOS:
CentOS 6:CentOS 6.8及以上版本
CentOS 7:CentOS 7.2及以上版本
CentOS 8及以上版本
Red Hat Enterprise Linux:
RHEL 6:RHEL 6.9及以上版本
RHEL 7:RHEL 7.4及以上版本
RHEL 8及以上版本
Ubuntu:Ubuntu 16及以上版本
Debian:Debian 8及以上版本
SUSE:SUSE 12 SP2及以上版本
OpenSUSE:OpenSUSE 42.3及以上版本

常见问题

  • 问题:运行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实例。

当您通过切换字符编码,成功完成扩容分区后,建议您按需切回原有字符编码。

posted @ 2022-03-02 23:31  peterjiang520  阅读(943)  评论(0编辑  收藏  举报