【ceph】ceph osd blacklist cep黑名单|MDS问题分析

本文详细介绍了Ceph中的OSD黑名单功能及其在处理异常客户端时的作用,特别是在CephFS客户端出现问题时如何执行驱逐操作。通过`ceph osd blacklist`命令管理客户端黑名单,防止滞后的元数据服务器对OSD数据造成影响。同时,文章还探讨了CephFS客户端的evict子命令,包括查看、添加和移除黑名单,以及恢复被驱逐客户端的方法。此外,文章还分析了Ceph MDS的问题,如客户端缓存问题、服务端内存不释放和inode过多等,并给出了相应的解决策略和优化建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

blacklist 是什么

blacklist相关操作

Ceph MDS问题分析 

CephFS client evict子命令使用

概述

命令格式

1. 查看所有client/session

2. evict指定client

3. 查看ceph osd的blacklist

4. 尝试恢复evict client

5. evict所有的client

6. session kill命令

代码分析

相关参数

evict client后的处理

方法1:rm blacklist

方法2:wait 1小时


blacklist 是什么

(摘自:https://blog.51cto.com/wendashuai/2493435)

blacklist最常用于CephFS场景中,以防止滞后的元数据服务器对OSD上的数据进行不良更改。

当文件系统客户端无响应或行为异常时,可能有必要强制终止其对文件系统的访问。 此过程称为eviction(驱逐)。

驱逐CephFS客户端会阻止其与MDS daemons和OSD daemons进一步通信。 如果客户端正在对文件系统进行buffered IO,则所有未刷新的数据都将丢失。

blacklist也用于块存储中(openstack场景),某个卷存在watcher,无法删除该卷。假设客户端上watcher:watcher=10.37.192.139:0/1308721908存在异常。加入黑名单中,然后删除卷。

blacklist相关操作

(摘自<OSD相关命令>:https://www.bookstack.cn/read/zxj_ceph/osd-refer)

查看 BlackList

$ ceph osd blacklist ls

or

$ ceph osd dump

6.  移除 BlackList

1、blacklist-用于管理客户端黑名单

1-1 把加入黑名单
可指定时间,从现在起秒

ceph osd blacklist add <EntityAddr> {<float[0.0-]>}

1-2 列出进黑名单的客户端

ceph osd blacklist ls

1-3 从黑名单里删除

ceph osd blacklist rm <EntityAddr>

例子:

把客户端加入黑名单

ceph osd blacklist add <EntityAddr> {<float[0.0-]>}
Eg:
ceph osd blacklist add 10.37.192.139:0/1308721908

注:默认时间为1小时,超过1小时自动释放;

查看黑名单中的客户端

# ceph osd blacklist ls
listed 1 entries
10.37.192.139:0/1308721908 2019-02-27 10:10:52.049084

删除黑名单中的客户端

ceph osd blacklist rm <EntityAddr>
Eg:
ceph osd blacklist rm 10.37.192.139:0/1308721908

查看rbd卷的watcher

[root@ceph1 ~]# rbd status dpool/test
Watchers: 10.37.192.139:0/1308721908 client.172221 cookie=1222222189908

未消化搜藏:

CephFS client evict子命令使用

(原文:http://www.yangguanjun.com/2018/09/28/cephfs-client-evict-intro/)

概述

在使用Ceph的CephFS时,每个client都会建立与MDS的连接,以获取CephFS的元数据信息。如果有多个Active的MDS,则一个client可能会与多个MDS都建立连接。

Ceph提供了client/session子命令来查询和管理这些连接。在这些子命令中,有一个命令来处理CephFS的client有问题时,如何手动来断开这些client的连接,比如执行命令:# ceph tell mds.2 client evict,则会把与mds rank 2 连接的所有clients都断开。

那么执行client evict的影响是什么?是否可以恢复呢?本文将重点介绍一下这些。

命令格式

参考:Ceph file system client eviction — Ceph Documentation

测试环境:Ceph Mimic 13.2.1

1. 查看所有client/session

可以通过命令 client/session ls查看与ms rank [id] 建立connection的所有clients;

# ceph tell mds.0 client ls
2018-09-05 10:00:15.986 7f97f0ff9700  0 client.25196 ms_handle_reset on 192.168.0.26:6800/1856812761
2018-09-05 10:00:16.002 7f97f1ffb700  0 client.25199 ms_handle_reset on 192.168.0.26:6800/1856812761
[
    {
        "id": 25085,
        "num_leases": 0,
        "num_caps": 5,
        "state": "open",
        "replay_requests": 0,
        "completed_requests": 0,
        "reconnecting": false,
        "inst": "client.25085 192.168.0.26:0/265326503",
        "client_metadata": {
            "ceph_sha1": "5533ecdc0fda920179d7ad84e0aa65a127b20d77",
            "ceph_version": "ceph version 13.2.1 (5533ecdc0fda920179d7ad84e0aa65a127b20d77) mimic (stable)",
            "entity_id": "admin",
            "hostname": "mimic3",
            "mount_point": "/mnt/cephfuse",
            "pid": "44876",
            "root": "/"
        }
    }
]

比较重要的信息有:

  • id:client唯一id
  • num_caps:client获取的caps
  • inst:client端的ip和端口链接信息
  • ceph_version:client端的ceph-fuse版本,若使用kernel client,则为kernel_version
  • hostname:client端的主机名
  • mount_point:client在主机上对应的mount point
  • pid:client端ceph-fuse进程的pid

2. evict(驱逐)指定client

可以通过指定id来evict(驱逐)特定的client链接;

若有多个Active MDS,单个MDS Rank的evict也会传播到别的Active MDS

# ceph tell mds.0 client evict id=25085
 

evict client后,在对应的host上检查client的mountpoint已经不能访问:

root@mimic3:/mnt/cephfuse# ls
ls: cannot open directory '.': Cannot send after transport endpoint shutdown
 
 
root@mimic3:~# vim /var/log/ceph/ceph-client.admin.log
...
2018-09-05 10:02:54.829 7fbe732d7700 -1 client.25085 I was blacklisted at osd epoch 519
 

3. 查看ceph osd的blacklist

evict client后,会把client加入到osd blacklist中(后续有代码分析);

root@mimic1:~# ceph osd blacklist ls
listed 1 entries
192.168.0.26:0/265326503 2018-09-05 11:02:54.696345
 

加入到osd blacklist后,防止evict client的in-flight数据写下去,影响数据一致性;有效时间为1个小时;

4. 尝试恢复evict client

把ceph osd blacklist里与刚才evict client相关的记录删除;

root@mimic1:~# ceph osd blacklist rm 192.168.0.26:0/265326503
un-blacklisting 192.168.0.26:0/265326503
 

在对应的host上检查client是否正常?发现client变得正常了!!

root@mimic3:~# cd /mnt/cephfuse
root@mimic3:/mnt/cephfuse# ls
perftest
 

而测试 Ceph Luminous 12.2.7 版本时,evcit client后无法立刻恢复,等一段时间后恢复!!

( “mds_session_autoclose”: “300.000000”,)

root@luminous2:~# ceph osd blacklist rm 192.168.213.25:0/1534097905
un-blacklisting 192.168.213.25:0/1534097905

root@luminous2:~# ceph osd blacklist ls
listed 0 entries

root@luminous2:/mnt/cephfuse# ls
ls: cannot open directory '.': Cannot send after transport endpoint shutdown
 

等待一段时间(300s)后,session变得正常!

root@luminous2:/mnt/cephfuse# ls
perftest
 

测试cephfs kernel client的evcit,client无法恢复!!

root@mimic3:~# cd /mnt/cephfs
-bash: cd: /mnt/cephfs: Permission denied
 

5. evict所有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值