Mam partycję / boot w macierzy RAID 1 przy użyciu mdadm. W przeszłości ta tablica kilkakrotnie ulegała degradacji i za każdym razem, gdy usuwam dysk fizyczny, dodam nowy, przywracam tablicę do normy, używa nowej litery dysku. Pozostawienie starego nadal w tablicy i nie powiodło się. Nie mogę usunąć wszystkich tych składników, które już nie istnieją.
[root@xxx ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdg1[10] sde1[8](F) sdb1[7](F) sdd1[6](F) sda1[4] sdc1[5]
358336 blocks super 1.0 [4/3] [UUU_]
Oto, co próbowałem usunąć nieistniejące dyski i partycje. Na przykład /dev/sdb1
.
[root@xxx ~]# mdadm /dev/md0 -r /dev/sdb1
mdadm: Cannot find /dev/sdb1: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r faulty
mdadm: Cannot find 8:49: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r detached
mdadm: Cannot find 8:49: No such file or directory
To, 8:49
jak sądzę, odnosi się do dużej i mniejszej liczby pokazanej w --detail
, ale nie jestem do końca pewien, dokąd się stąd udać. Próbuję uniknąć ponownego uruchomienia komputera lub ponownego uruchomienia mdadm.
[root@xxx ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.0
Creation Time : Thu Aug 8 18:07:35 2013
Raid Level : raid1
Array Size : 358336 (350.00 MiB 366.94 MB)
Used Dev Size : 358336 (350.00 MiB 366.94 MB)
Raid Devices : 4
Total Devices : 6
Persistence : Superblock is persistent
Update Time : Sat Apr 18 16:44:20 2015
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 3
Spare Devices : 0
Name : xxx.xxxxx.xxx:0 (local to host xxx.xxxxx.xxx)
UUID : 991eecd2:5662b800:34ba96a4:2039d40a
Events : 694
Number Major Minor RaidDevice State
4 8 1 0 active sync /dev/sda1
10 8 97 1 active sync /dev/sdg1
5 8 33 2 active sync /dev/sdc1
6 0 0 6 removed
6 8 49 - faulty
7 8 17 - faulty
8 8 65 - faulty
Uwaga: tablica jest teraz legalnie zdegradowana i dostaję nowy dysk, gdy mówimy. Jednak, jak widać powyżej, nie powinno to mieć znaczenia. Nadal powinienem móc usunąć /dev/sdb1
z tej tablicy.
Odpowiedzi:
To dlatego, że węzły urządzeń już nie istnieją w twoim systemie (prawdopodobnie udev je usunął, gdy dysk zmarł). Powinieneś być w stanie je usunąć za pomocą słowa kluczowego
failed
lubdetached
zamiast tego:Jeśli twoja wersja mdadm jest zbyt stara, aby to zrobić, być może uda się ją uruchomić,
mknod
uruchamiając urządzenie, aby znów istniało. Lub, szczerze mówiąc, po prostu zignoruj to - to nie jest tak naprawdę problem i powinien zniknąć przy następnym uruchomieniu.źródło
mknod
. Tak, to chyba nie jest problem, ale jestem OCD, lol.Skończyło się na użyciu
mknod
@derobert sugerowanego do stworzenia urządzeń, którychmdadm
szukałem. Próbowałem głównych / mniejszych numerów, które mdadm mówił mi, że nie można ich znaleźć przy różnych literach dysków, które próbowałem usunąć, dopóki nie zadziałały.Następnie musiałem skorzystać z
--force
opcji, aby usunąć komponent.Następnie usunąłem utworzone urządzenie blokowe.
źródło
mdadm
nadal mówiłem: „urządzenie lub zasób zajęty”, ale to sprawiło, że próbowałem nakarmić go nie fałszywym urządzeniem blokowym, ale „prawdziwym” urządzeniem blokowym, takim jak obraz zamontowany w pętli zwrotnej. W tym momencie odkryłem, że miałem przestarzałą,/dev/loop
która wciąż używała pliku w zdegradowanej tablicy. Odłączyłem go i wreszciemdadm
pozwoliłem zatrzymać tablicę. Horay! Dla każdego, kto to czyta, zawsze istnieje logiczne wytłumaczenie tego, że jestmdadm
tak palantem, więc poszukaj przestarzałego procesu / pliku / mountpoint / handlera nfs / open bash / loopback device / etc. nadal używa zdegradowanej tablicy. :)Możesz również naprawić, odtłuszczając liczbę dysków w macierzy:
W moim przypadku mam tablicę raid-1
/dev/md0
z/dev/sda1
„usuniętą”. Po prostu zmniejszyłem go, aby użyć tylko jednego dysku:Po tym usunięto zostało naprawdę usunięte (nie ma już usuniętych linii
mdadm --detail
)źródło