两个产品Ceph和Gluster是Red Hat旗下的成熟的开源存储产品,Ceph与GlusterFS 在原理上有着本质上的不同。但是两个都是非常灵活的存储系统,在云环境中表现也是非常出色。
Ceph是什么?
Ceph基于一个名为RADOS的对象存储系统,使用一系列API将数据以块(block)、文件(file)和对象(object)的形式展现。Ceph存储系统的拓扑结构围绕着副本与信息分布,这使得该系统能够有效保障数据的完整性。
GlusterFS是什么?
GlusterFS描述为Scale-out NAS和对象存储系统,它使用一个Hash算法来计算数据在存储池中的存放位置。在应用中所有的存储服务器使用Hash算法完成对特定数据实体的定位,对于数据可以很容易的被复制,并且没有中心元数据分布式存储无单点故障且不易造成访问瓶颈,这种单点在早期Hadoop上出现,对性能和可靠性造成较大影响。
GlusterFS 与 Ceph表格对比
类别 |
Ceph |
GlusterFS |
备注 |
Metadata Server |
多 个MDS, 不 存 在 单 点 故 障 和 瓶 颈 | MDS可 以 扩 展 , 不 存 在 瓶 颈 无MDS, 不 存 在 单 点 故 障 。 考 运 行 在 各 个 节 点 上 的 动 态 算 法 老 代 替MDS, 不 需 要 元 数 据 , 无 硬 盘I/O瓶 颈 |
|
FUSE | 支持 | 支持 | |
POSIX访 问 接 口 | POSIX(Portable Operating System Interface of UNIX) |
POSIX(Portable Operating System Interface of UNIX) |
|
文 件 分 布 / 数 据 分 布 | 文件被分片,每个数据块是一个对象, 对象保存在不同的村塾服务器上 。 | Cluster Translators(GlusterFS集群存储的核心)包括AFR、DHT和Stripe三种类型。 AFR相当于RAID1,每个文件都被复制到多个存储节点上。Stripe相当于RAID0,文件被分片,数据被条带化到各个存储节点上。Translators可以组合,即AFR和stripe可以组成RAID10,实现高性能和高可用。 |
|
冗 余 保 护 /副 本 | 副 本 | 镜像 | |
数据可靠性 | 多副本 | 多副本 | |
故 障 修 复 | 当节点失效时,自动迁移数据、重新复制副本 | 当节点、硬盘、磁盘网络发生故障时 ,系统会自动处 理这些故障,管理员不需介入 |
|
扩 展 性 | 可以增加元数据服务器和存储节点,容量可扩展,文件操作性能可扩展,元数据操作性能可扩展 | 容量可扩展 | |
开 发 语 言 | C | C++ | |
适 合 场 景 | 小文件 | 适合大文件, 对于小文件,无元数据服务设计解决了元数据的问题。但GlusterFS并没有在I/O方面作优化,在存储服务器底层文件系统上仍然是大量小文件,本地文件系统元数据访问是瓶颈,数据分布和并行性也无法充分发挥作用。因此,GlusterFS的小文件性能还存在很大优化空间 |
|
优 缺 点 | 不稳定,目前还在实验阶段,不适合于生产环境。官方不建议用在生产环境 | 无元数据服务器,堆栈式架构(基本功能模块可以进行堆栈式组合,实现强大功能)。具有线性横向扩展能力。 由于没有元数据服务器,因此增加了客户端的负载,占用相当的CPU和内存。 但遍历文件目录时,则实现较为复杂和低效,需要搜索所有的存储节点。因此不建议使用较深的路径。 |
GlusterFS 与 Ceph 共同点
- 纵向扩展和横向扩展:在云环境中,必须可以很容易地向服务器添加更多存储空间以及扩展可用存储池。Ceph 和 GlusterFS 都可以通过轻松将新存储设备集成到现有存储产品中来满足这一要求。
- 高可用性:GlusterFS 和 Ceph 的复制是同时将数据写入不同的存储节点。这样做的结果是,访问时间增加,数据可用性也提高。在 Ceph 中,默认情况下将数据复制到三个不同的节点,这确保备份始终可用。
- 商品化硬件:GlusterFS 和 Ceph 是在 Linux 操作系统之上开发的。因此,对硬件唯一的要求是这些产品具有能够运行 Linux 的硬件。任何商品化硬件都可以运行 Linux 操作系统,结果是使用这些技术的公司可以大大减少在硬件上的投资——如果他们这样做的话。然而,实际上,许多公司正在投资专门用于运行 GlusterFS 或 Ceph 的硬件,因为更快的硬件可以更快地访问存储。
- 无中心化:在云环境中,永远不应该出现中心点故障问题。对于存储,这意味着不应该用一个中央位置存储元数据。GlusterFS 和 Ceph 实现了元数据访问去中心化的解决方案,从而降低了存储访问的可用性和冗余性。
GlusterFS 与 Ceph 的差异
- GlusterFS 是来自 Linux 世界的文件系统,并且遵守所有 POSIX 标准。尽管你可以将 GlusterFS 轻松集成到面向 Linux 的环境中,但在 Windows 环境中集成 GlusterFS 很难。
- Ceph是一种全新的存储方法,对应于Swift(OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一)对象存储。在对象存储中应用程序不会写入文件系统,而是使用存储中的直接API访问写入存储。因此,应用程序能够绕过操作系统的功能和限制。如果已经开发了一个应用程序来写入Ceph存储,那么使用哪个操作系统无关紧要。结果表明Ceph存储在Windows环境中像在Linux环境中一样容易集成。
- 基于API的存储访问并不是应用程序可以访问Ceph的唯一方式。为了最佳的集成,还有一个Ceph块设备,它可以在Linux环境中用作常规块设备,使你可以像访问常规Linux硬盘一样来使用Ceph。Ceph还有CephFS,它是针对Linux环境编写的Ceph文件系统。
GlusterFS 与 Ceph 的读写速度比较
模型 |
GlusterFS(iops/lat) | CephFS-Fuse(iops/lat) |
---|---|---|
4K 10G顺序读 | 5579/1.431 | 6155/1.297 |
4K 10G顺序写 | 1297/6.161 | 471/ 16.210 |
4K 10G随机读 | 2601/3.071 | 1321/6.050 |
4K 10G随机写 | 2118/3.772 | 457/17.45 |
4M 10G顺序读 | 27/289 | 36/ 219.19 |
4M 10G顺序写 | 8/910 | 5/1412.13 |
4M 10G随机读 | 27/288 | 27/292.63 |
4M 10G随机写 | 8/924 | 4/1552.01 |
结束语
Ceph是一个更灵活的产品,更容易集成到非 Linux 环境中。对于许多公司来说,这足以让它们在 Ceph 而不是 GlusterFS 上构建存储产品。对于仅运行 Linux 的环境,此功能不够有说服力,所以来谈谈另一个非常重要的事情:速度。
所以更多的公司正在考虑Ceph技术而不是GlusterFS,而且GlusterFS仍然与Red Hat密切相关。例如,SUSE还没有GlusterFS的商业实施,而Ceph已经被开源社区广泛采用,市场上有各种不同的产品。在某种意义上来说,Ceph确实已经胜过GlusterFS。也有网友反映说Ceph安装运行时候需要人工干预比GlusterFS要多,具体的还需要使用人考虑适用的场景。