亚马逊AWS官方博客

Amazon EBS弹性卷修改实践

简介

在应用飞速的更新换代、数据量高速增长的今天,AWS的客户对EC2的块存储需求是随时间而改变的,很可能会多次需求增加容量或改变性能特性。在当今的24×7(全天候不间断)操作模式下,服务器没有停机的余地。因此,客户希望在应用不离线或不影响正常操作的情况下进行更改。换句话说,我们的客户希望他们的EBS卷更有弹性!

在2017年2月13日,AWS全球推出了一个新的EBS功能,称为弹性卷(Elastic Volumes),并使其适用于当前所有EC2实例可生成的EBS卷。在2017年2月17日,AWS中国区可以使用这项新功能。通过这一项功能,可以在EBS卷正在使用时增加卷的大小,调整性能或更改卷类型,并能在这些更改生效之前继续使用应用程序等运行在EC2实例上的程序功能。这一新功能的更新将大大简化企业或个人用户的许多规划管理,可以通过简单的API调用来及时更改存储基础架构,取代传统的需要几周或几个月的配置周期。

使用场景

1. 卷类型更改。在项目初期,为了更快部署应用,您初步设置块存储使用通用SSD卷(General Purpose SSD volumes),在获得一些使用经验后,发现吞吐量优化卷(Throughput Optimized volumes)是更好的选择,这时您只需要更改卷的类型就能够轻松解决问题。

2. IOPS性能调整。假设您在IOPS卷中运行一个关系型数据库,并设置它处理正常范围内的数据读写,由于每个月最后几天数据读写突增到正常水平的10倍,您只需要通过弹性卷短时间内获取更强大的读写配置来处理每月最高的数据读写,然后回调至正常配置来处理正常范围内的数据读写。

3. 卷存储增加。您获取了一个卷使用警告,提示您当前使用存储空间超过90%,这时您可以增加卷的大小,并扩展文件系统来匹配,弹性卷将以完全自动化的方式处理请求而不用停止EC2实例。

适用范围

AWS全部区域,包括海外和中国北京区域。

修改限制

所有卷大小的修改只能增加卷的大小!为了保护所有EBS卷中的数据,弹性卷修改仅允许增加卷的大小。如果您想将当前卷大小改小,可以先通过数据迁移工具将EBS卷中的数据移动到较小的卷,再将原来的卷删除。

1. 通用SSD卷:卷大小最小为1GiB,最大为16384GiB(16TiB);IOPS性能无法修改,最小为100,最大为10000,在最大最小值范围内为卷大小的3倍(卷大小单位为GiB),IOPS超频可达到3000。

2. 预配置IOPS SSD (io1):卷大小最小为4GiB,最大为16384GiB;IOPS性能可以修改,最小为100,最大为20000,在最大最小值范围内最大可调整至卷大小的50倍(卷大小单位为GiB)。

3. Cold HDD (sc1):卷大小最小为500GiB,最大为16384GiB;Cold HDD (sc1) 卷提供低成本的磁性存储,该存储以吞吐量而不是 IOPS 定义性能。此处无法做任何更改。

4. 吞吐量优化卷:卷大小最小为500GiB,最大为16384GiB;吞吐量优化卷提供低成本的磁性存储,该存储以吞吐量而不是IOPS定义性能。

5. 旧版磁介质卷:无法修改。磁介质是上一代卷。对于新应用程序,我们建议使用较新的卷类型。

数据截至至2017年2月17日,具体数据以AWS实时数据为准。更多有关EBS卷的相关信息,请查阅Amazon EBS卷类型

操作指南

您能通过AWS管理控制台、API调用或从AWS命令行界面(CLI)管理使用所有功能。下面将介绍AWS管理控制台对弹性卷修改的操作指南,获取更多API调用及命令行界面的操作方式,请访问AWS文档

修改本身不收取任何费用,您只需按实际使用量付费。更多定价信息,请访问EBS定价

一、引导卷(根分区)修改

登陆AWS中国区,并选择服务EC2,打开EC2面板后,鼠标左击点选左侧导航栏的“卷”。

打开卷面板后,选择您要调整的卷,点选“操作”打开下拉菜单,在下拉菜单中点选“Modify Volume”。

然后可以对卷类型、大小和预配置的IOPS(如果适用的话)进行任何符合需求的更改,修改检查完后,点击Modify按钮。

注意卷大小不能减小

注意预配置IOPS SSD卷的IOPS值不能大于卷大小的50倍(卷大小单位GiB)

在修改确认页面点击“Yes”按钮。

卷修改正在进行,请稍等一会儿。

卷修改完成。

卷修改验证。

二、未绑定到EC2实例卷修改

三、已绑定到EC2实例卷(未建立文件系统使用)修改

四、已绑定EC2到实例卷(建立文件系统并正在使用)修改

应用卷修改前。

应用卷修改后。

注意,卷的大小修改后,下一步是扩展文件系统,以便可以利用额外的存储空间。要了解如何执行此操作,请阅读在Linux上扩展EBS卷的存储空间或在Windows上扩展EBS卷的存储空间

注意事项

1.   在某些情况下,卷需要与EC2实例分离或停止实例才能进行修改。如果您在尝试对EBS卷应用修改时遇到错误消息,或者如果要修改附加到上一代实例类型的EBS卷,请执行以下步骤之一:

  • 对于非引导卷,先将卷从实例中分离,再应用修改,最后重新附加卷。
  • 对于引导卷,先停止实例,再应用修改,最后重新启动实例。

2.   弹性卷修改方法不支持上一代磁性卷。但是,您可以通过拍摄快照,并将快照还原到其他配置的EBS卷。

3.   不支持减小EBS卷的大小。但是,您可以通过创建较小的卷,利用应用程序级工具(如robocopy)进行数据转移。

4.   修改卷后,您需要等待至少六个小时,才能再对同一卷进一步更改,建议修改属性的时候,类型,IOPS,大小参数一次性完整设定。

5.   许多Linux AMI如今使用MBR方案,它只支持最多2047GiB的引导卷。如果您的实例未使用2TiB或更大的引导卷进行引导,则引导卷的大小被限制为2047GiB。

6.   在2016年11月1日之前附加到当前生成实例的卷需要执行以下操作之一,来初始化修改支持(这是一次性要求):

  • 停止并重新启动实例(重启前请一定备份卷数据!)。
  • 分离并重新附加卷。

7.   m3.medium实例被视为当前一代。m3.large,m3.xlarge和m3.2xl实例被视为上一代。更多有关上一代实例的内容,请参考实例类型

引导卷(根分区)操作实践:


卷修改前检查:

1.  确保最近一次卷修改在6小时之前。

2.  确认卷类型,如果为上一代磁性卷,您无法修改卷的类型及大小。您可以先将磁性卷中的数据拍摄快照并迁移至其余四种卷类型,再做更改。

3.  确认实例类型,如果为上一代实例,请先分离卷(非引导卷)或停止实例(引导卷)后再进行卷修改。

4.  确认实例上一次停止时间,如果在2016年11月1日之前,请先分离卷(非引导卷)或停止实例(引导卷)后再进行卷修改。

5.  一次性完整设定需要修改的卷类型,IOPS,大小参数,并等待卷修改完成。

参考

Amazon EBS Update–New Elastic Volumes Change Everything

作者介绍:

王元恺

AWS实习解决方案架构师,上海交通大学学生,有数年C++程序开发以及一年PHP前后端开发经验,同时致力于AWS云服务在国内的应用和推广。熟悉网站架设与网络应用开发,对于TCP/IP及网络协议有自己的理解和实践经验。