健康的Ceph 集群需要避免的16种操作

开发 前端 存储架构
在虚拟化领域里,比较常用到的是Ceph的块设备存储,比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的cinder后端存储、Glance的镜像存储和虚拟机的数据存储,比较直观的是Ceph集群可以提供一个raw格式的块存储来作为虚拟机实例的硬盘。

前言

Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备存储和文件系统服务。

在虚拟化领域里,比较常用到的是Ceph的块设备存储,比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的cinder后端存储、Glance的镜像存储和虚拟机的数据存储,比较直观的是Ceph集群可以提供一个raw格式的块存储来作为虚拟机实例的硬盘。

Ceph相比其它存储的优势点在于它不单单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的良好设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且随着规模的扩大性能并不会受到影响。

损坏 Ceph 集群的 10 种方式

以下是破坏 Ceph 集群的 10 种原始方法的摘要。  

1、错误的 CRUSH 故障域:  

如果您不正确地配置 CRUSH,这可能会导致问题。因此一定需要在您的集群上进行测试,以验证是否按预期处理了故障。  

2、停用主机:

这种情况的一个示例是运行 size = 2、min_size = 1并且需要更换一些硬件的集群。归置组只剩下一个磁盘作为副本,如果丢失该磁盘,数据就会丢失。Ceph 集群将不得不被废弃并从头开始重建。  

3、删除 MON 数据目录中的“日志”文件:

始终确保监视器有足够的磁盘空间,并且永远不要从其数据目录中手动删除文件。  

4、删除错误的池:  

在移除池之前仔细检查。更好的是,在移除池之前请其他人查看它。  

5 、长时间设置noout标志:  

始终确保集群的运行状态为 HEALTH_OK ,并查看集群是否处于 HEALTH_WARN 状态较长时间。  

6、使用 nobarrier 选项安装 XFS:

由于新版本之后支持使用 Bluestore,这个问题 100% 解决了。因为 Bluestore 不再使用 XFS。  

7、在没有 BBU 的 HBA 上启用写回:

在没有备用电池单元的情况下,切勿在 HBA 中打开写回缓存。  

8、创建过多的归置组:  

创建归置组时要小心。当集群需要重新re-peer所有归置组时,它可能会损害集群。  

9、使用 2 副本:  

假如一台主机被下电进行维护。现在,一部分数据依赖于一个磁盘。如果此磁盘发生故障,则所有数据都将丢失。  

10、忽视监视器:  

建议使用监视器专用硬件。  

损坏 Ceph 集群的另外 6 种方法

以下是另外 6种方式的摘要:

11、不了解使用的自动化工具:  

简而言之,了解您的自动化工具在做什么,为什么要这样做,并且绝对了解它不应该做什么。您还应该意识到,您的自动化工具应该可以帮助您执行您已经知道的内容。如果你想使用 Ceph,你应该了解 Ceph。例如,如果你想使用 Ceph 和 ceph-ansible,你应该了解 Ceph 和 Ansible。

12、运行 min_size=1:  

我们建议您至少运行三个副本。但是,如果你不能,永远不要将你的 min_size 降低到低于 1,或者最好不要将你的冗余对象降低到“0”。确保您始终编写至少 1 个冗余对象。这也适用于纠删码。

13、未完全完成更新:  

Ceph 的文档有时缺少部分细节。在某些情况下,根据 Ceph 的通用文档,完成升级工作。但是,如果您查看详细的 Ceph 版本的发行说明,很多步骤都被跳过甚至没有触及。因此,请仔细检查更新是否已完成。

14、过早完成更新:  

请确保您不要过早完成升级,并且您确实遵循所有步骤。

15、在负载均衡器后面运行多个有相同 id 的 rbd:

我们有一个客户有 9 个 rbd,但只配置了 3 个后端rbd。对于每个 rbd,他们有 3 个进程在运行。他们都在跳过哪个是活跃的。在负载均衡器后面,这导致数百万个未完成的部分上传。客户的整个集群都满了。接下来,他们添加了新硬件,并且后续仍在添加新硬件。幸运的是,我们发现这是问题所在。为了解决这个问题,我们重命名了 6 个 rbd,清点了所有对象并确保它们都被清理干净。

16、盲目相信你的 PG 自动缩放:  

有时候,一直到您写入数据,您才真正发现 PG 的配置不正确。您在写入大量数据的同时也拆分了所有归置组,导致性能非常差,最终严重影响客户应用。除非您额外采取相关措施,否则没有真正的方法可以解决它。


责任编辑:武晓燕 来源: 新钛云服
相关推荐

2019-10-23 16:04:08

架构IT系统维护

2022-02-09 10:51:20

代币加密货币投资

2020-10-29 09:00:00

Vue.jsjQuery前端

2020-04-26 10:32:58

Kubernetes集群Pod

2020-02-28 08:29:34

IT网络信息

2022-04-19 10:29:56

外包误区IT外包IT领导者

2021-07-07 10:01:55

PythonPython字符串Python基础

2018-05-21 10:28:15

2020-12-08 16:29:44

JDK 16Java编程语言

2021-11-22 14:24:21

云计算AWSGCP

2014-11-28 15:23:32

BYOD

2013-07-03 09:33:04

PHPPHP语言PHP教程

2013-07-03 09:09:45

PHP开发

2014-01-07 11:41:33

虚拟化SQL Server

2022-10-11 07:20:56

YAML字符串语言

2022-12-29 08:46:15

IT采购投资

2018-08-16 15:00:38

编程语言PHP错误机制

2022-12-07 11:24:51

首席信息官IT

2020-09-01 09:56:26

云端云计算云服务

2015-01-20 10:13:57

OpenStackCephSSD
点赞
收藏

51CTO技术栈公众号