Q: MDADM mismatch_cnt> 0. Будь-який спосіб визначити, які блоки суперечать?


12

Добре. Після звичайного скрабування мій MDADM RAID5 повідомляє mismatch_cnt = 16. Як я розумію, це означає, що хоча жоден пристрій не повідомив про помилку читання, існує 16 блоків, для яких дані та паритет не узгоджуються.

Питання №1: Чи можна отримати список цих блоків?

Запитання №2: Припустимо, що №1 можливе, враховуючи, що базовою файловою системою є EXT4, чи є спосіб визначити, які файли пов'язані з цими блоками?

У мене є резервні копії прямої лінії, і, в ідеальному світі, я можу просто відрізнити масив живих даних від резервних даних, щоб знайти будь-які файли, які мовчки стали пошкодженими. Але реальність нагадує, що резервне копіювання даних 6TB було б надмірно дорогим та трудомістким. Знання, де шукати і що відновити, значно спростило б справи.

(Слід зазначити, що я запускаю скраб RAID лише з опцією «перевірити». Запуск скрабу за допомогою параметра «ремонт» здається жахливо небезпечним, оскільки MDADM знає лише, що дані чи паритет невірні, але він не знає, який. Тому, схоже, є 50% шансів, що MDADM визнає неправильним і реконструює невірні дані. Звідси моє бажання дізнатися, які файли можуть вплинути, щоб я міг відновити їх із резервної копії, якщо потрібно)

Будь-які пропозиції дуже вдячні!


перевірити dmesgабо / var / log / syslog?
psusi

Привіт. Наскільки я можу сказати, єдиними повідомленнями, зафіксованими скруббером до системи, були повідомлення про початок та зупинку. Жодних повідомлень щодо невідповідностей не було зафіксовано.
arcasinky

Див icheck+ ncheckв debugfsдля ідентифікації файлів на основі секторів зміщення.
sch

Я спробував додати журнал для номера сектора. Зараз я намагаюся зрозуміти, що робити далі: unix.stackexchange.com/questions/266432/…
Пітер Кордес,

2
Я нічого не знаю, що диски погані, але перевіряйте їх. Скористайтеся пакетом smartmontools, щоб зробити це для кожного диска (як smartctl -a /dev/sdaі так далі), або скористайтеся будь-яким іншим способом, щоб виконати короткий тест SMART на кожному диску та надрукувати повний звіт. Дуже ймовірно, що хтось із них помирає, і це потребує серйозної шкоди, щоб запустити загальний сигнал SMART про стан здоров'я.
Спулер

Відповіді:


1

Вибачте, "чек" дійсно списується до масиву, коли виникає помилка - див. Https://www.apt-browse.org/browse/ubuntu/trusty/main/amd64/mdadm/3.2.5-5ubuntu4/file /usr/share/doc/mdadm/README.checkarray

'check' - операція лише для читання, навіть якщо журнали ядра можуть запропонувати інакше (наприклад, / proc / mdstat та кілька повідомлень ядра будуть згадувати "resync"). Дивіться також питання 21 FAQ.

Якщо, однак, під час читання виникає помилка читання, перевірка спричинить нормальну відповідь на помилки читання, яка полягає у формуванні «правильних» даних і спробує записати їх - тому можливо, що «перевірка» спровокує a писати. Однак при відсутності помилок читання він є лише для читання.

... тож можливо вже пізно збирати дані, які ви шукаєте, вибачте.

На більш тривалий термін варто зазначити, що RAID5 (і 6, і 1) не мають захисту від біт-гниття, що, ймовірно, ситуація, з якою ви стикалися. Коли дані на одному диску виходять поганими, вони не можуть визначити, який із даних хороший проти поганий. Я б запропонував планувати перехід на файлову систему, яка перевіряє суми кожного диска, такого як btrfs або zfs.

(RAID-5 насправді не слід використовувати в нових розгортаннях - і справді не слід, коли ємність неочищених дисків перевищує 2 ТБ кожен - див. Http://www.zdnet.com/article/why-raid-5- припиняє роботу в 2009 році / )

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.