Восстановить подуровень «ошибка» после того, как диск вышел из строя

У нас произошел сбой диска (тайм-аут дисковых команд истек, и это заняло много секунд) в нашей установке LVM с зеркалированием. С некоторыми трудностями нам удалось pvremove неисправный диск, и мы использовали lvconvert --repair -y nova/$lv для восстановления (восстановления избыточности) логических томов.

Однако с одним логическим томом все еще возникают проблемы. В lvs -o devices -a он не показывает устройств для 2 своих подтомов:

  LV                                                   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log         Cpy%Sync Convert Devices
  lvname            nova   Rwi-aor--- 800.00g                                            100.00           lvname_rimage_0(0),lvname_rimage_1(0),lvname_rimage_2(0),lvname_rimage_3(0)
  [lvname_rimage_0] nova   iwi-aor--- 400.00g                                                             /dev/sdc1(19605)
  [lvname_rimage_1] nova   iwi-aor--- 400.00g                                                             /dev/sdi1(19605)
  [lvname_rimage_2] nova   vwi---r--- 400.00g
  [lvname_rimage_3] nova   iwi-aor--- 400.00g                                                             /dev/sdj1(19605)
  [lvname_rmeta_0]  nova   ewi-aor---  64.00m                                                             /dev/sdc1(19604)
  [lvname_rmeta_1]  nova   ewi-aor---  64.00m                                                             /dev/sdi1(19604)
  [lvname_rmeta_2]  nova   ewi---r---  64.00m
  [lvname_rmeta_3]  nova   ewi-aor---  64.00m                                                             /dev/sdj1(19604)

а также согласно lvdisplay -am есть проблема с ..._rimage2 а также ..._rmeta2:

  --- Logical volume ---
  Internal LV Name       lvname_rimage_2
  VG Name                nova
  LV UUID                xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  LV Write Access        read/write
  LV Creation host, time xxxxxxxxx, 2021-07-09 16:45:21 +0000
  LV Status              NOT available
  LV Size                400.00 GiB
  Current LE             6400
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto

  --- Segments ---
  Virtual extents 0 to 6399:
    Type                error

  --- Logical volume ---
  Internal LV Name       lvname_rmeta_2
  VG Name                nova
  LV UUID                xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  LV Write Access        read/write
  LV Creation host, time xxxxxxxxx, 2021-07-09 16:45:21 +0000
  LV Status              NOT available
  LV Size                64.00 MiB
  Current LE             1
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto

  --- Segments ---
  Virtual extents 0 to 0:
    Type                error

Мы пробовали различные комбинации lvconvert --repair -y nova/$lv а также lvchange --syncaction repair на нем без последствий.
lvchange -ay тоже не работает:

$ sudo lvchange -ay   nova/lvname_rmeta_2
  Operation not permitted on hidden LV nova/lvname_rmeta_2.
$ sudo lvchange -ay   nova/lvname
$ # (no effect)
$ sudo lvconvert --repair nova/lvname_rimage_2
  WARNING: Disabling lvmetad cache for repair command.
  WARNING: Not using lvmetad because of repair.
  Command on LV nova/lvname_rimage_2 does not accept LV type error.
  Command not permitted on LV nova/lvname_rimage_2.
$ sudo lvchange --resync nova/lvname_rimage_2
  WARNING: Not using lvmetad because a repair command was run.
  Command on LV nova/lvname_rimage_2 does not accept LV type error.
  Command not permitted on LV nova/lvname_rimage_2.
$ sudo lvchange --resync nova/lvname
  WARNING: Not using lvmetad because a repair command was run.
  Logical volume nova/lvname in use.
  Can't resync open logical volume nova/lvname.
$ lvchange --rebuild /dev/sdf1 nova/lvname
  WARNING: Not using lvmetad because a repair command was run.
Do you really want to rebuild 1 PVs of logical volume nova/lvname [y/n]: y
  device-mapper: create ioctl on lvname_rmeta_2 LVM-blah failed: Device or resource busy
  Failed to lock logical volume nova/lvname.
$ lvchange --raidsyncaction repair nova/lvname
# (took a long time to complete but didn't change anything)
$ sudo lvconvert --mirrors +1 nova/lvname
  Using default stripesize 64.00 KiB.
  --mirrors/-m cannot be changed with raid10.

Любая идея, как восстановить избыточность на этом логическом томе? Конечно, он постоянно используется… Кажется, что мы должны каким-то образом убедить LVM выделить для него некоторое пространство вместо использования сегмента ошибок (в группе томов их достаточно).

лвм рейд10

Олаф Зайберт

0

Добавить комментарий

Ваш адрес email не будет опубликован.