จะหลีกเลี่ยง dd หรือ badblocks ลบเซกเตอร์ของฮาร์ดไดรฟ์ได้อย่างไร


2

/! \ มองหาอัปเดตที่ 2 ตรงนั้นคำถามถูกตอบไปแล้วครึ่งหนึ่ง /!

บางครั้งฉันก็ล้างฮาร์ดไดรฟ์ของฉันอย่างสมบูรณ์ เป็นสิ่งที่พวกเขา dd และ badblocks -w จะเช็ดทุกอย่างสุ่มสี่สุ่มห้า

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

ดังนั้นคำถามคือวิธีการหลีกเลี่ยง dd หรือ badblocks ลบเซกเตอร์สำรองของฮาร์ดไดรฟ์หรือไม่


สมมติฐาน:

  • dd เป็นที่ทราบกันว่าสุ่มสี่สุ่มห้าลบทุกอย่างที่ผ่านไป
  • badblocks เป็นที่ทราบกันว่าสามารถเข้าถึงบล็อกที่ไม่ได้แมป

อัปเดต 1 :

dd แน่นอนไม่สามารถเข้าถึงเซกเตอร์สำรองหากพวกเขาไม่ได้แทนที่เซกเตอร์ผิดพลาด นี่เป็นเพราะวิธีการ dd ถูกออกแบบ (ความคิดเห็นโดย Kamil Maciorowski):

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

อัปเดต 2 :

เป็นส่วนใหญ่ดูแลระบบและไม่เป็น "coder" ใกล้ถึงระดับต่ำ "(C) - คนสามารถดู badblocks 'รหัสและบอกว่ามันจะเข้าถึงภาคอะไหล่? เพื่อให้แม่นยำยิ่งขึ้น badblocks ยังคำนึงถึงภาคส่วนอะไหล่ภายในการอ่าน / เขียนบล็อก

http://git.kernel.org/cgit/fs/ext2/e2fsprogs.git/tree/misc/badblocks.c

ในอีกด้านหนึ่ง / วิธีที่จะได้คำตอบ; ฉันก็รู้ว่าทีโอดอร์ Ts'o, badblocks ผู้ดูแลมีบัญชีผู้ใช้ที่นี่ใน Super User หากเขาอ่านอัปเดต 2 นี้เป็นไปได้ไหมที่จะมีคำตอบโดยตรงเกี่ยวกับเรื่องนี้


1
^ "บางครั้งฉันฟอร์แมตฮาร์ดไดรฟ์ของฉันในระดับต่ำ" * - ไดรฟ์ ATAPI รุ่นใหม่ไม่สามารถฟอร์แมตระดับต่ำได้ มีเพียงคำสั่ง "เขียนภาค" ที่ระบุโดย LBA
sawdust

2
พวกเขาลบเซกเตอร์สำรองได้อย่างไร สิ่งเหล่านี้ถูกสงวนไว้โดยคอนโทรลเลอร์ของไดรฟ์และไม่สามารถมองเห็นได้โดยตรงกับโฮสต์ ... dd และเครื่องมืออื่น ๆ ที่ควรมีผลกระทบต่อพวกเขา
acejavelin

3
dd แน่นอนเติมทุกส่วนที่มีให้มัน อย่างไรก็ตามอะไหล่สำรองนั้นไม่สามารถใช้ได้
Hennes

4
ไม่มีเซกเตอร์สำรองให้บริการ dd? โดยการออกแบบ. หมายเลขเซกเตอร์ตรรกะที่มีให้ dd ถูกแมปไปยังเซกเตอร์กายภาพที่มีหมายเลขและหมายเลขที่เกี่ยวข้องนั้นเท่ากันเริ่มแรก ตอนแรกของเซกเตอร์กายภาพไม่ได้มีการกำหนดหมายเลขโลจิคัลดังนั้น dd ไม่สามารถเข้าถึงพวกเขา เซกเตอร์กายภาพที่มีข้อผิดพลาดได้รับหมายเลขโลจิคัลที่ถูกแมปไปยังสำรอง ตอนนี้ dd สามารถเข้าถึงอะไหล่ แต่ไม่สามารถเข้าถึงความผิดพลาดได้อีกต่อไป - จำนวนภาคทั้งหมดที่เห็น dd ไม่เปลี่ยน เป็นหน้าที่ของผู้ควบคุมในการจัดการการแมป SSD และ flashdrives เพิ่มแผนที่ให้กับการสึกหรอ
Kamil Maciorowski

1
ภาคส่วนอะไหล่เป็นรายละเอียดการใช้งาน HDD พวกเขาไม่สามารถเข้าถึงได้ จนกว่าพวกเขาจะกลายเป็นไม่ว่าง แต่ก็โปร่งใส คุณทราบได้อย่างไรว่ามีการเข้าถึงอะไหล่สำรองอย่างไร
Daniel B

คำตอบ:


8

ทั้ง dd ไม่ badblocks สามารถเข้าถึงเซกเตอร์อะไหล่ของฮาร์ดแวร์ดิสก์ได้ เหตุผลหลัก dd และ badblocks ลาด เข้าถึงภาคส่วนอะไหล่เหล่านั้นคือผู้เขียนของสิ่งเหล่านั้นไม่รู้วิธีการและลักษณะที่เป็นกรรมสิทธิ์ของฮาร์ดแวร์ฮาร์ดดิสก์ที่ทันสมัยและ ฉลาด ซอฟต์แวร์ทำให้ยากต่อการค้นหา


คำถามนี้ดูเหมือนจะเป็นไปตามความสับสนระหว่างระบบไฟล์ระดับ OS และระดับฮาร์ดแวร์ของผู้จำหน่ายดิสก์ ฉลาด และ แมป กิจวัตร มุมมองทางประวัติศาสตร์อาจอธิบายสิ่งต่าง ๆ ...

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

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


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

1
@DanielB ขอขอบคุณฉันทราบว่าการแมปใหม่นำหน้าสมาร์ท แต่ที่ใดที่หนึ่งฉันก็นึกขึ้นได้ว่า SMART จัดการการแมปใหม่ สมาร์ทแน่นอน รายงาน ในการสร้างแผนที่ใหม่ (เช่น "การจัดสรรเหตุการณ์นับใหม่" , "การนับเซกเตอร์ที่ค้างอยู่ปัจจุบัน" ) แต่นั่นไม่จำเป็นต้องเหมือนกับการทำการแมปใหม่ ความเชื่อของคุณคือมีเลเยอร์ของรหัสอยู่ระหว่างสมาร์ทกับฮาร์ดแวร์และเป็นเลเยอร์ที่อยู่ระหว่างเลเยอร์ที่จัดการการแมปใหม่
agc

@DanielB คำตอบที่ผิดพลาดควรได้รับการแก้ไขดังนั้นฉันจะศึกษาสิ่งนี้ หากคุณมีตัวชี้การวิจัยเพื่อช่วยตอกย้ำการวางเลเยอร์ของฮาร์ดแวร์ "gt; & gt; in-ระหว่างเลเยอร์ & gt; SMART" พวกเขายินดีต้อนรับ
agc

2
การทดสอบที่ยาวนานของ @agc SMART อาจทำให้ทำการแมปใหม่ แต่เพียงแค่ขอให้เฟิร์มแวร์ภายในทำอย่างนั้น ผู้ผลิตส่วนใหญ่จะไม่ยอมแพ้และแมปเซกเตอร์ใหม่ในการสืบค้นครั้งแรกเฟิร์มแวร์มีขีด จำกัด ภายในที่ยอมรับการแมปเซกเตอร์ที่อ่านได้ไม่ดี เนื่องจาก Daniel_B ชี้ SMART และการแมปใหม่ไม่เกี่ยวข้องเราสามารถใช้ mhdd หรือ Victoria เพื่อตอกย้ำพฤติกรรมที่ไม่ดีจนกว่าเฟิร์มแวร์จะตกลงทำการแมปใหม่โดยไม่ได้รับความช่วยเหลือจาก SMART
Alex

ข้อความประเภทใดที่ "ผู้แต่งสิ่งของเหล่านั้นไม่รู้" dd เป็นอย่างน้อยเป็นโปรแกรมที่ซับซ้อนที่แนบและเรียกโดยตรงดิสก์ไดรเวอร์ ผู้เขียนรู้เพียงพอที่จะจัดการดิสก์โดยตรงหากพวกเขาต้องการจริงๆ
harrymc

3

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

ทั้งหมดนี้ใช้มาตรฐาน Linux ฟังก์ชั่นเปิด เพื่อเปิดไดรฟ์เป็น อุปกรณ์ดิบ (หมายถึงไฟล์เสมือนที่มีทั้งอุปกรณ์) ในขณะที่ ใช้ O_DIRECT ตั้งค่าสถานะเพื่อทำ I / O โดยตรงกับดิสก์โดยไม่ต้อง จะผ่านบัฟเฟอร์หน่วยความจำลินุกซ์

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

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

ในฐานะที่เป็นความอยากรู้อยากเห็นความคิดเห็นที่จุดเริ่มต้นของ badblocks.c พูดว่า:

* This file is based on the minix file system programs fsck and mkfs
* written and copyrighted by Linus Torvalds <Linus.Torvalds@cs.helsinki.fi>

ที่ไหน Minix Linux ล่วงหน้า ลิงค์ประวัติ ) และข้อบกพร่องที่มี แรงบันดาลใจจริง ๆ แล้ว Linus Torvalds เขียนรุ่นแรกของ Linux นี่เป็นเพียงการสร้างความประทับใจว่าโบราณและไร้ความซับซ้อนเพียงใด เป็นโปรแกรมนี้ ไม่สัมผัสกับอะไหล่สำรองอย่างแน่นอน

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

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

เรื่อง "ไม่มีโปรแกรมเมอร์ในใจเขา" : การใช้ระบบที่มีประโยชน์อย่างหนึ่งของการเข้าถึงเซกเตอร์สำรองคือการจัดเรียงเซกเตอร์สำรอง AKA การกำหนดเซกเตอร์ที่ช้าให้กับรายการ P . การใช้งานอื่น ๆ ก็คือการสแกนไวรัสไวรัสบางตัวอาจเป็นงานของโปรแกรมเมอร์ (หรือผู้ที่มีสภาพคดเคี้ยวเพียงอย่างเดียว) ซึ่งสามารถซ่อนสิ่งต่างๆในตารางเซกเตอร์สำรองได้
agc

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

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