LINUX.ORG.RU

RAID 1 (зеркало) — испортилось после «re-add»

 , , , ,


1

2

Всем привет!

Уехав в отпуск, взял с собой в ноуте один из хардов mirror-рейда (поместив его в ноут). Диск в системнике оставался неизменным (выключенным).

Приехал - воткнул обратно в системник, и после запуска mdadm (re-add) испортил всю ФС на обоих дисках!

Вот как я делал:

  1. Загрузился с актуального харда RAID’а.
  2. Проверил cat /proc/mdstat - логический диск sda3, degrated raid1 - всё верно.
  3. Включил питание у устаревшего харда RAID’а.
  4. Проверил lsblk - появился sdb3, не в рейде - всё верно.
  5. Запустил:

sudo mdadm --manage /dev/md0 --re-add /dev/sdb3

и дождался конца синхронизации, просматривая cat /proc/mdstat.

После синхронизации начал получать segmentation fault запускаемых программ типа thunderbird. При перезапуске даже KDE не запустился, куча служб FAILED, в обновленных файлах содержимое, которое явно должно быть не в них (например, бинарные данные в текстовых доках). Система выдает ошибки ext-fs и всяких там inode.

Исправить что-то можно? (а вдруг)

Что я сделал не так? Самый важный вопрос (т. к. бекап есть, но надо не повторить ошибку в будущем)



Последнее исправление: DOKA (всего исправлений: 1)

т. к. бекап есть, но надо не повторить ошибку в будущем

Оох… Обошлось малой кровью, поздравляю!

mdadm не оперирует fs или тем более файлами, он оперирует блоками.

Надо было удалить неактуальный кусок массива (да хотя бы mdadm --zero-superblock) на оставшемся дома диске и добавить его как свежий диск взамен сбойнувшего.

mdadm никогда не был предназначен для такого кейса работы (вынул, поработал, засинкал со старым куском)

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 1)
Ответ на: комментарий от Dimez

mdadm никогда не был предназначен для такого кейса работы (вынул, поработал, засинкал со старым куском)

А что, есть инструменты построения RAID, которые для этого предназначены?

mord0d ★★★★★
()
Ответ на: комментарий от Dimez

А зачем тогда нужны bitmap у RAID? Я думал именно для re-add (какой тогда смысл в re-add).

И почему ФС на «актуальном» харде тоже испортилась после синхронизации? Кстати, там она испортилась в меньшей степени. Некоторые файлы (текстовые), испорченные на «устаревшем» харде, здесь не испорчены.

DOKA
() автор топика
Последнее исправление: DOKA (всего исправлений: 1)
Ответ на: комментарий от DOKA

https://docs.qnap.com/nas-outdated/QTS4.3.5/en/GUID-7AE448C8-485F-4AD4-A03F-EB7A6AE9188E.html

– тут написано, то bitmap специально для этого (или я не так понял?)

RAID Bitmaps If a disk is temporarily disconnected from its RAID group and then reconnected, the RAID group must synchronize all of its data. This process may take a long time. If the RAID group has a bitmap then only changes that were made after the disk was disconnected need to be synchronized, greatly speeding up the process.

DOKA
() автор топика
Последнее исправление: DOKA (всего исправлений: 1)
Ответ на: комментарий от DOKA

Если б ты работал в отпуске с диском вообще никак не меняя его содержимое (т.е., в RO не только ФС, а и массив целиком) - --add/--re-add бы сработал (а bitmap бы позволил не синхронизировать его целиком).
После того, как ты с ним «поработал» - это уже отдельный массив. А ты просто сказал первому «Не, все ок, добавляй».

YAR ★★★★★
()
Ответ на: комментарий от YAR

Если б ты работал в отпуске с диском вообще никак не меняя его содержимое (т.е., в RO

… тогда я бы его воткнул, и он без всяких add/re-add заработал бы в рейде, т. к. не был изменен. Зачем тут вообще синхронизация?

DOKA
() автор топика
Ответ на: комментарий от DOKA

т. к. не был изменен.

Зато был изменен первый, он уже «ушел вперед». А что, если у тебя первый диск по какой-то причине опознается в системе позже и RAID уже будет собран со вторым? А что, если у тебя не 2 таких диска, а десяток и у каждого свои метаданные? Втупую лепить их обратно в зеркало - плохая идея и этого не делается. Вот --re-add и нужен для таких случаев.

YAR ★★★★★
()
Последнее исправление: YAR (всего исправлений: 2)
Ответ на: комментарий от YAR

Сорри, не очень понял. Один из дисков так и остался неизменным ведь.

Есть «актуальный» диск - он «ушел вперед» (с ним работал в отпуске). Есть «устаревший» - лежал выключенным в системнике.

Я загрузился с «актуального» и сделал синхронизацию на «устаревший». По крайней мере, я так думал.

DOKA
() автор топика
Ответ на: комментарий от Dimez

Главный вопрос - почему Bitmap не сработали. По идее это то, что было нужно.

И раньше ведь это работало! Не в первый раз так делаю.

Может ли быть так, что лимит по размеру Bitmap был исчерпан? В прошлые разы изменений было не много, в этот - около 10Gb.

DOKA
() автор топика
Ответ на: комментарий от DOKA

Забранный с собой диск монтировался из /dev/mdXXX или из /dev/sdXXX? Если второе то raid-овские штуки твоих обновлений не заметили и считали что там везде актуальные данные.

Но вообще на уже работающем raid-массиве подключать ушедший вперёд диск и хотеть бекпортить с него обновления это плохая идея. Надеюсь хотя бы его фс в это время не была смонтирована.

firkax ★★★★★
()
Ответ на: комментарий от firkax

Забранный с собой диск монтировался из /dev/mdXXX или из /dev/sdXXX?

Забранный диск был единственным на ноутбуке, я с него и грузился. Соответственно - первое (/dev/md0).

Но вообще на уже работающем raid-массиве Т. е. если бы я загрузился с флешки и синхронизовал эти диски через re-add по bitmap, то всё прошло бы нормально?

DOKA
() автор топика
Ответ на: комментарий от DOKA

Как я понял ты смонтировал файловую систему (более того - корневую) с устаревшего диска, в read-write режиме и потом начал этот устаревший диск патчить обновлениями с того что возил в ноуте? Ну это гарантированное запарывание фс (вопрос только в том насколько сильно она запорется, может «повезти» и не сразу заметишь).

Лучше бы загрузился с того что в ноуте и прицепил к нему старый потом. Так с какой стороны ни посмотри шансов на успех в разы больше.

Т. е. если бы я загрузился с флешки и синхронизовал эти диски через re-add по bitmap, то всё прошло бы нормально?

Ну или так. Но тоже я бы на всякий случай проверил что новый диск первым включился.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от firkax

Лучше бы загрузился с того что в ноуте и прицепил к нему старый потом.

В том-то и дело, что я именно так и с делал. Естественно.

У меня есть специальная приблуда от Orico, чтобы кнопками включать-выключать питание конкретных дисков, они у меня под номерами, схема отработано. Всё пошло не так только в этот раз.

Я уже грешу на какой-то баг, связанный с LVM + bitmap. Видимо, в следующие разы придется не доверять механизму bitmap’ов и делать полный add. Ресурс моего SSD - 600 полных перезаписей, по идее жить можно.

DOKA
() автор топика