วิธีใช้คำสั่ง fsck บน Linux

เผยแพร่แล้ว: 2022-01-29
ฮาร์ดดิสก์ไดรฟ์ที่มีรหัสไบนารีเขียนทับอยู่
Pixza Studio/Shutterstock

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

ระบบไฟล์เป็นซอฟต์แวร์

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

คำสั่ง Linux พื้นฐาน 10 คำสั่งสำหรับผู้เริ่มต้น
คำสั่ง Linux พื้นฐาน 10 คำสั่ง ที่เกี่ยวข้อง สำหรับผู้เริ่มต้น

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

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

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

ทำการตรวจสอบ Preflight

การใช้ fsck ต้องใช้สิทธิ์ sudo คำสั่งใดๆ ที่สามารถเปลี่ยนแปลงระบบไฟล์ได้จะต้องได้รับการปฏิบัติด้วยความระมัดระวังและจำกัดเฉพาะผู้ที่รู้ว่ากำลังทำอะไรอยู่

โฆษณา

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

เราจะเริ่มต้นด้วย fdisk และไพพ์ less ในไฟล์. เราไม่ได้ขอข้อมูลเกี่ยวกับพาร์ติชันเฉพาะ โดยใช้ตัวเลือก -l (รายการ) fdisk แสดงรายการตารางพาร์ติชั่นบนอุปกรณ์ทั้งหมดที่พบในไฟล์ “/proc/partitions” หากมี

 sudo fdisk -l | น้อย 

เราสามารถเห็นรายการสำหรับ /dev/sda และ /dev/sdb คุณสามารถเลื่อนดูไฟล์เพื่อดูรายการอื่นๆ ที่อาจมีอยู่ในคอมพิวเตอร์ของคุณ

สังเกตผลลัพธ์ในหน้าต่างเทอร์มินัล

พาร์ติชันบน /dev/sda แสดงเป็น /dev/sda1 , /dev/sda2 และ /dev/sda3 ดังนั้นเราจึงมีสามพาร์ติชั่นในไดรฟ์แรก เราสามารถดูข้อมูลเพิ่มเติมได้เล็กน้อยโดยใช้คำสั่ง parted เราจะใช้ตัวเลือก 'print' เพื่อแสดงตารางพาร์ติชั่นในหน้าต่างเทอร์มินัล

 sudo แยก /dev/sda 'พิมพ์' 

รับข้อมูลเกี่ยวกับตารางพาร์ติชั่น

เราได้รับข้อมูลเพิ่มเติมในครั้งนี้ รวมถึงประเภทของระบบไฟล์ในแต่ละพาร์ติชั่น

 รุ่น: ATA VBOX HARDDISK (scsi) 
ดิสก์ /dev/sda: 34.4GB 
ขนาดเซกเตอร์ (ตรรกะ/กายภาพ): 512B/512B 
ตารางพาร์ทิชัน: gpt 
แฟล็กดิสก์:

หมายเลข เริ่มต้น ขนาดสิ้นสุด ชื่อระบบไฟล์ แฟล็ก 
1 1049kB 2097kB 1049kB bios_grub 
2 2097kB 540MB 538MB fat32 EFI บูตระบบพาร์ติชัน esp 
3 540MB 34.4GB 33.8GB ต่อ 4
โฆษณา

มีสามไดรฟ์ในคอมพิวเตอร์ทดสอบเครื่องนี้ นี่คือผลลัพธ์สำหรับอีกสองไดรฟ์ /dev/sdb และ /dev/sdc โปรดทราบว่าระบบไฟล์เหล่านี้ไม่มีฟิลด์ "ชื่อ"

 sudo แยก /dev/sdb 'พิมพ์'
 รุ่น: ATA VBOX HARDDISK (scsi) 
ดิสก์ /dev/sdb: 21.5GB 
ขนาดเซกเตอร์ (ตรรกะ/กายภาพ): 512B/512B 
ตารางพาร์ทิชัน: msdos 
แฟล็กดิสก์:

หมายเลข เริ่มต้น สิ้นสุด ขนาด ประเภท ระบบไฟล์ แฟล็ก 
1 1049kB 21.5GB 21.5GB ext4 หลัก
 sudo แยก /dev/sdc 'พิมพ์'
 รุ่น: ATA VBOX HARDDISK (scsi) 
ดิสก์ /dev/sdc: 21.5GB 
ขนาดเซกเตอร์ (ตรรกะ/กายภาพ): 512B/512B 
ตารางพาร์ทิชัน: msdos 
แฟล็กดิสก์:

หมายเลข เริ่มต้น สิ้นสุด ขนาด ประเภท ระบบไฟล์ แฟล็ก
1 1049kB 21.5GB 21.5GB ext3 หลัก

ไดรฟ์ที่สองและสามมีขนาดเท่ากัน และแต่ละไดรฟ์มีพาร์ติชันเดียว แต่ระบบไฟล์ในไดรฟ์ที่สองคือ ext4 และระบบไฟล์ในไดรฟ์ที่สามเป็น ext3 ที่เก่ากว่า

วิธี Mount และ Unmount อุปกรณ์เก็บข้อมูลจาก Linux Terminal
ที่เกี่ยวข้อง วิธีการเมานต์และยกเลิกการต่อเชื่อมอุปกรณ์เก็บข้อมูลจาก Linux Terminal

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

เราสามารถค้นหาได้อย่างง่ายดายโดยใช้คำสั่ง df

 df /dev/sdb1
 df /dev/sdc1 

การใช้คำสั่ง fsck

เรามีข้อมูลทั้งหมดที่เราต้องการ สิ่งแรกที่เราจะทำคือ unmount ระบบไฟล์ที่เราจะตรวจสอบ เราจะทำงานกับระบบไฟล์ในพาร์ติชั่นแรกและอย่างเดียวของ /dev/sdb ซึ่งก็คือ /dev/sdb1 เราเห็นก่อนหน้านี้ว่านี่คือระบบไฟล์ ext4 และติดตั้งที่ “/run/mount/dave/sata2”

เราจะใช้คำสั่ง umount โปรดทราบว่าไม่มี "n" ใน "umount"

 sudo umount /run/mount/dave/sata2 

ใช้คำสั่ง umount เพื่อ unmount ระบบไฟล์

โฆษณา

ด้วย umount ไม่มีข่าวใดเป็นข่าวดี หากคุณกลับมาที่พรอมต์คำสั่งแบบเงียบ ๆ เราพร้อมแล้ว

 sudo fsck /dev/sdb1 

ใช้คำสั่ง fsck เพื่อตรวจสอบสถานะของระบบไฟล์

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

 เสียงสะท้อน $? 

ค่าที่ส่งกลับเป็นศูนย์บ่งชี้ว่าไม่มีข้อผิดพลาด รหัสส่งคืนที่เป็นไปได้คือ:

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

แม้ว่าระบบไฟล์จะถูกรายงานว่าสะอาด เราสามารถบังคับให้มีการตรวจสอบระบบไฟล์โดยใช้ตัวเลือก -f (บังคับ)

 sudo fsck /dev/sdb1 -f 

บังคับตรวจสอบระบบไฟล์โดยใช้ตัวเลือกบังคับในคำสั่ง fsck

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

เมื่อคุณทำการทดสอบเสร็จแล้ว คุณต้องเมานต์ระบบไฟล์อีกครั้ง วิธีที่ง่ายที่สุดในการทำเช่นนี้คือใช้การ mount นต์ด้วยตัวเลือก -a (ทั้งหมด) การดำเนินการนี้จะตรวจสอบ “/etc/fstab” สำหรับรายการระบบไฟล์ และทำให้แน่ใจว่าระบบติดตั้งทั้งหมดเหมือนกับการบู๊ตตามปกติ

 sudo mount -a 

ติดตั้งระบบไฟล์ใหม่โดยใช้คำสั่ง mount

คุณควรใช้ระบบไฟล์ Linux ใด
ที่เกี่ยวข้อง คุณควรใช้ระบบไฟล์ Linux ใด?

โปรดทราบว่าเราไม่จำเป็นต้องบอก fsck ว่าระบบไฟล์ประเภทใดที่อยู่ในพาร์ติชั่น ยูทิลิตี้กำหนดว่าโดยการตรวจสอบระบบไฟล์ นั่นหมายความว่าเราสามารถบังคับให้ตรวจสอบระบบไฟล์ได้ /dev/sdc1 ระบบไฟล์ ext3 บนพีซีทดสอบของเรา โดยใช้คำสั่งเดียวกันกับที่เราใช้กับ /dev/sdb1 ซึ่งเป็นพาร์ติชั่น ext4

 sudo fsck /dev/sdc1 -f 

ใช้คำสั่ง fsck เพื่อบังคับการตรวจสอบระบบไฟล์

โฆษณา

คุณอาจไม่ต้องการดำดิ่งลงไปในการแก้ไขระบบไฟล์โดยตรง คุณอาจต้องการดูก่อนที่จะกระโดด คุณสามารถขอให้ fsck ไม่เสนอให้แก้ไขใดๆ และเพียงแค่รายงานปัญหาไปที่หน้าต่างเทอร์มินัล ตัวเลือก -N (dry run) ทำอย่างนั้น:

 sudo fsck -N /dev/sdb1 

ก่อนซ่อมแซมระบบไฟล์ ให้ดำเนินการแบบแห้ง

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

 sudo fsck -y /dev/sdb1

การใช้ fsck บนรูทพาร์ติชั่น

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

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

เมนูการกู้คืนที่เลือกรายการเมนูตัวเลือกขั้นสูง

ย้ายแถบไฮไลท์ด้วยปุ่ม "ลูกศรขึ้น" และ "ลูกศรลง" เพื่อเลือกรายการเมนู "ตัวเลือกขั้นสูงสำหรับ Ubuntu" กด "Enter" เพื่อไปยังหน้าจอถัดไป

เมนูการกู้คืนที่เลือกรายการเมนู "โหมดการกู้คืน" ไว้

โฆษณา

เลือกตัวเลือกที่ลงท้ายด้วย “(โหมดการกู้คืน)” ในตัวอย่างของเราคือ “Ubuntu พร้อม Linux 5.11.0-20-generic (โหมดการกู้คืน)” กดปุ่ม "Enter"

คุณจะเห็นเมนูการกู้คืน เลือก "fsck ตรวจสอบระบบไฟล์ทั้งหมด" แล้วกดปุ่ม "Tab" เพื่อย้ายไฮไลต์ไปที่ปุ่ม "ตกลง" กดปุ่มตกลง."

เมนูการกู้คืนโดยเลือก fsck ไว้

คุณจะเห็นการแจ้งเตือนว่าพาร์ติชั่นรูทจะถูกเมาท์พร้อมกับพาร์ติชั่นอื่นๆ ที่กำหนดไว้ในไฟล์ “/etc/fstab” ของคุณ

เลือกใช่เพื่อเริ่ม fsck ในโหมดโต้ตอบ

กดปุ่ม "Tab" เพื่อย้ายไฮไลท์ไปที่ปุ่ม "ใช่" แล้วกด "Enter"

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

เลือกตัวเลือก "ดำเนินการต่อ" กดปุ่ม "Tab" เพื่อย้ายไฮไลต์ไปที่ปุ่ม "ตกลง" แล้วกด "Enter" กระบวนการบูตจะเริ่มทำงานต่อ และคุณจะบูตเข้าสู่ Linux

โฆษณา

การบูตโหมดการกู้คืนอาจส่งผลต่อไดรเวอร์บางตัว ดังนั้น เป็นการดีที่จะรีบูตอีกครั้งทันทีที่คุณบูตเข้าสู่ Linux เพื่อให้แน่ใจว่าคอมพิวเตอร์ของคุณทำงานในลักษณะมาตรฐาน

เมื่อสิ่งต่าง ๆ ผิดพลาด

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

ที่เกี่ยวข้อง: แล็ปท็อป Linux ที่ดีที่สุดสำหรับนักพัฒนาและผู้ที่ชื่นชอบ