ความสำคัญของ fsck ขณะบู๊ตด้วยระบบไฟล์ Journalled?


10

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

fsck ยังคงต้องการหลังจากการปิดที่ไม่สะอาดและเพราะเหตุใด

fsck 

คำตอบ:


4

ฉันตอบคำถามนี้ในบริบททั่วไปของ "ระบบไฟล์ที่เจอร์นัล"

ผมคิดว่าถ้าคุณได้จำนวนของ "การปิดมลทิน" (โดยการดึงสายไฟหรืออะไร ) ไม่ช้าก็เร็วคุณจะได้รับไปยังรัฐระบบแฟ้มที่จะต้องมีfsckหรือเทียบเท่าทางศีลธรรมของ xfs_repairfsck, ext4fileystsm แล็ปท็อปของฉันส่วนใหญ่เพียงไกลวารสารในทุกการรีบูต, การปิดทำความสะอาดรวม fsckแต่ทุกครั้งในขณะที่มันไม่ได้เต็มรูปแบบ

แต่ถามตัวเองว่า "เล่นซ้ำบันทึก" สำเร็จอย่างไร การเล่นซ้ำเจอร์นัลจะช่วยให้มั่นใจได้ว่าดิสก์บล็อกของส่วนที่เหลือของระบบไฟล์ตรงกับการสั่งซื้อที่รายการเจอร์นัลต้องการ การเล่นซ้ำบันทึกประจำวันในปริมาณน้อยfsckหรือเต็มfsckจำนวน

ฉันคิดว่ามีบางอย่างที่เกิดขึ้นทางวาจาด้วยมือ: การอ่านบันทึกประจำวันจะเป็นส่วนหนึ่งของสิ่งที่ดั้งเดิมfsckทำและxfs_repairเป็นโปรแกรมประเภทเดียวกันที่e2fs.fsck(หรือระบบไฟล์อื่น ๆfsck) คน XFS เพิ่งเชื่อหรือประสบการณ์ของพวกเขาทำให้พวกเขาไม่ได้ทำงานxfs_repairในทุก ๆ การบู๊ตเพียงเพื่อเล่นซ้ำบันทึกประจำวัน


3
ยกเว้นข้อผิดพลาดในรหัสการทำเจอร์นัลหรือดิสก์ไดรฟ์ไม่มีการปิดระบบที่ไม่สะอาดจำนวนใดสามารถปล่อยให้ดิสก์อยู่ในสถานะที่ต้องใช้ fsck ต่อไป [34] ยังคงรักษา fsck โดยอัตโนมัติอย่างมากหลังจากการเมานต์จำนวนมากส่วนหนึ่งเป็น carryover จาก ext2 รวมกับ, ดี ... ทัศนคติที่อวดรู้ของ "ในกรณี" อย่างน้อยใน Ubuntu รุ่นล่าสุดสิ่งนี้ถูกปิดใช้งานโดยค่าเริ่มต้น
psusi

จากประสบการณ์ของฉันอัตโนมัติfsckไม่ได้ 'อวด' ฉันแปลงext3 LVMพาร์ติชั่นเป็นext4และเริ่มรับข้อผิดพลาด 'ext4_mb_generate_buddy' เนื่องจากตามที่ฉันเข้าใจข้อผิดพลาดในext4รหัสซึ่งทำให้เกิดความไม่ตรงกันในสำเนาบนดิสก์และในหน่วยความจำของบิตแมปบนพาร์ติชัน 'LVM' ที่แปลง เท่าที่ฉันสามารถบอกได้fsckไม่มีการทุจริตเกิดขึ้น วิธีการแก้ปัญหาคือการปิดUNINIT_BGตัวเลือกหรือย้ายข้อมูลและเริ่มต้นพาร์ทิชันใหม่เช่นext4; ฉันเข้าเรียนหลักสูตรหลัง แต่ฉันก็ยังคิดว่าการรอข้อมูลสักสองสามนาทีfsckนั้นมีค่าไม่แพ้ข้อมูล!
StarNamer

1
มีข้อมูลที่ขาดหายไปจำนวนมากจากคำตอบนี้ดังนั้น downvote และตอบคำถามอื่น
symcbean

4

ช่วยให้แน่ใจว่าระบบไฟล์อยู่ในสถานะที่สอดคล้องกันหลังจากการปิดระบบที่ไม่สะอาด

สิ่งแรกที่ควรทราบคือ XFS ผู้สร้างและการกำหนดค่าส่วนใหญ่ของ ext จะใช้การทำบันทึกข้อมูล meta เท่านั้นซึ่งทั้งหมดเกี่ยวกับการหลีกเลี่ยง fsck สมุดรายวันจะไม่เล่นซ้ำเมื่อเริ่มต้น - อาจถูกยกเลิกหากไม่สมบูรณ์

มีระบบที่รองรับการทำเจอร์นัลข้อมูลแบบเต็ม - แต่ในทางปฏิบัติระดับการประกันเหล่านี้ให้มากกว่าการทำเจอร์นัลเมตาดาต้านั้นมีขนาดเล็กมากในสถานการณ์โลกจริง

ดังนั้น 'สถานะที่ไม่สอดคล้อง' และปัญหาที่แก้ไขโดย fsck จึงไม่ตรงกันระหว่าง meta-data และไฟล์ของตัวเอง เพื่อหลีกเลี่ยงปัญหานี้ OS จะเขียนการเปลี่ยนแปลงข้อมูลเมตาที่เสนอไปยังเจอร์นัลจากนั้นเขียนข้อมูลจริงไปยังดิสก์จากนั้นใช้การเปลี่ยนแปลงข้อมูลเมตาที่จำลองแบบในเจอร์นัลไปยังดิสก์ สิ่งเดียวที่ถูกจับได้คือตัวควบคุมดิสก์จะบัฟเฟอร์และอาจจัดลำดับคำขอใหม่ เพื่อหลีกเลี่ยงปัญหานี้ระบบไฟล์ที่เจอร์นัลส่วนใหญ่จะใช้อุปสรรค: แยกการดำเนินการแต่ละอย่างและรอให้ดิสก์รับทราบว่าการดำเนินการเสร็จสิ้นแล้ว แต่ดิสก์ที่ทันสมัยจำนวนมากยอมรับการเขียนจริงเสร็จก่อนที่จะส่งข้อมูล ดังนั้นสิ่งต่าง ๆ จะยุ่งเหยิง

fsck ยังคงต้องการหลังจากการปิดที่ไม่สะอาดและทำไม

ระบบไฟล์ส่วนใหญ่รักษาจำนวนการเมานต์ - เมื่อจำนวนนี้ถึง fsck เต็มจะถูกเรียกใช้ในครั้งต่อไปเพื่อเมานต์ดิสก์ สาเหตุที่ข้อมูลดิสก์อาจเสียหายแม้ว่าจะไม่ได้เขียนอย่างชัดเจนถึงแม้ว่าจะไม่มีข้อบกพร่องในซอฟต์แวร์ก็ตาม ความคิดเห็นของ psusi ด้านบนผิด


คุณกำลังสั่งซื้อสินค้าที่มีอุปสรรค ดิสก์ไม่รายงานการเขียนเสร็จสมบูรณ์ก่อนที่พวกเขาจะตีดิสก์เว้นแต่คุณจะเปิดใช้งานแคชการเขียนซึ่งถูกปิดใช้งานโดยค่าเริ่มต้นในดิสก์ระดับผู้บริโภคดังนั้นด้วยพวกเขา fs เพียงแค่ต้องรอให้เขียนเสร็จก่อนที่จะออก . สำหรับฮาร์ดแวร์ที่มีการเขียนแคชจะมีการใช้อุปสรรคในการป้องกันการจัดเรียงใหม่และบังคับให้ดิสก์ล้างแคชการเขียนดังนั้นจึงทำให้ fs เสียหาย
psusi

1
psusi - คุณสูบบุหรี่อะไร? "ดิสก์ไม่รายงานการเขียนเสร็จสมบูรณ์ก่อน ... " - ใช่พวกเขาทำ "เปิดใช้งานแคชการเขียนซึ่งถูกปิดใช้งานตามค่าเริ่มต้น" - ไม่ได้อยู่ในดิสก์ใด ๆ ที่ฉันเคยกำหนดค่าไว้ "อุปสรรคถูกใช้เพื่อป้องกันการเรียงลำดับใหม่" - แต่คุณบอกว่าฉันเป็น "การสั่งซื้อแบบเรียง
ซ้อน

ไม่พวกเขาทำไม่ได้ หากคุณไม่ได้เปิดใช้งานแคชเขียนดิสก์ ( hdparm -W) แสดงว่าดิสก์นั้นไม่ได้ทำการร้องขอการเขียนจนกว่าจะอยู่ในสื่อบันทึก ทำไมคุณคิดว่าตัวเลือกนั้นมีอยู่? ปัญหาและอุปสรรคที่ป้องกันไม่ให้เรียงลำดับใหม่เมื่อมีการร้องขอหลายครั้ง หากไม่มีสิ่งกีดขวาง fs จะไม่ออกคำร้องขอเพิ่มเติมจนกว่าคำขอก่อนหน้านี้จะเสร็จสิ้นดังนั้นจึงคงการสั่งซื้อโดยไม่มีอุปสรรค ... โดยที่ไม่ได้เปิดใช้งานแคชการเขียนดิสก์ วัตถุประสงค์ของอุปสรรคคืออนุญาตให้คุณเปิดใช้งานแคชการเขียนโดยไม่ทำให้ fs เสียหายเมื่อเกิดความผิดพลาด
psusi

โอ๊ะฉันสับสนนิดหน่อยแล้วก็ลืมsyncไป ให้ฉันลองอีกครั้ง. โพรซีเดอร์สำหรับการเขียนไปยังดิสก์โดยไม่มีข้อ จำกัด คือการเขียนลงในเจอร์นัsyncลดังนั้นการล้างแคชการเขียนใด ๆ จากนั้นเขียนข้อมูลจริง สิ่งนี้ทำให้แน่ใจว่าสามารถใช้เจอร์นัลในการกู้คืน fs หลังจากเกิดความผิดพลาดได้เสมอ แต่การซิงค์จะทำให้ช้าลงและครึ่งหนึ่งเอาชนะวัตถุประสงค์ของแคชการเขียน ดังนั้นสิ่งกีดขวางจึงถูกเพิ่มเข้ามาแทนที่สิ่งที่ดีกว่าsyncและด้วยการสนับสนุนดิสก์ที่เหมาะสมพวกเขาสามารถเรียกคืนประสิทธิภาพการทำงานของการซิงค์ได้อย่างปลอดภัย
psusi

2

ไม่จำเป็นต้อง fsck ระบบไฟล์ journaling เพียงเพราะการปิดที่ไม่สะอาด

ทั้งเหตุผลในการทนลงโทษประสิทธิภาพรันไทม์ของรายการบันทึกข้อมูลเมตาเพื่อให้แน่ใจว่าระบบแฟ้มสามารถทำ 100% สอดคล้องกันอีกครั้งโดยอัตโนมัติ replaying บันทึกข้อมูลเมตาต่อไปติดถ้าระบบแฟ้มที่ไม่ได้เดินเท้าเรียบร้อย

บทบาทเดียวของ fsck คือเพื่อให้แน่ใจว่าข้อมูลเมตาดาต้ามีความสอดคล้องกันดังนั้นจึงซ้ำซ้อนในการเรียกใช้ fsck เพียงเพราะระบบไฟล์ไม่ได้ถอนการติดตั้งอย่างถูกต้อง

ระบบไฟล์ที่ทำเจอร์นัลสามารถเสียหายได้ด้วยเหตุผลอื่นเช่น - ความล้มเหลวของฮาร์ดแวร์, บั๊กไดรเวอร์, ข้อผิดพลาดของผู้ดูแลระบบเป็นต้น - ดังนั้นเครื่องมือ fsck จึงจำเป็นอย่างยิ่ง ไม่มีเหตุผลที่จะเรียกใช้เพียงอย่างเดียวเนื่องจากการปิดที่ไม่สะอาด


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