Làm thế nào để xóa một ổ cứng với các lĩnh vực không thể chấp nhận?


21

Vì vậy, tôi có một ổ đĩa cứng bị lỗi. Tôi muốn xóa dữ liệu trên đó trước khi gửi để thay thế. Tôi đang cố gắng sử dụng dd if=/dev/zero of=/dev/sdXX, nhưng nó dừng ở lỗi ghi đầu tiên. Làm thế nào tôi có thể ghi đè ổ đĩa bằng số không, bỏ qua lỗi ghi? conv=noerrordường như chỉ ảnh hưởng đến tập tin đầu vào.


một báo cáo lỗi trong cơ sở dữ liệu Debian về hành vi này, nhưng có vẻ như nó chưa được thực hiện.
Bobby

Không badblockscòn dừng lại trên lỗi? Có lẽ bạn có thể làm một bài viết phá hoại với điều đó?
oKtosiTe

Bây giờ tôi cũng đã chạy phá hủy badblocksđể chắc chắn có bao nhiêu khối xấu ở đó trước khi tôi trả lại đĩa vào thứ Hai. Nó cũng xóa đĩa thành công, nhưng phải mất gần 50 giờ.
TestUser16418

Câu trả lời:


18

thử ddresTHER thay vì dd - nó cố gắng hơn với các lỗi


1
ddresTHER đã xóa thành công toàn bộ đĩa, bỏ qua các lỗi ghi. Cảm ơn rât nhiều.
TestUser16418

15

Các tham số tôi đã sử dụng với ddresTHER để xóa ổ đĩa /dev/sdb(chứa đầy số không từ /dev/zero) và đăng nhập đầu ra vào tệp log.txt:

ddrescue --force /dev/zero /dev/sdb log.txt

Để xóa sạch dữ liệu ngẫu nhiên, hãy sử dụng: ddresTHER --force / dev / urandom / dev / sdX tmp.log
Bastion

Làm thế nào để bạn biết khi nào nó được thực hiện? Tôi đã làm điều đó và để nó chạy trong khoảng 20 phút và nó vẫn được giải cứu ở mức 0,00%. Đó là ổ SSD NVMe với các khối xấu mà tôi đang cố xóa ... tiện ích Samsung Secure Erase không hoạt động với tôi.
dùng1960364

3

Nếu bạn chỉ muốn lau ổ đĩa, hãy thử dban

Từ trang web:

Darik's Boot và Nuke ("DBAN") là một đĩa khởi động độc lập, có khả năng xóa sạch các đĩa cứng của hầu hết các máy tính. DBAN sẽ tự động và xóa hoàn toàn nội dung của bất kỳ đĩa cứng nào mà nó có thể phát hiện, điều này làm cho nó trở thành một tiện ích thích hợp để hủy dữ liệu hàng loạt hoặc khẩn cấp.


Tôi sẽ đề nghị điều này.
qroberts

3

Đối với bản ghi, dd cũng có một tùy chọn conv=noerrorđể bỏ qua lỗi. Nếu bạn gặp lỗi trên tệp đầu vào và khi không sử dụng /dev/zero, bạn muốn sử dụng conv=noerror,notrunchoặc conv=noerror,syncđể ngăn dd cắt ngắn tệp đầu ra có lỗi tồn tại trên tệp đầu vào.

Đối với truy vấn của bạn, bạn có thể thử lệnh này thay thế:

dd if=/dev/zero of=/dev/sdXX conv=noerror  

Để tăng tốc quá trình và có khả năng tránh ổ đĩa bị chết ở giữa bước, bạn cũng có thể thử tăng kích thước byte từ 512 mặc định (làm cho dd đọc theo từng khu vực, chậm) lên thứ gì đó lớn hơn như 4K ( lớn gấp tám lần):

dd if=/dev/zero of=/dev/sdXX bs=4K conv=noerror  

Lưu ý: Với kích thước byte lớn hơn, các lỗi bị bỏ qua có thể để lại các phần dữ liệu có thể đọc được - ít hơn kích thước byte bạn chọn, nhưng vẫn không chắc ai có thể lấy bất cứ thứ gì từ các phần đó sau khi toàn bộ đĩa đã chạy qua quá trình.

Bên cạnh đó, tôi chắc chắn các nhà sản xuất ổ cứng xử lý đúng cách các ổ đĩa cứng được trả lại để thay thế bảo hành, trong trường hợp ổ đĩa bị lỗi trước khi bạn có thể hoàn thành quá trình ghi đè.


man ddhiển thị "noerror" có nghĩa là "tiếp tục sau khi đọc lỗi"
Kevin Smyth

1

Chắc chắn không phải là một giải pháp sử dụng năng lượng, nhưng nếu lỗi ghi là hiếm, bạn có thể chỉ muốn tiếp tục thủ công sau khi chúng xảy ra.

Về mặt lý thuyết bạn có thể kịch bản một cái gì đó để làm điều đó một cách tự động, nhưng nó không tầm thường, và tôi thà viết một công cụ để thực hiện thủ thuật hơn là bận tâm với kịch bản dd ..

   seek=BLOCKS
          skip BLOCKS obs-sized blocks at start of output

1
... hoặc sử dụng dd-cứu ...
Antti Haapala

... sẽ dd-cứu hộ xử lý ghi lỗi một cách chính xác?
qdot
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.