Saya memiliki disk dengan beberapa sektor tertunda yang tidak dapat dibaca, menurut smartd. Apa cara termudah untuk membuat disk memetakannya dan menghentikan smartd dari komplain?
Hari ini, saya mendapatkan dua dari ini setiap jam:
10 Sep 23:15:35 hylton smartd [3353]: Perangkat: / dev / sdc, 1 Sektor yang saat ini tidak dapat dibaca (tertunda)
Sistem ini adalah sistem x86 yang menjalankan Ubuntu Linux 9.10 (jaunty). Disk adalah bagian dari grup LVM. Inilah cara smartctl mengidentifikasi disk:
Keluarga Model: Western Digital Caviar Second Generation Serial ATA family Model Perangkat: WDC WD5000AAKS-00TMA0 Nomor Seri: WD-WCAPW4207483 Versi Firmware: 12.01C01 Kapasitas Pengguna: 500.107.862.016 byte
Jawaban:
Sektor tertunda yang tidak dapat dibaca adalah sektor yang mengembalikan kesalahan baca dan yang ditandai oleh drive untuk dipetakan ulang pada peluang pertama yang mungkin. Namun, itu tidak dapat melakukan pemetaan ulang sampai salah satu dari dua hal terjadi:
Sampai saat itu, sektor ini masih tertunda. Jadi, Anda memiliki dua cara yang sesuai untuk menangani ini:
Jelas, (1) tidak merusak, jadi Anda mungkin harus mencobanya terlebih dahulu, walaupun perlu diingat bahwa jika drive mulai gagal secara serius maka membaca terus-menerus dari area yang buruk cenderung membuatnya gagal lebih cepat. . Jika Anda memiliki banyak sektor yang tertunda dan kesalahan lainnya, dan Anda peduli tentang data pada drive, saya sarankan mengeluarkannya dari layanan dan menggunakan alat luar biasa ddrescue untuk memulihkan data sebanyak mungkin. Kemudian buang drive.
Jika sektor yang dimaksud berisi data yang tidak Anda pedulikan, atau dapat dipulihkan dari cadangan, maka menimpanya mungkin merupakan solusi tercepat dan termudah. Anda kemudian dapat melihat jumlah yang dialokasikan dan menunggu untuk drive untuk memastikan sektor ini diurus.
Bagaimana Anda mengetahui apa yang berhubungan dengan sektor dalam sistem file? Saya menemukan artikel yang bagus di situs web smartmontools , di sini , meskipun cukup teknis dan khusus untuk ext2 / 3/4 dan sistem file reiser.
Pendekatan yang lebih sederhana, yang saya gunakan pada salah satu drive (Mac) saya sendiri, adalah digunakan
find / -xdev -type f -print0 | xargs -0 ...
untuk membaca setiap file pada sistem. Catat jumlah yang tertunda sebelum menjalankan ini. Jika sektor ini ada di dalam file, Anda akan mendapatkan pesan kesalahan dari alat yang Anda gunakan untuk membaca file (mis. Md5sum) yang menunjukkan Anda path ke sana. Anda kemudian dapat memfokuskan perhatian Anda pada membaca kembali hanya file ini sampai berhasil dibaca. Seringkali ini akan menyelesaikan masalah, jika itu adalah file yang jarang digunakan yang hanya perlu dibaca beberapa kali. Jika kesalahan hilang, atau Anda tidak menemukan kesalahan dalam membaca semua file, periksa jumlah yang tertunda untuk melihat apakah itu menurun. Jika sudah, masalah diselesaikan dengan membaca.Jika file tidak dapat dibaca dengan sukses setelah beberapa kali dicoba (mis. 20) maka Anda perlu menimpa file, atau blok di dalam file, untuk memungkinkan drive untuk merealokasi sektor tersebut. Anda dapat menggunakan ddrescue pada file (daripada partisi) untuk menimpa hanya satu sektor, dengan menyalin ke file sementara dan kemudian menyalin kembali. Perhatikan bahwa hanya menghapus file pada titik ini adalah ide yang buruk, karena bad sector akan masuk ke daftar gratis di mana itu akan lebih sulit ditemukan. Menimpa sepenuhnya itu buruk juga, karena sekali lagi sektor akan masuk ke daftar gratis. Anda perlu menulis ulang blok yang ada. The
notrunc
pilihandd
adalah salah satu cara untuk melakukan hal ini.Jika Anda tidak menemukan kesalahan, dan jumlah yang tertunda tidak berkurang, maka sektor tersebut harus berada dalam daftar bebas atau sebagian dari infrastruktur sistem file (misalnya tabel inode). Anda dapat mencoba mengisi semua ruang kosong dengan
cat /dev/zero >tempfile
, dan kemudian memeriksa jumlah yang tertunda. Jika turun, masalahnya ada di daftar gratis dan sekarang sudah hilang.Jika sektor ini dalam infrastruktur, Anda memiliki masalah yang lebih serius, dan Anda mungkin akan menemui kesalahan hanya dengan berjalan di pohon direktori. Dalam situasi ini, saya pikir satu-satunya solusi yang masuk akal adalah memformat ulang drive, opsional menggunakan ddrescue untuk memulihkan data jika perlu.
Awasi drive dengan sangat dekat. Realokasi sektor adalah kenari yang sangat baik di tambang batu bara , berpotensi memberi Anda peringatan dini tentang penggerak yang gagal. Dengan mengambil tindakan dini, Anda dapat mencegah bencana tanah longsor yang kemudian sangat menyakitkan. Saya tidak menyarankan bahwa realokasi beberapa sektor merupakan indikasi bahwa Anda harus membuang drive. Semua drive modern perlu melakukan realokasi. Namun, jika drive tidak terlalu lama (<1 tahun) atau Anda mendapatkan realokasi baru yang sering (> 1 / bulan) maka saya sarankan Anda segera menggantinya.
Saya tidak memiliki bukti empiris untuk membuktikannya, tetapi pengalaman saya menunjukkan bahwa masalah disk dapat dikurangi dengan membaca seluruh disk sesekali, baik dengan salah satu
dd
disk mentah atau dengan membaca setiap file menggunakanfind
. Hampir semua masalah disk yang saya alami dalam beberapa tahun terakhir telah dipangkas pertama kali dalam file yang jarang digunakan, atau pada mesin yang tidak banyak digunakan. Hal ini juga masuk akal secara heuristik, dalam hal jika suatu sektor sedang dibaca ulang sering kali drive memiliki kesempatan untuk merealokasi ketika pertama kali mendeteksi masalah kecil dengan sektor itu daripada menunggu sampai sektor tersebut benar-benar tidak dapat dibaca. Drive tidak berdaya untuk melakukan apa pun dengan sektor kecuali tuan rumah mengaksesnya entah bagaimana, baik dengan membaca atau menulisnya atau dengan melakukan salah satu tes SMART.Saya ingin bereksperimen dengan gagasan pekerjaan cron malam atau mingguan yang membaca seluruh disk. Saat ini saya menggunakan "orang miskin RAID" di mana saya memiliki hard drive kedua di mesin dan saya membuat cadangan disk utama untuk itu setiap malam. Dalam beberapa hal, ini sebenarnya lebih baik daripada mirroring RAID, karena jika saya melakukan kesalahan dan menghapus file karena kesalahan saya bisa mendapatkan versi kemarin langsung dari disk cadangan. Di sisi lain, saya percaya pengontrol RAID perangkat keras melakukan banyak pekerjaan yang baik di latar belakang untuk memantau, melaporkan dan memperbaiki masalah disk saat mereka muncul. Skrip cadangan saya saat ini digunakan
rsync
untuk menghindari penyalinan data yang tidak berubah, tetapi mengingat perlunya membaca ulang semua sektor, mungkin akan lebih baik untuk menyalin semuanya, atau memiliki skrip terpisah yang membaca seluruh disk mentah setiap minggu.sumber
dd if=/dev/sda ...
dan sektor masih tertunda, tahu mengapa?Gunakan perangkat lunak Data Lifeguard Diagnostic untuk DOS (bootable CD) yang tersedia dari situs Western Digital
sumber
dd if=/dev/zero of=/dev/sdc bs=4k
- ini akan menghapus semua data pada/dev/sdc
sumber