Ceph
Ceph是一个分布式的存储系统,可以在统一的系统中提供唯一的对象、块和文件存储。
名词解释:
- RADOS: 由自我修复、自我管理、智能存储节点组成的可靠、自主、分布式对象存储
- LIBRADOS: 一个允许应用程序直接访问 RADO 的库,支持 C、C++、Java、Python、Ruby 和 PHP
- RADOSGW: 基于存储桶的 REST网关,兼容s3和Swift
- RBD: 一个负责任的,完全-分布式块设备,使用Linux内核cliont和QEMU/KVM驱动程序
- CEPHFS: 符合POSIX标准的分发文件系统,具有Linux内核客户端和对FUSE的支持
进程结构:
- 1. Ceph监视器(ceph-mon):用来维护集群状态的映射,包括监视器映射,管理器映射,OSD映射,MDS映射和CRUSH映射,这些映射是ceph守护程序相互协调所需的关键状态,另外还负责客户端到ceph存储的身份验证;通常要实现高可用,需要3个或以上的ceph-mon服务
- 2. 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有主从之分。
- 3. Ceph对象存储(ceph-osd):Ceph OSD是对象存储守护程序,是用来存储数据的核心组件,实现数据存储、数据复制和恢复、数据的重新平衡,并会检查其他Ceph OSD守护程序的心跳来向ceph-mon和ceph-mgr提供一些监控信息,通常至少需要3个ceph-osd才能实现冗余和高可用性,部署的时候ceph-osd会和ceph-mon分开节点部署.
- 4. 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,文件2放在节点2。
- 复制卷,有两个server节点,文件1在两个节点都存有一份文件。
- 分散卷:文件1分成两块,一块放在节点1,另一块放在节点2,这样读写更快。
- 分布复制卷:节点 1234,文件1在节点12,文件2在节点34。
- 分布分散,节点1234,文件1的两块各在12,文件2的两块各在34。
高可用gluster-server部署两个以上的节点,gluster-server没有主从之分、是对等的。通过复制卷可以实现数据高可用,一个文件分别存在两个节点上,有一个节点宕机,文件依然能正常读写。
Longhorn
Longhorn 是一款Kubernetes 分布式块存储系统。只能用k8s部署。
进程结构:
- Longhorn Backing Image Manager:支持磁盘中的备份映像下载、同步和删除
- Longhorn Engine:核心控制器/副本逻辑。每个卷对应一个engine。
- Longhorn Instance Manager:控制器/副本实例生命周期管理
- Longhorn Manager:Longhorn 编排,包括适用于 Kubernetes 的 CSI 驱动程序
- Longhorn Share Manager:NFS 置备程序,将 Longhorn 卷公开为 ReadWriteMany 卷
- 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推荐使用 |