Chcę przerwać trwającą operację resynchronizacji podczas nalotu na oprogramowanie wyciskania Debiana. (Jest to regularna zaplanowana ponowna synchronizacja porównania. W takim przypadku tablica rajdowa jest nadal czysta. Nie myl tego z odbudową po awarii dysku i jego wymianie).
Jak zatrzymać tę zaplanowaną operację ponownej synchronizacji podczas jej działania? Kolejna tablica rajdowa jest „w trakcie resynchronizacji”, ponieważ wszystkie są sprawdzane tego samego dnia (w niedzielę wieczorem) jeden po drugim. Chcę całkowitego zatrzymania tej niedzielnej nocy ponownej synchronizacji.
[Edytuj: sudo kill -9 1010
nie zatrzymuje go, 1010 to PID procesu md2_resync]
Chciałbym również wiedzieć, w jaki sposób mogę kontrolować odstępy między ponownymi synchronizacjami i pozostały czas do następnego.
[Edit2: To, co teraz zrobiłem, to spowolnienie resynchronizacji, aby nie przeszkadzało:
sudo sysctl -w dev.raid.speed_limit_max=1000
pobrane z http://www.cyberciti.biz/tips/linux-raid-increase-resync-rebuild-speed.html
W nocy przywrócę wysoką wartość, aby ponowna synchronizacja mogła się zakończyć.
To obejście jest odpowiednie w większości sytuacji, niemniej interesujące byłoby wiedzieć, czy to, o co prosiłem, jest możliwe. Na przykład wydaje się, że nie jest możliwe wyhodowanie tablicy, gdy jest ona resynchronizowana lub resynchronizowana „w toku”]
Odpowiedzi:
Jeśli twoja tablica jest
md0
wtedyecho "idle" > /sys/block/md0/md/sync_action
http://www.mjmwired.net/kernel/Documentation/md.txt#477
źródło
/sys/block/md0/md/sync_min’. To reset this write
0 do tego pliku.Chciałem zwolnić lub wstrzymać proces resynchronizacji, aby zapisać niektóre operacje we / wy, aby wykonać kopię zapasową niektórych rzeczy na innym komputerze. Ten wątek pomógł mi, ale znalazłem inne rozwiązanie.
Na moim Debianie Lennym:
echo "idle" > /sys/block/md0/md/sync_action
działa, ale proces resynchronizacji jest natychmiast ponownie uruchamiany.checkarray -x --all
: działa, ale ten sam wynik: proces ponownej synchronizacji jest natychmiast ponownie uruchamiany.Więc używam tej metody:
echo 0 > /proc/sys/dev/raid/speed_limit_max
źródło
speed_limit_min
na 0, aby całkowicie wstrzymać resynchronizację.Możesz anulować trwającą resynchronizację tablicy, używając następującej sekwencji poleceń (jako root):
Pamiętaj, że może to pozostawić tablicę w niespójnym stanie . Nie rób tego, chyba że masz pewność, że tablica jest w dobrej formie, i ponownie uruchom synchronizację później.
(Kredyt, w którym należy się kredyt: znalazł to zaklęcie w tym wątku .)
źródło
Jak wspomniano powyżej, w systemach Debian / Ubuntu
/etc/cron.d/mdadm
skrypt wywołuje/usr/share/mdadm/checkarray
skrypt w celu zainicjowania kontroli ponownej synchronizacji.Ten skrypt ma opcję anulowania wszystkich uruchomionych kontroli synchronizacji:
źródło
Nie jestem pewien, jak anulować ponowną synchronizację, ale harmonogram jest kontrolowany przez
/etc/cron.d/mdadm
systemy Debian / Ubuntu.Skrypt
/usr/share/mdadm/checkarray
może rzucić nieco światła na drugą część twojego pytania, ponieważ tak nazywa się cron.źródło
Jeśli urządzeniem md jest md0 i chcesz zatrzymać ponowne zapisywanie, napisz:
źródło
Możliwe rozwiązanie tego problemu zajęło trochę czasu, aby zapoznać się ze szczegółami.
Mój system: CentOS 6.5 mdadm v3.3.2
Stałe kontrole co tydzień, chciałem zatrzymać jedną z nich, RAID jest czysty, kontrola została wywołana za pomocą skryptu /etc/cron.d/raid-check, który jest uruchamiany co tydzień.
Aby anulować czek, użyj funkcji --misc --action. Zakładając, że urządzeniem RAID jest / dev / md0 i jest to tylko cotygodniowa kontrola spójności, a nie awaria urządzenia, jako root:
Podobnie, aby rozpocząć sprawdzanie spójności
źródło
Nie działa, gdy / sys / block / md * / md / sync współdziała jest „resynchronizowany” (w przeciwieństwie do tego, że jego stan to „sprawdź” lub „napraw”. Możesz echo „bezczynności” w pliku synchronizacji, jednak nie wpływa to na . postęp ten plik jądra dokumentacja tu błędnie twierdzi, że to będzie działać, ale nigdy nie pracował dla mnie:
źródło
Wiem, że to 4-letni post, ale możesz to również zrobić (zakładając, że md0 jest tablicą, a sdb4 jako „dyskiem” resynchronizującym):
To polecenie udaje, że sdb4 jest dyskiem uszkodzonym i dlatego kopie go z tablicy, zatrzymując resynchronizację. Jeśli podczas akcji resync-stop nie wystąpił błąd, polecenie to usunie także sdb4 z tablicy md0. Jeśli wystąpił błąd, dysk pozostaje w stanie awarii, ale pozostaje w tablicy.
Jeśli dysk ulegnie awarii w dowolnym miejscu
mdadm
, ustawiono go logicznie jako awarię . Jeśli tablica była czysta (nie zdegradowana), dysk pozostaje spójny i można go bez obaw dodawać ponownie --add << dysk >> --assume-clean. Jeśli po odłączeniu pojawiła się jakakolwiek akcja (np. Resynchronizacja, odbudowa, a nawet zapis), to --assume-clean prawdopodobnie zawiedzie i natychmiast rozpocznie akcję resynchronizacji.Zmiana
raid.speed_limit_min
iraid.speed_limit_max
jest w pewnym sensie złym pomysłem, ponieważ wpływa nie tylko na szybkość resynchronizacji / odbudowy, ale także na normalne prędkości działania i prawdopodobnie stracisz dużo wydajności uzyskanej dzięki zastosowaniu macierzy RAID.źródło
--assume-clean
w systemie na żywo, a na pozostałym dysku zdarzyły się jakieś zapisy , poprosisz o kłopoty.