fsck -p (preen) ทำอะไรกับ ext4


16

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

ฉันได้รับ Googling ไปรอบ ๆ และสิ่งที่ฉันพบคือหน้าคนที่ไม่ได้บอกสิ่งที่-pจะแก้ไขหรือสิ่งที่เรียกธงบนมือ ฉันสนใจระบบไฟล์ ext4 เป็นพิเศษ

คำตอบ:


18

คำตอบสำหรับคำถามของคุณอยู่ในe2fsck/problems.cไฟล์ของซอร์สโค้ดe2fsprogs การมองหาPR_PREEN_OKธงควรช่วยให้คุณเริ่มต้นได้

เนื่องจากการจัดการข้อผิดพลาดแบบสมบูรณ์นั้นเกี่ยวข้องกับอีกเล็กน้อยเนื่องจากมีเงื่อนไขข้อผิดพลาดมากมายที่อาจเกิดขึ้นคุณจึงควรมองรหัสให้ละเอียดยิ่งขึ้นหากคุณกังวลเกี่ยวกับกรณีและปัญหาเฉพาะ อย่างไรก็ตามรายการด้านล่างนี้ถูกดึงมาจากความคิดเห็นไปยังเงื่อนไขข้อผิดพลาดและควรให้ภาพรวมคร่าวๆเกี่ยวกับผลกระทบของโหมด preen

ข้อผิดพลาด / คำเตือนต่อไปนี้ได้รับการจัดการโดยอัตโนมัติในขณะนี้เมื่อ-pมีการระบุการตั้งค่าสถานะ:

  • ย้ายคำใบ้
  • วารสารไอโหนดไม่ถูกต้อง
  • Journal superblock เสียหาย
  • Superblock has_journal flag มีความชัดเจน แต่มีวารสาร
  • มีการตั้งค่าสถานะ Superblock needs_recovery แต่ไม่มีเจอร์นัลอยู่
  • การแก้ไขระบบไฟล์เป็น 0 แต่ตั้งค่าสถานะคุณลักษณะแล้ว
  • คำแนะนำ Superblock สำหรับ Superblock ภายนอก
  • ตัวอธิบายกลุ่ม N ทำเครื่องหมายว่าไม่กำหนดค่าเริ่มต้นโดยไม่มีชุดคุณลักษณะ
  • group N block bitmap ไม่กำหนดค่าเริ่มต้น แต่ bitode inode ที่ใช้งานอยู่
  • ตัวอธิบายกลุ่ม N มีจำนวน inodes ที่ไม่ได้ใช้ที่ไม่ถูกต้อง
  • บล็อกบิตแมปกลุ่มสุดท้ายไม่กำหนดค่าเริ่มต้น
  • การตั้งค่าสถานะ test_fs (และ ext4 สามารถใช้ได้)
  • เวลาเมานต์ล่าสุดอยู่ในอนาคต (fudged)
  • เวลาเขียนล่าสุดอยู่ในอนาคต (fudged)
  • การตรวจสอบกลุ่มที่ถูกบล็อก (คำถามสลัก) ไม่ถูกต้อง
  • ไดเรกทอรีรากได้ตั้งค่าเวลา
  • inode ที่สงวนไว้มีโหมดไม่ดี
  • ไอโหนดที่ถูกลบมีค่าศูนย์ dtime
  • Inode ที่ใช้งานอยู่ แต่ตั้งค่าเวลา
  • ไดเรกทอรีที่มีความยาวเป็นศูนย์
  • Inode มี i_size ไม่ถูกต้อง
  • Inode มี i_blocks ไม่ถูกต้อง
  • Bad superblock ในกลุ่ม
  • ตัวอธิบายกลุ่มบล็อกที่ไม่ดีในกลุ่ม
  • บล็อกอ้างสิทธิ์โดยไม่มีเหตุผล
  • เกิดข้อผิดพลาดในการจัดสรรบล็อกสำหรับการย้ายข้อมูลเมตา
  • เกิดข้อผิดพลาดในการจัดสรรบล็อกบัฟเฟอร์ในระหว่างกระบวนการย้าย
  • ย้ายข้อมูลกลุ่มข้อมูลเมตาจาก X เป็น Y
  • ย้ายข้อมูลกลุ่ม metatdata ไปที่ X
  • บล็อกข้อผิดพลาดการอ่านระหว่างกระบวนการย้าย
  • บล็อกข้อผิดพลาดการเขียนในระหว่างกระบวนการย้าย
  • การตั้งค่าสถานะไม่เปลี่ยนรูปแบบบนอุปกรณ์หรือ inode ซ็อกเก็ต
  • ขนาดที่ไม่เป็นศูนย์สำหรับอุปกรณ์ Fifo หรือซ็อกเก็ต inode
  • การแก้ไขระบบไฟล์เป็น 0 แต่ตั้งค่าสถานะคุณลักษณะแล้ว
  • Journal inode ไม่ได้ใช้งาน แต่มีข้อมูล
  • สมุดรายวันมีโหมดไม่ดี
  • ตั้งค่าสถานะ INDEX_FL บนระบบไฟล์ที่ไม่ใช่ HTREE
  • INDEX_FL ตั้งค่าสถานะบนไม่ใช่ไดเรกทอรี
  • โหนดรูทไม่ถูกต้องในไดเรกทอรี HTREE
  • รุ่นแฮชที่ไม่รองรับในไดเรกทอรี HTREE
  • แฟลกที่เข้ากันไม่ได้ในโหนดรูต HTREE
  • HTREE ลึกเกินไป
  • inode ไม่ถูกต้อง -> i_extra_isize
  • รายการ ea ไม่ถูกต้อง -> e_name_len
  • รายการ ea ไม่ถูกต้อง -> e_value_offs
  • รายการ ea ไม่ถูกต้อง -> e_value_block
  • รายการ ea ไม่ถูกต้อง -> e_value_size
  • รายการ ea ไม่ถูกต้อง -> e_hash
  • inode หายไป EXTENTS_FL แต่เป็น inode ในขอบเขต
  • ไอโหนดไม่ควรตั้งค่า EOFBLOCKS_FL
  • รายการไดเรกทอรีได้ลบหรือไม่ได้ใช้ไอโหนด
  • ไม่ได้ตั้งค่าชนิดไฟล์ไดเรกทอรี
  • ไดเร็กทอรี filetype ถูกตั้งค่าบนระบบไฟล์
  • โหนดรูต HTREE ไม่ถูกต้อง
  • ขีด จำกัด HTREE ไม่ถูกต้อง
  • HTREE ไม่ถูกต้อง
  • โหนดภายใน HTREE มีแฮชที่ล้าสมัยในตาราง
  • พบไอโหนดในกลุ่มที่มีการตั้งค่า _INODE_UNINIT
  • พบ Inode ในพื้นที่ inodes ที่ไม่ได้ใช้เป็นกลุ่ม
  • i_blocks_hi ควรเป็นศูนย์
  • / หายไป + ไม่พบไม่พบ
  • inode ความยาวศูนย์ที่ไม่ได้เชื่อมต่อ
  • การอ้างอิงไอโหนดนับผิด
  • ไม่ได้ตั้งค่าการเติมเมื่อสิ้นสุดบิตแมปไอโหนด
  • ไม่ได้ตั้งค่าการเติมเมื่อสิ้นสุดบล็อกบิตแมป
  • บล็อกส่วนหัวความแตกต่างบิตแมป
  • ไม่ได้ใช้การบล็อก แต่ทำเครื่องหมายเป็นบิตแมป
  • บล็อกที่ใช้ แต่ไม่ได้ทำเครื่องหมายว่าใช้ในบิตแมป
  • บล็อกความแตกต่างบิตแมปจบ
  • ส่วนหัวความแตกต่างบิตแมปไอโหนด
  • ไม่ได้ใช้ Inode แต่ทำเครื่องหมายเป็นบิตแมป
  • ใช้ไอโหนด แต่ไม่ทำเครื่องหมายว่าใช้ในบิตแมป
  • ความแตกต่างของบิตแมปไอโหนดสิ้นสุด
  • inodes ฟรีนับว่าผิดกลุ่ม
  • ไดเรกทอรีนับว่าผิดกลุ่ม
  • inodes ฟรีนับผิด
  • บล็อกฟรีนับสำหรับกลุ่มผิด
  • บล็อกฟรีนับผิด
  • ไม่ได้ใช้ช่วงบล็อก แต่ทำเครื่องหมายเป็นบิตแมป
  • ช่วงบล็อกถูกใช้ แต่ไม่ทำเครื่องหมายว่าใช้ในบิตแมป
  • ไม่ใช้ช่วง Inode แต่ทำเครื่องหมายเป็นบิตแมป
  • ใช้ช่วง Inode แต่ไม่ได้ทำเครื่องหมายว่าใช้ในบิตแมป
  • กลุ่ม N บล็อกที่ใช้อยู่ แต่กลุ่มถูกทำเครื่องหมาย BLOCK_UNINIT
  • กลุ่ม N inode ใช้งานอยู่ แต่กลุ่มถูกทำเครื่องหมาย INODE_UNINIT
  • สร้างวารสารใหม่หากตั้งค่าสถานะ E2F_FLAG_JOURNAL_INODE

เงื่อนไขข้อผิดพลาดต่อไปนี้ทำให้กระบวนการ fsck ที่ไม่โต้ตอบเพื่อยกเลิกแม้ว่าการ-pตั้งค่าสถานะ:

  • บล็อกบิตแมปไม่ได้อยู่ในกลุ่ม
  • บิตแมป Inode ไม่ได้อยู่ในกลุ่ม
  • ตารางไอโหนดไม่ได้อยู่ในกลุ่ม
  • ขนาดระบบไฟล์ไม่ถูกต้อง
  • จำนวนไอโหนดในซูเปอร์บล็อกไม่ถูกต้อง
  • Hurd ไม่รองรับคุณสมบัติประเภทไฟล์
  • วารสารมีประเภทซุปเปอร์บล็อกที่ไม่รู้จัก
  • ถามว่าเราควรล้างวารสารหรือไม่
  • Journal superblock มีชุดธงแบบอ่านอย่างเดียวที่ไม่รู้จัก
  • Journal superblock มีการตั้งค่าสถานะฟีเจอร์ที่เข้ากันไม่ได้ที่ไม่รู้จัก
  • สมุดรายวันมีหมายเลขรุ่นที่ไม่สนับสนุน
  • ถามว่าเราควรรันวารสารหรือไม่
  • บล็อกที่สงวนไว้โดยไม่มี resize_inode
  • Resize_inode ไม่ได้เปิดใช้งาน แต่การปรับขนาด inode นั้นไม่ใช่ศูนย์
  • ปรับขนาดไอโหนดไม่ถูกต้อง
  • เวลาเมานต์ล่าสุดอยู่ในอนาคต
  • เวลาเขียนล่าสุดอยู่ในอนาคต
  • ตัวอธิบายกลุ่ม N checksum ไม่ถูกต้อง
  • ไดเรกทอรีรากไม่ใช่ไอโหนด
  • Block bitmap ขัดแย้งกับบล็อค fs อื่น ๆ
  • บิตแมป Inode ขัดแย้งกับบล็อก fs อื่น ๆ
  • ตารางไอโหนดขัดแย้งกับบล็อค fs อื่น ๆ
  • บิตแมปบล็อกอยู่ในบล็อกที่ไม่ดี
  • Inode bitmap อยู่บนบล็อคที่ไม่ดี
  • หมายเลขบล็อกที่ผิดกฎหมายใน inode
  • หมายเลขบล็อกซ้อนทับข้อมูลเมตา fs
  • Inode มีบล็อคที่ผิดกฎหมาย (คำถามสลัก)
  • มีบล็อกที่ไม่ดีมากเกินไปใน inode
  • หมายเลขบล็อกไม่ถูกต้องใน inode บล็อกที่ไม่ดี
  • ไอโหนดบล็อกที่ไม่ดีมีบล็อกที่ผิดกฎหมาย (latch question)
  • บล็อกที่ไม่ดีใช้เป็นบล็อกทางอ้อมที่ไม่ดีบล็อก
  • ความไม่ลงรอยกันไม่สามารถแก้ไขได้อย่างรวดเร็ว
  • พรอมต์บล็อกหลักที่ไม่ดี
  • ไม่แสดงพรอมต์ข้อความ
  • ตั้งค่าสถานะ Imagic บนไอโหนดเมื่อระบบไฟล์ไม่รองรับ
  • ตั้งค่าสถานะการบีบอัดเป็นไอโหนดเมื่อระบบไฟล์ไม่รองรับ
  • จัดการกับไอโหนดที่เป็นส่วนหนึ่งของรายการที่เชื่อมโยงกับเด็กกำพร้า
  • จัดการกับไอโหนดที่เป็นส่วนหนึ่งของรายการเด็กกำพร้าที่เชื่อมโยงเสียหาย (คำถามสลัก)
  • เกิดข้อผิดพลาดในการอ่านบล็อกแอตทริบิวต์เพิ่มเติม
  • การปิดกั้นแอตทริบิวต์เพิ่มเติมไม่ถูกต้อง
  • จำนวนการอ้างอิงแอตทริบิวต์เพิ่มเติมไม่ถูกต้อง
  • ไม่รองรับ EA หลายบล็อค
  • เกิดข้อผิดพลาดในการชนกันของการจัดสรร EA
  • ชื่อแอตทริบิวต์ที่ขยายเพิ่มไม่ดี
  • ค่าแอตทริบิวต์ที่ขยายเพิ่มไม่ดี
  • ไอโหนดใหญ่เกินไป (คำถามสลัก)
  • ไดเรกทอรีใหญ่เกินไป
  • ไฟล์ปกติใหญ่เกินไป
  • Symlink ใหญ่เกินไป
  • บล็อกที่ไม่ดีมีบล็อกทางอ้อมที่ขัดแย้งกับบล็อกของระบบไฟล์
  • ปรับขนาดไอโหนดไม่สำเร็จ
  • ไอโหนดดูเหมือนจะเป็นไดเรกทอรี
  • เกิดข้อผิดพลาดขณะอ่านแผนผังขอบเขต
  • ล้มเหลวในการย้ำขอบเขต
  • บล็อกเริ่มต้นไม่ดีเท่าที่ควร
  • ขอบเขตสิ้นสุดเกินกว่าระบบไฟล์
  • ตั้งค่าสถานะ EXTENTS_FL บนระบบไฟล์ที่ไม่ใช่ส่วนขยาย
  • inode มีส่วนขยาย, superblock หายไปคุณสมบัติ INCOMPAT_EXTENTS
  • Fast symlink มีการตั้งค่า EXTENTS_FL
  • Extents ไม่เป็นระเบียบ
  • Inode มีโหนดขอบเขตที่ไม่ถูกต้อง
  • โคลนบล็อกที่ซ้ำกัน / ไม่ดี?
  • หมายเลขไอโหนดไม่ดีสำหรับ '.'
  • รายการไดเรกทอรีมีหมายเลขไอโหนดไม่ดี
  • รายการ Directry คือลิงก์ไปที่ '.'
  • รายการจุดไดเร็กทอรีไปยัง inode จะอยู่ในบล็อกที่ไม่ดี
  • รายการไดเรกทอรีมีลิงค์ไปยังไดเรกทอรี
  • รายการไดเรกทอรีมีลิงค์ไปยังไดเรกทอรีราก
  • รายการไดเรกทอรีมีอักขระที่ผิดกฎหมายในชื่อ
  • ไม่มี '.' ในไดเรกทอรี inode
  • ไม่มี '.. ' ในไดเรกทอรี inode
  • รายการแรกใน inode ของไดเรกทอรีไม่มี '.'
  • รายการที่สองใน inode ของไดเรกทอรีไม่มี '.. '
  • i_faddr ควรเป็นศูนย์
  • i_file_acl ควรเป็นศูนย์
  • i_dir_acl ควรเป็นศูนย์
  • i_frag ควรเป็นศูนย์
  • i_fsize ควรเป็นศูนย์
  • inode มีโหมดไม่ดี
  • ไดเรกทอรีเสียหาย
  • ชื่อไฟล์ยาวเกินไป
  • ไดเรกทอรี inode มีบล็อกที่ขาดหายไป (หลุม)
  • '' ไม่ได้ยกเลิก NULL
  • '.. ' ไม่สิ้นสุดด้วยค่า NULL
  • อุปกรณ์อักขระ inode ไม่ถูกต้อง
  • ไอโหนดอุปกรณ์บล็อกไม่ถูกต้อง
  • ทำซ้ำ '.' การเข้า
  • ทำซ้ำรายการ '.. '
  • rec_len สุดท้ายผิด
  • เกิดข้อผิดพลาดในการอ่านบล็อกไดเรกทอรี
  • เกิดข้อผิดพลาดในการเขียนบล็อกไดเรกทอรี
  • รายการไดเรกทอรีสำหรับ '.' ใหญ่. สปลิต?
  • ไอโหนด FIFO ผิดกฎหมาย
  • ซ็อกเก็ต inode ผิดกฎหมาย
  • ประเภทไฟล์ไดเรกทอรีไม่ถูกต้อง
  • ชื่อไฟล์ไดเรกทอรีเป็นโมฆะ
  • symlink ไม่ถูกต้อง
  • i_file_acl (บล็อกแอตทริบิวต์เพิ่มเติม) ไม่ถูกต้อง
  • ระบบไฟล์มีไฟล์ขนาดใหญ่ แต่ไม่มีแฟล็กดังกล่าวใน sb
  • ล้างไดเรกทอรี HTREE ที่ไม่ถูกต้อง
  • บล็อกที่ไม่ดีในโหนดภายใน htree
  • พบรายการไดเรกทอรีซ้ำ
  • พบชื่อไฟล์ที่ไม่ซ้ำกัน
  • i_blocks_hi ควรเป็นศูนย์
  • บล็อก HTREE ที่ไม่คาดคิด
  • ไม่ได้จัดสรร root inode
  • ไม่พบห้องพักที่หายไป +
  • ไดเร็กทอรี inode ที่ไม่ได้เชื่อมต่อ
  • .. รายการไม่ถูกต้อง
  • ลืม + ไม่พบไดเรกทอรี
  • inode ที่ไม่ได้แนบ
  • Superblock เสียหาย
  • ไม่รองรับแฟรกเมนต์
  • เกิดข้อผิดพลาดในการ จำกัด ขนาดอุปกรณ์ฟิสิคัลของระบบไฟล์
  • เจอร์นัลภายนอกมี (ไม่สนับสนุน) หลายระบบไฟล์
  • ไม่พบวารสารภายนอก
  • วารสารภายนอกมี superblock ที่ไม่ดี
  • Superblock มี UUID ที่ไม่ดี
  • เกิดข้อผิดพลาดในการจัดสรรบิตแมปไอโหนด
  • เกิดข้อผิดพลาดในการจัดสรรบล็อกบิตแมป
  • เกิดข้อผิดพลาดในการจัดสรรข้อมูลลิงค์ icount
  • เกิดข้อผิดพลาดในการจัดสรรอาร์เรย์บล็อกไดเรกทอรี
  • เกิดข้อผิดพลาดขณะสแกน inodes
  • เกิดข้อผิดพลาดขณะวนซ้ำมากกว่าบล็อก
  • เกิดข้อผิดพลาดขณะเก็บข้อมูลการนับไอโหนด
  • เกิดข้อผิดพลาดขณะเก็บข้อมูลบล็อกไดเรกทอรี
  • ข้อผิดพลาดขณะอ่าน inode (สำหรับการล้าง)
  • เกิดข้อผิดพลาดในการจัดสรรโครงสร้าง refcount
  • เกิดข้อผิดพลาดในการอ่านบล็อกแอตทริบิวต์เพิ่มในขณะที่แก้ไข refcount
  • เกิดข้อผิดพลาดในการเขียนบล็อกแอตทริบิวต์เพิ่มเติมในขณะที่แก้ไข refcount
  • เกิดข้อผิดพลาดในการจัดสรรโครงสร้างการจัดสรรภูมิภาคของ EA
  • เกิดข้อผิดพลาดขณะสแกน inodes
  • เกิดข้อผิดพลาดในการจัดสรรบิตแมปไอโหนด
  • ข้อผิดพลาดภายใน: ไม่พบ dir_info
  • เกิดข้อผิดพลาดในการจัดสรรโครงสร้าง icount
  • เกิดข้อผิดพลาดซ้ำกับบล็อกไดเรกทอรี
  • เกิดข้อผิดพลาดในการจัดสรรไอโหนด
  • เกิดข้อผิดพลาดในการปรับ EA refcount
  • เกิดข้อผิดพลาดในการจัดสรรบิตแมปไอโหนด
  • เกิดข้อผิดพลาดในการสร้างไดเรกทอรีราก
  • รูต inode ไม่ใช่ไดเร็กทอรี ยกเลิก
  • ไม่สามารถดำเนินการต่อได้หากไม่มีไอโหนดรูต
  • ข้อผิดพลาดภายใน: ไม่พบ dir_info
  • ข้อผิดพลาดในการเขียนโปรแกรม: จุดสิ้นสุดบิตแมปไม่ตรงกัน
  • ข้อผิดพลาดภายใน: fudging สิ้นสุดบิตแมป
  • เกิดข้อผิดพลาดในการคัดลอกบิตแมป inode แทน
  • เกิดข้อผิดพลาดในการคัดลอกบิตแมปบล็อกแทน

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