Tôi đã từng viết firmware cho WD và tôi đã từng viết firmware cho việc gán lại các khối xấu.
Đầu tiên, hầu hết các khối xấu được phát hiện khi đọc, không ghi. Viết được thực hiện một cách mù quáng, có nghĩa là dữ liệu được viết mà không được kiểm tra. Do đó, trên một văn bản nếu phương tiện truyền thông là xấu, bạn sẽ không biết điều đó cho đến khi máy chủ lưu trữ đến khu vực đó. Có một phần nhỏ của khu vực (tiêu đề khu vực) được đọc trên ghi để xác định đúng khu vực, do đó, nếu có lỗi trong việc đọc tiêu đề ngành, ổ đĩa sẽ gán lại khu vực đó và ghi nó với dữ liệu nhận được từ lệnh ghi. Nhưng phần lớn các khối xấu được phát hiện khi đọc và chỉ vì một lần ghi thành công cho một khu vực không có nghĩa là phương tiện truyền thông tốt hoặc khu vực đó đã được chỉ định lại.
Bây giờ về việc xác định lại khối xấu (còn được gọi là tái phân bổ). Có, thông thường, ổ đĩa sẽ cố gắng gán lại một sector nếu lỗi đủ tệ (nghĩa là lỗi ECC đủ tệ) nhưng ổ đĩa vẫn có thể khôi phục dữ liệu sau khi sửa ECC. Thông thường điều này được thực hiện tự động. Ngoại lệ duy nhất là chủ nhà trước đây có thể đã nói với ổ đĩa không thực hiện phân bổ tự động, nhưng điều này hiếm khi được thực hiện.
Vì vậy, điều gì xảy ra nếu ổ đĩa đọc và không thể khôi phục dữ liệu? Không có gì. Lỗi được báo cáo cho máy chủ lưu trữ, nhưng không có sự phân công lại được thực hiện. Vấn đề là ổ đĩa có thể gán lại khu vực đó, nhưng nó không có ý tưởng nhỏ nhất để ghi dữ liệu nào trong khu vực mới được chỉ định lại. Nếu nó chỉ viết một loạt các số không, giả sử, và sau đó khu vực được đọc lại, nó sẽ trả về tất cả các số không mà không có bất kỳ dấu hiệu nào cho thấy dữ liệu không hợp lệ. Điều này về cơ bản giống như tham nhũng dữ liệu. Ổ đĩa không thể dựa vào máy chủ theo dõi lỗi vì nhiều lý do (ví dụ: nếu ổ đĩa được chuyển sang máy chủ mới thì sao?), Vì vậy, hành động tốt nhất là không làm gì khi dữ liệu có thể ' t được phục hồi.
Tuy nhiên, các ổ đĩa hiện đại sẽ lưu vị trí của khu vực xấu khi không thể phân bổ lại. Số lượng các thành phần xấu đang chờ phân bổ lại có thể được tìm thấy trong dữ liệu SMART. Điều gì xảy ra là nếu một ghi được thực hiện cho một trong các thành phần xấu đang chờ phân bổ lại, việc phân bổ lại được thực hiện vì ổ đĩa hiện có dữ liệu hợp lệ để ghi vào nó sau khi phân bổ lại. Do đó, khi mọi người nói viết cho một khu vực xấu sẽ tái phân bổ nó, đó thực sự chỉ là một nửa câu chuyện. Ổ đĩa phải được đọc trước để ổ đĩa có thể khám phá tất cả các thành phần xấu không thể được phân bổ lại tự động. Do đó, bạn có thể viết toàn bộ ổ đĩa và dữ liệu SMART sẽ cho biết không có khu vực xấu nào đang chờ phân bổ lại, nhưng bạn chưa nhất thiết phải xóa ổ đĩa của tất cả các khu vực xấu. Vì vậy, nếu bạn thực sự muốn xóa một ổ đĩa của tất cả các thành phần xấu,
Có nhiều cách khác để xử lý các khối xấu không thể được phân bổ lại. Nếu ổ đĩa là một phần của cấu hình RAID dự phòng (nghĩa là mọi thứ trừ RAID 0), phần mềm RAID sẽ tự động khôi phục dữ liệu cho một khu vực xấu từ các ổ đĩa khác và ghi nó vào khu vực được phân bổ lại. Các đĩa SCSI có lệnh gán lại khối rõ ràng mà máy chủ có thể sử dụng để buộc gán lại ngay cả khi không có dữ liệu hợp lệ để ghi vào khối, nhưng việc sử dụng nó ở mức khá thấp.