Utworzyłem dwie partycje HDD 2 TB ( /dev/sdb1
i /dev/sdc1
) w macierzy RAID 1 o nazwie /dev/md0
using mdadm
na Ubuntu 12.04 LTS Precise Pangolin.
Polecenie sudo mdadm --detail /dev/md0
wskazujące oba dyski jako aktywną synchronizację .
Następnie do testów nie udało mi się /dev/sdb1
, usunąłem go, a następnie dodałem ponownie za pomocą poleceniasudo mdadm /dev/md0 --add /dev/sdb1
watch cat /proc/mdstat
pokazał pasek postępu przebudowy macierzy, ale nie spędziłbym godzin na oglądaniu go, więc założyłem, że oprogramowanie wiedziało, co robi.
Po tym, jak pasek postępu nie był już wyświetlany, cat /proc/mdstat
wyświetla się:
md0 : active raid1 sdb1[2](S) sdc1[1]
1953511288 blocks super 1.2 [2/1] [U_]
I sudo mdadm --detail /dev/md0
pokazuje:
/dev/md0:
Version : 1.2
Creation Time : Sun May 27 11:26:05 2012
Raid Level : raid1
Array Size : 1953511288 (1863.01 GiB 2000.40 GB)
Used Dev Size : 1953511288 (1863.01 GiB 2000.40 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Mon May 28 11:16:49 2012
State : clean, degraded
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1
Name : Deltique:0 (local to host Deltique)
UUID : 49733c26:dd5f67b5:13741fb7:c568bd04
Events : 32365
Number Major Minor RaidDevice State
1 8 33 0 active sync /dev/sdc1
1 0 0 1 removed
2 8 17 - spare /dev/sdb1
Powiedziano mi, że mdadm automatycznie zastępuje usunięte dyski /dev/sdb1
częściami zamiennymi, ale nie jest przenoszony do oczekiwanej pozycji, RaidDevice 1
.
UPDATE (30 maja 2012):badblocks
destrukcyjne testy odczytu i zapisu z całą /dev/sdb
przyniosły żadnych błędów zgodnie z oczekiwaniami; oba dyski twarde są nowe.
Od ostatniej edycji zestawiłem tablicę za pomocą tego polecenia:
sudo mdadm --assemble --force --no-degraded /dev/md0 /dev/sdb1 /dev/sdc1
Wynik był:
mdadm: /dev/md0 has been started with 1 drive (out of 2) and 1 rebuilding.
Odbudowa wygląda tak, jakby postępowała normalnie:
md0 : active raid1 sdc1[1] sdb1[2]
1953511288 blocks super 1.2 [2/1] [U_]
[>....................] recovery = 0.6% (13261504/1953511288) finish=2299.7min speed=14060K/sec
unused devices: <none>
Teraz czekam na tę przebudowę, ale spodziewam /dev/sdb1
się , że będę zapasowy, tak jak pięć czy sześć razy, kiedy próbowałem przebudować wcześniej.
AKTUALIZACJA (31 maja 2012 r.): Tak, wciąż jest zapasowy. Ugh!
AKTUALIZACJA (1 czerwca 2012 r.): Próbuję zasugerować polecenie Adriana Kelly'ego :
sudo mdadm --assemble --update=resync /dev/md0 /dev/sdb1 /dev/sdc1
Czekam na odbudowę teraz ...
AKTUALIZACJA (2 czerwca 2012 r.): Nie, wciąż zapasowy ...
AKTUALIZACJA (4 czerwca 2012 r.): PB poruszył problem, który przeoczyłem: być może /dev/sdc1
napotykałem błędy We / Wy . Nie zadałem sobie trudu, aby sprawdzić, /dev/sdc1
ponieważ wyglądało to dobrze i było zupełnie nowe, ale błędy we / wy pod koniec dysku są racjonalną możliwością.
Kupiłem te dyski twarde w sprzedaży, więc nie byłoby zaskoczeniem, że jeden z nich już zawodzi. Ponadto żadne z nich nie obsługuje SMART , więc nic dziwnego, że były tak tanie ...
Oto procedura odzyskiwania danych, którą właśnie wymyśliłam i wykonuję:
sudo mdadm /dev/md0 --fail /dev/sdb1
abym mógł wyjąć/dev/sdb1
.sudo mdadm /dev/md0 --remove /dev/sdb1
usunąć/dev/sdb1
z tablicy./dev/sdc1
jest zamontowany na/media/DtkBk
- Sformatuj
/dev/sdb1
jako ext4. - Zamontuj
/dev/sdb1
do/media/DtkBkTemp
. cd /media
pracować w tym obszarze.sudo chown deltik DtkBkTemp
aby dać mi (nazwę użytkownikadeltik
) prawa do partycji.- Wykonaj kopię wszystkich plików i katalogów:
sudo rsync -avzHXShP DtkBk/* DtkBkTemp
AKTUALIZACJA (06 czerwca 2012): Zrobiłem badblocks
niszczący test w trybie zapisu /dev/sdc
, wykonując następujące procedury:
sudo umount /media/DtkBk
aby umożliwić zburzenie tablicy.sudo mdadm --stop /dev/md0
aby zatrzymać tablicę.sudo badblocks -w -p 1 /dev/sdc -s -v
aby wyczyścić podejrzany dysk twardy, a następnie sprawdź błędy We / Wy. Jeśli występują błędy we / wy, nie jest to dobry znak. Mam nadzieję, że mogę uzyskać zwrot pieniędzy ...
Potwierdziłem teraz, że na żadnym dysku twardym nie występują problemy z wejściem / wyjściem .
Po tych wszystkich badaniach moje dwa oryginalne pytania wciąż pozostają bez odpowiedzi.
Moje pytania to:
- Dlaczego dysk zapasowy nie staje się aktywną synchronizacją?
- Jak mogę aktywować dysk zapasowy?
/dev/sdc1
w tym czasie, ponieważ/dev/sdc1
był czytany podczas/dev/sdb1
było pisane, a uszkodzone sektory/dev/sdb1
zostałyby w przejrzysty sposób odwzorowane podczas pisania.watch -n 60 cat /proc/mdstat
gdzie60
jest liczba sekund między odświeżeniami.Miałem dokładnie ten sam problem iw moim przypadku dowiedziałem się, że na aktywnym dysku RAID wystąpiły błędy odczytu podczas synchronizacji. Dlatego nowy dysk został zsynchronizowany nowszy i dlatego został oznaczony jako zapasowy.
Możesz sprawdzić swoje / var / log / messages i inne dzienniki systemowe pod kątem błędów. Ponadto dobrym pomysłem może być sprawdzenie stanu SMART dysku:
1) Uruchom krótki test:
2) Wyświetl wyniki testu:
W moim przypadku zwróciło to coś takiego:
Musiałem uruchomić dystrybucję na żywo i ręcznie skopiować dane z uszkodzonego dysku na nowy (obecnie „zapasowy”).
źródło
Miałem dokładnie ten sam problem i zawsze myślałem, że mój drugi dysk, który chciałem ponownie dodać do tablicy, zawierał błędy. Ale to był mój oryginalny dysk odczytał błędy.
Możesz to sprawdzić za pomocą
smartctl -t short /dev/sdX
i zobaczyć wyniki kilka minut później za pomocąsmartctl -l selftest /dev/sdX
. Dla mnie wyglądało to tak:Próbowałem je naprawić za pomocą tego podręcznika . To było zabawne :-). Wiem, że sprawdziłeś oba dyski pod kątem błędów, ale myślę, że twój problem polega na tym, że dysk, który wciąż znajduje się w tablicy md, ma błędy odczytu, więc dodanie drugiego dysku kończy się niepowodzeniem.
Aktualizacja
Powinieneś dodatkowo uruchomić a
smartctl -a /dev/sdX
Jeśli zobaczysz Current_Pending_Sector> 0 coś jest nie tak197 Current_Pending_Sector 0x0012 098 098 000 Old_age Always - 69
Dla mnie zdecydowanie problemem był fakt, że usunąłem dysk z rajdu tylko w celu przetestowania i nie można było wykonać ponownej synchronizacji z powodu błędów odczytu. Synchronizacja została przerwana do połowy. Gdy sprawdziłem mój dysk, który wciąż był w macierzy RAID, smartctl zgłosił problemy.
Mógłbym je naprawić za pomocą powyższego podręcznika i zobaczyłem zmniejszenie liczby oczekujących sektorów. Ale było ich wielu i jest to długa i nudna procedura, więc użyłem kopii zapasowej i przywróciłem dane na innym serwerze.
Ponieważ nie miałeś okazji użyć SMART, wydaje mi się, że twój autotest nie pokazał tych uszkodzonych sektorów.
Dla mnie jest to wyciągnięta lekcja: sprawdź dyski, zanim je usuniesz z tablicy.
źródło
Miałem podobny problem i naprawiłem go, zwiększając liczbę macierzy RAID z 1 do 2.
źródło
AKTUALIZACJA (24 maja 2015 r.): Po trzech latach zbadałem prawdziwą przyczynę degradacji macierzy RAID 1.
tl; dr: Jeden z dysków był zły i nie zauważyłem tego, ponieważ przeprowadziłem tylko test pełnej powierzchni na dobrym dysku.
Trzy lata temu nie pomyślałem o sprawdzaniu żadnych dzienników dotyczących problemów we / wy. Gdybym pomyślał o sprawdzeniu
/var/log/syslog
, zobaczyłbym coś takiego pomdadm
zrezygnowaniu z przebudowy tablicy:Aby uzyskać ten wynik w dzienniku, szukałem pierwszego problematycznego LBA (w moim przypadku 14381058) za pomocą tego polecenia:
Nic dziwnego, że się
md
poddałem! Nie może odbudować tablicy z uszkodzonego dysku.Nowa technologia (lepsza
smartmontools
kompatybilność sprzętowa?) Pozwoliła mi uzyskać informacje SMART z napędu, w tym pięć ostatnich błędów (z 1393 błędów do tej pory):Ahh… to by wystarczyło.
Teraz rozwiązałem to pytanie w trzech łatwych krokach:
AKTUALIZACJA (19 lipca 2015 r.): Dla każdego, kto jest ciekawy, w końcu zabrakło sektorów do mapowania:
źródło
W moim przypadku był to także zły dysk źródłowy. Chociaż wyglądało na to, że tak nie było (normalnie proces / proc / mdstat osiągnął poziom powyżej 99,9% - ale tak naprawdę nie powiódł się na poziomie 99,97%, co zbiegło się w czasie z zakończeniem regularnej synchronizacji). Musisz więc sprawdzić
dmesg(1)
dane wyjściowe - powie ci, czy są jakieś błędy odczytu.Możesz zobaczyć szczegóły mojej sprawy w błędzie Debiana # 767243 . W końcu udało mi się dokończyć synchronizację poprzez wymuszenie nadpisania kilku uszkodzonych sektorów na dysku źródłowym (które na szczęście nie były w moim przypadku wykorzystane, w przeciwnym razie nastąpiłaby utrata danych)
źródło
Możesz spróbować
zaktualizować dyski i zsynchronizować je.
źródło
/dev/sdb1
nadal nie staje się „aktywny” po przebudowaniu jako zapasowy.Nie jestem pewien, czy zadziała, ponieważ już
--add
edytujesz dysk, ale--re-add
wydaje się, że jest to opcja, której potrzebujesz.A może potrzebujesz
--grow
urządzenia do 2 aktywnych dyskówmdadm --grow -n 2
? Nie testowane, więc bądź ostrożny.źródło
sudo mdadm --grow -n 2
była jedną z pierwszych rzeczy, które zrobiłem, dlatego właśniesudo mdadm --detail /dev/md0
pokazuje dwa automaty. Przepraszamy, to nie działa.Poleciłbym usunięcie sdc1, wyzerowanie super bloku na sdc1, a następnie ponowne dodanie.
źródło