Saya biasa menulis firmware disk untuk WD, dan saya pernah menulis firmware yang menugaskan blok buruk.
Pertama, sebagian besar blok buruk terdeteksi saat dibaca, bukan ditulis. Menulis dilakukan secara membabi buta, artinya data ditulis tanpa diperiksa. Jadi pada saat menulis jika medianya buruk, Anda tidak akan mengetahuinya sampai host membaca untuk sektor tersebut. Ada bagian kecil dari sektor (header sektor) yang dibaca saat menulis untuk mencari sektor yang benar, sehingga jika ada kesalahan dalam membaca header sektor, drive akan menugaskan kembali sektor tersebut dan menulisnya dengan data yang diterima dari perintah tulis. Tetapi sebagian besar blok buruk terdeteksi pada pembacaan, dan hanya karena penulisan berhasil ke suatu sektor tidak berarti media itu baik atau bahwa sektor tersebut telah dipindahkan.
Sekarang tentang penggantian blok yang buruk (juga disebut realokasi). Ya, biasanya drive akan mencoba untuk menetapkan kembali sektor jika kesalahan cukup buruk (yaitu, kegagalan ECC cukup buruk) tetapi drive masih dapat memulihkan data setelah koreksi ECC. Biasanya ini dilakukan secara otomatis. Satu-satunya pengecualian adalah bahwa tuan rumah sebelumnya bisa mengatakan kepada drive untuk tidak melakukan realokasi otomatis, tetapi ini jarang dilakukan.
Jadi apa yang terjadi jika drive tidak membaca dan tidak dapat memulihkan data? Tidak ada. Kesalahan dilaporkan ke tuan rumah, tetapi tidak ada penugasan kembali yang dilakukan. Masalahnya adalah bahwa drive dapat menugaskan kembali sektor ini, tetapi tidak memiliki ide sedikit pun data apa yang akan ditulis di sektor yang baru dipindahkan. Jika hanya menulis sekelompok nol, katakanlah, dan kemudian sektor dibaca lagi, itu akan mengembalikan semua nol tanpa indikasi bahwa data tidak valid. Ini pada dasarnya sama dengan korupsi data. Drive tidak dapat mengandalkan host yang melacak kesalahan karena berbagai alasan (misalnya, bagaimana jika drive dipindahkan ke host baru?), Jadi tindakan terbaik adalah tidak melakukan apa-apa ketika data dapat ' t dipulihkan.
Drive modern, bagaimanapun, akan menyimpan lokasi bad sector ketika tidak dapat dialokasikan kembali. Jumlah bad sector yang menunggu realokasi dapat ditemukan dalam data SMART. Apa yang terjadi adalah jika penulisan dilakukan ke salah satu sektor buruk yang menunggu realokasi, realokasi dilakukan karena drive sekarang memiliki data yang valid untuk menulis kepadanya setelah realokasi. Jadi ketika orang mengatakan menulis ke sektor yang buruk akan merealokasi itu, itu benar-benar hanya setengah dari cerita. Drive harus dibaca terlebih dahulu sehingga drive dapat menemukan semua bad sector yang tidak dapat dialokasikan kembali secara otomatis. Dengan demikian Anda dapat menulis seluruh drive, dan data SMART akan mengatakan tidak ada bad sector menunggu realokasi, tetapi Anda belum tentu membersihkan drive dari semua bad sector. Jadi jika Anda benar-benar ingin menghapus drive dari semua bad sector,
Ada beberapa cara lain untuk mengatasi blok buruk yang tidak dapat dialokasikan kembali. Jika drive adalah bagian dari konfigurasi RAID yang berlebihan (yaitu, apa pun kecuali RAID 0), perangkat lunak RAID harus secara otomatis memulihkan data untuk sektor yang buruk dari drive lain dan menulisnya ke sektor yang dialokasikan kembali. Disk SCSI memiliki perintah blok penetapan ulang eksplisit yang tuan rumah dapat gunakan untuk memaksa penetapan ulang bahkan ketika tidak ada data yang valid untuk menulis ke blok, tetapi penggunaannya cukup rendah.