Startpagina » hoe » Hoe kunnen onverwachte shutdowns een Linux-computer schaden?

    Hoe kunnen onverwachte shutdowns een Linux-computer schaden?

    Zijn onverwachte shutdowns schadelijk voor Linux als voor andere besturingssystemen? Lees verder terwijl we de gevolgen van catastrofale systeemuitval op Linux-bestandssystemen onderzoeken.

    De Question & Answer-sessie van vandaag komt tot ons dankzij SuperUser - een onderdeel van Stack Exchange, een gemeenschapsgedreven groep van Q & A-websites.

    De vraag

    SuperUser-lezer User208554 is nieuwsgierig naar Linux-bestandsstructuren en bezorgd over een app / installatie waaraan hij werkt:

    Ik ontwikkel een applicatie op een Linux embedded board (draait Debian), b. Raspberry Pi, Beagle Board / Bone of Olimex. De borden werken in een omgeving waarin de elektriciteit onverwacht wordt afgesneden (het is veel te ingewikkeld om PSU te plaatsen, enz.) En het zou elke dag een paar keer gebeuren. Ik vraag me af of de onverwachte stroomonderbrekingen problemen zouden veroorzaken op het Linux-besturingssysteem? Als het iets is waar ik me zorgen om moet maken, wat zou u dan voorstellen om de schade aan OS te voorkomen, tegen de onverwachte stroomuitval?

    PS. De applicatie moet wat gegevens schrijven naar het opslagmedium (SD-kaart), ik denk dat het niet geschikt zou zijn om het als alleen-lezen te koppelen.

    Dus wat is het vonnis?

    Het antwoord

    SuperUser-bijdrager l0b0 biedt enig inzicht in journaling / niet-journaling bestandssystemen:

    Dit zou afhangen van

    1. of u een journaling-bestandssysteem gebruikt en
    2. hoe goed de applicaties in staat zijn om een ​​afgebroken verwerking af te handelen.

    Beschouw bijvoorbeeld een toepassing die een bestand verwerkt en de resultaten schrijft terwijl ze worden berekend (één uitvoerregel per invoerregel) naar een ander bestand. Als tijdens de verwerking de stroom wordt onderbroken en dezelfde applicatie na het herstarten wordt uitgevoerd, kan het de verwerking niet opnieuw starten vanaf het begin van het invoerbestand - dat zou betekenen dat het uitvoerbestand dubbele informatie zou bevatten.

    Het kan heel moeilijk zijn om iets definitiefs te zeggen over een hypothetisch complex systeem, maar de meeste stabiele Linux-software lijkt crashes behoorlijk goed te kunnen verwerken.

    Stu stelt voor om het besturingssysteem en de gegevens te scheiden en een back-up van de batterij toe te voegen:

    Om de mogelijkheid van OS-corruptie te minimaliseren, is het waarschijnlijk het beste om afzonderlijke "systeem" - en "gegevenspartities" op de SD-kaart te hebben. Op die manier kunt u de "systeem" -partitie alleen-lezen koppelen en een zeer veerkrachtige FS op de "data" -partitie gebruiken.

    Bovendien hebben de meeste boards zeer lage stroomvereisten, dus een back-up van de batterij is mogelijk. Het "LiPo-rijder" -bord voor de Raspberry Pi kan worden gebruikt als een basis-UPS voor een schone stop bij stroomuitval.

    Ten slotte breidt Jenny D uit wat de suggestie is van het journaalbestandssysteem:

    Onverwachte stroomonderbrekingen kunnen leiden tot beschadiging van bestandssysteemgegevens, b.v. als een proces is begonnen met het schrijven naar een bestand, maar nog niet klaar is met schrijven, kan het zijn dat het bestand maar voor de helft is geschreven. Stel je nu voor dat de stroomstoring optreedt als je halverwege een kernel-upgrade bent ...

    Zoals l0b0 schreef, zal het gebruik van een journaling-bestandssysteem helpen, omdat het in staat is om bij te houden wat er feitelijk is gebeurd. Naast de wikipedia-info die l0b0 heeft gekoppeld, bent u misschien ook geïnteresseerd in Do Journaling bestandssystemen Garantie tegen corruptie na een stroomstoring.

    Het is duidelijk dat je als programmeur zorgvuldig moet overwegen hoe je met het schrijven naar bestanden moet omgaan, zodat het een atomair proces wordt (dat wil zeggen, het is ofwel helemaal klaar of helemaal niet gedaan, maar nooit voor de helft gedaan). Het is een vrij complex probleem.


    Heb je iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden van andere technisch onderlegde Stack Exchange-gebruikers lezen? Bekijk hier de volledige discussiethread.