如何扩展EBS卷的容量

今天是新年上班第一天,祝大家在马年心想事成,马到成功!

今天我们讨论一下EBS卷的扩容的话题。Amazon EBS(Elastic Block Store)可以为EC2实例提供持久性的块存储服务,EBS卷可以独立于EC2主机的生命周期而存在,而且EBS会在其所在可用区(AZ)内进行自动数据复制,因此EBS卷能比普通硬盘提供更高的数据持久性。另外,用户还可以通过定期磁盘快照方式进一步提升数据的持久性。用户通过AWS的管理控制台和EC2实例操作系统的命令可以方便的把EBS卷与EC2实例进行挂载和卸载,实现磁盘空间的一些动态管理。

在EC2实例运行一段时间之后,由于日志等应用数据的积累我们可能会遇到需要扩展磁盘容量的情况。EBS卷目前不支持动态磁盘容量扩展,也就是说不能通过简单的执行一条命令或点击一下管理控制台界面来更改磁盘容量,因此我们需要一个变通的方式来实现EBS卷容量的伸缩。这个变通的方式也挺简单的,主要就是分为三个步骤:首先对需要更改容量的EBS卷进行磁盘快照(Snapshot)操作,然后根据这个EBS快照创建一个目标尺寸的EBS新卷,最后用新的EBS卷替换旧的EBS卷即可。

运行Windows Server的EC2实例缺省的系统盘空间是30GB,因此采用缺省EBS卷大小的Windows Server实例在运行一段时间之后很可能遇到空间不足的问题。下面我们用一个运行Windows Server 2008 R2的EC2实例为例子详细描述一下如何扩展系统盘(C:驱动器)的磁盘容量。

 

1.     创建需要扩展EBS卷的磁盘快照

首先通过AWS管理控制台查看和选择EC2实例中需要扩展的EBS卷。因为对应的是Windows的C系统盘,因此这个EBS卷的挂载路径是/dev/sda1,我们可以通过这个挂载信息(Attachment Information)和卷名称(如果之前有定义)来选择。创建完磁盘快照后,这里我们需要记录一下快照的ID(如snap-a4dbda5a),这个信息我们在下一步需要使用。

2.     根据上面的快照创建一个新的EBS卷

在创建新EBS卷的时候,我们要选定需要的大小,比如扩展到50GB。这里有两点需要注意:一个是根据前面记录的快照ID选择响应的快照,另一个是需要选择与原先EBS卷相同的可用区(AZ),如下图所示:

如何扩展EBS卷的容量

3.     把新的EBS卷挂载到EC2实例上

由于我们要替换EC2实例的系统(根)卷,因此我们需要先停止EC2实例,然后卸载旧的EBS卷,最后挂载我们在前一步创建的EBS卷。这里需要注意的一点是在设备(Device)这一栏需要输入/dev/sda1作为EBS卷的映射地址,如下图所示:

 如何扩展EBS卷的容量

4.     在操作系统内扩展磁盘空间

通过前面几个步骤,我们成功的把一个50GB大小且包含有原先系统盘数据的新EBS卷挂载到EC2实例上了。但是如果现在启动这个EC2实例,我们在Windows资源管理器中看到C盘的磁盘空间还是原来的30GB而不是50GB。这是因为EC2实例上的操作系统还没更新到新扩展的磁盘空间,所以扩展EBS卷容量的最后一个步骤是需要在EC2实例上的系统内进行磁盘空间扩展操作。如果是在Linux实例上,可以通过resize2fs命令来更新磁盘空间。在Windows Server实例上,我们可以通过系统带的磁盘管理器(Disk Management)工具来更新,如下图所示:

如何扩展EBS卷的容量

我们只需要在C:盘上点击鼠标右键然后选择扩展卷的向导就可以使用所有50GB的空间了。至此,我们成功的把Windows Server 2008R2实例中30GB的系统盘扩展为50GB。另外,如果只是需要扩展数据盘不是扩展系统盘,那么整个操作更为简单而不需要重启EC2实例。

 

如何扩展EBS卷的容量

上一篇:深度剖析Byteart Retail案例【前言】


下一篇:深度剖析Byteart Retail案例【应用程序的配置】