开源软件一直是推动协作、基于社区的软件的重要力量。其中最明显的例子就是Linux的发展历程,它的各种发行版已经成为云操作系统和现代应用程序开发人员的***平台。
在更高的堆栈中,同样的理念应用于Docker容器化,以及用于结构化SQL,NoSQL等数据库平台。那么,存储呢?开源软件开发的演进是否也应用于存储,或者有哪些可用于那些想要在存储中实现开源的选项?
开源技术定义
首先,为大家解释一下开源的定义。根据定义,开源就意味着产品的源代码可以自由地被任何人访问和读取。然而,大多数开放源码技术项目都是根据许可条款编写代码,许可证决定了代码如何被使用或重复使用,有什么属性,又如何覆盖专利以及能被允许用作哪些商业用途。
这对存储软件开发意味着什么?实际上,开发一个存储平台与开发其他任何软件没有什么不同。因此,开放源代码对存储有很大的意义,因为它允许在复杂问题上进行大规模协作,同时在持久模型中100%保证数据的准确性。
社区发展
开源已被成功地用作开发操作系统和数据库的模型。将社区开发模型应用于共享和持久存储需求是非常有意义的。
对于开源来说,存储并不是***,因为大多数早期共享存储平台都是在专用硬件上开发的。然而,在过去15年中,服务器和存储媒体的商品化已经发展到成本足够低,可靠性足够高的情况,能从现成的组件中构建存储平台。随着软件定义存储(SDS)的火热,开源存储也开始迈出发展的步伐。
为什么要开源存储
作为终端用户,有什么理由让你使用开源存储技术?与商业SDS一样,开源存储将购买硬件与软件分开。这样就可以为硬件提供源代码,构建和设计,以获得成本和运营优势,例如最小化必须支持的硬件平台数量。
开源存储平台的进一步发展,消除了存储软件的资本支出。剩下需要考虑的就是决定是否以及如何支付支持。 事实上,获得供应商或增值经销商的支持是大多数企业在使用开源存储软件时必须面对的主要问题。
幸运的是,支持模型是存在的。例如,Red Hat(红帽)公司拥有一个蓬勃发展的业务,用以支持自己的Red Hat Enterprise Linux(RHEL),它可以从Fedora发行版获得商业上的应用。反过来,RHEL则作为开源技术在诸如CentOS等发行版中获得。
运行开源存储提供了与标准商业存储产品相同级别的灵活性。可以在生产环境上运行商业上支持的开源存储系统版本。这样,测试和开发可以使用内部支持的存储部署来运行。这种方法节省了大量的成本,特别是对于需要横向扩展对象存储的非结构化数据。
贡献者回馈
当然,开源技术的全部意义就是回馈社区。所以每个人都可以自由地为我们讨论的平台的发展做出贡献。
对于大型企业来说,让开发人员参与编写开源存储软件是有意义的。 这样,他们就可以获得内部支持软件的机会,无论是完全没有厂商支持,还是进行开发测试,都可以直接整合新功能。对于长期部署(如存档和备份),参与维护开放源代码平台有助于减轻供应商中断商业产品发行的风险。
建立你自己的
除了选择使用商业支持的开源产品,另一个选择是从开源组件(如Linux iSCSI目标或Linux上的SMB)构建自己的开源产品。你可以使用这些文件来为你的存储基础设施提供文件和块服务,特别是与ZFS文件系统配合使用。 但是,除了开发者社区之外,你将不会得到任何支持。