Amazon Web Services的用户大多知道,EC2的类型很多。其中m5d、r5d等类型的,跟对应的m5、r5系列有什么区别,知道的人可能少一些。不过看了本文标题也会猜到,这些机型是带有一定容量的本地存储的。按aws不太接地气的用词,叫做实例存储。
大家知道,EBS其实不是EC2所在服务器的本地盘,而是从大的分布式存储中划出来、通过网络连到EC2所在服务器的,八成是采用iSCSI等协议映射成EC2的块设备的。好处是独立于特定服务器,这样EC2才可以在不同服务器、甚至不同的机房和机楼之间方便地飘移。
凡事有利就有弊。大家知道,从磁盘上读写大文件有时很占资源,衡量存储性能的最主要指标是吞吐量和IOPS。EBS模式下这俩指标不只取决于磁盘本身、也受网络带宽和波动的影响,而且是受最差的影响。
而所谓的实例存储,就是EC2所在服务器上插着的磁盘,所以性能表现不受网络影响。但是EC2飘走后磁盘带不走,这就是这类存储关机就丢失的内在原因,因为下次开机不见得还跑在原来的服务器上。
这个道理专业IT人员容易理解。一般情况下,EBS跟服务器之间是高速专有网络,网络不一定会成为存储性能瓶颈。所以大多数实际使用场景中,用户对两者的性能差别没什么感觉。但是笔者最近调测一个程序,需要多次顺序读写和处理好几T的文件,执行一遍要等半天,比较痛苦。而且同样数据、同样程序,不同时候执行感觉时快时慢的。这个EC2是东京区域的,初步怀疑受到了同AZ内其他租户业务忙闲的影响。
于是我修改了实例类型,从r5.large改成了r5d.large, 并在操作系统内对本地磁盘创建分区、文件系统,并挂载到程序访问的数据目录。再次跑程序,发现性能还是有明显改善的。
从价格看,带d的系列比不带d的贵不了多少。我的程序输入输出数据都在S3上,本机不需要永久保存数据,EC2跑完程序就会关机。这种情况下采用带d的机型,不但可以提高性能、缩短运行时间,而且关机后也无需为数据盘付费,是个少有的双份好处、没有坏处的选择,推荐给大家参考。