Saya memiliki pertanyaan tentang kesalahan yang tidak dapat diperbaiki pada sistem file BTRFS. Secara khusus, saya telah menjalankan BTRFS Scrub baru-baru ini setelah mengalami masalah dengan salah satu RAM stick saya dan tampaknya telah menemukan 4 kesalahan yang tidak dapat diperbaiki. Ini adalah output:
scrub status for <UUID>
scrub started at Thu Dec 25 15:19:22 2014 and was aborted after 89882 seconds
total bytes scrubbed: 1.87TiB with 4 errors
error details: csum=4
corrected errors: 0, uncorrectable errors: 4, unverified errors: 0
Untungnya saya memiliki semua yang dicadangkan dalam cadangan tersier sehingga saya tidak terlalu khawatir kehilangan file (Saya sangat menyadari masalah yang terkait dengan status eksperimental BTRFS, saya memiliki beberapa cadangan untuk menjaga data saya aman, dan bertekad untuk terus menggunakannya jadi tolong jangan: "Solusi; jangan gunakan posting BTRFS").
Saya ingin tahu, bagaimana cara menentukan file mana yang dikaitkan dengan kesalahan yang tidak dapat diperbaiki? Saya ingin menemukan mereka, menghapusnya, dan menggantinya dengan salinan yang didukung.
Jika ada yang punya informasi tentang cara melakukan ini, saya akan senang mendengar dari Anda.
Terima kasih sebelumnya.
sumber
sort | uniq
untuk menyingkirkan duplikat seperti:dmesg | grep "checksum error at" | cut -d\ -f24- | sed 's/.$//' | sort | uniq
Ya, pemetaan dari INODE atau Block Number kembali ke nama file bisa jadi sulit. Jika Anda benar-benar tertarik, Anda dapat mencoba sesuatu seperti ini dan melihat file file mana yang akan disalin ... setelah itu, jika file tersebut buruk, ia akan menimbulkan kesalahan saat menyalin. Saya sebelumnya telah menggunakan teknik jenis ini.
sumber
cp -v
, Anda juga dapat memantau kemajuan:find / -type f -exec cp -v {} /dev/null \; 2> corrupted-files.txt
. Namun,/proc/kcore
file mungkin sangat besar (milik saya 128TB) sehingga operasi penyalinan kemungkinan akan hang. Karena/proc
direktori berisi file magis khusus, kita tidak perlu memeriksanya. Kecualikan/proc
direktori:sudo find / -type f -and -not -path /proc -exec cp -v {} /dev/null \; 2> corrupted-files.txt
dmesg
akan memberi Anda detail tentang file yang terlibat dalam kesalahan checksum yang tidak dapat diperbaiki. Pesan biasanya terlihat seperti ini: "BTRFS: kesalahan checksum pada logis [...] pada dev [...], sektor [...], root [...], inode [...], offset [ ...], panjang [...], tautan [...] (jalur: [...]) "; informasi terakhir adalah jalur absolut ke file yang rusak.sumber
Saya datang ke sini untuk mencari "Kesalahan yang tidak dapat diperbaiki" dari BTRFS juga. Grep di atas tidak bekerja untuk saya; Saya harus menggunakan:
Perhatikan bagaimana jalur relatif terhadap awal subvolume - tidak ada indikasi subvolume itu. Untungnya ini bukan masalah bagi saya.
sumber
somepath/somefile.txt
? Sepertinya Anda mengetiknya sebagai perintah terpisah - atau apakah itu output dari perintah yang Anda ketikkan? Jika itu semua seharusnya menjadi satu baris perintah, tolong jangan memecah baris perintah untuk tujuan tampilan - cukup masukkan ke dalam jawaban sebagai satu baris panjang. Tapi apa itu? Apakah Anda memberikan dua input kesort
(pipa dan file)? Atausomepath/somefile.txt
dimaksudkan sebagai file keluaran? (Tidaklah terlalu membantu untuk menentukan file output, kecuali mereka file intermediate yang Anda gunakan lagi. Orang-orang tahu bagaimana menangani hasil; misalnya dengan memipet.)