阿里云云盘扩容笔记

随着业务数据的增多,网站的数据盘已经快用完了,下面是按照阿里云官方教程整理的云盘扩容笔记。在阿里云WEB控制台扩容数据盘及文件系统。

需要满足的条件

  • ECS实例处于Running或Stopped状态;
  • 数据盘的状态为使用中或待挂载;
  • 数据盘当前没有正在创建快照操作;
  • 数据盘只能扩容,不能较小容量;
  • 数据盘已做分区;
  • 帐号余额不得少于100元。

在阿里云WEB控制台扩容数据盘

  • 登录ECS管理控制台;
  • 选择需要扩容的云盘,在 操作 中,选择 更多 > 磁盘扩容;
  • 在页面中修改容量大小,会显示费用信息(按使用时长付费),点 确定扩容。

扩容成功后,磁盘列表里即显示扩容后的容量。但是,如果您的数据盘已经挂载到实例上,只有在控制台上 重启实例 后,登录实例才能看到新的磁盘空间容量。

扩容文件系统

需要保证扩容后的磁盘已经挂载在ECS实例中。此时数据盘已经扩容,但数据盘的每个分区的文件系统并未扩容,还需要扩容文件系统。假设未扩容前只有一个分区/dev/vdb1(使用df -h查看分区情况) ,挂载在/disk0。我们系统扩容后还是一个分区/dev/vdb1,则进行以下操作:

  • SSH远程登录实例;
  • 卸载数据盘分区

umount /dev/vdb1

  • fdisk删除原有分区并创建新分区

运行 fdisk -l 显示分区信息并记录扩容前数据盘的起始扇区(First sector)位置;
运行命令 fdisk [数据盘设备](本例中为/dev/vdb);
输入 d 并按回车键,删除原来的分区,删除分区不会造成数据丢失;
输入 n 并按回车键,开始创建新的分区;
输入 p 并按回车键,因为创建的是一个单分区数据盘,所以只需要创建主分区;
输入分区编号并按回车键。因为这里仅创建一个分区,所以输入 1;
输入第一个可用的扇区编号:为了保证数据的一致性,First sector需要与原来的分区保持一致(一般保持默认选择即可); 输入最后一个扇区编号:因为这里仅创建一个分区,所以按回车键采用默认值;
输入 wq 并按回车键,开始分区。操作中出现:Re-reading the partition table failed.: Device or resource busy。The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8)。
出现错误之后,我重复操作了一遍fdisk流程,提示Syncing disks,操作成功!

  • 检查文件系统,并变更文件系统大小

e2fsck -f /dev/vdb1
resize2fs /dev/vdb1

正确使用 e2fsck 和 resize2fs 指令,不会造成原有数据丢失。

  • 挂载扩容后的文件系统

mount /dev/vdb1 /disk0

错误记录

  • /dev/vdb1: device contains a valid 'ext4' signature; it is strongly recommended to wipe the device with wipefs(8) if this is unexpected, in order to avoid possible collisions

    发现是使用fdisk方式不对:不是 fdisk /dev/vdb1,而是 fdisk /dev/vdb,操作的是文件设备,不是分区;

  • umount: /disk0: target is busy (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1).)

说明有正在使用/disk0的进程,fuser -m /disk0 查询使用该目录的进程,kill -9 pid杀死即可。

其它文章

Let’s Encrypt acme.sh 泛域名证书