Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

วิธีใช้ fsck ซ่อมแซม Linux File System Errors – 4 สถานการณ์ทั่วไป

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

นอกจากระบบ backup ที่มั่นคง fsck (File System cheCK) น่าจะเป็นเครื่องมือสำคัญที่สุดที่ควรพร้อมไว้เพื่อป้องกันการสูญเสียข้อมูล บทช่วยสอนนี้อธิบายวิธีใช้ fsck ซ่อมแซม file system errors ใน Linux พร้อม 4 ตัวอย่างทั่วไป

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

ไวยากรณ์

fsck เป็น interface สำหรับ file system checkers หลายตัวสำหรับ file systems ที่ Linux ใช้ และมีไวยากรณ์ดังนี้:

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

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

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

ตัวเลือก (Options)

fsck มีตัวเลือกหลายตัว สามารถดูรายการเต็มได้โดยรัน:

man fsck

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

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

-tfslist ระบุประเภท file system ที่จะตรวจสอบ fslist parameter คือ comma-separated list ของ filesystems และ options specifiers ปกติ filesystem type ถูก deduce โดยค้นหา filesys ใน /etc/fstab และใช้ entry ที่ตรงกัน
-Aเดินผ่าน /etc/fstab และลองตรวจสอบทุก file systems ในครั้งเดียว ตัวเลือกนี้ใช้ทั่วไปจาก /etc/rc system initialization file แทนคำสั่งหลายคำสำหรับตรวจสอบ single file system
-Mไม่ตรวจสอบ mounted filesystems และคืน exit code 0 สำหรับ mounted filesystems
-Nไม่ execute แค่แสดงว่าจะทำอะไร
-Rเมื่อตรวจสอบทุก file systems ด้วย -A flag ข้าม root file system (กรณีมัน mounted read-write อยู่แล้ว)
-VProduces verbose output รวม filesystem-specific commands ที่ execute

ตัวเลือกสำหรับ fsck เฉพาะ filesystem ต่างๆ ไม่ได้มาตรฐาน หากไม่แน่ใจ โปรดดู man pages ของ filesystem-specific checker แม้ไม่รับประกัน ตัวเลือกต่อไปนี้รองรับโดย file system checkers ส่วนใหญ่:

-aซ่อมแซม file system อัตโนมัติโดยไม่ถาม (ใช้ตัวเลือกนี้ด้วยความระมัดระวัง)
-nสำหรับบาง filesystem-specific checkers -n จะทำให้ fs-specific fsck หลีกเลี่ยงการพยายามซ่อมแซม แค่รายงานปัญหา
-rซ่อมแซม filesystem แบบ interactive (ถามยืนยัน)
-yสำหรับบาง filesystem-specific checkers -y จะทำให้ fs-specific fsck พยายามซ่อมแซม corruption ที่ตรวจพบอัตโนมัติเสมอ

หากต้องการดูตัวเลือกสำหรับ checker เฉพาะของ file system เฉพาะ ให้รัน:

man fsck.ext4

Exit Codes

Exit code ที่ fsck คืนคือผลรวมของเงื่อนไขต่อไปนี้
0No errors
1File system errors corrected
2System should be rebooted
4File system errors left uncorrected
8Operational error
16Usage or syntax error
32Fsck canceled by user request
128Shared library error
Exit code เมื่อตรวจสอบหลาย file systems คือ bit-wise OR ของ exit codes สำหรับแต่ละ file system ที่ตรวจสอบ

ตัวอย่าง

นี่คือตัวอย่างการใช้ fsck ทั่วไป – ตรวจสอบ local disks รวมถึง root filesystem

Unmounting

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

sudo umount /dev/filesystem

… ที่นี่ filesystem คือชื่อ filesystem ที่จะ unmount

หากคุณไม่รู้ชื่อ filesystem ให้รัน:

df -h

… เพื่อรับรายการ filesystems และ mount points

Re-Mounting

เมื่อตรวจสอบและซ่อมแซมเสร็จ คุณสามารถ mount file system กลับได้ด้วย:

sudo mount /dev/filesystem

ตรวจสอบ & ซ่อมแซม Corrupted File System

sudo fsck -p /dev/filesystem

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

  • filesystem คือชื่อ filesystem ที่ตรวจสอบ คล้าย “sda1” หรือ “sdc1”
  • ตัวเลือก -p บอก fsck ให้ซ่อมปัญหาที่ไม่ต้องการ user interaction อัตโนมัติ

ตรวจสอบตอน Boot / ตรวจสอบ root File System

เนื่องจากไม่สามารถตรวจสอบ filesystem ที่ใช้งานอยู่ได้ คุณไม่สามารถตรวจสอบ root file system ใน Linux ขณะที่ระบบ boot เสร็จและมันใช้งานอยู่

การรันตรวจสอบตอน boot เป็นวิธีที่ดีที่สุด เพราะทำงานได้แม้คุณล็อกอิน remote อยู่

Linux distributions ส่วนใหญ่ตั้งค่า default ให้รัน fsck อัตโนมัติหาก filesystem ถูก mark ว่า “dirty” (ต้องการตรวจสอบ) หรือหลังจากช่วงจำนวน boot คงที่

เพื่อบังคับตรวจสอบ filesystem เฉพาะที่ทุกครั้งที่ boot (รวม root filesystem) ใช้ tune2fs ปรับพารามิเตอร์ filesystem:

tune2fs -c 1 /dev/filesystem

ที่นี่ filesystem คือชื่อ filesystem ที่จะตรวจสอบ 1 คือจำนวน boots ที่ fsck รันหลังจาก – default เป็น 30 ใน Ubuntu distributions เพื่อคืนค่าเดิม รัน:

tune2fs -c 30 /dev/filesystem

หากไม่ได้ผล distributions เก่าจะรัน fsck ตอน boot หากไฟล์ /forcefsck มีอยู่:

sudo touch /forcefsck

เมื่อ fsck ทำงานตอน boot เสร็จ ผลลัพธ์จะถูก log ที่:

/var/log/fsck

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

หากระบบของคุณเสียหายจน boot ไม่ได้เลย คุณสามารถ boot จาก recovery disc หรือ USB stick แล้วรัน fsck จากนั้นได้ เพราะ root filesystem ที่ต้องการตรวจสอบจะไม่ได้ถูก mount

สรุป

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

man fsck

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

ดูคำอธิบายเครื่องมือ Linux shell ทั่วไปอื่นๆ ของเรา