Usuwanie vg i lv po usunięciu dysku fizycznego

32

Wystąpiła awaria dysku na serwerze i wymieniliśmy go przed usunięciem dysku z LVM.

Serwer ma 4 dyski fizyczne (PV), każdy z własną grupą woluminów (VG). Każdy VG ma 2 lub więcej woluminów logicznych (LV). Teraz LVM narzeka na brakujący dysk. Mamy więc VG (vg04) z dwoma LV, które stały się sierotami, niż musimy usunąć z systemu.

Problem polega na tym, że za każdym razem, gdy uruchamiamy dowolne polecenie LVM, pojawiają się następujące błędy „nieudanego odczytu”:

# lvscan
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error

# vgreduce vg04 --removemissing --force
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error
  Volume group "vg04" not found

# vgchange -a n /dev/vg04
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error
  Volume group "vg04" not found

# lvchange -a n /dev/vg04/vz
  /dev/vg04/swap: read failed after 0 of 4096 at 4294901760: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4294959104: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/swap: read failed after 0 of 4096 at 4096: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903864832: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 995903922176: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 0: Input/output error
  /dev/vg04/vz: read failed after 0 of 4096 at 4096: Input/output error
  Volume group "vg04" not found
  Skipping volume group vg04

Brakujące VG i LV nie są ważne, chcemy je tylko usunąć.

Jak widać, wypróbowaliśmy wszystkie zgłoszone sugestie, jak dotąd bez powodzenia.

Dane wyjściowe z „lvm dumpconfig” można sprawdzić na stronie http://pastebin.com/MHiBzrLJ

RCD
źródło

Odpowiedzi:

46

Rozwiązaniem było uruchomienie dmsetup, w tym przypadku dwóch poleceń

dmsetup remove vg04-vz
dmsetup remove vg04-swap

Zanim to zrobiłem, sprawdziłem za pomocą polecenia „dmsetup info”, czy „liczba otwartych” dla obu LV wynosiła zero.

OSTRZEŻENIE: dmsetup może zniszczyć poważne dyski, więc każdy, kto użyje tych informacji w przyszłości, powinien przeczytać stronę podręcznika.

RCD
źródło
3
To załatwiło sprawę. Szkoda, że ​​LVM jest tak nieszczelną abstrakcją, ale wydaje mi się, że jest tak dobra, jak to tylko możliwe.
Navin
1
Dobra rozmowa z tym ostrzeżeniem. Jeśli dobrze rozumiem, podobnie nazwane remove_all --force --deferred --retryzdmuchną każdy dysk zarządzany przez LVM w zasięgu. Będzie próbował i nie poddawał się, jak Terminator. Jestem bardzo ciekawy, dlaczego taka strzelba była uzasadniona.
Dan Ross
Istnieje również jedno urządzenie „zakończ z ekstremalnym uprzedzeniem” (i / lub zemstą, jeśli urządzenie zajęło ci całą noc): # dmsetup --force --retry --deferred remove <YOURVG>-<YOURLV>Jest to szczególnie prawdziwe, jeśli na przykład wisiało urządzenie iscsi i usunąłeś je# iscsiadm -m node -U all -T <FQDN>
AdamKalisz
9

Podobnie było po usunięciu dysku VMware /dev/sdb.

Użyj, lsscsiaby określić, które urządzenie jest używane (może być konieczne zainstalowanie programu), a następnie uruchom lsscsi:

# lsscsi
[1:0:0:0]    cd/dvd  NECVMWar VMware IDE CDR10 1.00  /dev/sr0
[2:0:0:0]    disk    VMware   Virtual disk     1.0   /dev/sda
[2:0:1:0]    disk    VMware   Virtual disk     1.0   /dev/sdb <== the removed physical disk
[2:0:2:0]    disk    VMware   Virtual disk     1.0   /dev/sdc

Teraz napisz plik do usunięcia za pomocą

# echo 1 > /sys/class/scsi_device/2\:0\:1\:0/device/delete

Urządzenie natychmiast zniknęło.

Effendi
źródło
1
Dziękuję Ci!! Działa to idealnie dla mnie w usuwaniu błędów typu „/ dev / sdb: odczyt nie powiódł się po 0 z 4096 przy 0: błąd wejścia / wyjścia” po usunięciu nieaktualnego vg1-xyz przez dmsetup.
kocie spodnie
1
Tylko ten działa dla mnie. Zrobiłeś mi dzień.
odiszapc
2

vgchange -an / dev / vg04

Jeśli nadal masz aktywne woluminy logiczne, być może będziesz musiał

lvchange -a n /dev/vg04/swap
lvchange -a n dev/vg04/vz

itp.

Rob Shinn
źródło
2
Niestety to też nie naprawia, po prostu rzuca ten sam błąd:
RCD
W moim systemie lvchange -a n <VGNAME>działa perfekt!
zzeroo