Resetujący się serwer i bady na dysku twardym

Artykuł przedstawia historię, która ciągnęła się przez kilka miesięcy i dopiero nie dawno temu znalazłem przyczynę wszystkich dolegliwości. Zapraszam do czytania.

W domu mam serwer, który zarządza całą siecią. Pierwszy dysk, na którym działał Debian padł ze starości. Po wymianie postanowiłem spróbować czegoś nowego i zainstalowałem Ubuntu Server. Wszystko skonfigurowane, chodził ładnie przez kilka tygodni no i w pewnym momencie się zaczęło.

Off lub restart

Jakie były objawy. Serwer ni z tego ni z owego wyłączał się lub resetował o dowolnej porze dnia i przy dowolnej operacji. Niekiedy podczas kopiowania plików, niekiedy przy instalowaniu poprawek, niekiedy jak nic nie robił. Widząc te objawy nie czekałem na cud, tylko zacząłem ostro działać.

Po pierwsze zasilacz

Pierwsze podejrzenie padło na zasilacz. Może już moja 400 watówka jest wyrobiona, pasuje coś innego znaleźć. Pożyczyłem zasilacz o mocy nie bagatela 800 W i… to samo. Dałem swój zasilacz do testów obciążeniowych, przeszedł on je pomyślnie. Jedna rzecz z głowy.

RAM

Druga na etapie podejrzeń była pamięć RAM. Pobrałem więc program memtest, uruchomiałem, przeskanowałem kości razem i osobno i na żadnej z nich nie było błędów. Czyli pamięć RAM również odpada.

Chwila oddechu

Po wykonaniu tych testów sytuacja chwilowo się uspokoiła. Więc ja zadowolony, że problem zniknął (samo się nigdy nie naprawi) aż do momentu ponownego nieuzasadnionego restartu. No dobra, może coś ze systemem jest nie tak. Przeglądam logi, nic nie wykazują. Niektóre pliki nawet zacząłem drukować, aby mi lepiej się sprawdzało. Totalnie nic w nich nie widać. Żadnych podejrzanych akcji.

To może coś się przegrzewa? To również odpadało, ponieważ wykresy w muninie nie były alarmujące, ba, nie było nawet powodów do niepokoju.

Powróciłem znowu na warstwę sprzętową. Wyjąłem procesor z podstawki, zmieniłem karty sieciowe, sprawdzałem wszystkie kable i nic. Praktycznie totalnie zrezygnowany postanowiłem jeszcze sprawdzić jedną a mianowicie ostatnią rzecz, która mi została… dysk twardy.

MHDD

Pierwsze co, to pobrałem MHDD i uruchomiłem sprawdzanie dysku pod kątem błędnych sektorów. I co się okazało? Na „wysokości” około 7 GB od końca dysku pojawiły się bady. Nie było ich wiele, raptem kilka sztuk, ale już są. I teraz co zrobić. Reinstalować systemu mi się nie uśmiecha. ClonaZilla również nie pomoże, ponieważ jak wykryje bady to przerwie cały proces. Wiem! Utworzę martwą partycję.

GParted and dead partition

Skoro bady zaczynają się na 7 GB od końca dysku a reszta jest sprawna, więc utworzę martwą partycję o rozmiarze 10 GB od końca dysku, oznaczę ją jako niesformatowaną i przy okazji pomedytuję, aby system wstał po tych zabiegach. I tak też zrobiłem. Odpaliłem Gparted, podzieliłem jedną partycję na dwie, druga nie formatowana, zatwierdziłem zmiany i… system wstał. Czyli jest dobrze. Do tej pory system nie zresetował ani nie wyłączył mi się ani razu.

Oczywiście zdaje sobie sprawę z tego, że użytkowanie takiego dysku to jazda bez trzymanki i prędzej czy później on padnie, ale chcę go wykorzystać do ostatnich dni. Obraz systemu leży już gotowy na drugim, więc w razie awarii tylko przepiąć dwa kable i serwer znowu żyje.

Dlaczego tak się działo?

Wysoce prawdopodobne, że system chciał uzyskać dostęp do uszkodzonego sektora i na skutek błędu po prostu wykonywał restart lub się wyłączał. Żadne montowanie partycji tylko do odczytu niestety nie wchodzi tutaj w grę, ponieważ był to dysk systemowy.
Jakie mogą być jeszcze objawy świadczące o tym, że dysk jest uszkodzony? Podczas uruchamiania systemu mogą pojawiać się takie komunikaty:

68489.756311] ata3.00: status: { DRDY ERR }
[68489.756314] ata3.00: error: { UNC }
[68489.951583] ata3.00: configured for UDMA/133
[68489.951604] ata3: EH complete
[68492.671124] ata3.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
[68492.671133] ata3.00: BMDMA stat 0x24
[68492.671140] ata3.00: cmd c8/00:08:55:e8:8d/00:00:00:00:00/e2 tag 0 dma 4096 in
[68492.671142] res 51/40:00:56:e8:8d/00:00:00:00:00/02 Emask 0x9 (media error)
[68492.671145] ata3.00: status: { DRDY ERR }
[68492.671148] ata3.00: error: { UNC }
[68492.899657] ata3.00: configured for UDMA/133
[68492.899678] ata3: EH complete
[68495.610841] ata3.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
[68495.610851] ata3.00: BMDMA stat 0x24
[68495.610857] ata3.00: cmd c8/00:08:55:e8:8d/00:00:00:00:00/e2 tag 0 dma 4096 in
[68495.610859] res 51/40:00:56:e8:8d/00:00:00:00:00/02 Emask 0x9 (media error)
[68495.610863] ata3.00: status: { DRDY ERR }
[68495.610865] ata3.00: error: { UNC }
[68495.799599] ata3.00: configured for UDMA/133
[68495.799620] sd 2:0:0:0: [sda] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE,SUGGEST_OK
[68495.799626] sd 2:0:0:0: [sda] Sense Key : Medium Error [current] [descriptor]
[68495.799631] Descriptor sense data with sense descriptors (in hex):
[68495.799633] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
[68495.799643] 02 8d e8 56 
[68495.799647] sd 2:0:0:0: [sda] Add. Sense: Unrecovered read error - auto reallocate failed
[68495.799653] end_request: I/O error, dev sda, sector 42854486
[68495.799675] ata3: EH complete
[68495.800096] sd 2:0:0:0: [sda] 625142448 512-byte hardware sectors (320073 MB)
[68495.817023] sd 2:0:0:0: [sda] Write Protect is off
[68495.817030] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00
[68495.819042] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[68495.826120] sd 2:0:0:0: [sda] 625142448 512-byte hardware sectors (320073 MB)

Jeżeli takie coś będzie w logach, to już jest to sytuacja podbramkowa, ponieważ w pewnym momencie system może nam się już wcale nie uruchomić.

Jaka nauka z tej historii?

Jeżeli pojawi się problem, to pod uwagę należy brać wszystkie możliwe przyczyny, nawet te, po których możemy się nie spodziewać takiego błędu. Ja byłem święcie przekonany, że czeka mnie albo kupno nowych pamięci ram albo zasilacza, a tu jednak wyszło na to, ze dysk.

Teoria nie równa się praktyce

Moje ulubione powiedzenie. Znam paru takich typów, co są oczytani we wszystkich książkach, dokumentacje znają na pamięć, a jak im przyjdzie rozwiązać bardziej złożony problem, to „w książce tego nie było”. Niestety, ale książki i dokumentacje mają być elementem dodatkowym, a nie filarem. Najważniejsze jest samodzielne myślenie oraz umiejętność wykorzystania zdobytej wiedzy w praktyce. Tego życzę przyszłym informatykom.