说起分布式存储,大家可能都会觉得这是一个老生常谈的问题,虽然分布式存储并不是一个年轻的技术,许多开发者也对分布式存储耳熟能详,但分布式存储却并不是像想象中的那种简单的技术,它是一个涉及到文件系统、存储系统、网络、算法、管理等多方面技术的汇聚,因此,要想真正的掌握分布式存储技术,绝不是一件轻松的事。但对于开发者来说,如果不了解分布式存储技术,实际上对他们的开发工作还是会有很大的影响,特别是现在基于互联网的开发更是离不开对分布式存储技术的深入了解。
而在11月10日举办的UCan下午茶武汉站的活动中,四位分布式存储的专家为冒雨到场的近百位开发者朋友奉上了一场分布式存储的技术盛宴,为这个斜风细雨、略显凉意的深秋下午增添了些许知识的温暖。
UCloud分布式文件系统架构解析
UCloud文件存储研发工程师邓瑾首先为到场的观众带来了UCloud分布式文件系统架构的解析。邓瑾首先简单介绍了分布式文件系统的概念,他说,分布式文件系统是传统文件系统的延伸,通过分布式技术手段和公有云规模效应获取传统文件系统所没有的存储能力。分布式文件系统具有容量和性能线性提升、高可靠、高可用、低成本等特性。邓瑾还介绍了几种经典的分布式文件系统——GFS/HDFS、TFS、WAS和WAFL/CephFS,以及对象存储、KV存储、文件存储等几种常见的存储方式。
接着邓瑾介绍了UFS的发展历程,他表示,UFS是吸收了基于开源软件Gluster FS的原型系统之后设计的一套完全自主研发、面向公有云业务设计,支持多类型主机、标准协议NFSv3/v4(SMB is coming)的高可用、高可靠的文件存储服务。邓瑾还简单介绍了UFS 1.0的整体架构、索引层、数据层以及UFS 1.0的局限。
然后,邓瑾重点介绍了UFS2.0的Nebula架构,它采用了Append Only的底层存储模型,并使用LSM-Tree技术支持随机写场景、具有超大文件支持、灵活的冗余机制以及低延迟和高性能。
分布式存储中的数据分布算法
奥思数据创始人&CTO李明宇第二个登场,他详细讲解了分布式存储中的数据分布算法。李明宇从一致性哈希算法及其在实际应用中遇到的挑战开始讲起,他表示,一致性哈希算法具有不需要查表或通信过程即可定位数据,计算复杂度不随数据量增长而改变,效率高、均匀性好,并且增加/减少节点时数据迁移量小等优点。但同时,一致性哈希算法在实际应用中也有很大的缺陷,一是在企业级IT场景中存在多副本可靠存储问题,成本较高,数据也不能丢,二是在存储区块链场景,它几乎不可能获取全局视图,并且甚至几乎没有一刻是稳定的。
李明宇接着介绍了典型“存储区块链”中的数据分布算法,他表示,存储区块链是分布式存储(P2P存储)+区块链,并通过Token激励,鼓励大家贡献存储资源,参与构建一个全世界范围的分布式存储系统,其代表项目是Sia、Storj以及IPFS+filecoin,李明宇还简单介绍了Chord和Kademlia算法。
李明宇最后谈到了典型的企业级存储的数据分布算法Dynamo、Ceph的CRUSH、Gluster的Elastic Hashing以及Swift的Ring。这些算法都有相似的特点,首先它们都是基于/借鉴一致性哈希,增加/减少节点时数据迁移量小。其次,引入对数据中心物理拓扑的建模(Cluster Map),数据多副本 / EC分片跨故障域 / 可用区分布。另外,这些算法还可以对节点划分权重,数据分布和容量/性能匹配,辅助扩容。最后,它们还可以有多种存储策略选择。
云硬盘架构升级和性能提升
第三位演讲嘉宾是来自UCloud的块存储研发工程师叶恒,他主要针对如何对UCloud云硬盘UDisk进行架构升级和性能提升进行了介绍。叶恒表示,之所以UCloud要对云硬盘架构进行升级,目的主要是:
一、解决老架构不能充分使用后端硬件能力的弊端。
二、支持SSD云盘,提供QoS保证,可以用满后端NVMe物理盘的IOPS和带宽性能,单个云盘可达2.4W IOPS。
三、充分降低热点问题。
四、支持更大容量云盘(32T甚至更大)。
五、支持并发创建几千块云盘,支持并发挂载几千块云盘。
六、支持老架构云盘在线向新架构迁移,支持普通云盘在线迁移至SSD云盘。
而要实现这样的目标,UDisk对以下几个方面进行优化:
首先,对IO路径进行了优化,通过去掉老架构中的IO接入层Proxy,减少了一次IO转发,以及IO数据的拷贝。写IO发给主副本,由主副本同步两份到从副本,读IO直用从主副本读一份就可以, 可以看到读IO相比老机构减少了一层,读IO的延时降低了0.2-1ms, 写IO的尾部延时有效降低。
其次,对元数据进行了优化,老架构中是按索引的方式组织元数据,分片大小为1G,新架构中采用了一致性哈数计算路由,支持最小1M的分片,大大减小元数据管理服务的压力。云硬盘创建时,只用通过在环上计算就可以得到所有分片的位置,判断是否满足容量的要求。云硬盘挂载时client只要获取hash环的构建参数,就可在内存中构建相同的环,通过直接计算转发IO到后端集群。
第三, 在软件设计上采用多线程的设计方式,由于NVMe SSD性能百倍于机械盘,传统的单线设计无法充分发挥后端存储介质的性能。在Client端会为每个云盘分配一个线程转发IO,在后端,使用多个线程读写一块物理磁盘。
第四 ,防过载策略。普通云盘底层物理磁盘性能会是瓶颈,通过限制并发提交的队列深度加以控制,而对于SSD云盘,后端是NVMe SSD,后端服务的CPU会是瓶颈,可能出现某个IO线程非常繁忙而其他线程比较空闲,通过将这个线程负责的部分云盘的连接切换到其他线程达到负载均衡的作用。具体实现通过周期性的采集底层物理磁盘的使用率和每个IO线程的CPU使用率发给监控模块,由其进行策略控制。
第五,在线迁移优化方面,只需6步即可完成从普通云硬盘向SSD云盘的在线迁移。
叶恒还介绍了UCloud正在研发的新云硬盘架构,将追求更高性能、更低的时延(平均时延100us)以及更高的IOPS(单盘可突破百万)。叶恒还透露,预计UCloud将在12月底推出公测版超高性能云盘。
基于CephFS的改进及优化
深信服的存储研发专家卢波最后一个登场,他和在座的观众一起讨论了基于CephFS的改进和优化。卢波首先介绍了Ceph,他表示,Ceph是一个分层的架构,底层是一个基于CRUSH(哈希)的分布式对象存储——RADOS,上层提供对象存储(RADOSGW)、块存储(RDB)和文件系统(CephFS)三种访问方式。CephFS始于Sage Weil的博士论文研究,目标是实现分布式的元数据管理以支持EB级别数据规模。
卢波还介绍了Cephfs的架构,并解释了MDS的作用、MDS的并发控制以及元数据的持久化。卢波还谈了Ceph系统的缺点以及各大厂商对Ceph系统的改造和优化。卢波最后对Ceph的未来发展进行了展望,他认为,多MDS将是Ceph未来的一个技术趋势,必将得到更大的发展。
随着卢波的演讲结束,在场的近百名开发人员和存储大咖们一起度过了一个充实的下午,伴随着热烈的掌声和火热的现场交流,武汉站的UCan下午茶活动圆满落幕,而UCan下午茶今年最后一场年终大戏——UCan下午茶返场活动将会移师首都北京举行,届时将邀请UCan下午茶各站的优秀讲师齐聚京城,为我们奉上一场汇聚精华的饕餮技术盛宴,如此难得的机会,感兴趣的朋友们可千万不能错过!