Testując dysk (HDD 2,5" 500 GB) komputera Dell OptiPlex 7480 AIO wykryłem, że od czasu do czasu (co ~ 2 godziny) coś się na nim zmienia, choć system, który wystartowałem (SystemRescue) z założenia nic nie zapisuje. Udało mi się ustalić, że te zmiany dotyczą głównej partycji Windows (około 96% całego dysku), która jest zaszyfrowana BitLockerem (z domyślnym hasłem). Ten komputer prawdopodobnie ma to szyfrowanie zrobione sprzętowo - czy jest możliwe, że sprzęt szyfrujący dokonuje zapisów na dysku, i jest to zachowanie prawidłowe, czy też świadczy to o wadliwym działaniu dysku, bądź komputera? Zapewne sprawdzanie, czy zdarzają się zmiany na pozostałych 4% dysku (nie wykryłem takich przez kilka godzin testów) ułatwiłoby rozstrzygnięcie tej kwestii, ale jeśli te zmiany występują losowo, to w te 4% mogą trafiać raz na parę dni, więc ich wykrycie wymagałoby długiego testowania. Aha: na tym komputerze Windows nie startują, więc coś jest nie w porządku - potrzebuję ustalić, co.
To zachowanie jest niezwykle ciekawe, zwłaszcza w kontekście faktu, że system Windows na tym komputerze nie uruchamia się. Skoro odpalasz SystemRescue (czysty Linux) i z założenia nic nie zapisujesz, regularne zmiany w strukturze danych (co ~2 godziny) naprowadzają na kilka konkretnych tropów.
Samo sprzętowe szyfrowanie (SED / OPAL) nie zmienia losowo zawartości sektorów użytkownika bez wyraźnego polecenia zapisu (WRITE) ze strony kontrolera.
Oto najbardziej prawdopodobne przyczyny tego zjawiska:
1. Pozorny zapis – "niestabilny odczyt" (Najbardziej prawdopodobne)
Skoro Windows nie startuje, dysk HDD może być uszkodzony. Jeśli weryfikujesz "zmiany" na dysku poprzez cykliczne liczenie sum kontrolnych (np. MD5/SHA256) całej partycji lub sektorów podczas ich ciągłego odczytu, wcale nie musi dochodzić do zapisu.
Jak to działa: Dysk posiada sektory niestabilne (tzw. Pending Sectors). Przy każdej próbie odczytu takiego sektora, zaawansowane algorytmy korekcji błędów (ECC) w firmware dysku mogą zwrócić inną zawartość (część bitów zostanie losowo przekłamana) lub po przekroczeniu czasu oczekiwania (timeout) kontroler zwraca same zera.
Skutek: Suma kontrolna bloku danych się zmienia, co wygląda jakby ktoś zmodyfikował dysk, podczas gdy fizycznie uszkodzony nośnik po prostu za każdym razem zwraca co innego.
2. Metadane Intel RST (RAID On w BIOSie)
Komputery Dell OptiPlex mają domyślnie ustawiony kontroler SATA w tryb RAID On zamiast AHCI (nawet z jednym dyskiem), korzystając z technologii Intel Rapid Storage Technology (RST).
Jak to działa: Linux po zbootowaniu może wykryć strukturę Intel Matrix RAID (IMSM) przez mechanizmy takie jak mdadm lub dmraid.
Skutek: Jeśli Linux rozpozna dysk jako "zdegradowaną macierz jedno-dyskową", może cyklicznie próbować oznaczać status dysku w metadanych RAID lub zapisywać logi błędów bezpośrednio w sektorach zarezerwowanych dla kontrolera (często na samym początku lub końcu przestrzeni dyskowej).
3. Aktywność udisks2 lub automatyczne montowanie partycji wymiany (Swap)
Choć SystemRescue z zasady nie dotyka dysków bez wiedzy użytkownika, nowoczesne demony systemowe (np. udisks2 zarządzający pamięciami masowymi) potrafią co jakiś czas "odpytywać" partycje o ich status.
Jeśli na dysku znajduje się stara, linuksowa partycja wymiany (Swap) lub system plików, który Linux spróbował zamontować w trybie Read-Write (np. jakaś ukryta partycja diagnostyczna Della), może dochodzić do automatycznej aktualizacji metadanych (np. znacznika czasu ostatniego montowania – atime).
4. Wewnętrzny firmware dysku (Background Media Scan)
Większość nowoczesnych dysków HDD posiada wbudowane w firmware mechanizmy autonomicznego dbania o spójność danych (np. Background Media Scan). Jeśli firmware dysku wykryje podczas bezczynności słaby sektor, może podjąć próbę jego remapowania (relokacji do puli rezerwowej) lub odświeżenia sygnału magnetycznego. Podczas tego procesu dane są fizycznie nadpisywane w nowym miejscu.
Jak to zweryfikować?
Sprawdź SMART dysku: Uruchom w konsoli SystemRescue polecenie:
Bash
smartctl -a /dev/sdX
(gdzie sdX to Twój dysk). Zwróć szczególną uwagę na parametry: Current Pending Sector Count, Offline Uncorrectable oraz Reallocated Sectors Count. Jeśli wartości są niezerowe, masz winnego – dysk po prostu "zdycha" i fałszuje odczyty.
Sprawdź, czy coś faktycznie wysyła komendy zapisu: Zamiast analizatora SATA, użyj wbudowanego w Linuksa mechanizmu blktrace. Pozwala on precyzyjnie monitorować każdą niskopoziomową operację (I/O) na blokach:
Bash
blktrace -d /dev/sdX -o - | blkparse -i -
Zostaw to uruchomione na 2 godziny. Jeśli w logu nie pojawi się ani jedna operacja oznaczona jako W (Write), oznacza to, że system operacyjny nic nie zapisuje, a zmiany wynikają wyłącznie z problemów sprzętowych dysku (błędów odczytu).