T: MDADM mismatch_cnt> 0. Apakah ada cara untuk mengidentifikasi blok mana yang tidak setuju?

12

Baik. Setelah scrub rutin, MDADM RAID5 saya melaporkan mismatch_cnt = 16. Seperti yang saya pahami, ini berarti bahwa sementara tidak ada perangkat yang melaporkan kesalahan baca, ada 16 blok yang data dan paritasnya tidak setuju.

Pertanyaan # 1: Bisakah seseorang mendapatkan daftar blok ini?

Pertanyaan # 2: Dengan asumsi # 1 adalah mungkin, mengingat bahwa sistem file yang mendasarinya adalah EXT4, apakah ada cara untuk mengidentifikasi file mana yang dikaitkan dengan blok ini?

Saya memang memiliki backup nearline dan, di dunia yang ideal, saya hanya bisa mengubah array langsung terhadap data cadangan untuk menemukan file yang telah rusak secara diam-diam. Namun kenyataannya menarik kembali 6TB dari data cadangan akan menjadi mahal dan memakan waktu. Mengetahui ke mana harus mencari dan apa yang harus dipulihkan akan sangat menyederhanakan banyak hal.

(Saya harus mencatat bahwa saya hanya menjalankan scrub RAID dengan opsi 'check'. Menjalankan scrub dengan opsi 'repair' tampaknya sangat berbahaya karena MDADM hanya tahu bahwa data atau paritasnya salah tetapi tidak tahu yang mana. Jadi sepertinya ada kemungkinan 50% bahwa MDADM menebak salah dan merekonstruksi data yang salah. Karena itu, keinginan saya untuk mengetahui file mana yang berpotensi terpengaruh sehingga saya dapat mengembalikannya dari cadangan, jika perlu)

Setiap saran sangat dihargai!

arcasinky
sumber
periksa dmesgatau / var / log / syslog?
psusi
Hai. Sedekat yang saya tahu, satu-satunya pesan yang masuk ke syslog oleh scrubber adalah pesan mulai dan berhenti. Tidak ada pesan tentang ketidakcocokan dicatat.
arcasinky
Lihat icheck+ ncheckdalam debugfsuntuk mengidentifikasi file berdasarkan offset sektor.
sch
Saya mencoba menambahkan logging untuk nomor sektor. Sekarang saya mencoba mencari tahu apa yang harus dilakukan selanjutnya: unix.stackexchange.com/questions/266432/…
Peter Cordes
2
Saya tahu tidak ada yang mengatakan disk buruk, tetapi periksa. Gunakan paket smartmontools untuk melakukannya untuk setiap disk (seperti dalam smartctl -a /dev/sdadan sebagainya), atau gunakan metode lain apa pun yang Anda miliki untuk menjalankan tes SMART singkat pada setiap disk dan mencetak laporan lengkap. Sangat mungkin salah satu dari mereka sekarat, dan dibutuhkan sejumlah besar kejahatan untuk memicu alarm kesehatan SMART secara keseluruhan.
Spooler

Jawaban:

1

Maaf, 'centang' memang menulis kembali ke array ketika menemukan kesalahan - lihat https://www.apt-browse.org/browse/ubuntu/trusty/main/amd64/mdadm/3.2.5-5ubuntu4/file /usr/share/doc/mdadm/README.checkarray

'check' adalah operasi read-only, meskipun kernel log mungkin menyarankan sebaliknya (mis. / proc / mdstat dan beberapa pesan kernel akan menyebutkan "resync"). Silakan juga lihat pertanyaan 21 pada FAQ.

Namun, jika saat membaca, kesalahan baca terjadi, pemeriksaan akan memicu respons normal untuk membaca kesalahan yang menghasilkan data 'benar' dan mencoba untuk menuliskannya - sehingga ada kemungkinan bahwa 'pemeriksaan' akan memicu menulis. Namun dengan tidak adanya kesalahan baca itu hanya baca.

... jadi mungkin sudah terlambat untuk mengumpulkan data yang Anda cari, maaf.

Untuk jangka panjang, perlu dicatat bahwa RAID5 (dan 6, dan 1) tidak memiliki perlindungan terhadap bit-rot yang kemungkinan merupakan situasi yang Anda temui. Ketika data dalam satu disk memburuk, mereka tidak memiliki cara untuk menentukan data mana yang baik vs buruk. Saya sarankan berencana untuk bermigrasi ke sistem file yang checksum setiap disk seperti btrfs atau zfs.

(RAID-5 benar-benar tidak boleh digunakan dalam penyebaran baru - dan benar-benar tidak boleh di mana kapasitas cakram mentah masing-masing lebih dari 2TB - lihat http://www.zdnet.com/article/why-raid-5- stop-working-in-2009 / )

Andrew W
sumber