Beberapa permanent errors
dilaporkan di zpool saya hari ini.
pool: seagate3tb
state: ONLINE
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: http://zfsonlinux.org/msg/ZFS-8000-8A
scan: none requested
config:
NAME STATE READ WRITE CKSUM
seagate3tb ONLINE 0 0 28
sda ONLINE 0 0 56
errors: Permanent errors have been detected in the following files:
/mnt/seagate3tb/Install.iso
/mnt/seagate3tb/some-other-file1.txt
/mnt/seagate3tb/some-other-file2.txt
Sunting: Saya yakin jika CKSUM
nilai - nilai itu akurat. Saya sedang mengubah data dan mungkin telah merusaknya secara tidak sengaja. Mereka mungkin 0. Sayangnya, saya tidak dapat menemukan jawaban konklusif dalam catatan saya dan kesalahan diselesaikan sekarang jadi saya tidak yakin, tetapi semua yang lain akurat / mencerminkan apa yang dilaporkan zpool.
/mnt/seagate3tb/Install.iso
adalah salah satu contoh file yang dilaporkan memiliki kesalahan permanen.
Di sinilah saya bingung. Jika saya membandingkan "kesalahan permanen" saya Install.iso
dengan cadangan file yang sama persis pada sistem file lain, mereka terlihat sama.
shasum "/mnt/seagate3tb/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328 /mnt/seagate3tb/Install.iso
shasum "/mnt/backup/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328 /mnt/backup/Install.iso
cmp /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso
diff /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso
File-file itu tampaknya identik. Terlebih lagi, file berfungsi dengan baik. Jika saya menggunakannya dalam suatu aplikasi, berperilaku seperti yang saya harapkan.
Seperti yang dinyatakan dokumen :
Kesalahan data korupsi selalu berakibat fatal.
Tetapi berdasarkan verifikasi file dasar saya, saya tidak yakin saya mengerti definisi fatal
.
status: Satu atau lebih perangkat mengalami kesalahan yang mengakibatkan kerusakan data. Aplikasi mungkin terpengaruh.
aksi: Kembalikan file yang dimaksud jika memungkinkan. Kalau tidak, kembalikan seluruh kumpulan dari cadangan.
Mungkin saya melewatkan sesuatu, tetapi file tersebut tampaknya baik-baik saja sejauh yang saya tahu, dan memang membutuhkan pemulihan apa pun juga tidak menunjukkan korupsi, meskipun direkomendasikan dari ZFS.
Saya telah melihat artikel lain dengan kesalahan yang sama , tetapi saya belum menemukan jawaban untuk pertanyaan saya.
Apa kesalahan permanen dengan file? Apakah ada masalah tingkat lebih rendah dengan file yang tidak mudah bagi saya? Jika demikian, mengapa itu tidak terdeteksi oleh shasum
sebagai perbedaan dalam file?
Dari sudut pandang orang awam, saya melihat tidak ada yang menunjukkan kesalahan dengan file ini.
Jawaban:
Kata-katanya
zpool status
sedikit menyesatkan. Kesalahan permanen (dalam konteks ini) menunjukkan bahwa kesalahan I / O telah terjadi dan telah dicatat ke log kesalahan SPA (Storage Pool Allocator) untuk pool tersebut. Hal ini tidak berarti ada irrecoverable korupsi data.Yang harus Anda lakukan adalah menjalankan
zpool scrub
di kolam renang. Ketika scrub selesai, log kesalahan SPA akan diputar dan tidak akan lagi menampilkan kesalahan dari sebelum scrub. Jika scrub tidak menemukan kesalahan makazpool status
tidak akan lagi menunjukkan kesalahan "permanen".Mengenai dokumentasi, dikatakan bahwa hanya "kesalahan fatal" dicatat dengan cara ini. Kesalahan fatal adalah kesalahan I / O yang tidak dapat secara otomatis diperbaiki oleh ZFS dan karenanya terkena aplikasi sebagai I / O yang gagal. Sebaliknya, jika I / O segera dicoba kembali dengan sukses atau jika I / O logis puas dari perangkat yang berlebihan, itu tidak akan dianggap sebagai kesalahan fatal dan karenanya tidak akan dicatat sebagai kesalahan korupsi data.
Kesalahan fatal tidak selalu berarti kehilangan data permanen, itu hanya berarti bahwa pada saat itu tidak dapat diperbaiki sebelum disebarkan ke aplikasi. Misalnya, kabel yang longgar atau pengontrol yang buruk dapat menyebabkan kesalahan fatal sementara yang ZFS akan gambarkan sebagai "permanen." Apakah itu benar-benar masalah tergantung pada sifat I / O dan apakah aplikasi mampu pulih dari kesalahan I / O.
EDIT: Sepenuhnya setuju dengan @bahamat bahwa Anda harus berinvestasi dalam redundansi sesegera mungkin.
sumber
zpool scrub
melakukan persis apa yang disarankan @ tom-shaw, dan penjelasan Anda masuk akal. Saya tidak lagi melihat "kesalahan permanen" pada array ini setelah scrub. Saya tidak memikirkan kesalahan fatal dalam konteks pembacaan yang gagal. Saya pikir itu pasti hanya kesalahan I / O sementara pada pembacaan seperti yang Anda sarankan. Saya juga sepenuhnya setuju tentang perlunya redundansi.Kesalahan permanen berarti bahwa ada kesalahan checksum dalam file dan tidak ada replika yang cukup untuk diperbaiki. Ini berarti bahwa setidaknya satu membaca data yang rusak dikembalikan karena kesalahan I / O. Jika apa pun yang diterima dibaca, maka tulis kembali ke file disk yang sama Anda sekarang akan memiliki data korupsi yang tidak dapat dipulihkan.
Melihat konfigurasi kolam Anda, sepertinya Anda tidak memiliki redundansi. Ini sangat berbahaya. Anda tidak mendapatkan manfaat penyembuhan diri dari ZFS, tetapi itu akan dapat memberi tahu Anda ketika telah terjadi korupsi data. Biasanya ZFS akan secara otomatis dan diam-diam mengoreksi bacaan yang rusak, tetapi dalam kasus Anda tidak dapat. Sepertinya Anda sudah menjalankannya
zpool clear
karenaCKSUM
hitungannya0
untuk kedua drive.Sayangnya, tanpa replika, benar-benar tidak ada cara untuk mengetahuinya.
sumber
zpool clear
juga menghapus pesan kesalahan itu sendiri, bukan hanya kesalahan yang diperhitungkan? Sungguh aneh bahwa pesan itu tetap ada, namun tidak ada kesalahan yang ditampilkan.CKSUM counts
itu mungkin controller, kabel, atau perangkat keras bersama antara kedua disk. Mungkin juga kedua disk gagal. Dalam hal apa pun ini menggarisbawahi kebutuhan untuk menambahkan redundansi ASAP, dan memeriksa file yang ditunjukkan untuk korupsi.