Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Linux

การซ่อมแซมบล็อกดิสก์ที่เสียหายบน Linux:เทคนิคที่ได้รับการพิสูจน์แล้ว

ผู้ใช้ที่บูตคู่ของ Linux บางรุ่นด้วยเวอร์ชันของ Microsoft Windows อาจพยายามย่อหรือขยายพาร์ติชันบางส่วนเป็นครั้งคราวเพื่อให้มีพื้นที่มากขึ้นสำหรับระบบปฏิบัติการหนึ่งหรืออีกระบบหนึ่ง ในที่สุดคุณอาจได้รับคำเตือนจาก GParted ใน Linux หรือ chkdsk ใน Windows ว่ามีเซกเตอร์เสีย ผู้ใช้ Linux แต่ละรายอาจได้รับสิ่งเดียวกันเป็นครั้งคราว อย่างไรก็ตาม ผู้ใช้อาจได้รับการแจ้งเตือนเกี่ยวกับเซกเตอร์เสียสองประเภทที่แตกต่างกันซึ่งปลอมตัวเหมือนกัน ประการแรกคือการแจ้งเตือนแบบดั้งเดิมเกี่ยวกับเซกเตอร์เสียที่บ่งบอกถึงปัญหาเกี่ยวกับรูปทรงทางกายภาพของแผ่นดิสก์หรือเซลล์หน่วยความจำ NAND นี่คือสิ่งที่คนส่วนใหญ่หมายถึงเมื่อพวกเขาบ่นเกี่ยวกับบล็อกที่ไม่ดี แม้ว่าจะมีความแตกต่างทางเทคนิคเล็กน้อยระหว่างเซกเตอร์เสียและบล็อกที่ไม่ดีก็ตาม อย่างไรก็ตาม เครื่องไม่ค่อยจะตั้งค่าสถานะเซกเตอร์ว่าแย่

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

วิธีที่ 1:การตรวจสอบข้อมูล SMART

เป็นเรื่องง่ายที่จะเชื่อว่าเซกเตอร์เสียเหล่านี้เป็นเพียงข้อผิดพลาดของซอฟต์แวร์ แต่มีวิธีตรวจสอบเพื่อดูว่าเป็นเช่นนั้นหรือไม่ การใช้ข้อมูล SMART ทำให้ง่ายต่อการตรวจสอบเฟิร์มแวร์ของดิสก์และรู้อย่างแน่นอน เปิด GNOME Disks Utility จาก Dash ใน Unity, เมนู Whisker ใน Xfce4, เมนู Accessories ใน LXDE หรือจากเมนู Applications GNOME ใน KDE คุณสามารถเริ่มต้นด้วยการพิมพ์ gnome-disks ที่เทอร์มินัลแล้วกดปุ่ม Enter คลิกที่เมนูถัดจากตัวควบคุมหน้าต่างด้านขวามือหลังจากไฮไลต์ฮาร์ดดิสก์ของคุณด้วยตัวชี้ในคอลัมน์ด้านซ้าย ในการติดตั้ง GNU/Linux ส่วนใหญ่ ยูทิลิตี้ดิสก์จะใช้ค่าเริ่มต้นเป็นฮาร์ดดิสก์หลักของคุณ

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

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

วิธีที่ 2:การตรวจสอบ Superblock ที่ถูกต้อง

บางครั้งคุณอาจพบว่าข้อมูล SMART แสดงทุกอย่างตามลำดับ แต่คุณอาจได้รับข้อผิดพลาด "Bad Superblock" จากยูทิลิตี้ดิสก์บางตัว หากคุณใช้งานการ์ด SD, เมมโมรี่สติ๊ก USB หรือหน่วยความจำอื่นๆ คุณจะไม่สามารถอ่านข้อมูล SMART ได้แต่ก็อาจมีข้อผิดพลาดอยู่บ้าง นี่อาจเป็นปัญหาซอฟต์แวร์ได้เป็นอย่างดี พิจารณาปัญหาของการรันคำสั่ง เช่น:

fsck.ext4 /dev/sda

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

sudo fsck.ext4 /dev/sda1

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

คุณอาจได้รับข้อผิดพลาดนี้หากคุณพยายามเรียกใช้ ext2/3/4 fsck บนโวลุ่ม FAT12/16/32, NTFS หรือ HFS/HFS+ เครื่องมือตรวจสอบความสอดคล้องจะสับสนและคิดว่ามีบางอย่างผิดปกติ ทั้งที่ในความเป็นจริงแล้วประเภทโครงสร้างไฟล์ไม่ตรงกับที่คาดไว้ เรียกใช้ fsck.vfat หรือ dosfsck บนวอลุ่ม FAT ไม่ว่าคุณจะใช้เวอร์ชันบิตใดก็ตาม คุณสามารถใช้สวิตช์ -t หลัง dosfsck หรือ fsck.vfat (fsck.msdos บน Linux บางเวอร์ชัน) เพื่อทำเครื่องหมายคลัสเตอร์ที่อ่านไม่ได้ว่าเป็นบล็อกที่เสียหาย

วิธีที่ 3:การตรวจสอบบล็อกที่ไม่ถูกต้องบนไดรฟ์ข้อมูล NTFS

สมมติว่าคุณกำลังบูตดูอัลบูต Microsoft Windows และ Linux และคุณมีซูเปอร์บล็อกหรือข้อผิดพลาดเซกเตอร์เสียอื่นๆ บนโวลุ่ม NTFS จากนั้นรีสตาร์ทใน Windows และจากบรรทัดคำสั่งให้รัน chkdsk /r c:โดยแทนที่ c:ด้วยอักษรชื่อไดรฟ์ของโวลุ่ม NTFS ที่เป็นปัญหา Windows จะต้องรีบูตมากกว่าเพื่อทำการสแกนพื้นผิวให้เสร็จสิ้น การดำเนินการนี้อาจใช้เวลาสักระยะ ดังนั้นหากปรากฏว่าระบบปฏิบัติการของคุณไม่ตอบสนอง อาจเป็นเพราะระยะเวลาที่เป็นปัญหาเท่านั้น หากคุณได้รับข้อผิดพลาดเกี่ยวกับการไม่มีสิทธิ์ที่เหมาะสม ให้คลิกขวาที่พร้อมท์คำสั่งในเมนู Start และเลือก Run as administrator ก่อนดำเนินการต่อ

หากคุณกำลังทำงานกับโวลุ่ม NTFS บน Linux โดยเฉพาะ คุณจะไม่มีทางขอความช่วยเหลือได้มากนัก แต่หากข้อผิดพลาดของบล็อกที่เสียหายนั้นเกิดจากประเภทที่ไม่ตรงกัน คุณมีวิธีแก้ไข เรียกใช้ sudo ntfsfix /dev/sdb1 โดยแทนที่ตัวอักษรและตัวเลขหลัง /dev/sd ด้วยอุปกรณ์และตัวระบุพาร์ติชันที่ถูกต้อง โปรดจำไว้ว่าคุณสามารถเรียกใช้ sudo fdisk-l ได้ตลอดเวลา หรือกลับไปที่ GNOME Disks Utility หากติดตั้งไว้เพื่อตรวจสอบชื่อของทุกโวลุ่มที่เชื่อมต่อกับระบบของคุณ คุณสามารถเรียกใช้เป็น sudo ntfsfix -d /dev/sdb1 ได้ หากคุณแน่ใจว่าต้องการล้างบิตสกปรก

หากคุณแน่ใจว่าโวลุ่ม NTFS มี Soft Bad Block ที่ไม่ได้เกิดจากรูปทรงของฮาร์ดแวร์ทางกายภาพ เช่น เมื่อคุณโคลนดิสก์เก่าที่มีเซกเตอร์เสียไปยังโวลุ่มใหม่ ให้รัน sudo ntfsfix -bd /dev/sdb1 บนโวลุ่มใดก็ได้ที่คุณต้องการ นี่เป็นการรีเซ็ตรายการเครื่องหมายบล็อกที่ไม่ถูกต้อง

วิธีที่ 4:การใช้ badblocks Linux Utility

เมื่อบูตเป็นเวอร์ชัน ISO Linux ที่ใช้งานจริงหรือพบวิธีอื่นในการยกเลิกการต่อเชื่อมระบบไฟล์ ext2, ext3 หรือ ext4 คุณสามารถเรียกใช้ sudo fsck.ext4 -c /dev/sda1 เพื่อทำการสแกนแบบอ่านอย่างเดียวเพื่อหาบล็อกที่เสียหาย โดยปกติ คุณจะต้องใช้ตัวระบุโวลุ่มที่ถูกต้องหลัง /dev/sd และหมายเลขเวอร์ชัน ext ที่ถูกต้องหลัง fsck.ext เพื่อให้รันได้อย่างถูกต้อง หากคุณระบุ -cc แทน โปรแกรมจะใช้การทดสอบการอ่าน-เขียนแบบไม่ทำลายที่ครอบคลุมยิ่งขึ้น

นี่เป็นวิธีปกติในการใช้ยูทิลิตี badblocks แต่ในทางเทคนิคแล้วคุณสามารถใช้ยูทิลิตีนี้โดยลำพังได้เช่นกัน เรียกใช้ sudo badblocks -n บนชื่ออุปกรณ์เพื่อรันด้วยตัวเองและรายงาน badblocks ในเทอร์มินัลของคุณ คุณสามารถใช้ตัวเลือก -w เพื่อใช้การทดสอบโหมดการเขียน แต่อย่าใช้ตัวเลือก -n และ -w ร่วมกันเนื่องจากทั้งสองตัวเลือกไม่เกิดร่วมกัน ไม่ว่าในกรณีใดคุณไม่ควรใช้ตัวเลือก -w บนโวลุ่มที่มีข้อมูล เนื่องจากมันจะลบทุกอย่างที่สะอาด ใช้ตัวเลือกที่ช้าลง -n เนื่องจากจะเก็บข้อมูลของคุณในกรณีนี้ ตัวเลือก -w นั้นใช้ได้สำหรับโวลุ่มที่คุณไม่ต้องการลบ ตัวเลือก -v สามารถใช้ร่วมกับตัวเลือกใดตัวเลือกหนึ่งได้ และจะทำให้เทอร์มินัลของคุณมีเอาต์พุตแบบละเอียดซึ่งมีประโยชน์สำหรับการตรวจสอบความเสียหายของข้อมูล คุณสามารถใช้ตัวเลือก -o กับชื่อไฟล์ข้อความเพื่อเขียนข้อมูลเพื่อดูในภายหลังได้เสมอ คุณอาจต้องการเรียกใช้เป็น sudo badblocks -nv -o badblocks.log /dev/sdb1 เพื่อรับสแนปชอต เนื่องจากคุณจะเห็นข้อมูลจำนวนมากหากมีบล็อกเสียของแท้

เกี่ยวกับผู้เขียน

การซ่อมแซมบล็อกดิสก์ที่เสียหายบน Linux:เทคนิคที่ได้รับการพิสูจน์แล้ว

เควิน แอร์โรว์ส

Kevin Arrows เป็นผู้เชี่ยวชาญด้านเทคโนโลยีที่มีประสบการณ์สูงและมีความรู้และมีประสบการณ์ในอุตสาหกรรมมานานกว่าทศวรรษ เขาได้รับการรับรองจาก Microsoft Certified Technology Specialist (MCTS) และมีความมุ่งมั่นอย่างแรงกล้าที่จะติดตามข่าวสารเกี่ยวกับการพัฒนาเทคโนโลยีล่าสุด Kevin ได้เขียนหัวข้อที่เกี่ยวข้องกับเทคโนโลยีอย่างกว้างขวาง โดยนำเสนอความเชี่ยวชาญและความรู้ของเขาในด้านต่างๆ เช่น การพัฒนาซอฟต์แวร์ ความปลอดภัยทางไซเบอร์ และการประมวลผลแบบคลาวด์ การมีส่วนร่วมของเขาในด้านเทคโนโลยีได้รับการยอมรับและเคารพอย่างกว้างขวางจากเพื่อนร่วมงานของเขา และเขาได้รับการยกย่องอย่างสูงจากความสามารถของเขาในการอธิบายแนวคิดทางเทคนิคที่ซับซ้อนในลักษณะที่ชัดเจนและรัดกุม