pvscan 报 Global lock failed 且没有返回信息,不一定是数据没了。停掉 sanlock 和 lvmlockd 再 pvscan,只要 pv 在,一切都好说。
现象
在 ubuntu18 arm 上,pvscan 没有返回信息:
root@host:/etc/lvm/archive# pvscan
Global lock failed: error -210
No matching physical volumes found
这个时候不要慌,不一定是数据没了。
排查
把 sanlock 和 lvmlockd 停掉,再 pvscan 看看是否有,一般来说是在的:
root@host:/etc/lvm/archive# pvscan
WARNING: lvmlockd process is not running.
Reading without shared global lock.
Reading VG vg_b without a lock.
PV /dev/mapper/mpath-b VG vg_b lvm2 [<500.00 GiB / <499.00 GiB free]
Reading VG vg_a without a lock.
PV /dev/mapper/mpath-a VG vg_a lvm2 [<1000.00 GiB / <545.00 GiB free]
Total: 2 [1.46 TiB] / in use: 2 [1.46 TiB] / in no VG: 0 [0 ]
只要 pv 在,那么一切都好说。
把 sanlock 和 lvmlockd 启动起来后,vgs 还是一样,只有一行输出 Global lock failed: error -210。
和平时 VG vg_b lock skipped: error -32 下面打印 vg 信息的场景很不一样。
这种情况不要慌,直接执行 vgchange --lockstart:
root@host:/etc/lvm/archive# vgchange --lockstart
Global lock failed: error -210
VG vg_a starting sanlock lockspace
Starting locking. Waiting for sanlock may take 20 sec to 3 min...
根因
1. ubuntu18 arm 上 lvmlockd 服务名问题
ubuntu18 arm lvm2.02 上没有 lvmlockd 的服务,原来它叫 lvm2-lvmlockd。
关键是 lvm2-lvmlockd 里启动命令还是 /sbin/lvmlockd -f。
解决:
cp /lib/systemd/system/lvm2-lvmlockd.service /lib/systemd/system/lvmlockd.service
2. lvmetad 缓存和 sanlock 锁不协调
ubuntu18 上默认开启了 lvm2-lvmetad,这个缓存和 sanlock 锁不协调,要禁用掉:
systemctl stop lvm2-lvmetad
systemctl stop lvm2-lvmetad.socket
lvm.conf 中的配置也要改 use_lvmetad=0。
这个问题会导致 vgchange --lockstart 锁总是启动不起来。
3. 多 vg 时单独启动
ubuntu18 上的 vgchange --lockstart 感觉是只启动了一个 vg,如果是多个记得记上 vg 名称单独启动试试。
小结
pvscan报Global lock failed且无返回,不一定是数据没了;- 停掉 sanlock 和 lvmlockd 再 pvscan,只要 pv 在,一切都好说;
- ubuntu18 arm 上 lvmlockd 服务名是
lvm2-lvmlockd,需要复制一份; - lvmetad 缓存和 sanlock 锁不协调,要禁用掉;
- 多 vg 时
vgchange --lockstart可能只启动一个,要单独指定 vg 名称。