梳理有关ceph的知识点不只从何论及,这里从NFS协议论起。
NFS(Network File System)
NFS即网络文件系统,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
NFS客户端和NFS服务器之间正是通过NFS协议进行通信的。
目前NFS协议版本有NFSv3、NFSv4和NFSv4.1,NFSv3是无状态的,NFSv4是有状态,NFSv3和NFSv4是基于Filelayout驱动的,而NFSv4.1是基于Blocklayout驱动。
常规情况下使用NFS挂载网络存储使用的是NFSv3协议,支持TCP和UDP传输层协议。UDP是一种不可靠协议,相比TCP而言可以获得更好性能,丢包和拥塞问题交由应用程序处理;相反TCP是一种可靠传输协议,拥有自己的拥塞控制和丢包重传机制。NFS v4是NFS v3的继承版本,主要针对WAN环境部署NFS做出改进并提出NFS分布式文件系统方案。
客户端挂载过程需要通过mount –t nfs4指定NFS版本为4。
分布式文件系统比较
名称 | 功能 | 适合场景 | 优缺点 |
---|---|---|---|
MFS | 1. 单点MDS 2. 支持FUSE 3. 数据分片分布 4. 多副本 5. 故障手动恢复 |
大量小文件读写 | 1. 运维实施简单 2. 但存在单点故障 |
Ceph | 1. 多个MDS,可扩展 2. 支持FUSE 3. 数据分片(crush)分布 4. 多副本/纠删码 5. 故障自动恢复 |
统一小文件存储 | 1. 运维实施简单 2. 故障自愈,自我恢复 3. MDS锁的问题 4. J版本很多坑, L版本可以上生产环境 |
ClusterFS | 1. 不存在元数据节点 2. 支持FUSE 3. 数据分片分布 4. 镜像 5. 故障自动恢复 |
适合大文件 | 1. 运维实施简单 2. 不存储元数据管理 3. 增加了客户端计算负载 |
Lustre | 1. 双MDS互备,不可用扩展 2. 支持FUSE 3. 数据分片分布 4. 冗余(无) 5. 故障自动恢复 |
大文件读写 | 1. 运维实施复杂 2. 太庞大 3. 比较成熟 |
Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。
特点如下:
1、高性能
a. 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高。
b.考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。
c. 能够支持上千个存储节点的规模,支持TB到PB级的数据。
2、高可用性
a. 副本数可以灵活控制。
b. 支持故障域分隔,数据强一致性。
c. 多种故障场景自动进行修复自愈。
d. 没有单点故障,自动管理。
3、高可扩展性
a. 去中心化。
b. 扩展灵活。
c. 随着节点增加而线性增长。
4、特性丰富
a. 支持三种存储接口:块存储、文件存储、对象存储。
b. 支持自定义接口,支持多种语言驱动。
5、使用场景:
块存储 (适合单客户端使用)
典型设备:磁盘阵列,硬盘。
6、使用场景:
a. docker容器、虚拟机远程挂载磁盘存储分配。
b. 日志存储。
…
7、文件存储 (适合多客户端有目录结构)
典型设备:FTP、NFS服务器。
使用场景:
a. 日志存储。
b. 多个用户有目录结构的文件存储共享。
…
8、对象存储 (适合更新变动较少的数据,没有目录结构,不能直接打开/修改文件)
典型设备:s3, swift。
使用场景:
a. 图片存储。
b. 视频存储。
c. 文件。
d. 软件安装包。
e. 归档数据。
…
CephFS介绍
CephFS 是和 POSIX 标准兼容的文件系统,文件目录和其他元数据存储在RADOS中,MDS缓存元信息和文件目录信息,核心组件:MDS、Clients、RADOS。
- Client <–> MDS
元数据操作和capalities。 - Client <–> OSD
数据IO。 -
MDS <–> OSD
元数据IO。- 挂载方式:
- ceph-fuse … 。
- mount -t ceph … 。
- 可扩展性
- client读写osd 。
- 共享文件系统
- 多个clients可以同时读写 。
- 高可用
- MDS主备模式,Active/Standby MDSs 。
- 文件/目录Layouts
- 支持配置文件/目录的Layouts使用不同的Ppool 。
- POSIX ACLs
- CephFS kernel client默认支持。
- CephFS FUSE client可配置支持 。
- NFS-Ganesha
- 一个基于 NFSv3\v4\v4.1 的NFS服务器
- 运行在大多数 Linux 发行版的用户态空间下,同时也支持 9p.2000L 协议。
- Ganesha通过利用libcephfs库支持CephFS FSAL(File System Abstraction Layer,文件系统抽象层),可以将CephFS重新Export出去。
- Client Quotas
- CephFS FUSE client支持配置任何目录的Quotas。
- 负载均衡
- 动态负载均衡。
- 静态负载均衡。
- hash负载均衡。
未完待续…
Last Update : 2021-09-09 17:11:43 星期四