5Sep

Hoe kunnen onverwachte shutdowns een Linux-computer schaden?

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

De vraag van vandaag &Antwoord sessie komt naar ons met dank aan SuperUser-een onderverdeling van Stack Exchange, een community-gestuurde groepering van Q & A-websites.

De vraag

SuperUser-lezer User208554 is nieuwsgierig naar Linux-bestandsstructuren en bezorgd om een ​​app / installatie waar hij aan werkt:

Ik ben bezig met het ontwikkelen van een toepassing op een Linux embedded board( draait Debian), bijvoorbeeldRaspberry 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 tegen onverwachte stroomuitval te voorkomen?

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 oordeel?

Het antwoord

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

Dit zou afhankelijk zijn van

  1. , of u een journaling-bestandssysteem en
  2. gebruikt, hoe goed de applicaties in staat zijn om 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 de verwerking niet opnieuw vanaf het begin van het invoerbestand worden gestart - 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 kans op OS-corruptie tot een minimum te beperken, 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 aankoppelen en een zeer veerkrachtige FS op de "data" -partitie gebruiken.

Bovendien hebben de meeste van die kaarten zeer lage stroomvereisten, dus een batterijback-up is mogelijk. Het "LiPo rider" -bord voor de Raspberry Pi kan worden gebruikt als een basis-UPS voor een schone uitschakeling van stroomuitval.

Ten slotte breidt Jenny D uit op de suggestie van het journalingsbestandssysteem:

Onverwachte stroomonderbrekingen kunnen leiden tot beschadiging van bestandssysteemgegevens - bijv.als een proces is begonnen met het schrijven naar een bestand, maar nog niet klaar is met schrijven, kan het bestand mogelijk maar voor de helft zijn 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 met l0b0 is gelinkt, bent u misschien ook geïnteresseerd in Do Journaling Filesystems-garantie tegen corruptie na een stroomstoring.

Je als programmeur moet natuurlijk zorgvuldig 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 complexe kwestie.

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