0%

Ceph故障处理

[TOC]

系统故障

集群始终处于remapped状态

同一osd的副本不允许数据放在同一hosts上,所以池副本数要小于实际的主机数

https://lihaijing.gitbooks.io/ceph-handbook/content/Troubleshooting/troubleshooting_pg.html

1
2
3
4
5
6
7
8
9
10
osd crush chooseleaf type

Description
The bucket type to use for chooseleaf in a CRUSH rule. Uses ordinal rank rather than name.

Type
32-bit Integer

Default
1. Typically a host containing one or more Ceph OSD Daemons.
1
2
3
4
5
6
7
8
# 查看ceph 池副本数
ceph osd dump | grep size

# 修改已存在池的副本数
ceph osd pool set <poolname> size|min_size <val>

# 修改默认的池副本数
ceph config set global osd_pool_default_size/min_size <val>

No Module named openssl

只在麒麟上有过依赖不全的问题

openssl应该是不需要编译安装的,但解决问题时候先照着这个操作了才找到后边的解决方法。

https://blog.csdn.net/Amio_/article/details/126716818?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5-126716818-blog-118281599.235%5Ev43%5Epc_blog_bottom_relevance_base7&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5-126716818-blog-118281599.235%5Ev43%5Epc_blog_bottom_relevance_base7


https://tracker.ceph.com/issues/23992?tab=history

原因:在构建Ceph时不需要这些依赖,所以 install.sh 并不会安装。也就是说,install.sh 仅安装构建Ceph相关的依赖

1
2
3
pip3 install pecan
yum install python2-werkzeug
yum install python2-pyOpenSSL

Module ‘restful’ has failed dependency: cannot import name dump_csp_header

应该是麒麟ceph依赖于python2.7,但实际安装在python3.7下,造成ceph无法识别依赖

1
pip3 uninstall werkzeug  && pip2 install werkzeug==0.16.1

clock skew detected on mon

使用ntp时间同步

https://vegetable-chicken.blog.csdn.net/article/details/104801809

https://help.aliyun.com/zh/ecs/user-guide/alibaba-cloud-ntp-server#cdf5592e6dal2

当前NTP官方已经停止维护,使用 ntpdate 进行手动时间同步有时钟跳变的风险,如必须使用,请在ntpdate命令后添加3个或3个以上的时钟源,尽可能规避风险

造成集群状态health_warn:clock skew detected on mon节点的原因有两个,

  1. mon节点上ntp服务器未启动

  2. ceph设置的mon的时间偏差阈值比较小。

原因排查从前到后进行。

确定时间同步服务器是否正常
1
systemctl status ntpd

1. 查看主机操作系统版本

1
cat /etc/os-release

2. 查看主机是否安装ntp

1
2
3
4
[root@ceph02 ~]# rpm -qa | grep ntp
ntpstat-0.5-3.ky10.noarch
python3-ntplib-0.3.3-13.ky10.noarch
ntp-4.2.8p13-5.ky10.aarch64
  • 若没有,则安装 ntp ntpdate

    1
    yum install ntp ntpdate -y
  • 查看是否安装成功

    1
    rpm -qa | grep ntp

3. 配置ntp服务器

  • a. 查看ntp服务器状态

    1
    2
    3
    4
    5
    [root@ceph02 ~]# systemctl status ntpd
    ● ntpd.service - Network Time Service
    Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
    Active: inactive (dead) since Tue 2024-06-04 16:06:09 CST; 18min ago
    Main PID: 10989 (code=exited, status=0/SUCCESS)
  • b. 配置本地主机作为时间同步服务器

    1
    2
    3
    4
    5
    vim /etc/ntp.conf

    server 127.127.1.0 iburst
    restrict 127.0.0.1
    restrict ::1
  • c. 启动ntp服务器

    1
    systemctl restart ntpd
    • 确定ntp服务器状态

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      [root@ceph01 ~]# systemctl status ntpd
      ● ntpd.service - Network Time Service
      Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
      Active: active (running) since Tue 2024-06-04 15:52:47 CST; 5min ago
      Process: 2370 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS)
      Main PID: 2388 (ntpd)
      Tasks: 2
      Memory: 4.1M
      CGroup: /system.slice/ntpd.service
      └─2388 /usr/sbin/ntpd -u ntp:ntp -g
    • 查看是否启动同步

      1
      2
      3
      4
      [root@ceph01 ~]# ntpq -p
      remote refid st t when poll reach delay offset jitter
      ==============================================================================
      LOCAL(0) .LOCL. 5 l 6 64 17 0.000 +0.000 0.000
  • d. 设置开机启动

    1
    2
    3
    4
    systemctl enable ntpd

    Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd
    service.
  • e. 设置防火墙,打开udp123端口

    1
    2
    3
    4
    5
    6
    7
    $ firewall-cmd --permanent --add-port=123/udp
    success
    $ firewall-cmd --reload
    success

    # 核对
    iptables -L -n

4. ntp客户端配置

  • a. 修改配置文件,将ntp服务器作为客户端的上游ntp服务器

    1
    2
    3
    4
    5
    6
    vim /etc/ntp.conf
    # 配置上游时间服务器为本地的ntpd Server服务器
    server 10.168.5.210
    #配置允许上游时间服务器主动修改本机的时间
    restrict 10.168.5.210
    restrict ::1
  • b. 与本地ntpd 服务器同步

    1
    ntpdate -u 10.168.5.210
  • c. 启动ntp服务

    1
    systemctl start ntpd
  • d. 设置开机启动

    1
    systemctl enable ntpd
  • e. 查看状态

    1
    2
    3
    4
    $ ntpq -p
    remote refid st t when poll reach delay offset jitter
    ==============================================================================
    *192.168.0.163 LOCAL(0) 11 u 21 64 377 0.068 -0.824 0.367
修改Ceph配置中的时间偏差阈值
1
ceph config set global mon_clock_drift_allowed 2 mon_clock_drift_warn_backoff 30

使用chrony时间同步见ceph安装

https://blog.csdn.net/weixin_46986342/article/details/127734511

存储集群错误

https://blog.csdn.net/nasooo/article/details/130237481

https://blog.csdn.net/a13568hki/article/details/118914679

https://blog.csdn.net/nanhai_happy/article/details/131934493

https://xie.infoq.cn/article/badcd3f7f07cd6d6404a9d494

https://www.cnblogs.com/x602/p/16562160.html

https://blog.51cto.com/arkling/6667360

OSD down

移除重新添加

查看osd

1
ceph osd tree

在这里插入图片描述

停止此osd进程

1
systemctl stop  ceph-osd@<osd-id>

下线osd

1
ceph osd out osd.<id>

在这里插入图片描述

将osd踢出集群,执行完的结果是osd.0不在osd tree中

  • osd up 数量已经变少,但是还是有osd总数并没有减少
1
ceph osd crush remove osd.0

在这里插入图片描述

执行ceph auth del osd.0 和 ceph osd rm 0,但是原来的数据和日志目录还在,也就是数据还在

1
2
ceph auth del osd.0
ceph osd rm 0

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

将/dev/sdc磁盘umount,然后将磁盘进行擦除那么数据就会被完全删除了,然后执行

1
2
3
4
5
6
7
8
# 可见osd 总数量已经由30减少为29了。
ceph osd purge 29 --yes-i-really-mean-it
purged osd.29


umount /var/lib/ceph/osd/ceph-0
dmsetup remove_all
ceph-disk zap /dev/sdb

在这里插入图片描述

把新换的盘扩容,加入ceph集群

准备磁盘(新增节点操作)

1
2
3
[root@node1 ~]# yum install ceph ceph-radosgw -y
[root@node1 ~]# parted /dev/sdb mklabel gpt -s
[root@node1 ~]# ceph-volume lvm zap /dev/sdb

添加osd(主节点操作)

1
[root@node1 ~]# ceph-deploy osd create --data /dev/sdb node1

在这里插入图片描述

1
2
3
4
5
6
7
8
9
10
11
systemctl restart ceph-mon.target
[cephadmin@proceph05 ~]$ sudo systemctl reset-failed ceph-osd@25
[cephadmin@proceph05 ~]$ sudo systemctl start ceph-osd@25
[cephadmin@proceph05 ~]$ sudo systemctl status ceph-osd@25
● ceph-osd@25.service - Ceph object storage daemon osd.25
Loaded: loaded (/usr/lib/systemd/system/ceph-osd@.service; enabled-runtime; vendor preset: disabled)
Active: active (running) since Thu 2023-04-20 10:27:59 CST; 33s ago
Process: 276984 ExecStartPre=/usr/lib/ceph/ceph-osd-prestart.sh --cluster ${CLUSTER} --id %i (code=exited, status=0/SUCCESS)
Main PID: 276990 (ceph-osd)
CGroup: /system.slice/system-ceph\x2dosd.slice/ceph-osd@25.service
└─276990 /usr/bin/ceph-osd -f --cluster ceph --id 25 --setuser ceph --setgroup ceph
-------------本文结束-------------