EC2实例运行一段时间后,由于日志和一些应用程序数据的积累,可能出现之前预留的磁盘容量不够需要扩容的情况。AWS EBS目前还不支持在线扩容,不过可以通过结合snapshot来实现。

如,我的EC2 Instance容量默认的8G不够用了,需要扩容。

wKiom1QjgO7TqjXvAAFT5Kxd3IQ209.jpg

1. 创建需要扩容磁盘的snapshot:

进入aws ec2控制台的Volume管理项中,选中你要扩容的EBS卷,右键选择“create snapshot”

wKiom1Qjeuyi2wWjAAJN_wmRlsY718.jpg

在弹出的对话框中,输入名称和描述信息,待创建完成后记录下snapshot的ID号,下一步有用。

wKioL1Qje8eCXJJSAAC_SwNR9Ig869.jpg

2. 创建一块新Volume,按照自己要扩容的容量

  点击“create volume”,根据向导创建一个自己需要的容量Volume,需注意的是Snapshot ID这块,输入的就是上一步创建的“Snapshot的ID”。

wKioL1QjfFGjMCJCAAAikW_3bTc768.jpg

wKiom1QjfEKxTcmGAAEX9qodkIw372.jpg

完成后,待Volume状态为“available”时,即完成了Volume的创建。


wKiom1QjfS-Dm48UAAB13e3fqns113.jpg


3. 上新EBS Volume

  首先Stop掉EC2实例,选择要扩容的EC2实例,右键选择“Stop”,弹出的对话框中选"yes,stop"

  

wKiom1QjfW2hDHPNAAFz-P-c0i0324.jpg

等EC2 Instance状态为“Stopped”时,即可。

wKioL1QjfZGxHyJMAAA-vQ_Yt3k074.jpg

  然后,分离原有的EBS卷,这块要注意的是记录下这块EBS盘附加的位置,需要将新附加的EBS卷到相同的位置,如下面所示的位置:

wKioL1QjfnmhYQVzAAApDXUZqFE663.jpg


选中要分离的EBS Volume,右键,选“Detach Volume”  

wKiom1QjfsGza1oiAAEF6Z6s1h8338.jpg

wKioL1QjfuTRhaw2AAB_QKthaz0169.jpg

等到状态为“available”时,就可以附加新的EBS Volume了。选中上一步创建的EBS Volume,右键“Attach Volume”

wKiom1QjfzLRpmLOAAECU8lIm4c906.jpg

在"Instance"中要输入附加到的“EC2 Instance”的ID,Device就是要附加的位置,这里是“/dev/xvda”:

wKioL1Qjf1ayup_pAAGZ3lcbqBE711.jpg

等状态为“in-use”时,就附加成功了。

wKiom1QjfzLSKXSmAACEnxwAML8242.jpg

  最后,启动EC2 Instance 测试,选中“Instance”,右键“start”

wKiom1Qjf-iyqSq4AAFz-P-c0i0465.jpg

wKioL1Qjf_SQ2eH2AACWJjWBPeU504.jpg

连上Instance,查看EBS Volume大小,可以看到/dev/xvda已经是50G了:

root@ip-10-2-32-88:/home/a10070# df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/xvda      ext4       50G  1.1G   46G   3% /
udev           devtmpfs   10M     0   10M   0% /dev
tmpfs          tmpfs     200M  4.3M  196M   3% /run
tmpfs          tmpfs     500M     0  500M   0% /dev/shm
tmpfs          tmpfs     500M     0  500M   0% /sys/fs/cgroup
tmpfs          tmpfs     100M     0  100M   0% /run/user
tmpfs          tmpfs     5.0M     0  5.0M   0% /run/lock

注意:

    如果连上实例发现磁盘容量df的时候并没有便过来,而fdisk -l时磁盘已经是50G了,那么需要执行命令“resize2fs /dev/xvda”.

    如果我们扩容的是另一块非系统的数据盘,其实连实例都不需要停止的。