块存储作为云计算的基础组件,可以为云服务器提供可随机读写能力,且具备持久化存储、高可靠、低时延特性。同时采用多副本冗余,能避免网络硬件故障而导致的数据不可用。UCloud技术总监彭晶鑫在现场分享时提到,利用分布式技术,块存储可以实现计算和存储分离,它带来的好处有:
1.在线迁移。预测机器故障前,我们将虚机迁移至另外一台健康的宿主机时,不需要迁移磁盘的数据,只需迁移CPU和内存,整个过程可在几十秒内完成。如果没有计算存储分离,可能要持续数十分钟甚至几个小时,而且在线迁移的过程非常影响用户的IO体验。
2.宕机恢复。如果宿主机宕机,我们只需要利用远端的分布式存储,在另外一台宿主机上分配CPU和内存就可以快速在新的宿主机上拉起虚机,宕机的恢复速度基本能在一分钟内完成。如果没有计算存储分离,可能要数十分钟甚至更长时间。
3.高可用高可靠性。通过分布式技术在后端能够发现节点故障并在几秒的时间内剔除掉有故障的副本,从而避免节点硬件故障、网络故障等带来的存储数据问题和可用性问题。
4.存储池化。通过分布式存储组成较大的池化容量,且实现了按需分配存储空间,避免本地存储碎片过多问题,通过软件层面的一些设计甚至可提供超大容量存储,例如32TB、40TB、100TB。
过去几年,存储行业的底层软硬件技术发生了快速的发展,存储介质方面,从HDD 到 SATA SSD 再到NVMe SSD ,性能提升了百倍;网络接口上,从千兆、万兆到100G,网络接口也迎来跨越式发展。UCloud块存储团队面对这些发展,做了很多底层研发设计的工作,体现在产品上就是从普通云盘升级为SSD云盘,IOPS从1000提高到2.4万,时延从5-10毫秒降低到0.5-3毫秒。加上今年推出的最新型RSSD云盘,IOPS提升50倍至120万,顺序吞吐量提升18倍,延迟降低至0.1毫秒。
为了推出这样一款超高性能的RSSD云盘,UCloud在系统层面做了大量工作来彻底压榨NVMe的硬件能力。首先是在client侧利用vhost user技术,通过vring实现虚机到存储client的数据零拷贝。网络协议用RoCE代替TCP,RoCE能提供一种特别清晰简单的消息机制,让应用程序可以直接访问两端的内存,完全绕过kernel,使4K读写的网络包收发时延降到10微秒。然后存储读写上用SPDK代替libaio,SPDK提供用户态IO读写,高并发下依然能保持较低的时延。IO路径整体保持在用户态,并使用线程轮询减少用户态内核态间的切换,减少中断带来的损耗。通过这种整体的软硬件协同设计,RSSD云硬盘性能获得极大的提升,延时得到很大程度的降低。