5Sep
Czy niespodziewane wyłączenia są szkodliwe dla systemu Linux, podobnie jak dla innych systemów operacyjnych? Czytaj dalej, ponieważ badamy skutki katastroficznych wyłączeń systemu w systemach plików Linux.
Dzisiejsze pytanie &Sesja odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, opartego na społecznościach grupy Q & A.
Pytanie Czytnik
SuperUser User208554 jest ciekawy struktury plików systemu Linux i martwi się o aplikację / instalację, nad którą pracuje:
Zajmuję się tworzeniem aplikacji na wbudowanej płycie Linux( uruchamia Debian), np. Raspberry Pi, Beagle Board / Bone lub olimex. Płyty działają w środowisku, w którym elektryczność jest nieoczekiwanie przerywana( jest to zbyt skomplikowane, aby umieścić zasilacz itp.), A zdarzy się to każdego dnia kilka razy. Zastanawiam się, czy niespodziewane przerwy w zasilaniu spowodowałyby problem w systemie operacyjnym Linux? Jeśli jest to coś, o co powinienem się martwić, co sugerowałbyś, aby zapobiec uszkodzeniom systemu operacyjnego w obliczu nieoczekiwanych przerw w dostawie prądu?
PS.Aplikacja musi zapisać niektóre dane na nośniku pamięci( karcie SD), myślę, że nie byłoby odpowiednie zamontowanie go jako tylko do odczytu.
Więc jaki jest werdykt?
Odpowiedź Autor
SuperUser l0b0 oferuje pewien wgląd w systemy plików kronikowania / nie-księgowania:
To zależy od
- , niezależnie od tego, czy używasz systemu plików księgowania i
- , jak dobrze aplikacje są w stanie obsłużyć przerwane przetwarzanie.
Rozważmy na przykład aplikację, która przetwarza plik i zapisuje wyniki w trakcie ich obliczania( jeden wiersz wyjściowy na linię wejściową) do innego pliku. Jeśli zasilanie zostanie odcięte podczas przetwarzania, a ta sama aplikacja zostanie uruchomiona po ponownym uruchomieniu, nie będzie mogła ponownie uruchomić przetwarzania od początku pliku wejściowego - oznaczałoby to, że plik wyjściowy zawierałby zduplikowane informacje.
Może być bardzo trudno powiedzieć coś konkretnego na temat hipotetycznego złożonego systemu, ale najbardziej stabilne oprogramowanie Linux wydaje się być w stanie całkiem dobrze radzić sobie z wypadkami.
Stu sugeruje oddzielenie systemu operacyjnego i danych, a także dodanie kopii zapasowej baterii:
Aby zminimalizować możliwość uszkodzenia systemu operacyjnego, najlepiej jest mieć oddzielne partycje "system" i "dane" na karcie SD.W ten sposób możesz zamontować partycję "systemową" tylko do odczytu i użyć silnie odpornego FS na partycji "dane".
Ponadto większość z tych kart ma bardzo niskie wymagania dotyczące zasilania, więc możliwe jest tworzenie kopii zapasowych baterii. Płyta "LiPo rider" dla Raspberry Pi może być używana jako podstawowy zasilacz UPS w celu zapewnienia czystego wyłączenia przy zaniku zasilania.
Wreszcie Jenny D rozszerza sugestię systemu plików księgowania:
Nieoczekiwane przerwy w zasilaniu mogą spowodować uszkodzenie danych systemu plików - np.jeśli proces zaczął zapisywać do pliku, ale jeszcze nie skończył go pisać, plik może zakończyć się tylko w połowie. Teraz wyobraź sobie, że jeśli nastąpi przerwa w zasilaniu, gdy jesteś w połowie aktualizacji jądra. ..
Jak pisał l0b0, pomoże to system plików z księgowaniem, ponieważ będzie on w stanie śledzić, co faktycznie zostało zrobione. Oprócz informacji wikipedii związanych z L0b0, być może zainteresuje Cię również system gwarancji plików dziennikarzy przeciwko korupcji po awarii zasilania.
Ty, jako programista, oczywiście musisz uważnie zastanowić się, jak traktować zapisywanie do plików, aby stał się procesem atomowym( tzn. Albo został całkowicie zrobiony, albo w ogóle go nie wykonano, ale nigdy w połowie nie został zrobiony).To dość złożony problem.
Czy chcesz coś dodać do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.