Pewnego razu na serwerze zaczął się pojawiać taki oto komunikat:
WARNING: mismatch_cnt is not 0 on /dev/md1
Ostrzeżenie to pojawiało się przy okazji cotygodniowo uruchamianego zadania z crona: /etc/cron.weekly/99-raid-check
Prawdopodobnie nie jest nic nadzwyczajnego i czasem takie rzeczy zdarzają się na działającym RAID1. Przy zapisywaniu danych czasem może się tak zdarzyć, że niektóre dane nie zostaną zapisane na wszystkich dyskach tworzących macierz RAID1. Szczegółowy opis tego problemu i rozwiązanie znalazłem tutaj (po angielsku).
Używając komendy
cat /sys/block/md1/md/mismatch_cnt
wyświetlona zostanie informacja ile bloków akurat nie zostało zapisanych na wszystkich dyskach.
Następnie należy przejść do naprawy raida:
echo repair >/sys/block/md1/md/sync_action
Proces może długo trwać, a podejrzeć go można wpisując:
watch cat /proc/mdstat
Niezębne jest również przeprowadzenie procesu sprawdzenia. Dopiero po jego zakończeniu wartość mismatch_cnt zostanie wyzerowana.
echo check >/sys/block/md1/md/sync_action watch cat /proc/mdstat
Ponadto w dobrym tonie jest też dokonać pełnego testu SMART:
smartctl -t long /dev/md1
Wyniki tego testu można zobaczyć wpisując:
smartctl -a /dev/md1
Jeśli po przeprowadzeniu takich operacji, komunikat przestanie się pojawiać to można uznać problem za rozwiązany 😉