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
相关文章
|
1月前
|
应用服务中间件 nginx
Nginx源码阅读:nginx_shmtx共享互斥锁(进程锁)
Nginx源码阅读:nginx_shmtx共享互斥锁(进程锁)
74 0
|
1月前
|
Java C++
11.synchronized底层是怎么通过monitor进行加锁的?
11.synchronized底层是怎么通过monitor进行加锁的?
29 0
11.synchronized底层是怎么通过monitor进行加锁的?
|
1月前
|
Linux
Linux线程同步(try锁和读写锁)
Linux线程同步(try锁和读写锁)
39 0
|
缓存
正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 12836(unattended-upgr)持有
正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 12836(unattended-upgr)持有
6282 0
正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 12836(unattended-upgr)持有
|
存储 设计模式 安全
【Linux】多线程 --- POSIX信号量+懒汉模式的线程池+其他常见锁
【Linux】多线程 --- POSIX信号量+懒汉模式的线程池+其他常见锁
锁、C#中Monitor和Lock以及区别
1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁,这就是Monitor最常用的两个方法,当然在使用过程中为了避免获取锁之后因为异常,致锁无法释放,所以需要在try{} catch(){}之后的finally{}结构体中释放锁(Monitor.Exit())。
2533 0
C#多线程系列(2):多 线程锁lock和Monitor
C#多线程系列(2):多 线程锁lock和Monitor
369 0
|
存储 大数据 分布式数据库
一句话说清分布式锁,进程锁,线程锁
在分布式集群系统的开发中,线程锁往往并不能支持全部场景的使用,必须引入新的技术方案分布式锁。 线程锁,进程锁,分布式锁 线程锁:大家都不陌生,主要用来给方法、代码块加锁。当某个方法或者代码块使用锁时,那么在同一时刻至多仅有有一个线程在执行该段代码。
1478 0
|
调度 JavaScript 大数据