Saya memiliki drive yang melaporkan bahwa sektor yang tertunda saat ini adalah "45". Saya telah menggunakan badblock untuk mengidentifikasi sektor-sektor dan saya telah mencoba menulis nol kepada mereka dengan dd .
Dari apa yang saya pahami, ketika saya mencoba menulis data langsung ke sektor-sektor buruk, itu akan memicu realokasi, mengurangi sektor tertunda saat ini menjadi satu dan meningkatkan jumlah sektor yang dialokasikan kembali.
Namun, pada disk ini baik Reallocated_Sector_Ct dan Reallocated_Event_Count nilai mentahnya adalah 0, dan dd gagal dengan kesalahan I / O ketika saya mencoba menulis nol ke sektor buruk. Namun, dd berfungsi dengan baik ketika saya menulis ke sektor yang baik.
# dd if=/dev/zero of=/dev/sdb bs=512 count=1 seek=217152
dd: error writing ‘/dev/sdb’: Input/output error
Apakah ini berarti drive saya, dalam beberapa hal, tidak memiliki sektor cadangan yang dapat digunakan untuk realokasi? Apakah drive saya secara umum adalah orang yang mengerikan? (Drive sebenarnya bukan milik saya, saya sedang membantu seorang teman. Mereka mungkin baru saja mendapatkan drive murah atau sesuatu.)
Dalam hal ini relevan, berikut adalah output dari smartctl -i :
Model Family: Western Digital Caviar Green (AF)
Device Model: WDC WD15EARS-00Z5B1
Serial Number: WD-WMAVU3027748
LU WWN Device Id: 5 0014ee 25998d213
Firmware Version: 80.00A80
User Capacity: 1,500,301,910,016 bytes [1.50 TB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS (minor revision not indicated)
SATA Version is: SATA 2.6, 3.0 Gb/s
Local Time is: Fri Oct 18 17:47:29 2013 CDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
UPDATE:
Saya telah menjalankan shred
di disk, yang menyebabkan Current_Pending_Sector menjadi nol. Namun, Reallocated_Sector_Ct dan Reallocated_Event_Count masih nol, dan dd sekarang dapat menulis data ke sektor-sektor yang sebelumnya tidak dapat. Ini menuntun saya dengan beberapa pertanyaan lain:
Mengapa realokasi tidak di recored oleh disk? Saya mengasumsikan realokasi berlangsung karena saya sekarang dapat menulis data langsung ke sektor ini dan tidak bisa sebelumnya.
Mengapa rusak menyebabkan realokasi dan tidak dd? Apakah fakta bahwa shred menulis data acak bukan hanya nol membuat perbedaan?
sumber
Uncorrectable Sector Count
lebih dari nol?Jawaban:
Drive WD15EARS (dan sebagian besar drive yang baru diproduksi lainnya) menggunakan Advanced Format , yang berarti bahwa ukuran sektor fisik nyata dari drive ini adalah 4 KiB, dan ukuran sektor tradisional 512-byte baru saja ditiru. Karena itu, jika satu sektor fisik 4 KiB memburuk, semua 8 sektor 512 byte yang ditiru menjadi tidak dapat dibaca sekaligus.
(
Sector Size: 512 bytes logical/physical
Output darismartctl
tidak benar, karena beberapa drive WD15EARS melaporkan ukuran sektor fisik yang salah - tampaknya drive Anda memiliki versi firmware yang rusak dalam hal itu.)Selain itu, ketika satu sektor 512 byte yang ditiru ditulis, drive Format Lanjutan sebenarnya perlu membaca seluruh sektor fisik 4 KiB, ubah bagian 512-byte yang sesuai, kemudian tulis seluruh sektor fisik ke media. Jika medianya baik, operasi baca-modifikasi-tulis ini hanya menyebabkan pelambatan yang signifikan dibandingkan dengan drive dengan sektor fisik 512-byte nyata. Namun, jika sektor fisik 4 KiB buruk dan tidak dapat dibaca, operasi penulisan apa pun yang tidak menulis ulang sektor tersebut sepenuhnya akan gagal. Karena itu, Anda tidak bisa memaksa realokasi sektor pada drive tersebut menggunakan
dd
denganbs=512 count=1
- Anda harus menggunakan setidaknyabs=512 count=8
dan pastikan bahwa jumlah sektor diseek=
opsinya adalah kelipatan 8. (Ini mengasumsikan bahwa jumper "Kompatibel dengan Windows XP" tidak diinstal, jika tidak, offset pelurusan yang ditambahkan oleh jumper ini juga harus diperhitungkan.)Alasan lain mengapa pemaksaan realokasi dengan
dd
mungkin gagal adalah bahwa secara default Linux menggunakan cache di lapisan blok untuk mengakses perangkat blok, dan ini dapat menyebabkan operasi baca-modifikasi-tulis dalam perangkat lunak, yang juga akan gagal ketika sektor yang tidak dapat dibaca ditemukan. Anda dapat menambahkanoflag=direct
opsi untuk memotong cache ini untuk perangkat yang ditentukan olehof=...
(ada jugaiflag=direct
opsi, yang berlaku untuk perangkat input).sumber
Saya harus melakukan ini baru-baru ini dan menemukan bahwa menjalankan rusak pada seluruh disk bekerja dengan sangat baik. Meskipun rusak tidak berguna untuk tujuan yang dimaksudkan kecuali pada disket, ia melakukan apa yang diperlukan untuk mendapatkan penyembuhan diri terjadi pada blok yang buruk.
sumber