Назад | Перейти на главную страницу

Потеряны метаданные LVM, но файловая система все еще работает

Вот настройка:

Теперь возникла проблема с SAN, которая потребовала обслуживания (обновления микропрограммы контроллера), и поэтому я перезагрузил файловый сервер, чтобы убедиться, что ничего не случилось, когда SAN снова подключится к сети.

После перезагрузки я смог повторно подключиться к SAN и смонтировать файловые системы. Они работают нормально.

Однако после перезагрузки файлового сервера я заметил, что информация LVM для этих файловых систем не отображается, т.е. pvdisplay, vgdisplay, и lvdisplay сообщать только о локальном диске на файловом сервере.

Эти VG и LV появляются в /dev:

/dev/vg_${VG}
/dev/vg_${VG}/${LV1}_lv
/dev/vg_${VG}/${LV2}_lv
/dev/disk/by-id/dm-name-${VG}-${LV1}_lv
/dev/disk/by-id/dm-name-${VG}-${LV2}_lv
/dev/mapper/vg_${VG}-${LV1}_lv
/dev/mapper/vg_${VG}-${LV1}_lv

И они появляются, используя pvs -a но имеют нулевые экстенты:

[root@file-server /]# pvs -a
PV                                     VG     Fmt  Attr PSize   PFree
/dev/centos/home                                   ---       0     0
/dev/centos/root                                   ---       0     0
/dev/centos/swap                                   ---       0     0
/dev/mapper/mpatha                                 ---       0     0
/dev/mapper/mpathb                                 ---       0     0
/dev/mapper/mpathc                                 ---       0     0
...
/dev/sda                                           ---       0     0
/dev/sda1                                          ---       0     0
/dev/sda2                              centos lvm2 a--  273.80g 4.00m
/dev/sdb                                           ---       0     0
/dev/sdc                                           ---       0     0
/dev/sdd                                           ---       0     0
/dev/sde                                           ---       0     0
...
/dev/vg_${VG1}/${LV1}_lv               ---       0     0
/dev/vg_${VG1}/${LV2}_lv                  ---       0     0

Они также появляются с dmsetup info -c:

[root@file-server /]# dmsetup info -c
Name                              Maj Min Stat Open Targ Event  UUID
mpathe                            253   6 L--w    1    1      1 mpath-27f3164e4727f3bc5
mpathd                            253   5 L--w    1    1      1 mpath-2b3c12e7d9acc5f25
mpathc                            253   4 L--w    1    1      1 mpath-232eb560378e8ec53
mpathb                            253   7 L--w    1    1      1 mpath-218029135ad1e514a
mpatha                            253   3 L--w    1    1      1 mpath-20123b6d74acce549
vg_${VG}-${LV1}_lv    253  16 L--w    1    1      0 LVM-6DoB20ypbwcGOoRHiX0t8wKAY3oC9BXtSGzQ1wy8fGa9okuQm1NxtPCHnmt0dtO6
vg_${VG}-${LV2}_lv   253  17 L--w    1    3      0 LVM-6DoB20ypbwcGOoRHiX0t8wKAY3oC9BXtmgFlfK9Bilo3IAWxjqwR7dUA8Oq0Fu70
mpathj                            253  15 L--w    1    1      1 mpath-266772bd8af26c781
centos-home                       253   2 L--w    1    1      0 LVM-GAWmujV5zkPn9byt74PY7byRJUWi8UmYSqsQjkt2uTDQ1q5Do38GXYynZhTiLhYw
mpathi                            253  14 L--w    1    1      1 mpath-254a27729bfbfc8c6
mpathh                            253  13 L--w    1    1      1 mpath-2a0ff1a2db7f22f00
mpathg                            253  12 L--w    1    1      1 mpath-27a5ce08413f48f13
mpathf                            253  11 L--w    1    1      1 mpath-2d19e7002c7a41667
centos-swap                       253   1 L--w    2    1      0 LVM-GAWmujV5zkPn9byt74PY7byRJUWi8UmYtA03QjyV1IlWWk9Nz9cHJFKN16SJZ0T5
centos-root                       253   0 L--w    1    1      0 LVM-GAWmujV5zkPn9byt74PY7byRJUWi8UmYCMmaP0envGMf3gk8JhcyoQIQPGmjrL6w

Как восстановить метаданные LVM? Это просто вопрос vgcfgrestore как указано здесь:

https://www.centos.org/docs/5/html/5.2/Cluster_Logical_Volume_Manager/mdatarecover.html

Кажется, у меня есть резервная копия в /etc/lvm/backup.

Я не решаюсь возиться с этим, если я потеряю какие-либо данные в файловых системах. Восстановление возможно, но не без простоев и задержек системы.

РЕДАКТИРОВАТЬ: вывод из pvs, lvs, и vgs ниже:

[root@dfile-server ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  273.80g 4.00m
[root@file-server ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home centos -wi-ao----  46.57g
  root centos -wi-ao---- 221.64g
  swap centos -wi-ao----   5.59g
[root@file-server ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   3   0 wz--n- 273.80g 4.00m

Как было сказано в комментариях, проблема не связана с обновлением SAN, а скорее с lvmetad демон, возвращающий устаревшую / неверную информацию.

Это было подтверждено остановкой lvmetad (systemctl stop lvmetad.service; systemctl stop lvmetad.socket) и путем выдачи pvs которые, непосредственно анализируя блочные устройства, возвращают правильную информацию.

Постоянное исправление заключалось в обновлении lvmetad cache, сообщив ему, что что-то изменилось. Это было выполнено pvscan --cache, повторное включение lvmetad (systemctl start lvmetad.service; systemctl start lvmetad.socket) и, наконец, запустил еще один pvscan --cache.

После этого нормально pvs (с участием lvmetad active) вернул правильные данные.