PureFlash分布式存储系统
PureFlash是一个开源的分布式存储系统,项目起始于2016年。
一、PureFlash整体介绍
PureFlash是一个开源的ServerSAN实现,也就是通过大量的通用服务器,加上PureFlash的软件系统,构造出一套能满足企业各种业务需求的分布式SAN存储。
PureFlash是为全闪存时代而设计的存储系统。当前SSD盘的应用越来越广泛,大有全面取代HDD的趋势。SSD与HDD的显著区别就是性能差异,这也是用户体验最直接的差异,而且随着NVMe接口的普及,二者差异越来大,这种近百倍的量变差异足以带来架构设计上的质变。举个例子,原来HDD的性能很低,远远低于CPU、网络的性能能力,因此系统设计的准则是追求HDD的性能最大化,为达到这个目标可以以消耗CPU等资源为代价。而到了NVMe时代,性能关系已经完全颠倒了,盘不再是瓶颈,反而CPU、网络成为系统的瓶颈。那种消耗CPU以优化IO的方法只能适得其反。
因此我们需要一套全新的存储系统架构,以充分发挥SSD的能力,提高系统的效率。PureFlash的设计思想以简化IO stack, 数据通路与控制通路分离,快速路径优先为基本原则,确保高性能与高可靠性,提供云计算时代块存储核心能力。
PureFlash的思想来自于全硬件加速闪存阵列S5, 因此虽然PureFlash本身是纯软件实现,但其存储协议对硬件加速是高度友好的。可以认为PureFlash的协议就是NVMe 协议加上云存储特性增强,包括快照、副本、shard、集群热升级等能力。
二、功能特性
1. 单副本与多副本任意选择,允许每个volume使用不同的副本数,提供不同的可靠性等级。
2. 精简置备,即thin provision。能够实现云计算时代需要的存储虚拟化,存储超卖等关键特性。而且可以提供超过单节点容量能力的超大容量Volume。
3. 瞬时快照能力,PureFlash采用inplace 快照技术,能够瞬时完成快照且不占用额外的存储空间。
4. Scale out能力,可以随时通过增加节点的方式扩展系统的总体容量,即便是运行期间也可以进行扩容。
5. 强一致性,使用强一致性,确保企业数据正确性、确保核心业务正确运行。
6. 允许共享访问,同一个Volume允许从多个Client同时访问,可以用于支撑Oracle RAC类共享盘业务。
7. 故障冗余,容忍各种单点故障,包括网络故障,网卡故障,SSD故障,节点整机故障。
8. 可控数据恢复,当硬件故障恢复后,可以对数据进行恢复,并且可以控制恢复的时间与资源占用情况。
9. 可控数据均衡,系统长时间使用后可能数据分布不均衡,可控均衡功能可以在节点间均衡数据分布。并且均衡的时间与资源占用率都可以控制,以减少对正常业务的冲击。
10. 多网卡与多路径支持,每个节点可以有多个网卡,这些网卡都处于活动状态以提供更高的IO吞吐能力,并且在一个网卡故障时可以自动把IO迁移到其他网卡而不影响客户端访问。
11. 简化的io stack,PureFlash以提供块存储为目标,为将SSD性能毫无损失的发挥出来,避免使用任何多余的中间IO层级,因此既没有使用本地文件系统,也没有使用K-V系统进行本地数据管理。使用本地文件系统或者KV做本地数据管理在分布式存储系统中很常见,但同时也带来了性能损失,系统复杂度上升,bug概率增加。PureFlash则完全避免了这一点。
12. 扩容稳定性,PureFlash系统使用非hash设计,新节点加入集群后,不需要均衡就可以立即开始承载业务,保证既有业务稳定运行,避免均衡带来的冲击。
13. 最小资源消耗,适合超融合部署。PureFlash设计中没有使用SPDK这样的IO接口。SPDK虽然能带来一些IO性能收益,但是付出的代价是CPU资源的大量浪费,在没有IO时候也要处于忙等待状态中。这对超融合系统是致命的,存储任务一直占用CPU资源,而不能出让给计算任务使用,背离超融合的基本理念。PureFlash只消耗与IO能力成比例的CPU、内存、网络资源,并且可以通过参数配置最大资源消耗量,因而十分适合超融合系统。