ceph、gluster、longhorn选型对比

Ceph

Ceph是一个分布式的存储系统,可以在统一的系统中提供唯一的对象、块和文件存储。

名词解释:

  1. RADOS: 由自我修复、自我管理、智能存储节点组成的可靠、自主、分布式对象存储
  2. LIBRADOS: 一个允许应用程序直接访问 RADO 的库,支持 C、C++、Java、Python、Ruby 和 PHP
  3. RADOSGW: 基于存储桶的 REST网关,兼容s3和Swift
  4. RBD: 一个负责任的,完全-分布式块设备,使用Linux内核cliont和QEMU/KVM驱动程序
  5. CEPHFS: 符合POSIX标准的分发文件系统,具有Linux内核客户端和对FUSE的支持

进程结构:

    1. Ceph监视器(ceph-mon):用来维护集群状态的映射,包括监视器映射,管理器映射,OSD映射,MDS映射和CRUSH映射,这些映射是ceph守护程序相互协调所需的关键状态,另外还负责客户端到ceph存储的身份验证;通常要实现高可用,需要3个或以上的ceph-mon服务
    1. Ceph管理器(ceph-mgr):ceph manager守护进程负责跟踪运行时指标和ceph集群当前的状态,包括存储利用率,当前性能指标和系统负载等,ceph-mgr还托管一些python模块,以实现基于web的ceph仪表盘和rest api,通常要实现高可用至少需要2个ceph-mgr进程,通常ceph-mon和ceph-mgr个数相同,1个ceph-mon同节点会伴随1个ceph-mgr守护进程。Mgr有主从之分。
    1. Ceph对象存储(ceph-osd):Ceph OSD是对象存储守护程序,是用来存储数据的核心组件,实现数据存储、数据复制和恢复、数据的重新平衡,并会检查其他Ceph OSD守护程序的心跳来向ceph-mon和ceph-mgr提供一些监控信息,通常至少需要3个ceph-osd才能实现冗余和高可用性,部署的时候ceph-osd会和ceph-mon分开节点部署.
    1. Ceph元数据服务(ceph-mds):Ceph MDS为ceph文件系统存储元数据,注意Ceph块设备和对象存储不用mds存储元数据,Ceph MDS允许POSIX文件系统用户执行基本命令,而不会将压力都集中到Ceph OSD集群上,通常mds可以选择部署至少2个节点,可以和其他组件一起也可以分开。Mds有主从之分。

存储过程:首先osd需要干净的磁盘或分区。为文件计算一个值,根据值放在某个pg上(pg属于某个osd),文件的其他副本放到其他osd上。

文件实际是使用对象存储存到osd上,因为脱离了linux文件系统,所以无法在磁盘直观的看到文件,只能通过ceph挂载查看。

Gluster

Gluster 是一个可扩展的分布式文件系统。有点像nfs,可以把gluster-server所在节点的目录作为存储目录,gluster-client进行挂载。

进程结构:gluster-server进程,gluster-client进程。

卷类型:

  1. 分布卷:如文件1放在节点1,文件2放在节点2。
  2. 复制卷,有两个server节点,文件1在两个节点都存有一份文件。
  3. 分散卷:文件1分成两块,一块放在节点1,另一块放在节点2,这样读写更快。
  4. 分布复制卷:节点 1234,文件1在节点12,文件2在节点34。
  5. 分布分散,节点1234,文件1的两块各在12,文件2的两块各在34。

高可用gluster-server部署两个以上的节点,gluster-server没有主从之分、是对等的。通过复制卷可以实现数据高可用,一个文件分别存在两个节点上,有一个节点宕机,文件依然能正常读写。

Longhorn

Longhorn 是一款Kubernetes 分布式块存储系统。只能用k8s部署。

进程结构:

  1. Longhorn Backing Image Manager:支持磁盘中的备份映像下载、同步和删除
  2. Longhorn Engine:核心控制器/副本逻辑。每个卷对应一个engine。
  3. Longhorn Instance Manager:控制器/副本实例生命周期管理
  4. Longhorn Manager:Longhorn 编排,包括适用于 Kubernetes 的 CSI 驱动程序
  5. Longhorn Share Manager:NFS 置备程序,将 Longhorn 卷公开为 ReadWriteMany 卷
  6. Longhorn UI:NFS 置备程序,将 Longhorn 卷公开为 ReadWriteMany 卷

高可用:卷有多个副本(可设置),卷默认目录/var/lib/longhorn,进程pod在各节点都有运行。

容器通过pv使用卷,文件在宿主机目录不能查看。

比较

|-----------------------|---------------------------------------|----------------------|--------------------------|
| | Ceph | Gluster | Longhorn |
| 定位 | 分布式存储系统 | 分布式文件系统 | 分布式块存储系统 |
| 使用Linux文件系统 | 否 | 是 | 否 |
| 进程种类 | 4 | 2 | 6 |
| 安装方式 | 手动安装、k8s | 手动安装 | K8s |
| 安装维护难度 | 高 | 低 | 中 |
| UI页面 | 可额外加 | 无 | 有 |
| 额外功能 | 块存储、对象存储 | - | 可视化页面维护卷、快照、备份、恢复、定时任务 |
| 官方最低硬件 (cpu/ram/disk) | Osd:1c,4g Mon:2c,5g,100g Mds:2c,2g,1g | - | 3节点,每个节点4c,4g |
| Pod配置卷 | 支持 | 1.25移除 | 不支持 |
| PV持久卷 | 支持 | - | 支持 |
| 高可用故障测试 | 有停顿时间,无法读写,等待pg降级 | 有停顿时间,无法读写 | - |
| 缺点 | 安装、维护复杂 | 不能通过pv使用,测试同步文件有两秒延迟 | 宿主机无法查看文件,运维无法在宿主机生成配置文件 |
| 优点 | 功能全 | 使用简单 | K3s推荐使用 |

相关推荐
学Linux的语莫10 天前
负载均衡,高可用,监控服务搭建总结
linux·服务器·分布式·ceph·lvs
运维小文10 天前
cephFS的使用以及K8S对接cephFS
ceph·云原生·容器·kubernetes·对象存储·cephfs
学Linux的语莫13 天前
ceph集群搭建,ceph块存储,文件存储,对象存储
linux·服务器·分布式·ceph
Rverdoser14 天前
K8S对接ceph的RBD块存储
ceph·容器·kubernetes
学Linux的语莫17 天前
Ceph对象存储
linux·运维·服务器·ceph
q_9717 天前
ceph基本概念
ceph
学Linux的语莫19 天前
Ceph文件存储
linux·运维·服务器·网络·ceph
学Linux的语莫19 天前
ceph相关的命令
linux·服务器·ceph
运维小文20 天前
ceph的存储池管理
ceph·云原生·对象存储·存储·分布式存储·cephfs
学Linux的语莫20 天前
Ceph分布式存储集群搭建
linux·服务器·ceph·云计算