查看原文
其他

分布式文件存储 CephFS 使用技巧

twt社区 twt企业IT社区 2022-07-03

【摘要】Ceph 文件系统( Ceph FS )是个 POSIX 兼容的文件系统,它使用 Ceph 存储集群来存储数据。Ceph 文件系统与 Ceph 块设备、同时提供 S3 和 Swift API 的 Ceph 对象存储、或者原生库( librados )一样,都使用着相同的 Ceph 存储集群系统。除本文之外,大家还可参考《一文看懂分布式文件存储 CephFS(点击标题即可),了解更全面的相关知识。

【答疑/整理】李航,多年的底层开发经验,在高性能nginx开发和分布式缓存redis cluster有着丰富的经验,目前从事Ceph工作。个人主要关注的技术领域:高性能Nginx开发、分布式缓存、分布式存储。


Q1: cephfs 针对高可用是怎样实现的?

针对cephfs 的高可用实现方式都有哪些,分别利弊是什么,是否可以实现商业上线使用

A:

首先ceph本身就是分布式高可用,高可靠,可扩展的系统。

而cephfs 的相关组件包含:

  • mon监控整体集群信息

  • mds元信息文件及目录信息

  • osd数据节点及文件信息

针对这三个组件都是可以 横向扩展,性能也是随着节点的增加而线性增加。

三个组件都是基于分布式协议Paxos 实现的, 集群内部不会存在单点的问题。 

任何一个节点挂掉,都不会影响集群正常工作,对于客户端也是无感知的。

目前,可以用到生产环境,但是得做好充分的测试,开源软件肯定会有些小问题。


Q2:分布式文件系统和并行文件系统有什么区别与联系?如何区分?

A:

分布式文件系统

- 自然地,“分布式”是重点,它是相对与本地文件系统而言的。分布式文件系统通常指C/S架构或网络文件系统,用户数据没有直接连接到本地主机,而是存储在远程存储服务器上。NFS/CIFS是最为常见的分布式文件系统,这就是我们说的NAS系统。

并行文件系统

- 这种文件系统能够支持并行应用,比如MPI。在并行文件系统环境下,所有客户端可以在同一时间并发读写同一个文件。并发读,大部分文件系统都能够实现。并发写实现起来要复杂许多,既要保证数据一致性,又要最大限度提高并行性,因此在锁机制方面需要特别设计,如细粒度的字节锁。通常SAN共享文件系统都是并行文件系统,如GPFS、StorNext、GFS、BWFS,集群文件系统大多也是并行文件系统,如Lustre, Panasas等。

如何区分?

- 区分这两者的重点是“分布式”、“并行” 前缀关键字。

简单来说,非本地直连的、通过网络连接的,这种为分布式文件系统;

支持并行应用(如MPI)的,这种为并行文件系统。

这两个概念之间具有重叠之处,比如Lustre,它既是分布式文件系统,也是并行文件系统。


Q3: 之前在Jewel版测试cephfs fuse client 性能比Kernel client低,目前最新版L 是否有改善?

A:

用这个还真没有对比测试过, 但是ceph fuse client 稳定性倒是提升了不少,修复了不少bug。 

fuse用户态模式 肯定比直接用kernel内核模式性能低。 

如果您的性能要求比较严格,肯定考虑直接用kernel client, 新版本关于kernel模式 稳定性很高,性能有保障。


Q4: 请教一下CephFS、RBD、RGW各自的适用场景和优缺点?

A:

三种存储类型-块存储

典型设备:磁盘阵列,硬盘

主要是将裸磁盘空间映射给主机使用的。

优点:

• 通过Raid与LVM等手段,对数据提供了保护。

• 多块廉价的硬盘组合起来,提高容量。

• 多块磁盘组合出来的逻辑盘,提升读写效率。

缺点:

• 采用SAN架构组网时,光纤交换机,造价成本高。

• 主机之间无法共享数据。

使用场景:

• docker容器、虚拟机磁盘存储分配。

• 日志存储。

• 文件存储。

• …

三种存储类型-文件存储

典型设备:FTP、NFS服务器

为了克服块存储文件无法共享的问题,所以有了文件存储。

在服务器上架设FTP与NFS服务,就是文件存储。

优点:

• 造价低,随便一台机器就可以了。

• 方便文件共享。

缺点:

• 读写速率低。

• 传输速率慢。

使用场景:

• 日志存储。

• 有目录结构的文件存储。

• …

三种存储类型-对象存储

典型设备:内置大容量硬盘的分布式服务器(swift, s3)

多台服务器内置大容量硬盘,安装上对象存储管理软件,对外提供读写访问功能。

优点:

• 具备块存储的读写高速。

• 具备文件存储的共享等特性。

使用场景:(适合更新变动较少的数据)

• 图片存储。

• 视频存储。

• …


Q5: 运维方面有推荐的自动化系统吗?

A:

目前主流的Ceph开源监控软件有:Calamari、VSM、Inkscope、Ceph-Dash、Zabbix等。

Calamari对外提供了十分漂亮的Web管理和监控界面,以及一套改进的REST API接口(不同于Ceph自身的REST API),在一定程度上简化了Ceph的管理。

优点:

- 轻量级

- 官方化

- 界面友好

缺点:

- 不易安装

- 管理功能滞后

Virtual Storage Manager (VSM)是Intel公司研发并且开源的一款Ceph集群管理和监控软件,简化了一些Ceph集群部署的一些步骤,可以简单的通过WEB页面来操作。

优点:

- 管理功能好

- 界面友好 

- 可以利用它来部署Ceph和监控Ceph

缺点:

- 非官方

- 依赖OpenStack某些包

Inkscope 是一个 Ceph 的管理和监控系统,依赖于 Ceph 提供的 API,使用 MongoDB 来存储实时的监控数据和历史信息。

优点:

- 易部署

- 轻量级

- 灵活(可以自定义开发功能)

缺点:

- 监控选项少

- 缺乏Ceph管理功能

Ceph-Dash 是用 Python 开发的一个Ceph的监控面板,用来监控 Ceph 的运行状态。同时提供 REST API 来访问状态数据。

优点:

- 易部署

- 轻量级

- 灵活(可以自定义开发功能)

官方的部署系统有deploy-ceph 使用很简单明了。


Q6: 对于扩容/缩容 是否平滑 ,有影响吗?

A:

扩容/缩容 会涉及到数据的迁移,对于客户端理论上是不影响的,数据都会正常访问和写入。 

不过,如果内部数据迁移io太频繁,可能会影响客户端io的响应时间,延迟会拉高。
需要控制好内部的频率和速度。


Q7: 故障转移需要手动修复吗,怎么做的?

A:

ceph的强大之处就在于 能够自我修复,自愈。不过是从节点异常挂掉,还是数据均衡,还是集群数据清洗等策略,都是ceph内部自我修复完成,不需要人工介入。

例如,副本节点挂掉 内部会自动同进行均衡把副本数据通过到其他节点,保证数据三副本。


Q8: CephFS的Kernel Client稳定性和性能如何?

A:

单个mds性能 fuse模式5000ops/s 左右, kernel模式8000ops/s 左右。

kernel client 在4.x 以下的内核版本,存储很多坑和问题。 

官方建议升级内核版本到4.x以上,社区也有部分大厂升级到了新内核版本,稳定性还是不错的。

建议如果用kernel client模式,升级内核到4.x以上,

否则推荐使用fuse模式。


Q9: cephfs对文件数量有限制么?

A:

对文件数量没有限制,但是单个目录的子文件 默认是10w个文件。如果超过就会报错,可以通过相关参数修改。

如有任何问题,可点击文末阅读原文到社区原文下评论交流


 资料/文章推荐:


欢迎关注社区 “分布式存储”技术主题,将会不断更新优质资料、文章。地址:

http://www.talkwithtrend.com/Topic/23951

下载 twt 社区客户端 APP

与更多同行在一起

高手随时解答你的疑难问题

轻松订阅各领域技术主题

浏览下载最新文章资料


长按识别二维码即可下载

或到应用商店搜索“twt”


长按二维码关注公众号

*本公众号所发布内容仅代表作者观点,不代表社区立场

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存