Prowadzony od października 2019

Post-mortem: wadliwa partia firmware i lustro, które nim nie było

Czterdzieści jeden dysków NVMe z jednej partii produkcyjnej przestało odpowiadać przy tej samej liczbie godzin pracy. Dwa instancje klientów utraciły dane, a błąd w doborze partii był wyłącznie nasz.

Podsumowanie

Między 29 października a 1 listopada 2024 roku czterdzieści jeden korporacyjnych dysków NVMe w czterech lokalizacjach przestało przyjmować polecenia po osiągnięciu określonej liczby godzin pracy, co było wadą oprogramowania układowego w jednej partii produkcyjnej. Mirroring pochłonął trzydzieści dziewięć z tych awarii bez wpływu na klientów. Jeden węzeł w Warszawie stracił obie połowy mirrora w ciągu czterdziestu minut, ponieważ oba dyski pochodziły z tej samej partii i zostały zamontowane tego samego dnia. Dwie instancje na tym węźle utraciły dane. Ta druga część była naszą winą, a nie dostawcy.

Oś czasu

Wszystkie godziny UTC.

CzasZdarzenie
29 paź 03:11Dysk wypada z magistrali na węźle warszawskim. Mirror degraduje się, dysk zapasowy zaczyna przebudowę. Rutynowe, bez zgłoszenia.
29 paź 03:49Drugi dysk w tym samym mirrorze wypada. Węzeł traci pulę główną i zatrzymuje się.
29 paź 03:52Zgłoszenie alarmowe. Dyżurny online o 03:55.
29 paź 04:20Węzeł uznany za nieodwracalnie uszkodzony na miejscu. Przebudowa z dysku zapasowego niemożliwa; zapasowy był w trakcie przebudowy ze źródła, które już nie odpowiada.
29 paź 05:40Inżynier przeglądający logi dysków zauważa, że dwie awarie dzieli osiemnaście godzin pracy, a nie osiemnaście miesięcy. Podejrzenie przechodzi z pecha na kohortę.
29 paź 06:15Zapytanie floty według identyfikatora partii i godzin pracy. Dwieście sześć dysków jest w dotkniętej partii. Trzydzieści jeden już przekroczyło licznik i uległo awarii; reszta jest od czterdziestu do dziewięciuset godzin od tego momentu.
29 paź 07:30Skontaktowano się z dostawcą. Wada potwierdzona w ciągu czterech godzin: licznik w telemetrii niwelowania zużycia przepełnia się po 1536 godzinach pracy i blokuje kontroler. Poprawka oprogramowania układowego została wydana po cichu sześć tygodni wcześniej.
29 paź 09:00Rozpoczyna się zbiorcza aktualizacja oprogramowania układowego, priorytetyzowana według pozostałych godzin.
30 paź 22:40Ostatni dysk w partii zaktualizowany lub wymieniony.
1 lis 14:00Dotknięte instancje klientów przywrócone lub refundowane.

Przyczyna źródłowa

Dwie przyczyny, a tylko jedna należy do producenta dysków.

Ich: licznik telemetrii przepełnił się przy stałej liczbie godzin pracy i zawiesił kontroler. Dysk przetrwa cykl zasilania, wraca i ponownie zawiesza się w ciągu kilku minut. Dane na talerzu są nienaruszone i niedostępne, co jest najgorszą kombinacją dla każdego, kto próbuje to zdiagnozować o czwartej nad ranem.

Nasza: zbudowaliśmy mirror z dysków, które przyjechały w tej samej dostawie. Mirror ma być dwoma niezależnymi domenami awarii, a dwa dyski z jednej partii, zamontowane tego samego popołudnia, włączone w ciągu tej samej godziny, nie są niezależne w żadnym istotnym sensie. Jedenaście mirrorów we flocie było tak zbudowanych. Dziesięć miało szczęście – dysk zapasowy zdążył dokończyć przebudowę. Jeden nie.

Znaliśmy tę zasadę od lat. Nikt nie zapisał jej w procedurze budowania, a procedura budowania jest tym, czego ludzie przestrzegają o drugiej w nocy pod presją terminu dostawy.

Wpływ

  • Trzydzieści dziewięć awarii pochłoniętych przez mirror bez widocznego wpływu na klientów.
  • Jeden węzeł offline przez dziewięć godzin i osiemnaście minut.
  • Czternaście instancji na tym węźle przywróconych z backupów poza węzłem, tracąc maksymalnie jedenaście minut zapisów.
  • Dwie instancje bez żadnego backupu. Obie straciły wszystko na węźle.

Co zmieniliśmy

  1. Partie zakupowe są dzielone. Żadne dwa dyski z tej samej partii nie mogą tworzyć mirrora, a dysk zapasowy chroniący parę pochodzi z trzeciej partii. Egzekwowane przez narzędzia budowania, nie przez dokument. Zrobione 4 listopada.
  2. Alerty o kohortach dla godzin pracy. Alertujemy teraz, gdy więcej niż cztery dyski o tym samym identyfikatorze partii są w odstępie stu godzin od siebie i zbliżają się do dowolnej okrągłej liczby godzin. To prymitywna heurystyka, ale wykryłaby to dziewiętnaście dni wcześniej.
  3. Testowanie oprogramowania układowego przed produkcją. Nowa rodzina dysków przechodzi dwa tysiące godzin pracy w stojaku testowym, zanim przenosi dane klientów. Ta wada ujawniłaby się przy 1536.
  4. Czytamy noty wydań oprogramowania układowego dostawcy zgodnie z harmonogramem. Poprawka istniała sześć tygodni przed tym, jak jej potrzebowaliśmy. Nikt nie był wyznaczony do sprawdzenia, więc nikt nie sprawdził.

Czego nie zmieniliśmy i dlaczego

Nie zmieniliśmy rodziny dysków ani dostawcy. Wada była realna, a komunikacja słaba, ale nasza strata wynikała ze skorelowanych partii, co powtórzylibyśmy z każdym producentem. Zmiana dostawcy byłaby pozornie zdecydowana i niczego nie naprawiła.

Backup poza węzłem pozostaje opcją za dziewięć euro za pięćset gigabajtów. Uczynienie go uniwersalnym oznacza obciążenie każdego klienta usługą, którą większość z nich replikuje samodzielnie, i nie zamierzamy obciążać ludzi za pozór bezpieczeństwa. Zmienił się natomiast formularz zamówienia, który teraz wyraźnie stwierdza, że pamięć instancji jest zmirrorowana, a mirror nie jest backupem, a krok potwierdzenia nie pozwala już pominąć tego zdania po cichu.

Nie przeszliśmy na potrójny mirror. Kosztuje o jedną trzecią więcej za gigabajt i nie rozwiązuje problemu skorelowanych awarii, który był rzeczywistym mechanizmem tutaj. Dwie niezależne domeny biją trzy zależne.

Dwaj klienci

Obaj otrzymali pełny zwrot za dotknięty okres, w aktywie, którym płacili, bez konieczności uzasadniania czegokolwiek. Jeden odszedł. Drugi został i teraz kupuje dodatek backupu, przeczytawszy to samo zdanie w formularzu zamówienia, które w słabszej formie było tam od początku.

Żaden z tych wyników nie był w naszej gestii. Jedyną rzeczą w naszej gestii było prawidłowe zbudowanie mirrora, a tego nie zrobiliśmy.

Gotowi, gdy jesteś

Wybierz miasto. Wybierz rozmiar. Płać kryptowalutą.

Bez formularzy o tym, kim jesteś, bez czekania na akceptację człowieka, bez telefonu w celu weryfikacji. Faktura zostaje uregulowana, a dane logowania trafiają do Twojej skrzynki.