ceph对象锁问题

简介: 介绍ceph对象锁的问题和解决方法

问题一

【问题现象】

rbd-target-api对象锁残留,导致配置文件本能写入问题

[root@ceph1 ~]# rados -p sys_pool lock info zs-test.conf lock
{"name":"lock","type":"exclusive","tag":"","lockers":[{"name":"client.15456426","cookie":"config","description":"","expiration":"0.000000","addr":"172.16.10.135:0/2664314842"}]}

26147:2022-06-22 11:49:47,743    ERROR [common.py:466:lock()] - (Config.lock) Timed out (30s) waiting for excl lock on zs-test.conf object
26148:2022-06-22 11:49:47,744    ERROR [rbd-target-api:1308:_disk()] - LUN alloc problem - Timed out (30s) waiting for excl lock on zs-test.conf object
26150:2022-06-22 11:49:47,751    ERROR [rbd-target-api:2821:call_api()] - _disk change on 10.127.9.224 failed with 500
26602:2022-06-22 11:50:19,471    ERROR [common.py:466:lock()] - (Config.lock) Timed out (30s) waiting for excl lock on zs-test.conf object
26603:2022-06-22 11:50:19,472    ERROR [rbd-target-api:1308:_disk()] - LUN alloc problem - Timed out (30s) waiting for excl lock on zs-test.conf object
26605:2022-06-22 11:50:19,479    ERROR [rbd-target-api:2821:call_api()] - _disk change on 10.127.9.224 failed with 500
27057:2022-06-22 11:50:52,090    ERROR [common.py:466:lock()] - (Config.lock) Timed out (30s) waiting for excl lock on zs-test.conf object
27058:2022-06-22 11:50:52,090    ERROR [rbd-target-api:1308:_disk()] - LUN alloc problem - Timed out (30s) waiting for excl lock on zs-test.conf object
27060:2022-06-22 11:50:52,096    ERROR [rbd-target-api:2821:call_api()] - _disk change on 10.127.9.224 failed with 500

【问题分析】

对象锁是存在对象文件的扩展属性里面,释放锁时需要对应的client。当client丢失时,需要手动删除对象文件扩展属性

【解决办法】

对象锁删除办法:

rados -p sys_pool rmxattr zs-test.conf lock.lock
相关文章
|
4月前
|
算法 Java
JUC(1)线程和进程、并发和并行、线程的状态、lock锁、生产者和消费者问题
该博客文章综合介绍了Java并发编程的基础知识,包括线程与进程的区别、并发与并行的概念、线程的生命周期状态、`sleep`与`wait`方法的差异、`Lock`接口及其实现类与`synchronized`关键字的对比,以及生产者和消费者问题的解决方案和使用`Condition`对象替代`synchronized`关键字的方法。
JUC(1)线程和进程、并发和并行、线程的状态、lock锁、生产者和消费者问题
|
7月前
|
安全 Java API
synchronized关键字-监视器锁(monitor lock)
synchronized关键字-监视器锁(monitor lock)
|
7月前
|
Java C++
11.synchronized底层是怎么通过monitor进行加锁的?
11.synchronized底层是怎么通过monitor进行加锁的?
47 0
11.synchronized底层是怎么通过monitor进行加锁的?
|
缓存
正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 12836(unattended-upgr)持有
正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 12836(unattended-upgr)持有
7252 0
正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 12836(unattended-upgr)持有
|
存储 设计模式 安全
【Linux】多线程 --- POSIX信号量+懒汉模式的线程池+其他常见锁
【Linux】多线程 --- POSIX信号量+懒汉模式的线程池+其他常见锁
|
存储 安全 算法
【Linux】线程互斥与同步
在介绍什么是互斥之前需要了解下面三个概念: 临界资源:多线程执行流共享的资源就叫做临界资源。 临界区:每个线程内部,访问临界资源的代码,就叫做临界区。 互斥:任
锁、C#中Monitor和Lock以及区别
1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁,这就是Monitor最常用的两个方法,当然在使用过程中为了避免获取锁之后因为异常,致锁无法释放,所以需要在try{} catch(){}之后的finally{}结构体中释放锁(Monitor.Exit())。
2610 0
C#多线程系列(2):多 线程锁lock和Monitor
C#多线程系列(2):多 线程锁lock和Monitor
424 0
|
数据处理 调度
进程与线程 thread (二)——线程概念
为什么线程会有用以及如何使用它们   人们需要线程的主要原因: 1、在许多应用中同时发生着多种活动。其中某些活动随着时间的推移会阻塞。
897 0