Làm cách nào để làm mới trạng thái từ tính trên đĩa có bản sao lưu?


8

Tôi có một vài đĩa lớn với tài liệu sao lưu / lưu trữ trên đó. Họ là ext4 . Về những cái sẽ được lưu trữ trong một vài năm mà không cần đọc lại toàn bộ đĩa, tôi đã nghĩ đến một cách để làm mới các trạng thái từ tính của đĩa. Thời hạn sử dụng của các ổ đĩa dường như là một vấn đề tranh luận ở khắp mọi nơi Tôi đang tìm kiếm câu trả lời, nhưng có vẻ sau một vài năm (nói 5 hoặc hơn) lưu trữ, sẽ là khôn ngoan khi làm mới dữ liệu theo cách nào đó (? )

Tôi đã thấy đề xuất này:

dd if=/dev/sda of=/dev/sda

Nó có an toàn không? Nó khá hữu ích?

Những gì tôi đang tìm kiếm là một thứ khác ngoài một fsckhoặc dd if=/dev/sda of=/dev/nullcả hai, cả hai có thể sẽ phát hiện ra hiện tượng rơi từ tính hiện có trên đĩa.

Những gì tôi muốn làm là làm mới dữ liệu từ tính trước khi phí từ trên đĩa giảm xuống dưới mức có thể đọc được. Tôi có thể làm cái này như thế nào?

Câu trả lời:


8

Nói chung, bạn không thể thực sự làm mới toàn bộ đĩa mà không cần đọc / ghi tất cả. fsckkhông thể cung cấp những gì bạn cần - nó hoạt động với hệ thống tệp chứ không phải thiết bị bên dưới do đó nó chủ yếu chỉ quét dữ liệu meta của hệ thống tệp (inodes và các cấu trúc hệ thống tệp khác).

badblocks -ncó thể là một lựa chọn để dd if=X of=X. Trong mọi trường hợp, bạn có thể muốn sử dụng các khối lớn để tăng tốc mọi thứ (đối với những ddthứ như bs=16M, vì badblocksđiều này sẽ đọc -b 16777216hoặc -b $((1<<24))trong các vỏ hợp lý). Có lẽ bạn cũng sẽ muốn sử dụng conv=fsyncvới dd.

Vì sự an toàn của ddcùng một thiết bị đầu vào và đầu ra - nó đọc khối từ đầu vào và ghi nó vào đầu ra, vì vậy nó sẽ an toàn (tôi đã mã hóa lại một phân vùng được mã hóa như thế này trong nhiều lần, bằng cách tạo các thiết bị lặp với cùng một thiết bị cơ bản và các mật khẩu khác nhau và sau đó ddchuyển từ loại này sang loại khác) - ít nhất là đối với một số loại phương tiện vật lý: ví dụ với các ổ đĩa bị lung lay, điều đó chắc chắn không rõ ràng đối với tôi, rằng nó không bị lỗi 100%.


Cảm ơn câu trả lời của bạn! Vì vậy, conv=fsync"vật lý ghi dữ liệu tệp đầu ra và dữ liệu meta trước khi hoàn thành", điều này có nghĩa là gì? Nó an toàn hơn hoặc tại sao tôi sẽ sử dụng nó?
PetaspeedBeaver

1
Tôi hy vọng nó sẽ đảm bảo rằng tất cả các bộ đệm kernel được tuôn ra phương tiện truyền thông trước khi thoát. Vì bạn chỉ đang viết lại cùng một dữ liệu nên nó thực sự không quan trọng lắm. Nó chỉ đảm bảo rằng khi ddhoàn tất, bạn có thể rút phích cắm ra (cũng có thể có bộ đệm trong ổ cứng, nhưng điều đó nằm ngoài phạm vi quyền hạn của phần mềm).
peterph

Vì vậy, tóm lại, ddlệnh đầy đủ phải là một cái gì đó giống như dd if=/dev/sda of=/dev/sda bs=16M conv=fsynccộng cũng có thể status=progressđể hiển thị tiến trình. Điều này sẽ mất một lúc, tùy thuộc vào kích thước và tốc độ của ổ đĩa. Tôi đoán rằng việc hủy bỏ giữa quá trình này với ví dụ Ctrl + C có an toàn không?
Martin Spacek

1
Có, làm gián đoạn toàn bộ quá trình theo bất kỳ cách nào trong lý thuyết nên an toàn. Ít nhất là đối với một ổ đĩa từ không quay tròn - đây là một lĩnh vực mà nguyên lý vật lý và công nghệ chính xác được sử dụng có vấn đề.
peterph

1

Tôi không biết cách nào để làm điều này với bất kỳ công cụ gốc nào trong * nix, nhưng một vài thứ tôi đã làm trong một vài năm là chạy một sản phẩm có tên Spinrite từ GRC.com .

Nó có một vài chế độ, một trong số chúng là để làm mới bề mặt / dữ liệu bằng cách chạy qua mọi khu vực đảo ngược trạng thái của từng bit một vài lần và sau đó đưa nó trở lại như cũ.

Tôi chạy nó như thế vài lần một năm trên các ổ đĩa của mình, và không phải tôi muốn nói to điều này, nhưng tôi cảm thấy tôi có rất ít vấn đề với các ổ đĩa cứng của mình, và có khá nhiều vấn đề.

Nó có giá khoảng $ 80-90 IIRC nhưng chi phí đó hoàn toàn tương đối tùy thuộc vào những gì bạn nghĩ rằng dữ liệu của bạn có giá trị với bạn.

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.