Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

fsck เพื่อซ่อมแซมข้อผิดพลาดของระบบไฟล์ Linux [4 ตัวอย่างทั่วไป]

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

ควบคู่ไปกับระบบสำรองข้อมูลที่แข็งแกร่ง fsck (File System cheCK) น่าจะเป็นเครื่องมือที่สำคัญที่สุดที่คุณสามารถมีได้เพื่อป้องกันข้อมูลสูญหาย บทแนะนำนี้จะอธิบายวิธีใช้ fsck เพื่อแก้ไขข้อผิดพลาดของระบบไฟล์ใน Linux และนำคุณผ่านตัวอย่างทั่วไปสี่ตัวอย่าง

fsck ตรวจสอบความสมบูรณ์และแก้ไขข้อผิดพลาดในระบบไฟล์ Linux ของคุณ

ไวยากรณ์

fsck เป็นอินเทอร์เฟซสำหรับตัวตรวจสอบระบบไฟล์จำนวนหนึ่งสำหรับระบบไฟล์ที่ใช้โดย Linux และมีรูปแบบดังนี้:

fsck [OPTIONS]... [FILESYSTEMS]...

โปรดทราบว่า:

  • [OPTIONS]… เป็นรายการตัวเลือกจากตารางด้านล่าง
  • [FILESYSTEMS] คือรายการระบบไฟล์ที่จะตรวจสอบ/ซ่อมแซม
  • ตัวเลือกที่ไม่ใช่ เข้าใจโดย fsck จะถูกส่งต่อไปยังตัวตรวจสอบระบบไฟล์เฉพาะที่ใช้สำหรับระบบไฟล์เฉพาะที่คุณกำลังตรวจสอบ
  • หากไม่มีการระบุระบบไฟล์ fsck จะเริ่มต้นการตรวจสอบระบบไฟล์ทั้งหมดใน /etc/fstab (เช่น ค่าเริ่มต้นเป็น -A ตัวเลือก)

ตัวเลือก

fsck มีหลายทางเลือก คุณสามารถดูรายการทั้งหมดได้โดยเรียกใช้:

man fsck

…ในเทอร์มินัลของคุณ ต่อไปนี้คือข้อมูลสรุปของตัวเลือกที่คุณน่าจะต้องใช้มากที่สุด:

ต่อไปนี้คือตัวเลือกที่ใช้กันทั่วไปเมื่อใช้ fsck ตรงจากคู่มือ (แต่มีการทบทวนเพื่อให้กระชับ – ตรวจสอบคู่มือสำหรับรายละเอียดการใช้งานขั้นสูงเพิ่มเติม):

-t fslist ระบุประเภทของระบบไฟล์ที่จะตรวจสอบ พารามิเตอร์ fslist คือรายการระบบไฟล์และตัวระบุตัวเลือกที่คั่นด้วยเครื่องหมายจุลภาค โดยปกติ ประเภทของระบบไฟล์จะถูกอนุมานโดยการค้นหา filesys ในไฟล์ /etc/fstab และใช้รายการที่เกี่ยวข้อง
-A เดินผ่านไฟล์ /etc/fstab และพยายามตรวจสอบระบบไฟล์ทั้งหมดในการรันครั้งเดียว โดยทั่วไปจะใช้ตัวเลือกนี้จากไฟล์การเริ่มต้นระบบ /etc/rc แทนที่จะใช้คำสั่งหลายคำสั่งในการตรวจสอบระบบไฟล์เดียว
-M อย่าตรวจสอบระบบไฟล์ที่เมาท์และส่งคืนรหัสทางออก 0 สำหรับระบบไฟล์ที่เมาท์
-N ไม่ดำเนินการ แค่แสดงสิ่งที่จะทำ
-R เมื่อตรวจสอบระบบไฟล์ทั้งหมดที่มีแฟล็ก -A ให้ข้ามระบบไฟล์รูท (ในกรณีที่ติดตั้งแบบอ่าน-เขียนแล้ว)
-V สร้างเอาต์พุตแบบละเอียด รวมถึงคำสั่งเฉพาะระบบไฟล์ทั้งหมดที่ดำเนินการ

ตัวเลือกสำหรับ fsck เฉพาะระบบไฟล์ที่แตกต่างกันนั้นไม่ได้มาตรฐาน หากมีข้อสงสัย โปรดศึกษาหน้าคู่มือของตัวตรวจสอบเฉพาะระบบไฟล์ แม้ว่าจะไม่รับประกัน แต่ตัวตรวจสอบระบบไฟล์ส่วนใหญ่รองรับตัวเลือกต่อไปนี้:

-a ซ่อมแซมระบบไฟล์โดยอัตโนมัติโดยไม่มีคำถามใดๆ (ใช้ตัวเลือกนี้ด้วยความระมัดระวัง)
-n สำหรับตัวตรวจสอบเฉพาะระบบไฟล์บางตัว ตัวเลือก -n จะทำให้ fsck เฉพาะ fs หลีกเลี่ยงการพยายามแก้ไขปัญหาใดๆ แต่เพียงรายงานปัญหาดังกล่าว
-r ซ่อมแซมระบบไฟล์แบบโต้ตอบ (ขอคำยืนยัน)
-y สำหรับตัวตรวจสอบเฉพาะระบบไฟล์บางตัว ตัวเลือก -y จะทำให้ fsck เฉพาะ fs พยายามแก้ไขความเสียหายของระบบไฟล์ที่ตรวจพบโดยอัตโนมัติเสมอ

หากคุณต้องการดูตัวเลือกที่มีให้สำหรับตัวตรวจสอบเฉพาะสำหรับระบบไฟล์เฉพาะ ให้เรียกใช้:

man fsck.ext4

รหัสออก

รหัสออกที่ส่งคืนโดย fsck คือผลรวมของเงื่อนไขต่อไปนี้
0 ไม่มีข้อผิดพลาด
1 แก้ไขข้อผิดพลาดของระบบไฟล์
2 ควรรีบูตระบบ
4 ข้อผิดพลาดของระบบไฟล์ที่ยังไม่ถูกแก้ไข
8 การทำงานผิดพลาด
16 การใช้งานหรือข้อผิดพลาดทางไวยากรณ์
32 Fsck ถูกยกเลิกโดยคำขอของผู้ใช้
128 ข้อผิดพลาดของไลบรารีที่ใช้ร่วมกัน
รหัสทางออกที่ส่งคืนเมื่อตรวจสอบระบบไฟล์หลายระบบคือ OR ระดับบิต ของรหัสออกสำหรับแต่ละระบบไฟล์ที่ถูกตรวจสอบ

ตัวอย่าง

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

กำลังถอนการติดตั้ง

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

sudo umount /dev/filesystem

… โดยที่ ระบบไฟล์ เป็นชื่อระบบไฟล์ที่จะ unmount

หากคุณไม่ทราบชื่อระบบไฟล์ ให้เรียกใช้:

df -h

… เพื่อรับรายการระบบไฟล์และจุดต่อเชื่อม

ติดตั้งใหม่

เมื่อคุณตรวจสอบและซ่อมแซมเสร็จแล้ว คุณสามารถต่อเชื่อมระบบไฟล์อีกครั้งโดยใช้:

sudo mount /dev/filesystem

ตรวจสอบและซ่อมแซมระบบไฟล์ที่เสียหาย

sudo fsck -p /dev/filesystem

โปรดทราบว่า:

  • ระบบไฟล์ เป็นชื่อของระบบไฟล์ที่กำลังตรวจสอบและดูเหมือน “sda1” หรือ “sdc1”
  • ที่ -p ตัวเลือกบอก fsck เพื่อแก้ไขปัญหาที่ไม่ต้องการการโต้ตอบกับผู้ใช้โดยอัตโนมัติ

ตรวจสอบการบู๊ต / ตรวจสอบระบบไฟล์รูท

เนื่องจากคุณตรวจสอบระบบไฟล์ที่ใช้งานไม่ได้ จึงไม่สามารถตรวจสอบระบบไฟล์รูทใน Linux ได้ในขณะที่ระบบบูทโดยสมบูรณ์และใช้งานอยู่

การเรียกใช้ Check on Boot เป็นวิธีที่ดีที่สุด เนื่องจากใช้งานได้แม้ว่าคุณจะเข้าสู่ระบบจากระยะไกล

การแจกจ่าย Linux ส่วนใหญ่ได้รับการกำหนดค่าโดยค่าเริ่มต้นให้เรียกใช้ fsck โดยอัตโนมัติหากระบบไฟล์ถูกทำเครื่องหมายเป็น "สกปรก" (ต้องตรวจสอบ) หรือหลังจากระยะเวลาการบู๊ตคงที่

ในการบังคับตรวจสอบเฉพาะการบูตระบบแต่ละครั้ง (รวมถึงระบบไฟล์รูท) ให้ใช้ tune2fs เพื่อปรับพารามิเตอร์ระบบไฟล์:

tune2fs -c 1 /dev/filesystem

โดยที่ ระบบไฟล์ คือชื่อของระบบไฟล์ที่จะตรวจสอบ 1 คือจำนวนบูท fsck ทำงานหลังจาก – โดยมีค่าเริ่มต้นเป็น 30 ในการแจกแจงของ Ubuntu เพื่อให้สิ่งต่าง ๆ กลับมาเป็นปกติ คุณสามารถเรียกใช้:

tune2fs -c 30 /dev/filesystem

หากไม่ได้ผล การแจกแจงที่เก่ากว่าจะเรียกใช้ fsck เมื่อเปิดเครื่องหาก /forcefsck ไฟล์มีอยู่:

sudo touch /forcefsck

เมื่อ fsck เสร็จแล้วตอนบูต ผลลัพธ์จะถูกบันทึกไว้ที่ตำแหน่ง:

/var/log/fsck

… พร้อมให้คุณตรวจสอบแล้ว

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

บทสรุป

สำหรับข้อมูลเพิ่มเติม คุณสามารถอ่าน fsck คู่มือโดยเรียกใช้:

man fsck

ในเทอร์มินัลของคุณ

ตรวจสอบเครื่องมืออธิบายอื่นๆ ของเราเกี่ยวกับเครื่องมือเชลล์ Linux ทั่วไป