MegaRAID w stacji roboczej i poszukiwanie SMARTa
Kolejny artykuł o zabawie z moją stacją roboczą (Dell T5500) - tym razem w roli głównej kontroler RAID firmy LSI - MegaRAID SAS6IR (Windowsy driver widzi to jako Karta LSI, seria SAS 3000, 8 portów z 1068E). A konkretniej podejrzenie awarii jednego z dysków w macierzy.
Ale po kolei. Mój setup wykorzystujący sprzętowy RAID to proste mirrorowanie dwóch dysków SAS od Seagate’a (były w zestawie z komputerem i o dziwo jeszcze żyją) o przyjemnej prędkości obrotowej 15.7k RPM. Dla windowsa jest prezentowany wirtualny dysk i tyle. Nie pamiętam dokładnie setupu ale widziałem maszynę Della na której WinServer widział składniki macierzy i dyski logiczne - tu nie ma to miejsca. Podczas któregoś polowania na sterowniki doinstalowałem sobie _MegaRAID Storage Manager_a czyli konsolę administracyjną karty PCI która zarządza dyskami - dość wygodna żeby nie rebootować maszyny do BIOSu kontrolera.
Aż pewnego pięknego dnia zaczął wyskakiwać komunikat o wypadnięciu dysku z macierzy. W logach pojawiał się z datą “2000-01-01 12:00:00”. Co ciekawe eventy o pomyślnym logowaniu do konsoli mają poprawną datę. W każdym razie okazało się że leci rebuild. Po czym drugi raz. I trzeci.
Wtedy postanowiłem zbadać stan SMARTa dysków (niektórzy mogą się domyślić że nie ma to sensu, ale o tym potem). Czas pobrać pakiet smarrtmontools. Bash na Windowsa był pierwszym strzałem. Pudło bo to kontener który nie ma bindowań do devfs (w sumie nie ma za bardzo jak mieć). Kolejna próba to build smartctl na Windowsa. Nawet wiki projektu potwierdza że się powinno dać - przez CSMI. Znowu pudło bo support megaraida wyparował z wersji windowsowej. Próby enumerowania ukrytych urządzeń przez cygwina też upadły (smartctl -scan).
Czas zatem na najlepszego przyjaciela użytkownika Gentoo i nie tylko - SystemRescueCD. I tu kolejna porażka - driver megaraida w smartctl wymaga podania ID kontrolera (ale nie SCSI tylko samego megaraida). Wiki Thomas-Krenna daje sporo informacji ale nie mogę się natknąć na szukane ID (bruteforcowy for-loop sugeruje że może jednak go tam nie ma…) Jedyne co mam to zlistowane LUNy fizycznych urządzeń od lsscsi:
[1:0:0:0] disk ATA INTEL SSDSA2BW16 0365 /dev/sda
[3:0:0:0] disk ATA WDC WD1002FBYS-0 NA01 /dev/sdb
[4:0:0:0] disk ATA KINGSTON SA400S3 71E0 /dev/sdc
[6:0:0:0] disk Generic STORAGE DEVICE 1532 /dev/sdd
[7:0:0:0] disk Samsung Flash Drive 1100 /dev/sde
[8:0:0:0] disk DYMO PnP 1.00 /dev/sdf
[9:0:0:0] disk SEAGATE ST3300657SS ES02 -
[9:0:1:0] disk SEAGATE ST3300657SS ES02 -
[9:1:0:0] disk Dell VIRTUAL DISK 1028 /dev/sdg
Wtedy dotarło do mnie że może brakuje mi jakiegoś modułu jądra. Znalazłem też wzmiankę o narzędziu megacli. Które teraz nazywa się StorCLI. Tym sposobem na gentoo odpaliłem stronę z Wiki Debiana. Po potwierdzeniu przez lspci okazało się że szukam mptsas. Kilka modprobów później mpt-status ożył.
root@sysresccd % lspci | grep SAS
23:00.0 SCSI storage controller: LSI Logic / Symbios Logic SAS1068E PCI-Express Fusion-MPT SAS (rev 08)
root@sysresccd % modprobe mptsas
root@sysresccd % storcli show | grep Number
Number of Controllers = 0
root@sysresccd % storcli show | grep Number
root@sysresccd % lsiutil
zsh: command not found: lsiutil
root@sysresccd % mpt-status
open /dev/mptctl: No such file or directory
Try: mknod /dev/mptctl c 10 220
Make sure mptctl is loaded into the kernel
root@sysresccd % mknod /dev/mptctl c 10 220
root@sysresccd % mpt-status
open /dev/mptctl: No such device
Are you sure your controller is supported by mptlinux?
Make sure mptctl is loaded into the kernel
root@sysresccd % ls /dev/mptctl
/dev/mptctl
root@sysresccd % mpt-status
open /dev/mptctl: No such device
Are you sure your controller is supported by mptlinux?
Make sure mptctl is loaded into the kernel
root@sysresccd % mknod /dev/mptctl c 10 220
mknod: /dev/mptctl: File exists
root@sysresccd % modprobe mptctl
root@sysresccd % mpt-status
ioc0 vol_id 0 type IM, 2 phy, 278 GB, state DEGRADED, flags ENABLED RESYNC_IN_PROGRESS
ioc0 phy 0 scsi_id 8 SEAGATE ST3300657SS ES02, 279 GB, state ONLINE, flags NONE
ioc0 phy 1 scsi_id 1 SEAGATE ST3300657SS ES02, 279 GB, state ONLINE, flags OUT_OF_SYNC
root@sysresccd %
Czas na narzędzie do zarządzania - lsiutil. Ciężkie do znalezienia ale są dobrzy ludzie którzy mirrorują na blogach. Okazuje się że to narzędzie to koszmarek podobny do fdiska z milionem menu, ale chociaż działa.
Szczęśliwy człowiek wraca do smartctla a tam… przypomina sobie że dyski SAS nie mają SMARTa z dysków [S]ATA. <facepalm />
LSI Logic MPT Configuration Utility, Version 1.57, April 28, 2008
1 MPT Port found
Port Name Chip Vendor/Type/Rev MPT Rev Firmware Rev IOC
1. /proc/mpt/ioc0 LSI Logic SAS1068E B3 105 00192f00 0
Diagnostics menu, select an option: [1-99 or e/p/w or 0 to quit] 12
Adapter Phy 0: Link Up, No Errors
Adapter Phy 1: Link Up
Invalid DWord Count 1,413,606
Running Disparity Error Count 1,372,067
Loss of DWord Synch Count 2
Phy Reset Problem Count 0
Adapter Phy 2: Link Down, No Errors
Adapter Phy 3: Link Down, No Errors
Adapter Phy 4: Link Down, No Errors
Adapter Phy 5: Link Down, No Errors
Adapter Phy 6: Link Down, No Errors
Adapter Phy 7: Link Down, No Errors
Main menu, select an option: [1-99 or e/p/w or 0 to quit] l
1. Identify firmware, BIOS, and/or FCode
2. Download firmware (update the FLASH)
4. Download/erase BIOS and/or FCode (update the FLASH)
8. Scan for devices
10. Change IOC settings (interrupt coalescing)
13. Change SAS IO Unit settings
16. Display attached devices
20. Diagnostics
21. RAID actions
22. Reset bus
23. Reset target
42. Display operating system names for devices
45. Concatenate SAS firmware and NVDATA files
60. Show non-default settings
61. Restore default settings
69. Show board manufacturing information
97. Reset SAS link, HARD RESET
98. Reset SAS link
99. Reset port
e Enable expert mode in menus
p Enable paged mode
w Enable logging
Kilka eksperymentów z diagnostyką dostępną w lsiutilu wykazuje że dysk (bo failował tylko jeden) w zasadzie żyje i nie udało mi się złapać badsectorów. Cóż, przy kolejnej awarii posiedzę w menu diagnostyki dłużej albo przepnę do maszyny z kontrolerem SAS który pracuje w trybie JBOD i wykonam destrukcyjny test powierzchni - z wynikami które rozumiem 🙂
Na sam koniec jeszcze mój mirror lsiutil’a na wszelki wypadek.