开源软件一直是推动基于社区的协同软件开发模式的重要力量。其中最明显的例子是Linux的发展,其各种发行版已经被采用作为云选择的操作系统和现代应用程序开发人员的平台。
在开源生态的上层,我们看到以Docker为首的容器方案及结构化SQL、NoSQL和数据分析平台等大行其道。那么底层的存储呢? 开源风潮是否也演进到了存储,开源存储都有着哪些实现种类呢?
开源技术定义
首先,我们来解释一下开源的意思。根据定义,这意味着产品的源代码可以自由地被任何人访问和读取。开源的实际范畴比这宽泛得多,然而,大多数开放源码技术项目都是根据许可条款提供代码的,许可证决定了代码如何被使用或复用、源代码归属如何申告、如何覆盖专利以及允许哪些商业用途。
通常,许可证制度,如GNU Not Notix通用公共许可证(GNU GPL),将版权规则应用于为项目开发的代码,要求代码可以自由分发和使用,而未被许可人对其生成的代码进行限制,也称为共同工作。GPL 3.0中最新增加的功能确保了这一点,并且由项目开发的专利可免费提供给任何人使用。
这对存储软件开发意味着什么?实际上,开发一个存储平台与任何其他软件没有什么不同。因此,开放源代码对存储有很大的意义,因为它允许在复杂问题上进行大规模协作——保持持久模型中数据准确性的100%保证。
存储对于开源开发来说并不是最明显的选择,因为大多数早期共享存储平台都是在专用硬件上开发的。然而,在过去15年中,服务器和存储媒体的商品化已经发展到成本足够低,可靠性足够高,可以从现成的组件构建存储平台。随着软件定义存储的流行,开源存储已成为许多商业SDS产品组成的市场的一个方面。
为什么要开源存储
作为最终用户,您有什么原因使用开源存储技术?因为与商业SDS一样,开源存储将购买硬件与软件分开。这样您可以为硬件提供源代码,构建和设计,以获得成本和运营优势,例如只采购最少必须拥有的硬件平台。专有的存储供应商通常在他们销售的硬件上添置很多非必要项目。采用OEM设备,这是可以理解的。然而,现在完全可以去除这些装饰物,而只涵盖测试和验证配置的必须成本。
开源存储平台进一步发展,消除了存储软件的资本支出。剩下的一切就是决定是否以及如何支付支持。事实上,获得供应商或增值经销商的支持是大多数企业在使用开源存储软件时必须面对的主要问题。
幸运的是,支持模型存在。例如,红帽公司拥有一个蓬勃发展的业务,支持自己的红帽企业版Linux(RHEL),它可以从Fedora发行版商业化获得。反过来,RHEL可以作为CentOS等发行版的开源技术。
运行开源存储提供与标准商业存储产品相同级别的灵活性。您可以在生产环境中运行商业上支持的开源存储系统版本。这样,测试和开发可以通过内部支持的存储部署来运行。这种方法提供了显着的成本节约,特别是对于需要横向扩展对象存储的非结构化数据。
选择产品
市场上的一系列开源技术涵盖了基于对象、文件和块的存储需求。一些产品使用一个协议;其他人通过仿真或协议连接器来支持多种协议。
对象存储
最常见的开源存储产品属于对象存储类别,通常用于存储成本必须低的存档或备份数据。
Ceph是一个开源技术项目,始于2007年,由Sage Weil撰写的博士论文开发。像大多数开放源码项目一样,它可以在GitHub上使用,并在Lesser GNU通用公共许可证(LGPL)2.1。Ceph是一个扩展的分布式对象存储,被称为可靠的自动分布式对象存储(RADOS),由多个物理或虚拟节点构建,可提供存储、元数据服务、API服务和集群监控。除了对象之外,Ceph支持块和文件数据,前者通过RADOS块设备,后者使用Ceph FS,文件系统网关。2014年,红帽收购了Inktank,该公司为Ceph提供支持,现在销售Ceph的商业版本,提供更强大的企业级实施。
OpenIO是一家法国公司,正在开发扩展对象存储,以支持从电子邮件到备份和归档的一系列应用程序使用。软件的一部分在LGPL版本3许可下的,其他在Affero General Public License版本3的许可下。。尽管OpenIO自2006年以来一直在开发中,但在2012年才开始使用。与大多数开源存储产品不同,OpenIO支持 x86和ARM处理器架构,也可以在单个集群中混合使用。
Minio是根据Apache许可证版本2.0授权的对象存储服务器。软件是轻量级的,可以作为Docker容器运行;在macOS上,使用Homebrew,Windows或Linux,x86和ARM。Minio依靠社区而不是商业支持。
S3 Server由Scality于2016年发布,作为Docker容器镜像。 自此以后,该软件已被下载60多万次。它在Apache 2.0下授权。作为轻量级单节点对象存储,S3 Server可轻松访问Amazon Web Services简单存储服务API兼容对象存储。Scality期望客户将移动到商业上支持的Ring产品,用于大规模生产的对象存储实现。