Dyski nie są niestety wieczne i wcześniej czy później każdy dysk pada. Poniżej opiszę jak za pomocą narzędzi CLI (megacli) pod Linuksem (w tym przypadku Debian 10) obsłużyć wymianę dysku.
Samo narzędzie megacli oraz megaclisas-status można pobrać i zainstalować ze strony https://hwraid.le-vert.net/wiki/DebianPackages. Jest tam również dokładny opis jak to zrobić.
Jeżeli któryś dysk w macierzy ulegnie uszkodzeniu to zostanie to zaraportowane m.in. poprzez OpenManage Server Administrator (OMSA) – myślę, że większość administratorów serwerów Dell korzysta z tego narzędzia. Można również używać wtyczki check_raid w połączeniu z Icinga/Nagios. W taki czy inny sposób powinniśmy monitorować sprawność dysków.
Gdy dostaniemy już informację o uszkodzonym dysku – w jakikolwiek sposób to mamy również informację o ID slotu dysku i ID obudowy/półki. To będzie niezbędne to dalszych prac. Zawsze można te dane uzyskać uruchamiając megaclisas-status. Możliwych jest kilka sytuacji. Jeżeli dysk jest uszkodzony, ale nadal widoczny w systemie to powinniśmy go „wyłączyć” z użytkowania i przygotować do fizycznej wymiary (samą wymianę możemy oczywiście zrobić na gorąco – w czasie działania serwera). Zakładając przykładowo, że ID obudowy to 32 a ID slotu to 2 powinniśmy wykonać takie operacje:
# megacli -PDOffline -PhysDrv [32:2] -a0 # megacli -PDMarkMissing -PhysDrv [32:2] -a0 # megacli -PdPrpRmv -PhysDrv [32:2] -a0
Co oznacza kolejno m.w. przełącz na offline, oznacz jako brakujący, przygotuj do wyjęcia. Po wykonaniu tych komend megaslisas-status powinien pokazać m.w. taki wynik (znaki xxx zastąpiły model i nr seryjny dysku):
# megaclisas-status -- Unconfigured Disk information -- -- ID | Type | Drive Model | Size | Status | Speed | Temp | Slot ID | LSI ID | Path c0uXpY | HDD | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | 5.457 TB | Unconfigured(good), Spun down | 6.0Gb/s | N/A | [32:2] | 2 | N/A
Teraz możemy fizycznie wyjąć ten dysk (żadna dioda w tej kieszeni nie powinna się świecić, ale przede wszystkim należy dokładnie upewnić się, że wyjmujemy właściwy dysk). W to miejsce wkładamy nowy dysk (ewentualnie wcześniej wkręcamy z ramki stary dysk i wkręcamy nowy). Jeśli wszystko poszło dobrze to dysk powinien się automatycznie wykryć i macierz po chwili powinna zacząć sama się odbudowywać:
# megaclisas-status -- Disk information -- -- ID | Type | Drive Model | Size | Status | Speed | Temp | Slot ID | LSI ID c0u1p2 | HDD | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | 7.276 TB | Rebuilding (0%) | 6.0Gb/s | N/A | [32:2] | 2
Czasami jednak potrzebna jest manualna zmiana statusu dysku i rozpoczęcie procesu odbudowy raidu.
# megacli -PDMakeGood -PhysDrv[32:2] -a0 # megacli -PDRbld -Start -PhysDrv [32:2] -a0
W niektórych sytuacjach dysk ulega takiemu uszkodzeniu, że system (a właściwie kontroler raid) przestaje go widzieć. Wtedy po prostu wymieniamy dysk. Jeżeli macierz nie zacznie się automatycznie sama odbudowywać, należy spróbować wykonać 2 powyższe polecenia, ale czasami trzeba zrobić jeszcze więcej (przykładowy wynik):
# megacli -PDGetMissing -aALL Adapter 0 - Missing Physical drives No. Array Row Size Expected 0 0 3 3814697 MB # megacli -PdReplaceMissing -PhysDrv [32:2] -Array0 -row3 -a0 Adapter: 0: Missing PD at Array 0, Row 3 is replaced. # megacli -PDRbld -Start -PhysDrv [32:2] -a0
Spotkałem się również przynajmniej raz z taką sytuacją, że nie udało mi się za pomocą megacli doprowadzić do rozpoczęcia procesu odbudowy – ciągle coś nie pasowało. Konieczny był restart serwera i wtedy wszystko wróciło do normy.
Po skutecznej wymianie dysku należy tylko cierpliwie poczekać. Przy dyskach o dużej pojemności (kilka, kilkanaście TB) i raidach 5 lub 6 (50 czy 60) taka odbudowa potrafi trwać nawet kilka dni! Pozostaje mieć wtedy nadzieję, że nie padnie w tym czasie inny dysk – albo mieć raid takiego poziomu, że utrata 2 dysków nie powoduje utraty danych. A to niemal zawsze na końcu sprowadza się do kosztów 🙂