Preludium:
Jestem małpą kodową, która coraz częściej przejmuje obowiązki SysAdmin w mojej małej firmie. Mój kod jest naszym produktem i coraz częściej udostępniamy tę samą aplikację co SaaS.
Około 18 miesięcy temu przeniosłem nasze serwery z centralnego dostawcy hostingu premium na pchacz szafy typu barebone w centrum danych IV poziomu. (Dosłownie po drugiej stronie ulicy.) Ten pomysł robi o wiele więcej sami - na przykład sieci, przechowywania i monitorowania.
W ramach wielkiego posunięcia, aby zastąpić naszą dzierżawioną bezpośrednio podłączoną pamięć masową od firmy hostingowej, zbudowałem dwuwęzłowy NAS o pojemności 9 TB w oparciu o podwozia SuperMicro, 3ware karty RAID, Ubuntu 10.04, dwa tuziny dysków SATA, DRBD i. Wszystko zostało pięknie udokumentowane w trzech postach na blogu: Tworzenie i testowanie nowego NAS 9 TB SATA RAID10 NFSv4 NAS: część I , część II i część III .
Konfigurujemy również system monitorowania Cacit. Ostatnio dodajemy coraz więcej punktów danych, takich jak wartości SMART.
Nie mogłem zrobić to wszystko bez niesamowite boffins w ServerFault . To było zabawne i edukacyjne doświadczenie. Mój szef jest szczęśliwy (zaoszczędziliśmy mnóstwo ładunków $$$) , nasi klienci są zadowoleni (koszty magazynowania spadły) , jestem szczęśliwy (zabawa, zabawa, zabawa) .
Do wczoraj.
Awaria i powrót do zdrowia:
Jakiś czas po obiedzie zaczęliśmy otrzymywać raporty o powolnej wydajności z naszej aplikacji, CMS mediów strumieniowych na żądanie. Mniej więcej w tym samym czasie nasz system monitorowania kaktusów wysłał lawinę e-maili. Jednym z bardziej wymownych alarmów był wykres iostatu.
Wydajność uległa tak znacznemu pogorszeniu, że Pingdom zaczął wysyłać powiadomienia „serwer nie działa”. Całkowite obciążenie było umiarkowane, nie wystąpił wzrost natężenia ruchu.
Po zalogowaniu się na serwerach aplikacji, klientach NFS NAS, potwierdziłem, że prawie wszystko przeżywało bardzo nieregularne i niesamowicie długie czasy oczekiwania na IO. A kiedy wskoczyłem na sam główny węzeł NAS, te same opóźnienia były widoczne podczas próby poruszania się po systemie plików tablicy problemów.
Czas na awarię, poszło dobrze. W ciągu 20 minut wszystko potwierdziło, że wszystko działa poprawnie.
Sekcja zwłok:
Po wszystkich awariach systemu wykonuję sekcję zwłok, aby ustalić przyczynę awarii. Pierwszą rzeczą, którą zrobiłem, było ssh z powrotem do pudełka i zacznij przeglądać logi. To było całkowicie offline. Czas na wycieczkę do centrum danych. Resetowanie sprzętu, tworzenie kopii zapasowych i uruchamianie.
W /var/syslog
znalazłem ten przerażająco wyglądający wpis:
Nov 15 06:49:44 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_00], 6 Currently unreadable (pending) sectors
Nov 15 06:49:44 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_07], SMART Prefailure Attribute: 1 Raw_Read_Error_Rate changed from 171 to 170
Nov 15 06:49:45 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_10], 16 Currently unreadable (pending) sectors
Nov 15 06:49:45 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_10], 4 Offline uncorrectable sectors
Nov 15 06:49:45 umbilo smartd[2827]: Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
Nov 15 06:49:45 umbilo smartd[2827]: # 1 Short offline Completed: read failure 90% 6576 3421766910
Nov 15 06:49:45 umbilo smartd[2827]: # 2 Short offline Completed: read failure 90% 6087 3421766910
Nov 15 06:49:45 umbilo smartd[2827]: # 3 Short offline Completed: read failure 10% 5901 656821791
Nov 15 06:49:45 umbilo smartd[2827]: # 4 Short offline Completed: read failure 90% 5818 651637856
Nov 15 06:49:45 umbilo smartd[2827]:
Poszedłem więc sprawdzić wykresy kaktusów dla dysków w tablicy. Widzimy tutaj, że tak, dysk 7 wymyka się, tak jak mówi syslog. Ale widzimy również, że Err SMART Read ERR dysku 8 zmienia się.
Brak wiadomości o dysku 8 w syslog. Bardziej interesujące jest to, że zmienne wartości dla dysku 8 bezpośrednio korelują z wysokimi czasami oczekiwania na IO! Moja interpretacja jest taka:
- Na dysku 8 występuje dziwny błąd sprzętowy, który powoduje nieregularne długie czasy działania.
- W jakiś sposób ten stan błędu na dysku blokuje całą macierz
Być może istnieje bardziej dokładny lub poprawny opis, ale wynik netto jest taki, że jeden dysk wpływa na wydajność całej macierzy.
Pytania)
- Jak pojedynczy dysk w sprzętowej macierzy SATA RAID-10 może zatrzymać całą macierz?
- Czy naiwnie myślę, że karta RAID powinna sobie z tym poradzić?
- Jak mogę zapobiec wpływowi pojedynczego źle działającego dysku na całą macierz?
- Czy coś brakuje?