Hur kan oväntade avbrott skada en Linux-dator?
Är oväntade avstängningar lika skadliga för Linux som för andra operativsystem? Läs vidare när vi undersöker effekterna av katastrofala systemavstängningar på Linux-filsystem.
Dagens Question & Answer-session kommer till oss med tillstånd av SuperUser-en indelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.
Frågan
SuperUser-läsaren User208554 är nyfiken på Linux-filstrukturer och oroade sig för en app / installation som han arbetar med:
Jag utvecklar en applikation på ett Linux-inbyggt kort (kör Debian), t.ex. Raspberry Pi, Beagle Board / Bone, eller olimex. Brädorna arbetar på en miljö som elet skärs oväntat (det är alldeles för komplicerat att placera PSU, etc.) och det skulle hända varje dag ett par gånger. Jag undrar om de oväntade strömavbrotten skulle orsaka problem på Linux Operations System? Om det är något som jag borde oroa mig för, vad skulle du föreslå för att förhindra skadan på OS mot de oväntade strömavbrott?
PS. Applikationen behöver skriva några data till lagringsmediet (SD-kort), jag tror att det inte skulle vara lämpligt att montera det som skrivskyddad.
Så vad är domen?
Svaret
SuperUser-bidragsgivaren l0b0 ger viss inblick i journaling / non-journaling filsystem:
Detta skulle bero på
- oavsett om du använder ett journaling-filsystem och
- Hur väl kan applikationerna hantera avbruten behandling.
Tänk till exempel en applikation som behandlar en fil och skriver resultaten när de beräknas (en utgångslinje per ingångslinje) till en annan fil. Om strömmen skärs under bearbetningen och samma program körs efter omstart, kan den inte bara starta om bearbetning från början av inmatningsfilen - det skulle innebära att utdatafilen skulle innehålla dubbletter.
Det kan vara mycket svårt att säga något klart om ett hypotetiskt komplext system, men den mest stabila Linux-mjukvaran verkar kunna hantera kraschar ganska snyggt.
Stu föreslår att man separerar operativsystemet och data, samt lägger till ett batteribackup:
För att minimera risken för OS-korruption är det troligen bäst att ha separata "system" och "data" -partitioner på SD-kortet. På så sätt kan du montera "systempartitionen" skrivskyddad och använda en mycket robust FS på "data" -partitionen.
Dessutom har de flesta av dessa brädor väldigt låga kraven, så batteribackup är möjligt. "LiPo rider" -bordet för Raspberry Pi kan användas som en grundläggande UPS för att ge en ren avstängning vid strömförlust.
Slutligen expanderar Jenny D på journaling filsystemet förslag:
Oväntat strömavbrott kan orsaka korruption av filsystemdata - t.ex. Om en process har börjat skriva till en fil, men inte färdig att skriva den, kan filen sluta bara hälften skriftlig. Tänk nu om strömavbrottet händer när du är halvvägs genom en kärnuppgradering ...
Som l0b0 skrev, med hjälp av ett journaling filsystem kommer att hjälpa, eftersom det kommer att kunna hålla reda på vad som faktiskt har gjort. Förutom wikipedia-informationen som l0b0 är länkad, kan du vara intresserad av att göra journaler för filsystemsgaranti mot korruption efter en strömavbrott också.
Du som programmerare behöver självklart noga överväga hur man hanterar skrivning till filer så att det blir en atomprocess (det vill säga det är helt eller delvis gjort, men aldrig någonsin halvt gjort). Det är en ganska komplicerad fråga.
Har du något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa mer svar från andra tech-savvy Stack Exchange-användare? Kolla in hela diskussionsgängan här.