Sektor tertunda yang tidak dapat dibaca adalah sektor yang mengembalikan kesalahan baca dan yang telah ditandai oleh drive untuk dipetakan ulang pada kesempatan pertama yang memungkinkan. Namun, pemetaan ulang tidak dapat dilakukan hingga salah satu dari dua hal terjadi:
- Sektor berhasil dibaca ulang
- Sektor ini ditulis ulang
Sampai saat itu, sektor ini masih tertunda. Jadi, Anda memiliki dua cara terkait untuk menangani hal ini:
- Teruslah mencoba membaca ulang sektor tersebut sampai Anda berhasil
- Timpa sektor itu dengan data baru
Jelas, (1) tidak merusak, jadi Anda mungkin harus mencobanya terlebih dahulu, meskipun perlu diingat bahwa jika drive mulai gagal secara serius maka terus membaca dari area yang buruk kemungkinan akan membuatnya gagal lebih cepat. . Jika Anda memiliki banyak sektor yang tertunda dan kesalahan lainnya, dan Anda peduli dengan data pada drive, saya sarankan untuk menghentikannya dan menggunakan alat yang sangat baik ddrescue untuk memulihkan data sebanyak mungkin. Kemudian buang drive tersebut.
Jika sektor tersebut berisi data yang tidak Anda pedulikan, atau dapat dipulihkan dari cadangan, menimpanya mungkin merupakan solusi tercepat dan termudah. Anda kemudian dapat melihat jumlah hard disk yang dialokasikan ulang dan tertunda untuk memastikan sektor tersebut ditangani.
Bagaimana Anda mengetahui apa yang sesuai dengan sektor dalam sistem file? Saya menemukan artikel bagus di smartmontools situs web, di sini, meskipun cukup teknis dan khusus untuk sistem file ext2/3/4 dan reiser.
Pendekatan yang lebih sederhana, yang saya gunakan di salah satu drive (Mac) saya sendiri, adalah menggunakan find / -xdev -type f -print0 | xargs -0 ...
untuk membaca setiap file pada sistem. Catat jumlah yang tertunda sebelum menjalankan ini. Jika sektor berada di dalam file, Anda akan mendapatkan pesan kesalahan dari alat yang Anda gunakan untuk membaca file (mis. md5sum) yang menunjukkan jalur ke sana. Anda kemudian dapat memfokuskan perhatian Anda untuk membaca ulang file ini saja sampai berhasil dibaca. Seringkali ini akan menyelesaikan masalah, jika itu adalah file yang jarang digunakan yang hanya perlu dibaca ulang beberapa kali. Jika kesalahan hilang, atau Anda tidak menemukan kesalahan apa pun dalam membaca semua file, periksa jumlah yang tertunda untuk melihat apakah berkurang. Jika ya, masalahnya diselesaikan dengan membaca.
Jika file tidak berhasil dibaca setelah beberapa kali mencoba (mis. 20) maka Anda perlu menimpa file, atau blok di dalam file, agar drive dapat mengalokasikan kembali sektor tersebut. Anda dapat menggunakan ddrescue pada file (bukan partisi) untuk menimpa hanya satu sektor, dengan menyalin ke file sementara dan kemudian menyalin kembali. Perhatikan bahwa hanya menghapus file pada saat ini adalah ide yang buruk, karena bad sector akan masuk ke daftar gratis yang akan lebih sulit ditemukan. Menimpa sepenuhnya juga buruk, karena lagi-lagi sektor akan masuk ke daftar gratis. Anda perlu menulis ulang blok yang ada. notrunc
pilihan dd
adalah salah satu cara untuk melakukannya.
Jika Anda tidak menemukan kesalahan, dan jumlah yang tertunda tidak berkurang, maka sektor tersebut harus ada dalam daftar bebas atau bagian dari infrastruktur sistem file (mis. tabel inode). Anda dapat mencoba mengisi semua ruang kosong dengan cat /dev/zero >tempfile
, lalu periksa jumlah yang tertunda. Jika turun, masalahnya ada di daftar gratis dan sekarang sudah hilang.
Jika sektor tersebut berada dalam infrastruktur, Anda memiliki masalah yang lebih serius, dan Anda mungkin akan menemui kesalahan saat berjalan di pohon direktori. Dalam situasi ini, menurut saya satu-satunya solusi yang masuk akal adalah memformat ulang drive, secara opsional menggunakan ddrescue untuk memulihkan data jika perlu.
Awasi drive dengan sangat dekat. Realokasi sektor adalah kenari yang sangat bagus di tambang batu bara, berpotensi memberi Anda peringatan dini tentang drive yang gagal. Dengan mengambil tindakan dini, Anda dapat mencegah bencana tanah longsor yang sangat menyakitkan di kemudian hari. Saya tidak menyarankan bahwa beberapa realokasi sektor merupakan indikasi bahwa Anda harus membuang drive. Semua drive modern perlu melakukan realokasi. Namun, jika hard disk belum terlalu tua (<1 thn) atau Anda sering mendapatkan realokasi baru (> 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 sesekali membaca seluruh disk, baik dengan dd
disk mentah atau dengan membaca setiap file menggunakan find
. Hampir semua masalah disk yang saya alami dalam beberapa tahun terakhir muncul pertama kali di file yang jarang digunakan, atau di mesin yang jarang digunakan. Ini juga masuk akal secara heuristik, karena jika suatu sektor sering dibaca ulang, drive memiliki kesempatan untuk mengalokasikannya kembali saat pertama kali mendeteksi masalah kecil dengan sektor tersebut daripada menunggu hingga sektor tersebut benar-benar tidak dapat dibaca. Drive tidak berdaya untuk melakukan apa pun dengan suatu sektor kecuali host mengaksesnya entah bagaimana, baik dengan membaca atau menulisnya atau dengan melakukan salah satu pengujian SMART.
Saya ingin bereksperimen dengan gagasan tugas cron malam atau mingguan yang membaca seluruh disk. Saat ini saya menggunakan "RAID orang miskin" di mana saya memiliki hard drive kedua di mesin dan saya mencadangkan disk utama ke sana setiap malam. Dalam beberapa hal, ini sebenarnya lebih baik daripada pencerminan RAID, karena jika saya melakukan kesalahan dan menghapus file secara tidak sengaja, saya bisa mendapatkan versi kemarin langsung dari disk cadangan. Di sisi lain, saya yakin pengontrol RAID perangkat keras melakukan banyak pekerjaan bagus di latar belakang untuk memantau, melaporkan, dan memperbaiki masalah disk saat muncul. Skrip cadangan saya saat ini menggunakan rsync
untuk menghindari penyalinan data yang tidak berubah, tetapi mengingat kebutuhan untuk membaca ulang semua sektor, mungkin lebih baik menyalin semuanya, atau memiliki skrip terpisah yang membaca seluruh disk mentah setiap minggu.