Trwałe punkty montowania: jedna linia, która może uniemożliwić maszynie start

Punkt montowania zrobiony ręcznie znika po restarcie, a utrwalenie go prowadzi przez plik decydujący o tym, czy maszyna wstanie. Zepsuta linia w nim zatrzymuje nie usługę, tylko maszynę.

AtlasPVE ·

Ten wpis odpowiada na

  • proxmox fstab trwałe montowanie
  • proxmox dysk znika po restarcie
  • proxmox nie startuje fstab
  • nofail co to jest
  • proxmox nfs montowanie na stałe

Montujesz dysk albo magazyn sieciowy ręcznie i działa. Restartujesz maszynę i już go nie ma.

Lekarstwo wydaje się oczywiste: dopisać linię do listy rzeczy montowanych przy starcie. I dokładnie tam zaczyna się niebezpieczeństwo.

Ten plik nie jest jak inne

Większość plików konfiguracyjnych na serwerze, gdy zostanie zepsuta, uniemożliwia działanie jakiejś usługi. Gdy zepsuty zostanie ten plik, maszyna może nie wstać.

Skutkiem nie jest zdanie, że usługa leży, tylko że system zszedł do powłoki ratunkowej. A w tym momencie nie połączysz się zdalnie; potrzebujesz klawiatury i monitora albo konsoli fizycznej.

Asymetria, której nikt nie zauważa

Zepsuta konfiguracja sieci jest irytująca: tracisz dostęp zdalny. Ale maszyna nadal wstaje.

Zepsuta linia montowania może całkiem uniemożliwić maszynie start.

A mimo to ludzie są znacznie ostrożniejsi przy edytowaniu pliku sieci. Kolejność niebezpieczeństwa jest odwrotna do intuicji, i to intuicja się myli.

Trzy reguły

Sprawdź strukturę przed zapisem. Linia potrzebuje co najmniej trzech pól: źródła, celu i typu systemu plików. Linia z brakującymi polami sprawia kłopot każdemu narzędziu czytającemu ten plik.

Pisz atomowo. Zapis przerwany w połowie jest w tym pliku gorszy niż brak zapisu: zostaje plik ucięty, a maszyna próbuje z nim wstać.

Nie pozwól, by brakujący dysk trzymał maszynę jako zakładnika. Dla magazynów sieciowych i dysków wymiennych używaj opcji pozwalającej kontynuować rozruch, gdy montowanie zawiedzie. Niepodłączony dysk kopii zapasowych nie jest powodem, dla którego serwer ma nie wstać.

Pułapka weryfikacji: kontrola, która się wywala, nie jest zaliczeniem

Najbardziej ogólna lekcja tego wpisu jest tutaj i nie dotyczy wyłącznie tego pliku.

Istnieje standardowe narzędzie do sprawdzania tego pliku. Zmierzone na prawdziwej maszynie dało taki wynik: narzędzie wywala się, gdy zobaczy linię z mniej niż trzema kolumnami. Czyli wybucha dokładnie wtedy, gdy widzi zniekształcony kształt, który miało wyłapać.

Wywalenie się narzędzia weryfikującego nie oznacza, że weryfikacja przeszła. Właściwą odpowiedzią nie jest zdanie, że nie ma problemu, tylko że nie udało się zweryfikować.

Proces, który nie robi tego rozróżnienia, zatwierdza najgroźniejszy plik w jego najsłabszym momencie.

Druga pułapka: nie każda skarga jest błędem

To samo narzędzie sprawdzające potrafi powiedzieć dwie różne rzeczy, a pomieszanie ich tworzy nowy problem.

Błąd formatu oznacza, że pliku nie da się odczytać. To naprawdę niebezpieczne i zapis powinien zostać cofnięty.

Skarga semantyczna jest czym innym: zdania w rodzaju, że cel jest nieosiągalny przy starcie albo że typ systemu plików jest nieznany. Te nie psują pliku i mogą być uzasadnione. Dopisanie linii dla urządzenia jeszcze niepodłączonego jest rzeczą częstą i poprawną; opcja pozwalająca kontynuować rozruch istnieje właśnie po to.

Kontrola wrzucająca oba do jednego kosza odrzuca zupełnie nową, całkowicie poprawną linię. Innymi słowy, zbyt surowa brama uniemożliwia pracę i popycha ludzi do jej wyłączenia.

Co robi Atlas

W Atlasie każdy zapis do tego pliku przechodzi przez jedne drzwi. Każda linia jest przed zapisem sprawdzana strukturalnie, zapis jest atomowy, a po zapisie plik jest odczytywany i weryfikowany; jeśli oczekiwany wynik się nie pojawia, poprzedni stan zostaje przywrócony.

Obie powyższe pułapki obsłużono celowo. Zewnętrzne narzędzie sprawdzające liczy się tylko jako sygnał drugorzędny: jeśli się wywali, wynikiem nie jest czysto, tylko nie udało się zweryfikować. A błędy formatu i skargi semantyczne obsługiwane są osobno; tylko błąd formatu powoduje cofnięcie, natomiast skargi semantyczne nie są połykane, tylko zgłaszane wywołującemu.

Potrzebę tego rozróżnienia też znaleziono pomiarem: w pierwszej wersji oba powodowały cofnięcie, a w tym stanie odrzucana była nawet zupełnie nowa, całkowicie poprawna linia.

Uczciwa uwaga historyczna: produkt pisał kiedyś do tego pliku z ośmiu osobnych miejsc i żadne z nich nie sprawdzało, czy zapisywane jest poprawne; dwa nadpisywały cały plik nieatomowo. W tym samym produkcie plik sieci, który nie może uniemożliwić maszynie startu, zapisywany był atomowo. Bardziej niebezpieczny plik był więc słabiej chroniony. Zmierzono to i sprowadzono za jedne drzwi.

Źródła

Własna dokumentacja Proxmoksa. Po angielsku i to ona ma ostatnie słowo w tej sprawie.

Powiązane wpisy

Jak to wygląda wewnątrz Atlasa?

Przejdź do strony produktu