云计算:云硬盘
2019-03-05 19:58:33云硬盘是什么?
云硬盘,又叫做“云盘”或者“云磁盘”,就是云虚拟机上可以挂载和使用的硬盘。这里,它既包含了用于承载操作系统的系统盘,也包括了承载数据的数据盘。
在云计算的领域,有时,我们还会把云端磁盘服务叫做块存储(Block Storage),因为它们与 Linux 操作系统中的块设备相对应,是云上提供的“裸盘”,可以格式化并且施加文件系统。
既然是硬盘,那么它就与我们通常的认知相一致,当然是带有数据持久化功能的。这在专业上被称为“非易失性存储”(Non-ephemeral Storage),也就是说写入的数据不会丢失。即便所在虚拟机重启、关机甚至下线删除,这块云硬盘只要还存在,其中的数据也并不会被擦除。
事实上,云厂商对于云盘,不仅仅会保障数据的顺利写入,一般还会帮你在存储端同步和保留至少三份副本的数据。所以说,云硬盘的冗余度和可用性是非常之高的,一般极少发生云硬盘数据丢失的情况。
云硬盘与传统磁盘的真正差异在于,绝大多数的云硬盘都是远程的。我们都知道,在经典计算机的体系结构中,硬盘是通过本地机器内部主板的高速总线,与 CPU、内存等部件相连接;而在云端,你的硬盘则很可能并不在宿主机上,而是在专用的磁盘服务器阵列中,**两者是通过数据中心内部的特有 IO 线路进行连接。 **
云硬盘的性能等级
- 第一个等级的云硬盘,是基于传统 HDD 硬盘构建而成的。这类云盘的性能一般,最高 IOPS 大概在数百左右。在很多的云上,已经不把它作为推荐的选择了。但它并非一无是处,成本低就是它的最大优势,在不注重性能的测试环境,或者是个人自用的服务器,它就是一个很好的选择。
- 第二个等级,往往是基于混合硬盘,也就是结合 HDD 和 SSD 硬盘构建的云硬盘。它会综合发挥 SSD 的性能优势和 HDD 的容量优势。比如它可以用 SSD 部分来承载热点区域数据,或是作为缓存,来提高响应性能。在这个等级下,典型的 IOPS 为数千左右,是很多云上创建硬盘的默认选项,比较适合像是操作系统启动盘这样的常规负载。
- 第三个等级的云硬盘,它的存储介质就是纯 SSD 硬盘了。虽然贵一些,但一分价钱一分货,这个等级下的云硬盘能够提供非常稳定的 IO 能力,IOPS 通常能够上万,也有相当不俗的吞吐量和较低的访问延时。你可以用它来承载生产环境中重要的关键业务应用,或是各类数据库等 IO 密集型应用。
- 第四个等级,也是当下业界的最高等级,就是进一步优化增强的最新 SSD 云盘。它一般会采用更新一代的企业级闪存硬件,配合自研或改进后的底层传输协议,和虚拟化技术栈的优化来提供服务。因此它能够达到惊人的性能水平,满足我们最为苛刻的性能场景需求,比如承载 SAP HANA(SAP 的高性能计算平台)、高并发 OLTP 数据库等等。这类 SSD 云盘的 IOPS 通常能够突破十万以上。
除了云盘性能等级之外,还有一个影响云盘性能的重要因素,就是这块云硬盘的容量。不论是哪种磁盘类型,它的容量大小几乎都与性能正向相关。同等的性能等级下,云硬盘的容量越大,一般来说它的性能就越高,直到达到这个等级的上限。这是由云上磁盘能力共享的底层设计所决定的。
所以在某些时候,可以刻意地增大所申请的云硬盘的容量,以获取更高的性能,即便这些额外的空间不一定能被用上。
认识和使用本地磁盘
前面都是围绕着“远程硬盘”这个产品形态来展开的。的确,远程云硬盘的好处很多,是计算存储分离架构的体现,也是云虚拟机硬盘的主流方式。不过,有时我们还是会有点怀念“本地磁盘”,也就是直接位于宿主机上的硬盘。因为看似传统的本地硬盘,与远程硬盘相比起来,还是会有它自己的优点。毕竟它和计算单元离得近,而且没有三副本的负担,所以往往性能不俗,价格又相对便宜。
云上能否使用本地磁盘呢?答案是肯定的。而且本地磁盘一般不需要自行创建,只要你选择了带有本地磁盘的机型,启动后,该型号对应大小和规格的本地磁盘就会自动被挂载。
本地磁盘在本质上,是易失性(Ephemeral)的存储,当机器关机或删除,以及出现硬件故障时,本地磁盘上的数据就可能损坏或丢失。这一点我们必须牢记,不适用的场合必须使用更可靠的远程云硬盘。
总结
- 云硬盘是云虚拟机的主要持久化存储,与宿主机往往是分离的;
- 云硬盘支持动态添加和删除,使用起来灵活方便;
- 云硬盘一般提供多种性能等级,最终性能会受存储介质和容量大小的共同影响;
- 部分虚拟机型号会自带高性能的本地磁盘,在可以容忍数据丢失风险时,值得考虑的一个选择。
最后,云硬盘的付费模式,同样有按量付费和包年包月之分。在很多的云上,为一块云盘启用包年,长期租用的确定性也能够给你带来折扣,这和虚拟机资源的包年包月是一样的。
思考
- 云硬盘可以动态地挂载和卸载,使用起来十分方便。那么更进一步的问题是,已经挂载的云硬盘能够支持在线扩容吗?
- 还有一种云端常见的存储类产品,如阿里云的文件存储 NAS、AWS 的 EFS 等,也可以挂载到云虚拟机。那么,这些产品形态和云硬盘有什么区别,主要用于什么场景吗?