“ ปลอดภัย” การกำหนดค่า ext4 สำหรับระบบที่ใช้งานโดยไม่ตั้งใจ


18

ฉันมีระบบที่ใช้งาน linux ซึ่งต้องทำงานโดยไม่ต้องดูแลเป็นเวลานาน ระบบใช้การ์ด CF อุตสาหกรรมสำหรับการจัดเก็บ เวลาส่วนใหญ่ไม่มีการเขียนไปยังแฟลชแม้ว่าจะสามารถแก้ไขข้อมูล / การตั้งค่าบางอย่างได้ ระบบจะต้องทนต่อความล้มเหลวของพลังงาน

ฉันต้องการใช้ ext4 สำหรับสิ่งนี้ วิธีที่ดีที่สุดในการกำหนดค่า ext4 สำหรับการตั้งค่าประเภทนี้คืออะไร? จำไว้ว่า:

  • ประสิทธิภาพไม่ใช่ปัญหาเลย (โดยเฉพาะประสิทธิภาพการเขียน)
  • เมื่อไฟฟ้าดับระบบควรบู๊ตในสถานะที่สะอาดเสมอแม้ว่านั่นหมายความว่าข้อมูลที่เขียนในไม่กี่วินาทีที่ผ่านมาจะหายไป
  • หากเป็นไปได้ที่จะหลีกเลี่ยงการ fsck ดังนั้นทั้งหมดที่ดีกว่า

(ฉันตระหนักถึงคำถามที่เกี่ยวข้องนี้: ป้องกันข้อมูลเสียหายใน ext4 / Linux ไดรฟ์เมื่อสูญเสียพลังงาน )

คำตอบ:


11

ฉันได้ทำงานในการสร้างระบบอัตโนมัติบนเรือและมีข้อกำหนดเบื้องต้น: ในทุกช่วงเวลาพลังงานอาจลดลงและทุกอย่างต้องเพิ่มอีกครั้งอย่างถูกต้อง

วิธีแก้ปัญหาของฉันคือการสร้างระบบ initramfs ที่ใช้ Gentoo ซึ่งมีเพียงโฟลเดอร์ rw สำหรับแอปพลิเคชันและการกำหนดค่า (นี่เป็นวิธีการที่ผู้ขายเราเตอร์ / ไฟร์วอลล์ใช้) โซลูชันนี้เพิ่มเลเยอร์เพิ่มเติมของความซับซ้อนเมื่อต้องรับมือกับการอัพเกรดระบบ แต่รับรองว่าระบบจะทำการบู๊ตเสมอ

เกี่ยวกับคำถามของคุณโดยเฉพาะคุณควรเก็บ Ext4 วารสารเปิดการใช้งานสำหรับการมีเร็วขึ้น fsck (ไม่กี่ secods ก) ใช้ข้อมูล = วารสารตัวเลือกติดลดกระทำตัวเลือกหรือการใช้ซิงค์ตัวเลือกที่จะเก็บบัฟเฟอร์ว่างเสมอ

อ้างอิง: http://www.kernel.org/doc/Documentation/filesystems/ext4.txt


ดี! หากแอปพลิเคชันไม่เขียนข้อมูลมากเกินไปคุณควรจะพอใจกับตัวเลือกการซิงค์
Giovanni Toraldo

1
สถานที่ที่ดีกว่าในการดูคือเอกสารเคอร์เนล Linux: kernel.org/doc/Documentation/filesystems/ext4.txtเปิดใช้งาน data = journal และ commit = nrsec เพื่อลดการสูญเสียข้อมูลที่อาจเกิดขึ้น (* == ค่าเริ่มต้น)
Giovanni Toraldo

ความมุ่งมั่นที่กำหนดเวลาไว้มีประโยชน์อย่างแน่นอน - ฉันเชื่อว่าคุณสามารถลงได้ 1 วินาทีเท่านั้น (แม้ว่าจะมีการปรับประสิทธิภาพ MAJOR สำหรับการเขียนมาก) แต่ถ้าคุณไม่สามารถสูญเสียข้อมูล 1 วินาทีคุณจะมีปัญหาที่ใหญ่กว่า;)
voretaq7

2
หนึ่งในผลกระทบเชิงบวกที่สำคัญของการทำเจอร์นัลคือการกู้คืนจากความผิดพลาดเป็นเรื่องของการเล่นซ้ำการเปลี่ยนแปลงที่ไม่มีข้อผูกมัดล่าสุดซึ่งเร็วกว่าการตรวจสอบปริมาณทั้งหมดเพื่อตรวจสอบความไม่สอดคล้องกัน หากนี่คือปัญหาหลักของคุณคุณควรใช้ EXT4 เริ่มต้นและมีความสุข
Giovanni Toraldo

1
@Grodriguez ข้อมูล "สูญเสีย" สามารถเป็นอะไรก็ได้จาก "ไฟล์ไม่มีอีกต่อไป" ถึง "ทำไมจึงมีเคอร์เนลอันหนึ่งในฐานข้อมูลของฉัน" - ทุกอย่างขึ้นอยู่กับสิ่งที่ "หลงทาง" :)
voretaq7

12

ฉันจะนำหน้าสิ่งนี้โดยบอกว่าเท่าที่ฉันกังวล EXT (ในทุกสาขา) เป็นระบบไฟล์ที่น่ากลัวมาก - ฉันได้เห็นกรณีที่ " น่าสนใจ " ของความเสียหายของระบบไฟล์ใน Linux / EXT ค่อนข้างน้อย {2,3,4} ระบบที่ฉันดูแลมากกว่าที่ฉันมีในระบบไฟล์ Not-EXT จำนวนมากที่ฉันมีโอกาสใช้งาน
ถ้าเป็นไปได้ลองเลือกระบบไฟล์ที่แข็งแกร่งกว่านี้ คุณจะขอบคุณตัวเองเมื่อสิ่งที่หลีกเลี่ยงไม่ได้เกิดขึ้น


ที่ถูกกล่าวและอคติส่วนตัวทั้งหมดของฉันออกมาในที่โล่งและถูกผลักออกไป EXT4 มีคุณสมบัติสามอย่างที่ฉันสามารถคิดได้ซึ่งอาจช่วยคุณได้:

  • การทำ
    เจอร์นัล EXT4 สามารถเป็นระบบไฟล์ที่ทำเจอร์นัลได้หากคุณต้องการ เปิดใช้งานคุณสมบัติการทำเจอร์นัล (และตั้งค่าโหมดการบันทึกข้อมูลเป็นพิเศษjournalผ่านทางtune2fsหรือเป็นตัวเลือกเมานท์)
    นี่จะเป็นผลงานที่ยอดเยี่ยมเนื่องจากข้อมูลทั้งหมดจะต้องถูกเขียนลงในสมุดบันทึก EXT ก่อนที่จะได้รับ "มุ่งมั่น" ไปยังระบบแฟ้ม (โดยทั่วไปการเขียนทุกครั้งจะเกิดขึ้นสองครั้ง) แต่จะทำให้แน่ใจว่าคุณสามารถกู้คืนได้ ปัญหาที่เกิดขึ้น

  • SYNCติดตั้ง hronous
    เมื่อความปลอดภัยเป็นสิ่งสำคัญยิ่งในการติดตั้งระบบไฟล์ด้วยsyncตัวเลือกนั้นเป็นความคิดที่ดีเสมอ นี่เป็นการบังคับให้ทุกคนเขียนลงดิสก์ทันที - นี่เป็นผลการปฏิบัติงานที่ดี แต่เป็นความคิดที่ดีถ้าคุณคาดหวังว่าไฟฟ้าขัดข้องหรือมีคนแปลกหน้าดึงการ์ด CF ออกมา

  • จำกัด filesystems เขียนได้มากที่สุดเท่าที่เป็นไปได้ หนึ่งนี้ไม่ได้เป็น EXT เฉพาะ แต่ปรัชญาของลินุกซ์ทุกเกินไปทั่วไปของ "เพียงแค่สร้างพาร์ทิชันรากใหญ่และการถ่ายโอนข้อมูลทุกอย่างที่เป็นมัน" คือค่อนข้างตรงไปตรงโง่ สร้างโครงสร้างระบบไฟล์ที่เหมาะสม ( /, /var, /usr, /homeฯลฯ ... ) และติดเป็นจำนวนมากของระบบไฟล์แบบอ่านอย่างเดียวที่เป็นไปได้
    สิ่งนี้เคยเป็นคำแนะนำทั่วไปสำหรับระบบยูนิกซ์เพื่อความปลอดภัย แต่ในกรณีของคุณมีประโยชน์เพิ่มเติม: คุณไม่สามารถทำลายระบบไฟล์ได้หากคุณไม่สามารถเขียนลงไปได้


การทำงานของการเมาท์แบบซิงโครนัสอย่างเต็มที่ไม่เท่ากับการเรียกsyncหลังจากเขียนทุกครั้ง - การเมาท์แบบซิงโครนัสจะไม่ส่งคืน (หรืออย่างน้อยไม่ควร) จากการเรียกการเขียนระบบไฟล์จนกว่าข้อมูลจะอยู่บนดิสก์ การเรียกsyncจะล้างข้อมูลการเขียนที่ค้างอยู่ทั้งหมด แต่ยังคงมีหน้าต่าง (สั้น ๆ ) ระหว่างที่การเขียนส่งคืนและการเรียกเพื่อsyncส่งคืนระหว่างที่ข้อมูลอาจยังไม่ถูกเขียนลงดิสก์
voretaq7

คุณแนะนำระบบไฟล์ใด คุณสามารถหาจำนวนประสบการณ์ของคุณได้หรือไม่?
Mark Wagner

@embobo ประสบการณ์ของฉันเป็นข้อมูลโดยรวม: ฉันไม่เคยทดสอบความเครียดกับ EXT ตระกูลของระบบไฟล์ แต่มีเหตุการณ์หนึ่งที่เกิดขึ้นในใจของฉันคือเมื่อฉันมีเซิร์ฟเวอร์ Squid ประสบจาก "inodes ทั้งหมดของฉันหายไปไหน?!" - ระบบไฟล์ได้ถูกเหยียบย่ำและบางครั้งก็ทำเครื่องหมายว่าสะอาด แต่ inode ทุกอันจะยังคงอยู่ในสถานะที่อ้างสิทธิ์ แต่ไม่เคยอ้างถึง fsck เพื่อแก้ไขความยุ่งเหยิงนั้นเป็นไปในเชิงบวก EPIC (เราปิดบังเพียงสร้าง FS ใหม่) นั่นคือวันที่ฉันหมดความมั่นใจในระบบไฟล์ตระกูล EXT
voretaq7

@Grodriguez Re: Journaling สามตัวเลือกdata=journal(สิ่งที่ผมอธิบายไว้ข้างต้น) data=ordered(ข้อมูลเมตา journaled ข้อมูลมีความมุ่งมั่นไปยังดิสก์ก่อนที่เมตาดาต้าที่มีความมุ่งมั่นที่จะระบบแฟ้ม.) และdata=writeback(ซึ่งมีประสิทธิภาพไม่มีบันทึก / การป้องกันข้อมูล - สิ่งที่ไม่ดีสามารถเกิดขึ้นได้หลังจากเกิดความผิดพลาดเช่นขยะกลางไฟล์) ฉันเชื่อว่าorderedเป็นค่าเริ่มต้นใน distros Linux ส่วนใหญ่ในวันนี้ ...
voretaq7

2
นอกเหนือจาก "จำกัด ระบบไฟล์ที่เขียนได้มากที่สุด": ในเดเบียนวิกิเป็นคู่มือที่จะทำสิ่งนี้ได้อย่างแน่นอนพร้อมกับตัวอย่างมากมายเกี่ยวกับ daemons ที่ต้องการการดูแลเป็นพิเศษ มันควรจะถูกต้องสำหรับ distris อื่น ๆ เช่นกัน: wiki.debian.org/ReadonlyRoot
krissi

7

EXT4 ไม่เหมาะสำหรับระบบของคุณ ฉันขอแนะนำให้ดูที่ระบบไฟล์ที่มีโครงสร้างบันทึก สิ่งเหล่านี้ทำงานโดยรักษาข้อมูลเป็นกระแสคงที่ของการอัปเดตการเขียนเทียบกับสตรีมเสมือนโดยมีตัวชี้ที่ชี้ 'หัว' ล่าสุด การอัพเดตเกิดขึ้นโดยการเขียนข้อมูลและข้อมูลเมตาไปยังที่จัดเก็บข้อมูลจากนั้นอัพเดตตัวชี้ ในกรณีที่เกิดความผิดพลาดหลังจากการเขียน แต่ก่อนที่ตัวชี้จะอัปเดตข้อมูลล่าสุดจะหายไป แต่ระบบไฟล์สอดคล้องกัน

สอง filesystems ผู้สมัครมีLogFSและNILFS ทั้งคู่มีอยู่ในเคอร์เนล mainline Linux


1

ฉันรู้สึกทึ่งเกี่ยวกับอุปกรณ์ในอาคารของคุณ คุณต้องใช้ความน่าเชื่อถือของอุปกรณ์ฝังตัวในขณะที่ใช้ระบบไฟล์ที่ไม่เหมาะสม

Ext4 (และตระกูล) เป็นระบบไฟล์วัตถุประสงค์ทั่วไปที่มี (ฉันเดา) หลายพันล้านชั่วโมงของการใช้งานบนฮาร์ดแวร์และกรณีการใช้งานที่หลากหลาย อย่างไรก็ตามสิ่งที่คุณขอไม่เหมาะกับ ext4 พอยน์เตอร์จาก voretaq7 และ Giovanni จะช่วยให้ใช้ ext4 ได้ดีที่สุดหากคุณต้องการ แต่คำตอบที่แท้จริงคือการใช้สิ่งที่เหมาะสมกับความต้องการของคุณมากขึ้น Steve ให้ทางเลือกคุณสองสามข้อ หากคุณดึงพลังงานจาก ext4 FS ต่อไปคุณจะได้รับความยุ่งเหยิงในที่สุด

หากนี่เป็นระบบปิดที่คุณกำลังสร้างคุณควรเลือกใช้สิ่งที่เหมาะสมกว่าหรือยอมรับว่าจะมีปัญหาในบางจุด อาจเป็นเพียง 1 ไฟฟ้าดับจาก 100 หรือ 1 จาก 1,000 ซึ่งอาจดีพอสำหรับคุณที่จะรับความเสี่ยงและอุปกรณ์มีแนวโน้มที่จะทำงานเป็นเวลานาน (ปี) โดยไม่มีการแทรกแซงด้วยตนเอง

หากนี่เป็นผลิตภัณฑ์ที่คุณตั้งใจจะนำไปใช้อย่างแพร่หลาย / นำออกสู่ตลาดคุณมีทางเลือกที่จะใช้สิ่งที่เหมาะสมกว่า หรือคุณใช้การตัดสินใจทางธุรกิจเพื่อสนับสนุนเปอร์เซ็นต์ของอุปกรณ์ที่จะก่ออิฐทุกปีและอาจจำเป็นต้องเปลี่ยนหรือแทรกแซงด้วยตนเองเพื่อกู้คืนพวกเขา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.