企业级存储发展趋势谈:开源存储的冷思考

阿明观察

    
    很多年之前,
    业内就讨论过
    开源与自研的关系,
    孰轻孰重,
    孰好孰坏,
    到现在也还没有定论。
    开源软件蓬勃发展,为何机遇与挑战并存?
    事实上,我们很多行业似乎都离不开开源软件了。为什么呢?开源造就了多个产业的发展,已经成为了当前不少行业创新的重要途径。
    Synopsys公司2020年研究数据显示,99%的商业软件含有开源组件,75%则直接由开源代码组成。开源软件的使用不断增多,在云计算、大数据、人工智能、工业互联网等新兴领域,开源软件已成为重要的创新发展模式。
    从中国对于全球开源软件的整体贡献情况来看,2021年7月,国家信息安全发展中心副主任董大健分析指出,中国开源代码贡献已经占全球40%左右,国家“十四五规划”也首次加入了开源体系建设的相关发展要求。不过,他同时也指出,开源体系也具有一些系统性的问题和风险。
    尽管开源软件存在一定的问题与风险,但大家对于开源应用与开发的兴趣依旧浓厚,因此,国内外对于开源的安全性研究也十分重视。美国WhiteSource公司发布的《2019年开源组件安全漏洞现状报告》显示,2019年公开的开源软件漏洞数量已增至6000多个,增幅近50%;而后在其2020年发布的《开源安全年度报告》显示,平均每1000行开源代码中就有14个安全漏洞,每1400行开源代码中就有1个高危安全漏洞。
    2021年底,国家信息中心公共技术服务部王晓冬在《我国开源软件产业面临的突出风险及对策研究》一文中分析指出,我国开源软件产业存在断供、代码安全、知识产权、自主创新等风险。
    理性认识开源存储,到底哪里好哪里不好?
    事实上,开源带动了存储初创科技公司的诞生,带动了与存储相关的开源生态的发展。基于开源软件构建存储产品的厂商,与开源社区相辅相成,相互促进,共同发展。开源项目也吸引了资本的兴趣,在资本与开源社区加持下,这类存储厂商也开始了开源项目的商业化之路。
    然而,企业级存储厂商的开源商业化之路来得还是不容易的,从分布式存储软件的开源发展与现状来看,目前主流的开源软件主要包括Ceph、HDFS、Swift、Lustre、GlusterFS等。
    其中,按照存储类型来划分,Ceph属于融合块、对象、文件于一体的统一存储, HDFS、Lustre、GlusterFS归属于文件存储类,Swift是OpenStack开源云计算项目的子项目之一,属于OpenStack Object Storage对象存储。Ceph与GlusterFS的齐头并进,将中国的开源存储发展推向了新的阶段,对于云计算与软件定义存储的发展贡献了一定的力量。当前来看,Ceph的开源存储支持者比较多,社区建设更为庞大,开发者贡献频率也相对较高。
    从开源存储的整体发展优势来分析,因为社区开发者与开发团队贡献的代码多,各自有所专长专注的功能领域,迭代自然更快。
    同时,因为代码开源,只要是社区组织中的成员,遵循一定的规则,代码就都可以拿来使用,必然存在开发成本优势。
    建设开源社区的同时也就是在建设开源生态,这是来自全球开发者的贡献地。每一位社区成员与社区组织本身都在开源生态的共同作用下,不断推动开源存储软件的应用与对外交付。由此可见,开源存储软件的整体生态还是非常强大,行业影响力也在不断深入。
    然而,存储软件面临的商业化挑战,不是一时半会儿可以解决的。坚持自研路线的存储厂商,如曙光、华为等经历了数十年之久的技术积累,如果开源存储软件短时间内就能搞定,这说明了什么?值得冷静思考一下。
    站在用户需求的角度来看,分布式存储的发展正确路线应该是如何实现容量、性能、可用性、可靠性、可伸缩性这五点的平衡。对于开源存储软件而言,Scale-out架构带来的存储容量上的灵活扩展能力,加上闪存与大容量硬盘技术的迅猛发展,让存储系统的性能也能获得足够高的表现,同时也实现了很好的伸缩性。然而在可用性与可靠性上,都需要进一步的优化与提升。
    在稳定性方面,开源社区处于一个开放的生态中,不是一批人或某一个开发团队写的代码,对软件架构设计的理解参差不齐,开发逻辑可能不一致,不稳定因素及安全隐患风险更大。代码程序及产品软件存在缺陷是不可避免的,在不同的阶段发现缺陷并进行修正,对于代码稳定性的影响程度不同,付出的成本也不同。据相关统计数据估计,在软件测试、发布阶段纠正缺陷的成本是编码阶段发现并纠正缺陷的成本的15-90倍,如果在交付用户之后才发现并解决缺陷,这个数字将达到50-200倍。因此,任何安全隐患都可能造成巨大的损失。而对于开源社区代码而言,由于其开放性和庞杂性,导致很难有社区开发者将开源存储代码进行完整的测试。基于开源存储软件构建的商业化产品,如果不能对100%的源代码进行测试,那么这就可能为用户交付稳定可靠的存储系统埋下了不少隐患。
    在整体服务质量方面,因为开源带来的Bug问题逐年递增,如何真正解决实际应用中的Bug问题,对开源存储厂商的技术能力有着不同程度的挑战。厂商研发实力强大,自然对于用户的服务质量就高,厂商研发实力弱一些,带给用户的服务质量就存在“折扣”。可见,每一次开源存储软件的交付,都是对开源存储厂商的技术考验。
    此外,在大规模部署的时候,开源存储的稳定性和可用性存在一定的挑战。以Ceph为例,其商业化存储有不少案例,但直接使用开源Ceph构建数十PB甚至上百PB的大规模案例,到目前几乎没有。
    当然,这里需要值得注意的是,自主研发的商业化存储软件,也不意味着所有代码模块都是封闭的。庞大的系统化工程中,必然会借鉴、改进或采用少量开源框架或组件,同样也会因为开源组件引入而潜藏安全漏洞。
    存储软件自主研发的根本主要聚焦在四个方面:
    一是,整体的架构设计;
    二是,核心数据通路的构建;
    三是,从底层到上层的各个关键模块的软件设计及编码实现 ;
    四是,系统的安全性等,即自主研发意味着厂商对于存储系统的功能、性能、可靠性等具有完全控制权,做到系统整体性上的自主,同时通过完备的单元测试、系统测试、产品测试,结合白盒测试、灰盒测试、黑盒测试等手段,交付高质量的产品,将用户的应用风险降到最低。
    用户做存储选型,到底是开源还是自研?
    全球存储观察分析认为,开源与自研好比硬币的正反面,都有其存在的价值。根据不同场景与应用需求,按照用户自身技术开发的能力高低选择,这才是理性的解决之道。
    
    从性能、可靠性、稳定性、备份容灾等角度考量,用户在面对核心业务应用场景的方案选择时,对开源存储一直都比较谨慎。特别是用户本身运维团队比较薄弱的情况下,将面临后续软件维护、更新迭代等一系列技术挑战。因此,在核心业务、生产系统和大规模部署情况下,用户选择存储系统的观念依然“保守”,自研存储系统依然是其首选。
    从另一方面来看,对于具备一定数量的存储开发人员,或具有存储软件领域开发背景的用户来说,自身具备对开源存储软件的代码修改、优化与调试的综合能力,甚至团队成员可能就是某些开源社区的贡献者。在这种情况下,借助存储开源软件,便于配合业务创新应用的发展趋势下,可获得更为快捷、灵活的应用部署。由此可见,倘若企业用户的存储软件开发能力强,选择开源创新不失为一条符合产业发展的好路径。
    对用户而言,存储选择到底是开源还是自研产品,需要考虑到企业自身的综合成本,包括自身应用部署后的数据安全性要求,存储软件开发与运维人员成本,自身存储实际应用过程中解决问题的服务质量。当然,数据安全、运维成本与服务质量,对于任何一个开源存储厂商而言,也是值得重视的三大问题。
    从存储应用角度出发,开源与自研已经成为了企业级存储发展的两大趋势,好比人的左手与右手。企业用户到底会用左手多一些,还是用右手多一些,只在于企业自身的技术能力与实际应用需求。有时候左右手一起上,也不是没有可能。一切皆有可能,当然最大的可能还是在于自身的技术开发能力到底有多少可能。
    对于“开源存储+自研存储”的融合发展模式,有多少企业用户会真的开启,我们也可以拭目以待。