Tworzę aplikację na wbudowanej płycie Linux (uruchamia Debiana) np. Raspberry Pi, Beagle Board / Bone lub olimex. Płytki działają w środowisku, w którym nieoczekiwanie odcięto elektryczność (umieszczenie zasilacza itp. Jest bardzo skomplikowane) i zdarzałoby się to codziennie kilka razy. Zastanawiam się, czy nieoczekiwane przerwy w dostawie prądu spowodowałyby awarię / problem w systemie operacyjnym Linux? Jeśli jest to coś, o co powinienem się martwić, co sugerowałbyś, aby zapobiec uszkodzeniom systemu operacyjnego w wyniku 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 montowanie ich jako tylko do odczytu.
Odpowiedzi:
Nieoczekiwane przerwy w zasilaniu mogą spowodować uszkodzenie danych systemu plików - np. Jeśli proces rozpoczął zapis do pliku, ale jeszcze go nie zakończył, plik może zostać zapisany tylko w połowie. A teraz wyobraź sobie, że nastąpi przerwa w zasilaniu, gdy będziesz w połowie aktualizacji jądra ...
Jak napisał L0b0, pomoże system plików z kronikowaniem, ponieważ będzie on w stanie śledzić, co faktycznie zostało zrobione. W uzupełnieniu do informacji wikipedia że l0b0 związane, może być zainteresowany w /unix/12699/do-journaling-filesystems-guarantee-against-corruption-after-a-power-failure także .
Jako programista oczywiście musisz dokładnie przemyśleć, jak radzić sobie z zapisywaniem do plików, aby stało się procesem atomowym (tj. Jest to w pełni wykonane lub wcale, ale nigdy w połowie wykonane). To dość złożony problem.
źródło
Aby zminimalizować możliwość uszkodzenia systemu operacyjnego, najlepiej jest mieć oddzielne partycje „systemowe” i „dane” na karcie SD. W ten sposób możesz zamontować partycję „systemową” tylko do odczytu i użyć wysoce odpornego FS na partycji „danych”.
Ponadto większość z tych płyt ma bardzo niskie zapotrzebowanie na moc, dlatego możliwe jest tworzenie kopii zapasowej baterii. Płytę „LiPo rider” dla Raspberry Pi można wykorzystać jako podstawowy zasilacz UPS zapewniający czyste wyłączenie po utracie zasilania.
źródło
To zależy od tego
Rozważmy na przykład aplikację, która przetwarza plik i zapisuje wyniki podczas ich obliczania (jedna linia wyjściowa 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 może po prostu ponownie uruchomić przetwarzania od początku pliku wejściowego - oznaczałoby to, że plik wyjściowy zawierałby duplikaty informacji.
Może być bardzo trudno powiedzieć coś konkretnego o hipotetycznym złożonym systemie, ale wydaje się, że najbardziej stabilne oprogramowanie Linux potrafi całkiem dobrze poradzić sobie z awariami.
źródło
Ponieważ nikt nie wspomniał o żadnym konkretnym systemie plików: bardziej nowoczesne systemy plików (ext3, ext4, NTFS) są w stanie obsługiwać awarie znacznie lepiej niż starsze systemy plików (ext2, ext, fat32) z powodu kronikowania .
Zakładając, że dysk twardy nie ulega awarii i nie kłamie , całkowita awaria zasilania nie powinna uszkodzić systemu plików. Poszczególne zapisywane pliki mogą być nadal uszkodzone, więc jeśli byłeś w trakcie aktualizacji systemu operacyjnego, gdy wystąpiła awaria zasilania, nadal można go obniżyć.
źródło