การปิดระบบที่ไม่คาดคิดสามารถเป็นอันตรายต่อคอมพิวเตอร์ Linux ได้อย่างไร
การปิดที่ไม่คาดคิดเป็นอันตรายต่อลีนุกซ์เหมือนกับระบบปฏิบัติการอื่น ๆ หรือไม่? อ่านต่อในขณะที่เราตรวจสอบผลกระทบของการปิดระบบภัยพิบัติในระบบไฟล์ Linux.
เซสชั่นคำถามและคำตอบในวันนี้มาถึงเราด้วยความอนุเคราะห์จาก SuperUser - แผนกย่อยของ Exchange Exchange ซึ่งเป็นกลุ่มที่ขับเคลื่อนด้วยชุมชนของเว็บไซต์ถาม - ตอบ.
คำถาม
ผู้อ่าน SuperUser User208554 มีความอยากรู้เกี่ยวกับโครงสร้างไฟล์ Linux และกังวลเกี่ยวกับแอพ / การติดตั้งที่เขาใช้งานอยู่:
ฉันกำลังพัฒนาแอปพลิเคชันบนกระดานฝังตัว Linux (รันเดเบียน) เช่น Raspberry Pi, Beagle Board / Bone หรือ olimex บอร์ดทำงานบนสภาพแวดล้อมที่ไฟฟ้าถูกตัดโดยไม่คาดคิด (มันซับซ้อนเกินไปที่จะวาง PSU ฯลฯ ) และมันจะเกิดขึ้นทุกวันสองสามครั้ง ฉันสงสัยว่าการตัดไฟที่ไม่คาดคิดจะทำให้เกิดปัญหากับระบบปฏิบัติการ Linux หรือไม่ หากเป็นสิ่งที่ฉันควรกังวลเกี่ยวกับสิ่งที่คุณจะแนะนำเพื่อป้องกันความเสียหายในระบบปฏิบัติการกับการตัดไฟที่ไม่คาดคิด?
PS แอปพลิเคชั่นต้องการเขียนข้อมูลบางอย่างไปยังสื่อบันทึกข้อมูล (การ์ด SD) ฉันคิดว่ามันไม่เหมาะที่จะเมานต์แบบอ่านอย่างเดียว.
ดังนั้นคำตัดสินของอะไร?
คำตอบ
ผู้สนับสนุน SuperUser l0b0 เสนอข้อมูลเชิงลึกเกี่ยวกับระบบไฟล์ journaling / non-journaling:
สิ่งนี้จะขึ้นอยู่กับ
- ไม่ว่าคุณจะใช้ระบบไฟล์ที่เจอร์นัลและ
- แอปพลิเคชันสามารถจัดการการประมวลผลที่ถูกยกเลิกได้ดีเพียงใด.
พิจารณาตัวอย่างแอ็พพลิเคชันที่ประมวลผลไฟล์และเขียนผลลัพธ์เมื่อคำนวณ (หนึ่งบรรทัดต่อหนึ่งบรรทัดอินพุต) ไปยังไฟล์อื่น หากกำลังไฟถูกตัดระหว่างการประมวลผลและแอปพลิเคชันเดียวกันนั้นทำงานหลังจากรีสตาร์ทเครื่องจะไม่สามารถรีสตาร์ทการประมวลผลตั้งแต่เริ่มต้นไฟล์อินพุตซึ่งหมายความว่าไฟล์เอาต์พุตจะมีข้อมูลที่ซ้ำกัน.
อาจเป็นเรื่องยากมากที่จะพูดอะไรที่ชัดเจนเกี่ยวกับระบบที่ซับซ้อนตามสมมติฐาน แต่ซอฟต์แวร์ Linux ที่เสถียรที่สุดดูเหมือนว่าจะสามารถจัดการกับข้อขัดข้องได้ค่อนข้างดี.
Stu แนะนำให้แยกระบบปฏิบัติการและข้อมูลเช่นเดียวกับการเพิ่มแบตเตอรี่สำรอง:
เพื่อช่วยลดความเป็นไปได้ที่จะเกิดความเสียหายของระบบปฏิบัติการคุณควรแยกพาร์ติชัน "ระบบ" และ "ข้อมูล" แยกต่างหากในการ์ด SD ด้วยวิธีนี้คุณสามารถติดตั้งพาร์ติชัน "ระบบ" เป็นแบบอ่านอย่างเดียวและใช้ FS ที่มีความยืดหยุ่นสูงในพาร์ติชัน "ข้อมูล".
นอกจากนี้บอร์ดส่วนใหญ่มีความต้องการพลังงานต่ำมากดังนั้นจึงสามารถสำรองแบตเตอรี่ได้ บอร์ด“ LiPo rider” สำหรับ Raspberry Pi สามารถใช้เป็นยูพีเอสพื้นฐานเพื่อให้การปิดระบบที่สะอาดในการสูญเสียพลังงาน.
ท้ายที่สุด Jenny D ขยายคำแนะนำระบบไฟล์ที่เจอร์นัล:
การตัดไฟที่ไม่คาดคิดอาจทำให้ข้อมูลระบบไฟล์เสียหาย - เช่น หากกระบวนการเริ่มเขียนไฟล์ แต่ยังไม่เสร็จสิ้นการเขียนไฟล์อาจสิ้นสุดเพียงครึ่งหนึ่งเท่านั้น ทีนี้ลองจินตนาการว่าการตัดไฟเกิดขึ้นเมื่อคุณอัพเกรดเคอร์เนลครึ่งทาง ...
ตามที่ l0b0 เขียนไว้การใช้ระบบไฟล์ที่ทำเจอร์นัลจะช่วยได้เนื่องจากจะสามารถติดตามสิ่งที่ได้ทำไปจริง นอกเหนือจากข้อมูลวิกิพีเดียที่ l0b0 เชื่อมโยงแล้วคุณอาจสนใจทำ Journaling ระบบไฟล์รับประกันความเสียหายหลังไฟดับเช่นกัน.
คุณในฐานะโปรแกรมเมอร์จำเป็นต้องพิจารณาอย่างรอบคอบถึงวิธีจัดการกับการเขียนไฟล์เพื่อให้กลายเป็นกระบวนการปรมาณู (เช่นเสร็จสมบูรณ์หรือไม่ได้ทำเลย แต่ไม่เคยทำเลยครึ่ง) มันเป็นปัญหาที่ค่อนข้างซับซ้อน.
มีสิ่งที่จะเพิ่มคำอธิบายหรือไม่ ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange คนอื่นหรือไม่ ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่.