สมาร์ท selftests เกี่ยวข้องกับ badblocks อย่างไร


15

เครื่องมือ smartctl อนุญาตให้เริ่มการทดสอบตัวเองแบบยาว ( smartctl -t long /dev/sda) อย่างไรก็ตามยังมีbadblocksที่ฉันสามารถเรียกใช้บนไดรฟ์ ทั้งสองเกี่ยวข้องกันอย่างไร หาก badblock ตรวจพบบล็อกที่ไม่ดีไดรฟ์จะอัปเดตค่าสมาร์ทของมันโดยอัตโนมัติ สามารถบล็อกแบดแทนsmartctl -t longหรือสลับกันได้หรือไม่

คำตอบ:


5

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

แต่เมื่อภาคนี้จะถูกเขียนไปอีกครั้งก็จะถูกแมปไปยังพื้นที่ remapping ยกเลิกการทำเครื่องหมายและเคาน์เตอร์ "Reallocated_Sector_Ct" จะเพิ่มขึ้น จากนั้นทั้งไดรฟ์จะสามารถอ่านได้อีกครั้ง

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

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

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


11

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

ด้วยเหตุนี้ในทางทฤษฎีคุณควรมีการรายงานความล้มเหลวของ SMART ก่อนสิ่งที่ไม่ดีเช่นการbadblocksแจ้งเตือน (ผู้ใช้ปลายทางมองเห็นได้) บนไดรฟ์
ในฮาร์ดดิสก์ที่ทันสมัยส่วนที่ไม่ดีใด ๆ ที่ผู้ใช้มองเห็นได้ (ตามที่อาจรายงานโดยbadblocksระบบปฏิบัติการหรือตรวจพบโดยอัตโนมัติ) เป็นอ้าปากค้างสุดท้ายและตัวสั่นของดิสก์ที่กำลังจะตาย


ในที่สุดสมาร์ทและbadblocksทดสอบสองสิ่งที่แตกต่างกัน แต่เกี่ยวข้องกัน:

SMART เป็นเครื่องมือตรวจสอบตนเอง:

ฮาร์ดไดรฟ์รู้ข้อมูลบางอย่างเกี่ยวกับพารามิเตอร์การทำงานของมันและมี meta-knowledge บางอย่างเกี่ยวกับสิ่งที่ "ปกติ" สำหรับบางคนและ "ยอมรับ" สำหรับผู้อื่น
หากไดรฟ์รู้สึกว่าพารามิเตอร์บางอย่าง "ผิดปกติ" หรือ "ไม่สามารถยอมรับได้" จะรายงานสภาพก่อนเกิดความล้มเหลว - อีกนัยหนึ่งคือไดรฟ์ยังทำงานได้ แต่อาจล้มเหลวในไม่ช้า

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

อีกตัวอย่างหนึ่ง: ไดรฟ์มีบล็อก "remap" 1,000 รายการเพื่อจัดการกับเซกเตอร์เสีย มีการใช้ 750 ของพวกเขาและวิศวกรที่สร้างไดรฟ์ระบุว่าจำนวน remaps บ่งบอกถึงสิ่งผิดปกติภายใน (แผ่นเสียงที่ไม่ดี, ความล้มเหลวในวัยชรา, หัวที่เสียหาย) - ไดรฟ์จะรายงานสภาพก่อนเกิดความล้มเหลว ข้อมูลของคุณปิดก่อนที่พื้นที่การแมปจะหมดและจะมองเห็นเซ็กเตอร์ที่ไม่ดี

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


badblocks เป็นเครื่องมือที่มีจุดประสงค์เฉพาะ (ล้าสมัย): ค้นหาเซกเตอร์ที่ไม่ดี

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

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

ในทางทฤษฎีคุณสามารถใช้badblocksข้อมูลที่จะมี remap ระบบปฏิบัติการ (มองเห็นได้) ความล้มเหลวเช่นถ้าดิสก์ที่ทันสมัยของคุณเป็นดิสก์วินเชสเตอร์โบราณ แต่ที่ต่อต้านในที่สุด - เช่นฉันกล่าวว่าก่อนหน้านี้ใด ๆภาคไม่ดีตรวจพบbadblocksบนไดรฟ์ที่ทันสมัยเป็นสาเหตุที่จะทิ้งที่ ไดรฟ์ทั้งหมดมีข้อบกพร่อง (หรือกำลังจะล้มเหลว)

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


ดังนั้นโดยทั่วไปหากใช้งานbadblocksดิสก์ก่อนที่คุณจะนำไปใช้ในการผลิตจะทำให้คุณรู้สึกดีขึ้นและทำมันได้ แต่ถ้าดิสก์ของคุณถูกผลิตขึ้นในศตวรรษนี้และมันแสดงให้เห็นส่วนที่ไม่ดีที่มองเห็นได้คุณควรโยนมันทิ้งในถังขยะ รับประกันของมัน) สำหรับเงินของฉันสถานะสมาร์ทและการป้องกันในเชิงลึกเป็นการใช้เวลาของฉันได้ดีกว่าการตรวจสอบดิสก์ด้วยตนเอง


1
เอาล่ะนั่นอธิบายความแตกต่างระหว่าง SMART และ badblock ได้ดีมาก แต่นี้ไม่ได้หมายความว่าการตรวจสอบสถานะของสมาร์ทจะเพียงพอหรือไม่ผมยังต้องใช้การทดสอบสมาร์ทยาวครั้งในขณะที่ถ้าผมต้องการคำเตือนสมาร์ทที่จะไปปิดถูกต้องหรือไม่ เช่นฉันควรทำงานเป็นsmartctl -t long /dev/sdaครั้งคราวหรือฉันสามารถสันนิษฐานได้ว่าsmartd"อัตโนมัติ" เตือนให้ฉันทราบถึงปัญหาที่เกิดขึ้นโดยไม่ต้องตั้งค่าอย่างอื่นอีกหรือไม่
Hongli Lai

นั่นคือการตัดสินใจเพียงอย่างเดียวที่คุณสามารถทำได้ แต่สมาร์ทไม่ได้ออกแบบมาเพื่อให้ต้องใช้การแทรกแซงด้วยตนเอง ไว้วางใจฮาร์ดแวร์ของคุณ (อย่างน้อยก็ในขอบเขตที่ จำกัด นี้) เพราะถ้าคุณไม่สามารถเชื่อถือฮาร์ดแวร์ของคุณได้คุณก็สามารถแพ็คและกลับบ้านได้เช่นกัน
voretaq7

2
"ไดรฟ์ที่ทันสมัยทำสิ่งที่ badblocks ทำอยู่ภายในและเร็วขึ้นสองสามพันครั้ง" badblocksอ่านทุกไบต์จากไดรฟ์เขียนทับพวกเขาด้วยรูปแบบสุ่มแล้วนำข้อมูลต้นฉบับกลับมา การทดสอบตัวเองของ SMART ไม่ได้ทำเช่นนี้ การดำเนินการนี้ควรล้างส่วนที่ "รอดำเนินการ" หากฉันเข้าใจอย่างถูกต้อง
endolith

4
@endolith การทดสอบไม่ได้เทียบเท่าโดยตรง แต่จุดประสงค์ที่ให้บริการนั้นเทียบเท่า (ค้นหาและอนุญาตการแมปซ้ำของเซกเตอร์เสีย) จุดหลักของฉันคือย่อหน้าสุดท้าย: ถ้าคุณต้องการเรียกใช้ badblocks ในฐานะผู้ฝึกหัดดิสก์ (เพื่อดูว่าคุณสามารถกระตุ้นข้อผิดพลาดของ SMART ได้หรือไม่เพราะมันเจอบล็อกที่ไม่ดี) ไปหามัน แต่ถ้าคุณใช้ badblocks วันนี้ด้วย ความตั้งใจในการโหลดรายการบล็อกที่ไม่ดีเพื่อหลีกเลี่ยงการใช้เซกเตอร์เหล่านั้น (อย่างที่เราทำในยุคหิน) คุณกำลังทำผิด: เซกเตอร์เสียที่มองเห็นได้หมายความว่าคุณควรไดรฟ์ในถังขยะที่ใกล้ที่สุด
voretaq7

1
@Hashim ใช่ฉันเชื่อว่ามันมีประโยชน์ในการใช้ badblocks เพราะมันจะล้างภาคที่ค้างอยู่
endolith

5

คำตอบที่ดีสำหรับคำถามนี้คือ

/superuser//a/693065

/superuser//a/693064

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

เวลา sudo badblocks -swvo sdX.log / sev / sdX

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

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


2
การทดสอบความเครียดของไดรฟ์ใหม่ในขณะที่ยังอยู่ภายใต้การรับประกันเป็นความคิดที่ดี
endolith

2

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

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

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

หากคุณต้องการเลือกระหว่างทั้งสองใช้ smartctl -t ตราบใดที่มันจะมีการวิเคราะห์ที่ดีขึ้นของดิสก์

ฉันยังสามารถแนะนำการใช้ยูทิลิตี้ดิสก์ของฉันได้ที่https://github.com/baruch/diskscanมันทำงานได้ดีกว่าแบดบล็อค แต่พยายามประเมินว่ามีภาคที่แย่หรือคล้ายกับภาคการได้ยินที่ต้องใช้ความพยายาม อ่านได้นานขึ้นมาก นี่เป็นข้อบ่งชี้ของปัญหาสื่อที่กำลังพัฒนาและในรุ่นอนาคตอาจเสนอความพยายามโดยอัตโนมัติเพื่อช่วยดิสก์แก้ไขปัญหานี้


"นอกจากนี้แบดบล็อคยังล้าสมัยไปแล้วในยุคนี้เนื่องจากดิสก์จะจัดสรรข้อมูลใหม่และไม่จำเป็นต้องแมปบล็อกเสียในระดับระบบไฟล์อีกต่อไป" ไม่badblocksเครียดกับไดรฟ์ในรูปแบบที่การทดสอบด้วยตนเองของ SMART ไม่
endolith

ไม่ได้แบดบล็อคจะทำการสแกนดิสก์ตามลำดับ มันไม่ดีไปกว่า dd และจะเหมือนกับการทดสอบตัวเองเช่นกัน
บารุคแม้แต่

badblocksอ่านทุกไบต์จากดิสก์แทนที่ด้วยรูปแบบการทดสอบแล้วเขียนข้อมูลต้นฉบับกลับเข้าที่ การทดสอบตัวเองของ SMART นั้นคล้ายกับการทดสอบการอ่าน - เขียน?
endolith

1
การเขียนซ้ำแบดบี้อย่างดีข้อมูลจะล้าง "ส่วนที่รอดำเนินการ" และทำให้ไดรฟ์ทำเครื่องหมายว่าดีอีกครั้งหรือจัดสรรใหม่ให้ถูกต้องหรือไม่
endolith

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