AWS EBS介绍

来源:互联网 发布:我的世界mac中文输入 编辑:程序博客网 时间:2024/05/21 19:28

http://freedomhui.com/2012/06/aws-ebs%E4%BB%8B%E7%BB%8D/?lang=zh-hans

AWS Elastic Block Store

 目录
  • AWS Elastic Block Store
    • EBS介绍
    • EBS特点
    • 使用EBS
    • EBS的快照
    • EBS的性能
    • EBS的持久性
    • 架构
      • 整体架构
      • 快照架构
    • 测试
      • 性能测试
      • 快照测试

EBS介绍

AWS 的EBS(Elastic Block store)给Amazon的EC2实例提供了高可用高可靠的块级存储卷。EBS适合于一些需要访问块设备的应用,比如数据库、文件系统等。

EBS特点

  • 提供1GB到1TB的容量。
  • 存储卷像裸块设备一样,有块设备接口,可以在卷上创建文件系统。
  • 每个EBS volume是存放在一个Availability Zone中,只有同一个Availability Zone中的EC2 instance才能访问。
  • 每个volume在同一个Availability Zone中有多个副本,这可以保证当单个硬件失效时,数据不会丢失。
  • EBS可以创建当前时间点的快照,快照是保存在S3中。这些快照可用于创建新的EBS volume(volume上的数据和快照的数据相同)。快照可以长时间保存数据。同一个快照可以实例化多个volume。
  • volume可以从公共数据集中实例化(比如保存有基因数据的快照)。
  • Amazon CloudWatch可以监控EBS volume,监控的指标有带宽、吞吐量、延迟、队列深度。并提供API接口。

使用EBS

  • 每个volume只能挂载在一个EC2 instance上。每个EC2 instance可以挂载多个volume,这样可用于数据条带化(做软件RAID0),以此提高I/O性能和吞吐率。这对于像数据库这种典型应用(频繁随机读写操作)很有帮助。
  • EBS volume可以用作EC2 instance的启动分区,这样就能保存启动分区上的数据,并制作你的AMI。

EBS的快照

  • EBS volume支持创建快照,并把快照存放S3上。
  • EBS volume上的第一个快照是全备份快照,以后的快照是增量备份的。只意味着只有被改变的数据才会被保存。
  • 虽然快照是增量快照,但是删除一个快照时,只有对其他快照没用的数据才被删除。不管哪个快照被删除,所有活动的快照都包含了restore the volume所需的信息。而且,不管从哪个快照恢复(使用快照创建volume,也就是实例化volume),所花的时间都是一样的。
  • 快照能用于实例化多个新的volume,这些新的volume的容量可以大于快照的原volume的容量,而且这些新的volume可以在其他 Availability Zone。当创建一个新的volume时,可以选择保存在S3上的不同快照来创建。在这种情况下,新的volume实际上是快照的副本,但是可以是不同容 量(只能大于原volume)、不同Availability Zone。这种功能可以用于对旧的volume进行扩容,或者在不同的Availability Zone上复制volume。
  • 从S3上的快照创建的新volume的载入方式是”load lazily”。当一个volume从一个快照上创建时,并不需要等待把S3上所有的数据都传送到EBS volume上。只有当你的EC2 instance开始访问这个volume时(访问某一数据块时),这个volume才开始从S3传输数据,并在后台持续加载这个volume的所有数 据。
  • EBS的快照可以支持共享。这样可以共享你的数据给你的同事,而且还可以把快照共享给所有AWS用户。
  • 共享快照的操作可以通过AWS管理控制台或者API来执行。

EBS的性能

  • EBS volume适合于几乎所有方式的存储。你可以挂载多个volume在一个EC2 instance上,并条带化数据(做软件RAID,或者用LVM)。这种方式可以提高I/O性能,特别是大量随机访问。
  • 实际的性能依赖于具体的应用。因为EBS的volume需要网络访问,在大型EC2实例上,速度更快、吞吐率更高。

EBS的持久性

  • EBS volume的耐久性(durability)跟volume的大小和最近快照之后所修改数据的大小有关。假如一个20GB的volume,最近快照之后 只修改了很少的数据,它的AFR(年故障率 annual failure rate)是0.1%~0.5%。而一个普通硬盘的AFR是4%。
  • 在同一个Availability Zone对volume做镜像并不能提高它的耐久性。但是可以对volume创建快照(快照保存在S3上,S3上的副本是保存在多个Availability Zone上),因此频繁创建快照可以提高数据的耐久性。
  • 当你的EBS volueme失效时,该volume的所有快照都是完整的,你可以基于这些快照创建新的volume。

架构

根据下面相关资料,可以推断出EBS的大致架构。

  • Summary of the Amazon EC2 and Amazon RDS Service Disruption in the US East Region
  • A pictorial representation of AWS EBS Architecture
  • Amazon’s Elastic Block Store explained
  • Understanding and using Amazon EBS – Elastic Block Store

整体架构

  • 每个EBS cluster管理一群EBS nodes,这些node之间是对等的。
  • 每个EBS node保存有EBS volume数据的副本,并响应EC2 instance的读写请求。
  • EBS volume data被复制到多个EBS node上,保证durability和availability。
  • EBS node采用快速的故障转移策略(fast failover strategy),并主动选择新的副本(当一个副本不能同步或者不可用时)。
  • EBS node和EBS node、EC2 instance、EBS control plane services通过高带宽网络(Hign Bandwidth Network)进行通信。一个冗余的低带宽网络(Replication Network)用于EBS node间通信(可以用于副本的复制)。
  • 假如A EBS node和保存有数据副本的B node失去连接,则该A认为B已经失效。为了保证数据的耐久性(durability),A必须找到一个新的node,然后复制副本(称为re- mirroring)。在re-mirroring过程中,A在EBS cluster中搜寻另外一个有足够空间的node,然和跟这个node建立连接,然后复制数据到这个node上。
  • EBS control plane接收用户的requests,并转发到相应的EBS cluster。每个EC2 Region上有一套EBS control plane。EBS control plane分布在多个Availability Zones上,具有高可用性、高容错性。EBS control plane还要帮EBS cluster 上的volume data选择primary replicas(为了保证一致性,每个volume在某个时刻只有一个primary replica)。control plane上还有其他服务。
  • 当数据被re-mirroring的时候,所有保存这个数据副本的nodes会一直持有数据副本,直到它们确定其他节点已经接管了它们的工作(保存副 本),这样可以提供数据保护。但在volume中的数据在re-mirroring时,访问这些数据是会被阻塞的,直到系统确定一个新的 primary(or writable) 副本(replica)。这个限制可以保证在所有潜在的失效模型中,EBS volume中的数据是一致的。但是从EC2实例的角度去观察,当在一个volume上执行I/O时发生re-mirroring操作,这个volume 就表现为阻塞。

快照架构

  • 每个volume被分成多个blocks。当创建volume的第一个快照时,所有的blocks都会被保存到S3上,快照的指针表也被保存到S3上。当 创建这个volume的第二个快照时,只有被修改过的blocks才被保存到S3上,相应的指针表也被保存到S3上。第三个快照创建过程相同。
  • 增量快照(依赖快照)的优点是节约时间和空间。创建增量快照是非常块的,因为它只保存被修改过的blocks到S3上。创建快照的时候要注意一致性,当需要创建快照时,需要先冻结数据库、文件系统,然后创建快照,最后解冻。快照的性能跟S3的性能相同。
  • 通过快照,可以从其他Availability Zone获得一个volume的数据(因为快照是保存在S3上,S3是跨多个Availability Zones)。你可以在一个volume上创建快照,然后在另外一个Zone上创建一个新volume(并选择快照)。

 

测试

测试时间是2011年12月。测试结果文档是AWS EBS测试记录。测试结果和测试工具、测试环境、AWS运行状况(多少个用户在使用EBS服务)等因素有关,因此此次测试结果并不代表EBS的平均性能。 可以对比的测试结果有 磁盘阵列测试文档 和 盛大云硬盘测试文档(2011年11月测试的,现在盛大云硬盘已经升级了,估计性能有所提升)。

性能测试

  • 测试环境:在AWS上建立一个t1.micro的机器(615M内存),安装windows2008。
  • 测试对象:在AWS上创建一个10GB大小的EBS volume(和EC2 instance在同一个Availability Zone)。
  • 测试设置:把volume挂载到EC2 instance上,并格式化。
  • 测试工具:IOmeter
  • 测试参数:1个worker。IOmeter测试前会在volume上创建并充填一个8GB大小的文件,这样减少了EBS按需分配特性对测试结果的影响。

测试内容

  1. 顺序读的MBPS
  2. 顺序写的MBPS
  3. 顺序读的IOPS
  4. 顺序写的IOPS
  5. 随机读的IOPS
  6. 随机写的IOPS
  7. 文件服务器负载的IOPS
  8. 工作站负载的IOPS
  9. 数据库负载的IOPS

测试结果

顺序读的MBPS
块大小队列深度IOPSMBPS平均响应时间(ms)512B12552.6145101.2463940.3911991KB12524.1562272.4649960.3956332KB12350.6445324.5911030.4249324KB12072.3393338.0950760.4820108KB12039.28933915.9319480.48975316KB11630.02300425.4691090.61295132KB11183.74984736.9921830.84417464KB1840.48277952.5301741.189014128KB1524.16247165.5203091.906990256KB1311.57237277.8930933.207976512KB1172.81718886.4085945.7832511MB193.53128293.53128210.6893852MB148.51747897.03495620.6033714MB124.70255498.81021740.4489238MB112.671283101.37026378.90482816MB16.462593103.401494154.324245块大小队列深度IOPSMBPS平均响应时间(ms)64KB1849.83539453.1147121.17604364KB2662.96755241.4354723.01553564KB41427.67538889.2297122.80106864KB81483.05367092.6908545.39374164KB161551.87431796.99214510.30617664KB321701.659058106.35369118.79987664KB641641.108362102.56927338.98039764KB1281700.012987106.25081275.20443764KB2561656.129006103.508063154.246022
顺序写的MBPS
块大小队列深度IOPSMBPS平均响应时间(ms)512B11274.0105360.6220750.7842151KB11405.5868091.3726430.7108902KB1329.0714290.6427183.0380284KB1305.1003471.1917983.2767158KB1213.9945821.6718334.67194816KB1225.0082893.5157554.44289132KB1177.1712135.5366005.64278964KB1155.2619809.7038746.439292128KB188.95861611.11982711.238242256KB155.98637713.99659417.857944512KB134.84807417.42403728.6928451MB124.59138824.59138840.6408012MB115.40995930.81991864.8679474MB18.21888932.875558121.6357868MB14.24604133.968326235.50373516MB11.03854016.616641941.911582块大小队列深度IOPSMBPS平均响应时间(ms)64KB1151.9990819.4999436.57637364KB2152.2975339.51859613.13274764KB4515.79714332.2373217.75276664KB8282.60104317.66256528.29522864KB16153.9609559.622560103.91459664KB32153.9346409.620915207.63553264KB64153.5657979.597862415.29561164KB128153.0729949.567062827.53432364KB256152.0892549.5055781645.074171
顺序读的IOPS
块大小队列深度IOPSMBPS平均响应时间(ms)512B12623.9371381.2812190.380500512B22924.0027411.4277360.683421512B45281.2042032.5787130.756876512B89442.1437994.6104220.846785512B1615710.5838357.6711841.017935512B3216533.7787548.0731341.934920512B6412102.5552395.9094515.285980512B12813126.7568716.4095499.737574512B25616076.4237857.84981615.920638
顺序写的IOPS
块大小队列深度IOPSMBPS平均响应时间(ms)512B11629.3555230.7955840.613216512B21724.4007160.8419931.159318512B41350.3149740.6593332.961708512B81645.5726310.8035024.860792512B163131.1419701.5288785.109576512B325487.1062912.6792515.831239512B645436.2324582.65441011.769855512B1285232.8180352.55508724.452925512B2565116.7578472.49841750.006771
随机读的IOPS
块大小队列深度IOPSMBPS平均响应时间(ms)512B1514.0835430.2510171.944495512B2525.0983680.2563963.808146512B4975.3156860.4762284.100013512B81104.8898290.5394977.239507512B161115.0110820.54443914.348814512B321088.2959500.53139529.414582512B641087.9076330.53120558.817419512B1281105.7963720.539940115.645245512B2561106.7698170.540415230.405567块大小队列深度IOPSMBPS平均响应时间(ms)4KB1388.5250851.5176762.5728964KB2402.2843691.5714234.9705614KB4805.9483513.1482364.9617844KB8874.0524153.4142679.1506274KB16866.5340463.38489918.4659524KB32850.7030723.32305937.6114844KB64831.4725403.24794076.9089694KB128839.6881493.280032152.0872564KB256822.0899883.211289310.311784
随机写的IOPS
块大小队列深度IOPSMBPS平均响应时间(ms)512B196.5031490.04712110.360601512B298.6213250.04815520.276820512B4100.9340310.04928439.607770512B8104.1813190.05087076.778951512B16110.9579580.054179144.199395512B32107.1467560.052318298.740650512B64108.1611910.052813588.390351512B128104.0399960.0508011213.382441512B256101.8936130.0497532419.665037块大小队列深度IOPSMBPS平均响应时间(ms)4KB198.4320050.38450010.1576154KB296.8169300.37819120.6520904KB4107.8527600.42130037.0986854KB8104.0881100.40659476.8066994KB16101.1276570.395030158.3388184KB3294.9305240.370822337.5344014KB6495.6914600.373795665.2358264KB12894.7061410.3699461330.1340744KB25693.2883420.3644082637.288612
文件服务器负载的IOPS
文件服务器负载参数

所占百分比数据块大小读比例随机比例10%0.5KB80%100%5%1KB80%100%5%2KB80%100%60%4KB80%100%2%8KB80%100%4%16KB80%100%4%32KB80%100%10%64KB80%100%块大小队列深度IOPSMBPS平均响应时间(ms)-1158.6451131.6972436.302122-2173.5012181.90444011.524715-4296.5310833.15297113.487062-8326.1569313.53337024.521028-16319.6058973.47142050.039720-32288.2549503.124912110.995466-64301.7233923.272893211.613380-128306.7356113.289809415.098553-256310.3500243.337515815.767888
工作站负载的IOPS
工作站负载参数

所占百分比数据块大小读比例随机比例100%8KB80%80%块大小队列深度IOPSMBPS平均响应时间(ms)-1200.4563741.5660654.987198-2203.3971701.5890409.831918-4274.9024752.14767614.549520-8325.5053762.54301124.569315-16371.6317912.90337343.040322-32378.7424932.95892684.493637-64387.6308323.028366164.880733-128385.0789533.008429331.252311-256383.4866852.995990661.003607
数据库负载的IOPS
数据库负载参数

所占百分比数据块大小读比例随机比例100%8KB67%100%块大小队列深度IOPSMBPS平均响应时间(ms)-1170.1884751.3295975.874187-2170.7030801.33361811.713854-4289.6703292.26304913.807330-8291.5214472.27751127.436836-16260.2969642.03357061.472165-32286.0745122.234957111.862068-64270.2968032.111694236.589546-128276.8398492.162811460.416307-256273.3694442.135699925.519759

快照测试

创建一个EC2 instance,安装Red Hat 6.1。

创建快照的所花时间

  1. 创建一个2GB大小的EBS volume,然后挂载在Linux主机上。格式化这个volume,然后在上面创建填充一个1GB大小的文件。
  2. 给EBS volume创建第一个快照Snap_01,快照的状态从pending变成completed花了十几分钟。
  3. 写256MB的数据到文件上,然后创建第二个快照Snap_02,快照的状态从pending变成completed花了两分钟。
  4. 写256MB的数据到文件上,然后创建第三个快照Snap_02,,快照的状态从pending变成completed花了两分钟。
  5. 写1GB的数据到这个文件上,卸载这个volume,然后删除这个卷。

从同一个Availability Zone中恢复快照所花时间

分别从不同的快照上创建新的volome,共创建3个volume,然后把这3个volume挂载到Linux主机上。

volume名快照名盘符vol-2dd44f40Snap_01/dev/xvdlvol-03d44f6eSnap_02/dev/xvdmvol-fdd44f90Snap_03/dev/xvdn
  • 首先算出/dev/xvdl盘上文件的md5值(使用md5sum工具,md5sum会读取文件,然后计算md5值),用了20秒(因为从把/dev /xvdl挂载到/mnt/xvdl目录开始,S3就开始把数据复制到EBS volume上,因此恢复快照时间为20+秒)。
  • 然后算出/dev/xvdm盘上文件的md5值,用了4秒(md5sum计算文件的md5值花了4秒)。
  • 最后算出/dev/xvdn盘上文件的md5值,用了4秒。

删除这3个volume,然后删除Linux主机。

从不同Availability Zone中恢复快照所花时间

在不同的Availability Zone中创建Linux主机,然后分别从不同的快照上创建新的volome,共创建3个volume,最后把这3个volume挂载到Linux主机上。

volume名快照名盘符vol-edfa6180Snap_01/dev/xvdlvol-c5fa61a8Snap_02/dev/xvdmvol-d3fa61beSnap_03/dev/xvdn
  • 首先算出/dev/xvdl盘上文件的md5值(使用md5sum工具,md5sum会读取文件,然后计算md5值),用了66秒(因为从把/dev /xvdl挂载到/mnt/xvdl目录开始,S3就开始把数据复制到EBS volume上,因此恢复快照时间为66+秒)。
  • 然后算出/dev/xvdm盘上文件的md5值,用了3秒。
  • 最后算出/dev/xvdn盘上文件的md5值,用了3秒。

删除这3个volume,然后删除Linux主机。