ใช้ "badblocks" ในดิสก์ที่ทันสมัย


21

ฉันต้องการใช้แบดบล็อคเพื่อตรวจสอบ HDD ของฉันและขอขอบคุณที่ชี้แจงการทำงานของมัน

ใครช่วยกรุณาอธิบายตัวเลือกที่ดีที่สุดที่จะใช้กับ-bและ-c? ฉันได้รวมคำจำกัดความของพวกเขาจากหน้าคน แต่ไม่แน่ใจว่าขนาดที่ใหญ่กว่าจะเป็นประโยชน์สำหรับดิสก์ที่ทันสมัยที่มี RAM 64MB และภาค 4k

-b block-size       Specify the size of blocks in bytes. The default is 1024. 
-c number of blocks the number of blocks which are tested at a time. The default is 64

ประการที่สองฉันต้องการทราบว่าการทดสอบโหมดการเขียนนั้นละเอียดกว่าโหมดอ่าน - เขียนแบบไม่ทำลายหรือไม่?

ท้ายสุดมีการยอมรับการจัดสรรเซกเตอร์ SMART อีกจำนวนเท่าใด / ควรเปลี่ยนไดรฟ์ที่มีจำนวนการจัดสรรใหม่ที่ไม่เป็นศูนย์แทนทันที


3
สำหรับส่วนที่ 2: ทันทีที่คุณเริ่มเห็น badblocks แสดงว่ามีบางอย่างผิดปกติ นี่อาจเป็นสัญญาณที่ดีที่คุณควรเปลี่ยนดิสก์ก่อนที่คุณจะไม่สามารถอ่านได้เลย แต่ในทุกกรณีก่อนเกิดความล้มเหลวคุณควรมีการสำรองข้อมูลสำคัญ 2 ชุด (1 เครื่อง, 1 รีโมต) นอกเหนือจากสำเนาการทำงาน ดูรายละเอียดคำตอบของฉันที่นั่น: superuser.com/a/528181/174998
Olivier Dulac

4
สำหรับขนาดบล็อก: ควรสะท้อนขนาดบล็อกจริงที่ระบบปฏิบัติการของคุณใช้เพื่อจัดเก็บข้อมูลในฮาร์ดไดรฟ์นั้น (ตามระบบไฟล์ที่ใช้) ไม่ใช่เพื่อเพิ่มความเร็วมันจึงทำเครื่องหมายว่าบล็อก "เลวร้าย" บล็อกนั้นเป็น 1 บล็อกจริง ๆ และไม่ใช่บล็อก 1/2 หรือ 1 / 4th หรือแม้กระทั่ง 2 (หรือมากกว่า)
Olivier Dulac

คำตอบ:


21

คำถามที่ 1:

ตาม-bตัวเลือก: ขึ้นอยู่กับดิสก์ของคุณ โมเดิร์นดิสก์ขนาดใหญ่มี 4KB -b 4096บล็อกซึ่งในกรณีนี้คุณควรตั้งค่า คุณสามารถรับขนาดบล็อกจากระบบปฏิบัติการและยังสามารถหาได้โดยการอ่านข้อมูลของดิสก์จากฉลากหรือโดยไปที่หมายเลขรุ่นของดิสก์ หาก-bตั้งค่าเป็นบางสิ่งที่ใหญ่กว่าขนาดบล็อกของคุณความสมบูรณ์ของbadblocksผลลัพธ์อาจถูกลดทอนลง (เช่นคุณอาจได้รับผลลบเท็จ: ไม่พบบล็อกที่ไม่ดีเมื่อยังคงมีอยู่) หาก-bตั้งค่าเป็นสิ่งที่เล็กกว่าขนาดบล็อกของไดรฟ์ความเร็วในการbadblocksวิ่งอาจลดลงได้ ฉันไม่แน่ใจ แต่อาจมีปัญหาอื่น ๆ เกี่ยวกับการตั้งค่า-bสำหรับบางสิ่งที่เล็กกว่าขนาดบล็อกของคุณเนื่องจากไม่ได้ตรวจสอบความถูกต้องของบล็อกทั้งหมดอาจเป็นไปได้ที่จะได้รับ false-negatives หากตั้งค่าน้อยเกินไป

-cตัวเลือกที่สอดคล้องกับวิธีการหลายบล็อกควรจะตรวจสอบในครั้งเดียว การอ่าน / การเขียนแบบกลุ่มโดยทั่วไป ตัวเลือกนี้จะไม่ส่งผลต่อความสมบูรณ์ของผลลัพธ์ของคุณ แต่จะมีผลกับความเร็วที่badblocksใช้ badblocksจะ (ขยะ) เขียนแล้วอ่านบัฟเฟอร์ตรวจสอบซ้ำทุกบล็อก N -cตามที่ระบุโดย หาก-cตั้งค่าต่ำเกินไปสิ่งนี้จะทำให้การbadblocksรันของคุณใช้เวลานานกว่าปกติมากเนื่องจากการเข้าคิวและประมวลผลคำขอ IO แยกต่างหากเกิดขึ้นเหนือศีรษะและดิสก์อาจกำหนดค่าใช้จ่ายเพิ่มเติมตามคำขอ หาก-cตั้งค่าไว้สูงเกินไปbadblocksอาจมีหน่วยความจำไม่เพียงพอ หากสิ่งนี้เกิดขึ้นbadblocksจะล้มเหลวอย่างรวดเร็วหลังจากเริ่มต้น ข้อควรพิจารณาเพิ่มเติมที่นี่รวมถึงการbadblocksรันแบบขนาน: หากคุณกำลังทำงานbadblocksเทียบกับหลายพาร์ติชันบนดิสก์เดียวกัน (ความคิดที่ไม่ดี) หรือกับหลาย ๆ ดิสก์ผ่านช่องทาง IO เดียวกันคุณอาจต้องการปรับแต่ง-cบางสิ่งที่สูงพอสมควรเนื่องจากหน่วยความจำพร้อมใช้งานเพื่อbadblocksให้การทำงานแบบขนานไม่ต่อสู้เพื่อแบนด์วิดท์ IO และสามารถขนานในวิธีที่มีสติ

คำถามที่ 2:

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

ในโหมดbadblocksไม่ทำลายให้ทำดังนี้

  1. อ่านข้อมูลที่มีอยู่แล้วตรวจสอบมัน (อ่านอีกครั้งถ้าจำเป็น) และเก็บไว้ในหน่วยความจำ
  2. เขียนรูปแบบที่กำหนดไว้ล่วงหน้า (แทนที่ด้วย-pตัวเลือก แต่มักจะไม่จำเป็น) ไปยังบล็อก
  3. อ่านบล็อกกลับโดยตรวจสอบว่าข้อมูลการอ่านเหมือนกับรูปแบบ
  4. เขียนข้อมูลต้นฉบับกลับสู่ดิสก์
    • ฉันไม่แน่ใจเกี่ยวกับเรื่องนี้ แต่มันอาจจะอ่านและตรวจสอบอีกครั้งว่าข้อมูลต้นฉบับถูกเขียนเรียบร้อยแล้วและยังตรวจสอบกับสิ่งเดียวกัน

ใน-wโหมดทำลาย ( ) badblocksจะทำตามขั้นตอนที่ 2 และ 3 ด้านบนเท่านั้น ซึ่งหมายความว่าจำนวนการดำเนินการอ่าน / เขียนที่จำเป็นในการตรวจสอบความถูกต้องของข้อมูลจะลดลงครึ่งหนึ่ง หากบล็อกไม่ดีข้อมูลจะผิดพลาดในโหมดใดโหมดหนึ่ง แน่นอนถ้าคุณสนใจข้อมูลที่เก็บไว้ในไดรฟ์ของคุณคุณควรใช้โหมดที่ไม่ทำลายเช่นเดียวกับที่-wจะลบข้อมูลทั้งหมดและปล่อยbadblocksรูปแบบการเขียนลงดิสก์แทน

ข้อแม้: หากบล็อกกำลังจะแย่ แต่ยังไม่หมดไปบางคู่การตรวจสอบการอ่าน / เขียนอาจทำงานได้และบางอย่างอาจไม่ ในกรณีนี้โหมดไม่ทำลายอาจช่วยให้คุณบ่งชี้ถึง "ความอ่อนช้อย" ของบล็อกได้อย่างน่าเชื่อถือมากขึ้นเนื่องจากมันจะทำการตรวจสอบการอ่าน / เขียนสองชุด (อาจ - ดูหัวข้อย่อยในขั้นตอนที่ 4) แม้ว่าโหมดไม่ทำลายความน่าเชื่อถือมากขึ้นในทางที่เป็นเพียงน่าเชื่อถือมากขึ้นโดยบังเอิญ วิธีที่ถูกต้องในการตรวจสอบบล็อกที่ไม่ได้เลวร้ายอย่างสมบูรณ์ แต่ไม่สามารถดำเนินการอ่าน / เขียนได้badblocksหลายครั้งคือการใช้ข้อมูลเดียวกันหลาย ๆ ครั้งโดยใช้-pตัวเลือก

คำถามที่ 3:

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


4
ความคิดใดว่าทำไม-bค่าเริ่มต้นถึง1024? ดูเหมือนจะแปลกสำหรับฉัน ทำไมไม่512?
Ryan J

6
@RyanJ 1024 ext2ขนาดต่ำสุดบล็อก badblocks เป็นส่วนหนึ่งของ e2fsprogs และเดิมมีวัตถุประสงค์เพื่อเติมรายการบล็อกที่ไม่ดีของระบบไฟล์ ext2 คุณต้องรันด้วยขนาดบล็อกเดียวกันกับ FS เพื่อให้ได้ตัวเลขในรูปแบบที่ถูกต้องสำหรับ mkfs.ext2 TL; DR: เหตุผลทางประวัติศาสตร์ที่คุณไม่ควรกังวล
sourcejedi

BUUUTT, @Zac B กล่าวว่า "ถ้า -b ถูกตั้งค่าเป็นบางสิ่งที่ใหญ่กว่าขนาดบล็อกของคุณความสมบูรณ์ของผลการบล็อกแบดอาจถูกบุกรุกได้" 1024> 512 ฉันเข้าใจได้ว่า 513 อาจทำให้บางการทดสอบไม่ได้ถูกตรวจสอบ แต่บางทีมันควรจะได้รับการปรับปรุงใหม่ "ถ้า -b ถูกตั้งค่าเป็นบางอย่างที่ใหญ่กว่าขนาดบล็อกของคุณและไม่ใช่หลาย ๆ เท่าความสมบูรณ์ของผลลัพธ์แบดบล็อคอาจถูกบุกรุก" คุณพูดอะไรโปสเตอร์ต้นฉบับคนอื่นฉลาดกว่าฉัน
Billy C.

4

1) หากดิสก์ที่ทันสมัยของคุณใช้ขนาดเซกเตอร์อื่นแล้ว 512b - คุณต้องกำหนดขนาดนั้นด้วย-bตัวเลือก (เช่น-b 4096) หากไม่มีตัวเลือกนั้นเช็คของคุณจะทำงานช้าลงมากเนื่องจากแต่ละเซกเตอร์จริงจะลองหลายครั้ง (8 ครั้งในกรณีของเซกเตอร์ 4k) Olivier Dulac ยังกล่าวถึงในความคิดเห็นคำถาม -block is indeed 1 block, and not 1/2 or 1/4th or even 2 (or more) blocks.

ตัวเลือกที่-cบ่งบอกถึงจำนวนภาค tryid ในครั้งเดียว อาจมีความหมายบางอย่างเกี่ยวกับประสิทธิภาพและความคุ้มค่าของประสิทธิภาพนั้นขึ้นอยู่กับรุ่นของดิสก์ที่ระบุ

2) write-mode test- ในความเข้าใจของฉันมันจะตรวจสอบว่าคุณมีข้อผิดพลาดที่ไม่ดีหรือข้อผิดพลาดที่ไม่ดีนุ่ม (aka การย่อยสลายข้อมูลเงียบบิตเน่าสลายตัวของสื่อเก็บข้อมูลภาค UNC)

3) ฉันไม่ไว้วางใจรายงานสมาร์ททันเวลา มันสำคัญกว่าที่ค่าจะเปลี่ยนแปลงตลอดเวลา นอกจากนี้ที่นี่คือการวิจัยโดย Google Failure Trends ในประชากรดิสก์ไดรฟ์ขนาดใหญ่และนี่คือการอภิปรายของมัน นี่คือการอ้างอิงจากการวิจัย:

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

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

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


ประโยคแรกไม่ถูกต้อง-bเริ่มต้นที่ 1024 ถ้าดิสก์ของคุณใช้ขนาดเซกเตอร์อื่นที่ไม่ใช่ 1024 ซึ่งเป็นเรื่องปกตินอกระบบไฟล์ ext2 คุณควรระบุว่า
Hashim

1

ฉันจะปล่อยให้ -b และ -c เป็นค่าเริ่มต้นเว้นแต่คุณจะมีเหตุผลเฉพาะในการเปลี่ยนแปลงพวกเขา คุณอาจตั้งค่า -b เป็น 4096 หากดิสก์ของคุณมีขนาดบล็อก 4k

ฉันขอแนะนำให้คุณรัน badblocks ก่อนด้วยการทดสอบ rw แบบไม่ทำลาย หากพบเซกเตอร์ที่ไม่ดีใด ๆ ดิสก์จะเสียหายและควรเปลี่ยนใหม่ หากไม่พบบล็อกที่ไม่ดีใด ๆ ในแบบไม่ทำลาย แต่คุณยังสงสัยว่ามันมี Badblocks ให้ทำการทดสอบ rw แบบทำลายล้าง

ท้ายสุดมีการยอมรับการจัดสรรเซกเตอร์ SMART อีกจำนวนเท่าใด / ควรเปลี่ยนไดรฟ์ที่มีจำนวนการจัดสรรใหม่ที่ไม่เป็นศูนย์แทนทันที

ฉันจะเปลี่ยนไดรฟ์ทันทีที่มีการเปลี่ยนเซ็กเตอร์


2
ฉันจะเปลี่ยนไดรฟ์ทันทีที่มีการเปลี่ยนเซ็กเตอร์ คุณจะรู้ได้อย่างไรว่าบล็อกกำลังแย่ในการทำงานปกติ คุณได้รับสัญญาณบ้างไหม?
Alexis Wilke

5
คุณต้องตรวจสอบบันทึก SMART
ЯрославРахматуллин

1
ถ้าคุณมีเหตุผลที่เฉพาะเจาะจงที่จะเปลี่ยนพวกเขา ชอบมีขนาดบล็อกที่แตกต่างจาก 1024 เริ่มต้นซึ่งเป็นเรื่องธรรมดามาก?
Carcamano

1

ชนิดนี้ไปที่ความแตกต่างระหว่างโหมดการอ่าน badblocks (แบบไม่ทำลาย) และโหมดการเขียน (แบบทำลาย):

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

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


0

เพื่อตอบคำถามที่สองของคุณเกี่ยวกับภาคที่แมปใหม่ ฉันกำลังพูดจากบริบทของผู้ใช้ตามบ้านที่ (บางครั้ง) ตรวจสอบสิ่งเหล่านี้

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

นี่คือสองสถานการณ์ที่ฉันต้องเผชิญ ฉันมี RAID5 จาก 6 200GB ไดรฟ์ หลังจากไฟฟ้าดับซึ่งส่งผลให้ไฟกะพริบหนึ่งไดรฟ์แสดงเซกเมนต์ที่แมปใหม่ 14 รายการและบันทึกข้อผิดพลาดหลายอย่าง ฉันดูไดรฟ์และไม่มีข้อผิดพลาดถูกบันทึกอีกต่อไปและจำนวนเซกเมนต์ที่แมปใหม่ยังคงมีเสถียรภาพ ฉันสรุปว่าไดรฟ์ได้รับความเดือดร้อนเนื่องจากไฟฟ้าชั่วคราวและไม่ได้ล้มเหลวเป็นอย่างอื่น ฉันใช้มันต่อเนื่องหลายปี RAID5 ดั้งเดิมถูกยกเลิก แต่ฉันมีไดรฟ์สองตัวที่ให้บริการโดยใช้พลังงานประมาณ 10 ปี พวกเขามีภาคส่วนที่แมปใหม่ ฉันใช้มิร์เรอร์สองตัวเพื่อจัดเก็บการสำรองข้อมูลส่วนเพิ่มจากการสำรองข้อมูลหลักของฉัน วิธีการสำรองข้อมูลหลักจะเห็นการดำเนินการอ่าน (ส่วนใหญ่) และการเขียนจะไปยังอุปกรณ์ต่าง ๆ หากหนึ่งในไดรฟ์โบราณเหล่านี้ล้มเหลวอื่น ๆ ควรดำเนินการต่อไป หากทั้งคู่ล้มเหลว ฉันแทนที่พวกเขาด้วยอย่างอื่นและรันสคริปต์สำรองอีกครั้ง ผลกระทบหากหนึ่งในไดรฟ์เหล่านี้ล้มเหลวใกล้ศูนย์ดังนั้นฉันไม่ต้องกังวลกับเซกเตอร์ที่แมปใหม่

ฉันมี HDD 2TB ซึ่งเป็นหนึ่งในไดรฟ์ที่ทำมิเรอร์หนึ่งคู่ ตอนแรกมันเป็นหลายสิบจากนั้นก็เป็นร้อย ๆ นี่เป็นช่วงเวลาหลายปี ไดรฟ์อื่นในคู่ยังคงมีสุขภาพดีและในความเป็นจริงความล้มเหลวที่ได้รับช้าไม่ได้ลดลงจากอาเรย์ ในที่สุดฉันก็เปลี่ยนไดรฟ์ทั้งสองเป็นไดรฟ์ 6TB และจำนวนเซกเตอร์ที่แมปใหม่กำลังเติบโตกลายเป็นปัญหา ฉันยังมีไดรฟ์อยู่และยังใช้งานได้แม้จะมีภาคการแมปใหม่ประมาณ 4,500 ครั้ง ฉันใส่ไดรฟ์แบบนี้ไว้ในระบบทดสอบ (ในฐานะสมาชิก RAID) เพื่อดูว่าจะเกิดอะไรขึ้นเมื่อคนหนึ่งเสียชีวิต ฉันมีโอกาสสองสามครั้งที่จะทำงานกับเรื่องนี้และในทุกกรณีการทดแทนก็ไม่มีละคร

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

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

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