目录
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
|
evict client后,在对应的host上检查client的mountpoint已经不能访问:
|
3. 查看ceph osd的blacklist
evict client后,会把client加入到osd blacklist中(后续有代码分析);
|
加入到osd blacklist后,防止evict client的in-flight数据写下去,影响数据一致性;有效时间为1个小时;
4. 尝试恢复evict client
把ceph osd blacklist里与刚才evict client相关的记录删除;
|
在对应的host上检查client是否正常?发现client变得正常了!!
|
而测试 Ceph Luminous 12.2.7 版本时,evcit client后无法立刻恢复,等一段时间后恢复!!
( “mds_session_autoclose”: “300.000000”,)
|
等待一段时间(300s)后,session变得正常!
|
测试cephfs kernel client的evcit,client无法恢复!!
|