在阿里云 ECS 服务器上的数据磁盘满了,可以再去给磁盘购买点空间,也就是扩容,这个过程现在并不容易。我花了至少两小时时间,因为一直不太敢执行磁盘相关的命令。下面来说一下给阿里云磁盘扩容的完整流程。
先登录阿里云控制台,找到你要扩容的磁盘,在更多下拉菜单那里,选择 “磁盘扩容”,选择想要的容量,并支付。下图里显示我有个数据盘,大小是 40G,这是我扩容之后的容量,之前它是一个 20G 的数据盘。
你需要 SSH 到使用了这个数据盘的服务器,要去执行一些命令。
查看服务器的磁盘情况
执行:
df -h
返回(摘取的内容):
/dev/xvda1 20G 8.4G 11G 45% / /dev/xvdb1 20G 5.7G 13G 31% /var/discourse
上面的 /dev/xvda1 是我的服务器的系统盘,大小是 20G,下面的 /dev/xvdb1 是我的数据盘,这是我要扩容的磁盘,现在显示它的大小仍然是 20G,这个磁盘让我挂载到了 /var/discourse 这个目录下面。
执行:
fdisk -l
返回(摘取的内容):
磁盘 /dev/xvda:21.5 GB 设备 Boot Start End Blocks Id System /dev/xvda1 * 2048 41943039 20970496 83 Linux 磁盘 /dev/xvdb:42.9 GB 设备 Boot Start End Blocks Id System /dev/xvdb1 2048 41943039 20970496 83 Linux
显示 /dev/xvdb 是 42.9GB,其实 /dev/xvdb1 是 /dev/xvdb 这个磁盘的一个分区,它现在的大小是 20G,我们要去删除掉这个分区,重新再创建一个新的分区,新的分区的大小可以设置成 42.9G,就是我扩容以后的磁盘容量。
重建磁盘分区
注意:执行下面的操作之前,一定先在阿里云的控制台去给你要处理的磁盘打个快照,这样出了问题可以恢复。
先卸载掉挂载的 /var/discourse,我把 /dev/xvdb1 挂载到这个位置上了,你的这个挂载点可能跟我的不一样,你要根据自己的实际情况去执行下面的命令。卸载:
umount /var/discourse
删除并重建分区,执行:
fdisk /dev/xvdb
返回:
更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。
上面的提示挺吓人,不过没关系,你的数据不会丢,即使误操作,损坏了数据,你也可以用快照恢复。
输入:
命令(输入 m 获取帮助):d 已选择分区 1 分区 1 已删除
提示输入命令,输入 d,表示删除分区。
- 会继续提示,再提示输入命令,输入 n
- 然后让你选择 Partition type,分区的类型,这里输入 p,表示主分区
- 又让你选择分区号,输入 1
- 起始扇区,回车使用默认的值
- last 扇区,截止扇区,回车,使用默认值
- 提示输入命令,输入 wq,可以退出
命令(输入 m 获取帮助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p 分区号 (1-4,默认 1):1 起始 扇区 (2048-83886079,默认为 2048): 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-83886079,默认为 83886079): 将使用默认值 83886079 分区 1 已设置为 Linux 类型,大小设为 40 GiB 命令(输入 m 获取帮助):wq The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。
然后再执行命令:
e2fsck -f /dev/xvdb1
e2fsck 是检查 ext2/ext3/ext4 文件系统用的工具。
返回:
第一步: 检查inode,块,和大小 第二步: 检查目录结构 第3步: 检查目录连接性 Pass 4: Checking reference counts 第5步: 检查簇概要信息 /dev/xvdb1: 24604/1310720 files (15.7% non-contiguous), 1593030/5242624 blocks
执行命令:
resize2fs /dev/xvdb1
resize2fs 可以改变 ext2/ext3/ext4 文件系统的容量。
返回:
Resizing the filesystem on /dev/xvdb1 to 10485504 (4k) blocks. The filesystem on /dev/xvdb1 is now 10485504 blocks long.
重新挂载磁盘
现在你的数据盘应该就是扩容之后的容量了,可以重新再挂载一下它:
mount /dev/xvdb1 /var/discourse
/var/discourse 是我要挂载的点,也就是在这个目录下存储的东西就相当于是放在数据盘上了,你可以根据自己的情况去设置这个挂载点。
再检查一下:
df -TH
返回(摘取的内容):
文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/xvda1 ext4 22G 9.0G 11G 45% / /dev/xvdb1 ext3 43G 6.1G 34G 16% /var/discourse
总结
在扩容之前一定要为服务器的磁盘打个快照。阿里云官方的文档能有配套的视频操作就更好了。在做扩容的时候,让我担心的是数据会不会没,以前的 Windows 用户的经验,让我不太敢做磁盘的分区处理操作。
评论
现在阿里云的系统盘默认都是 40G
8 年 4 周 以前
嗯,是啊。20G 真不够了。
8 年 4 周 以前
正在对系统盘扩容,好像对快照做一个镜像然后提升配置后引入这个镜像即可,另外阿里云电话服务热线24小时在线,还是挺人性化的。
7 年 7 个月 以前
嗯,对阿里的服务还是挺放心的。
7 年 6 个月 以前