Pozwolę sobie najpierw przyznać, że popełniłem błędy i że mam kopię zapasową większości danych RAID, ale nie wszystkich . Nadal mam nadzieję na odzyskanie reszty danych. Nie mam pieniędzy, by zabrać dyski do firmy zajmującej się odzyskiwaniem.
Błąd nr 0, brak kopii zapasowej w 100%. Wiem.
Mam mdadm
system RAID5 4x3 TB. Dyski / dev / sd [be], wszystkie z jedną partycją /dev/sd[b-e]1
. Wiem, że RAID5 na bardzo dużych dyskach jest ryzykowny, ale i tak to zrobiłem.
Ostatnie wydarzenia
RAID ulega degradacji po awarii dwóch dysków. Jeden dysk [/ dev / sdc] naprawdę zniknął, drugi [/ dev / sde] wrócił po cyklu zasilania, ale nie został automatycznie ponownie dodany do RAID. Zostałem więc z 4 urządzeniami RAID z tylko 2 aktywnymi dyskami [/ dev / sdb i / dev / sdd].
Błąd nr 1, nieużywanie kopii dysków DD do przywracania RAID. Nie miałem dysków ani czasu. Błąd nr 2, nie tworzenie kopii zapasowej superbloku i mdadm -E
pozostałych dysków.
Próba odzyskania
Zmontowałem RAID w trybie zdegradowanym z
mdadm --assemble --force /dev/md0, using /dev/sd[bde]1.
Miałem wtedy dostęp do swoich danych. Zastąpiłem /dev/sdc
zapasowym; pusty; identyczny napęd.
Usunąłem stary /dev/sdc1
z RAID
mdadm --fail /dev/md0 /dev/sdc1
Błąd nr 3, nie robienie tego przed wymianą dysku
Następnie podzieliłem nowy na partycje /dev/sdc
i dodałem go do RAID.
mdadm --add /dev/md0 /dev/sdc1
Następnie zaczął przywracać RAID. ETA 300 minut. Śledziłem ten proces /proc/mdstat
do 2%, a potem poszedłem zrobić inne rzeczy.
Sprawdzanie wyniku
Kilka godzin (ale mniej niż 300 minut) później sprawdziłem proces. Zatrzymał się z powodu błędu odczytu /dev/sde1
.
Tutaj naprawdę zaczynają się kłopoty
Następnie usunąłem /dev/sde1
RAID i ponownie go dodałem. Nie pamiętam, dlaczego to zrobiłem; było późno.
mdadm --manage /dev/md0 --remove /dev/sde1
mdadm --manage /dev/md0 --add /dev/sde1
Jednak /dev/sde1
teraz oznaczone jako zapasowe. Postanowiłem więc odtworzyć całą tablicę, używając --assume-clean, używając tego, co uważałem za właściwą kolejność, i z /dev/sdc1
brakiem.
mdadm --create /dev/md0 --assume-clean -l5 -n4 /dev/sdb1 missing /dev/sdd1 /dev/sde1
To działało, ale system plików nie został rozpoznany podczas próby zamontowania. (Powinien to być EXT4).
Kolejność urządzeń
Następnie sprawdziłem ostatnio utworzoną kopię zapasową /proc/mdstat
i znalazłem kolejność dysków.
md0 : active raid5 sdb1[0] sde1[4] sdd1[2] sdc1[1]
8790402048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
Potem przypomniałem sobie, że RAID stracił dysk około rok temu i wyzdrowiałem z niego, zastępując wadliwy dysk zapasowym. To mogło nieco zaszyfrować kolejność urządzeń ... więc nie było napędu [3], ale tylko [0], [1], [2] i [4].
Próbowałem znaleźć kolejność dysków za pomocą skryptu Permute_array: https://raid.wiki.kernel.org/index.php/Permute_array.pl, ale nie znalazłem właściwej kolejności.
pytania
Mam teraz dwa główne pytania:
Spieprzyłem wszystkie superbloki na dyskach, ale dałem tylko:
mdadm --create --assume-clean
polecenia (więc nie powinienem był nadpisywać samych danych
/dev/sd[bde]1
. Czy mam rację, że teoretycznie RAID można przywrócić [zakładając, że/dev/sde1
jest to w porządku], jeśli tylko znajdę odpowiednią kolejność urządzeń?Czy ważne
/dev/sde1
jest podanie numeru urządzenia [4] w macierzy RAID? Kiedy go tworzęmdadm --create /dev/md0 --assume-clean -l5 -n4 \ /dev/sdb1 missing /dev/sdd1 /dev/sde1
ma przypisany numer [3]. Zastanawiam się, czy ma to znaczenie przy obliczaniu bloków parzystości. Jeśli okaże się to ważne, jak mogę odtworzyć tablicę z
/dev/sdb1[0]
brakującym [1]/dev/sdd1[2]
/dev/sde1[4]
? Gdybym mógł to uruchomić, mógłbym uruchomić go w trybie awaryjnym, dodać nowy dysk/dev/sdc1
i pozwolić mu ponownie zsynchronizować.
W porządku, jeśli chcesz mi wskazać, że to może nie był najlepszy sposób działania, ale przekonasz się, że zdałem sobie z tego sprawę. Byłoby wspaniale, gdyby ktoś miał jakieś sugestie.