หน่วยความจำไม่เพียงพอที่รัน fsck บนระบบไฟล์ขนาดใหญ่


13

ฉันดูแลกล่อง Debian linux เก่า (ที่ใช้งานจำหลัก) ที่มี RAM เพียง 512 MB แต่มีที่เก็บข้อมูลภายนอกจำนวนมากติดอยู่ ระบบไฟล์ ext3 หนึ่งระบบมีขนาด 2.7 TB และ fsck ไม่สามารถตรวจสอบได้เนื่องจากหน่วยความจำไม่เพียงพอโดยมีข้อผิดพลาดเช่นนี้:

   เกิดข้อผิดพลาดในการจัดสรรอาร์เรย์บล็อกไดเรกทอรี: การจัดสรรหน่วยความจำล้มเหลว
   e2fsck: ยกเลิก

ฉันได้เพิ่มพาร์ติชั่นการแลกเปลี่ยน 4 GB แล้ว แต่ก็ยังไม่เสร็จ แต่นี่เป็นเคอร์เนล 32 บิตดังนั้นฉันไม่คาดหวังว่าการเพิ่มอีกจะช่วยได้

นอกเหนือจากการบูตเป็นเคอร์เนล 64 บิตมีวิธีอื่นในการรับ fsck เพื่อทำให้การตรวจสอบเสร็จสมบูรณ์หรือไม่

คำตอบ:


12

เคอร์เนล 64 บิตและ RAM ที่มีขนาดใหญ่จะทำให้ fsck ทำงานได้ดีและรวดเร็ว อีกวิธีหนึ่งคือตอนนี้มีตัวเลือกใน e2fsck ที่จะบอกให้เก็บผลกลางทั้งหมดในไดเรกทอรีแทนที่จะเป็นใน RAM ซึ่งช่วยได้อย่างมาก สร้าง/etc/e2fsck.confด้วยเนื้อหาดังต่อไปนี้:

[scratch_files]
directory = /var/cache/e2fsck

(และแน่นอนตรวจสอบให้แน่ใจว่ามีไดเรกทอรีอยู่และอยู่ในพาร์ติชันที่มีเนื้อที่ว่างไม่กี่ GB) e2fsck จะเรียกใช้ SLLOOOOWWWWWWW แต่อย่างน้อยมันก็จะเสร็จสมบูรณ์

แน่นอนว่าสิ่งนี้จะไม่ทำงานกับรูท FS แต่ถ้าคุณมีการสลับคุณก็จะทำการรูท FS ก่อนหน้า


6

ท้ายที่สุดฉันก็ลองทำตามที่ womble แนะนำ นี่คือรายละเอียดเพิ่มเติมที่อาจเป็นประโยชน์หากคุณไม่เคยเห็นฟังก์ชั่นใหม่นี้ใน e2fsck มาก่อนเช่นฉัน

ตัวเลือกการกำหนดค่า "scratch_files" สำหรับ e2fsck พร้อมใช้งานในบางช่วงเวลาในเวอร์ชัน 1.40.x (ในกรณีของเราเราต้องอัปเกรดเป็นรุ่น Debian ล่าสุดเพื่อรับฟังก์ชั่นนี้)

เช่นเดียวกับตัวเลือก "directory = / var / cache / e2fsk" ที่ได้รับการแนะนำมีตัวเลือกการกำหนดค่าเพิ่มเติมบางอย่างเพื่อปรับแต่งวิธีการใช้ที่เก็บไฟล์เริ่มต้นอย่างละเอียด ฉันใช้ "dirinfo = false" เนื่องจากระบบไฟล์มีไฟล์จำนวนมาก แต่ไม่ใช่ไดเรกทอรีจำนวนมาก หากสถานการณ์กลับตัวเลือก "icount" จะเหมาะสม ตัวเลือกเหล่านี้ได้รับการบันทึกไว้ใน man page สำหรับ e2fsck.conf

BTW, Ted T'so เขียนเกี่ยวกับตัวเลือกเหล่านี้ในหัวข้อนี้

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


ฉันสงสัยว่า btrfs ดีกว่านี้ไหม เครื่องมือ ext4 ไม่ได้ถูกสร้างขึ้นอย่างชัดเจน ฉันเพิ่งมีปัญหานี้กับ RAM 2GB
user1133275
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.