W jaki sposób nieoczekiwane wyłączenia mogą uszkodzić komputer z systemem Linux?
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.
Dzisiejsza sesja pytań i odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, opartego na społecznościach grupowania witryn z pytaniami i odpowiedziami.
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 płycie wbudowanej w Linuksie (działa na Debianie), np. Raspberry Pi, Beagle Board / Bone lub olimex. Płyty działają w środowisku, w którym prąd elektryczny jest nieoczekiwanie wycinany (jest zbyt skomplikowany, aby umieścić zasilacz itp.), A zdarzyłoby się to każdego dnia kilka razy. Zastanawiam się, czy nieoczekiwane 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 (karta SD), myślę, że nie byłoby odpowiednie zamontowanie go jako tylko do odczytu.
Więc jaki jest werdykt?
Odpowiedź
Nadawca SuperUser l0b0 oferuje wgląd w systemy plików dziennika / innych niż kronikarskie:
To będzie zależeć od
- 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 przerwane 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ć cokolwiek konkretnego na temat hipotetycznego złożonego systemu, ale najbardziej stabilne oprogramowanie Linuksa 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 małe 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 rozwija sugestię dotyczącą 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. A teraz wyobraź sobie, że wyłączenie zasilania ma miejsce, gdy jesteś w połowie aktualizacji jądra ...
Jak pisał 1001, pomocne będzie korzystanie z systemu plików z księgowaniem, ponieważ będzie on w stanie śledzić, co faktycznie zostało zrobione. Oprócz informacji wikipedii, które są powiązane z L0b0, może zainteresować 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 nie został wykonany, ale nigdy w połowie nie został zrobiony). To dość złożony problem.
Czy masz coś do dodania 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.