LINUX.ORG.RU
решено ФорумAdmin

Фигня какая-то с mdadm. Что делать?

 mdadm md raid1


0

3

Пытался уменьшить имеющийся md raid1, чтобы добавить дополнительный раздел.

Исходная ситуация: md0 = sda1+sdb1 и md1 = sda2+sdb2 — не интересны.

md2 = sda3+sdb3, 2Тб (1.8ТиБ). Уменьшается до 1.4ТиБ, чтобы осталось 400М в остатке.

Уменьшил md2 до размера меньше нужной границы:

mdadm --grow /dev/md2 --size 1530000000

Переразбил диски parted'ом, не затрагивая начало /dev/sda3 и /dev/sdb3. Результат — такая раскладка:

Number  Start           End             Size            Type     File system  Flags
 1      1048576B        17180918271B    17179869696B    primary               raid
 2      17181966336B    17718837759B    536871424B      primary               raid
 3      17719885824B    1584439230463B  1566719344640B  primary               raid
 4      1584439230464B  2000398934015B  415959703552B   primary               raid

Дальше нужно увеличить /dev/md2 до отведённого максимума:

mdadm --grow /dev/md2 --size max

И вот тут он выдал мне, что размер его стал не 1530000000, а полных 1936077760 (кажется, посмотреть точно сейчас нельзя). И начал синкать. Вероятно, без перезагрузки системы или mdadm он не просёк, что изменилась разбивка. При чём синк фактически висел, выдавая ожидаемое время работы постоянно разное, на сотни тысяч минут. Прогресс тоже не сдвигался, так и висел на 79 с чем-то процентов.

Я решил тормознуть это дело и вернуть --size 1530000000. Но не помогали ни echo «idle» > /sys/block/md2/md/sync_action, ни /usr/share/mdadm/checkarray -xa, процесс также продолжался/висел. А поменять во время его работы размер невозможно.

Тогда я решил тормознуть /dev/md2 по --stop и потом запустить заново. И приплыл. Теперь любая попытка создать массив выводит подобное:

mdadm --assemble -f /dev/md2 /dev/sdb3 /dev/sda3 -v
mdadm: looking for devices for /dev/md2
mdadm: /dev/sdb3 is identified as a member of /dev/md2, slot 1.
mdadm: /dev/sda3 is identified as a member of /dev/md2, slot 0.
mdadm: failed to add /dev/sdb3 to /dev/md2: Invalid argument
mdadm: failed to add /dev/sda3 to /dev/md2: Invalid argument
mdadm: failed to RUN_ARRAY /dev/md2: Invalid argument

Есть мысли куда копать?

★★★★★

3 17719885824B 1584439230463B 1566719344640B primary raid

Заметил, что я ошибся в расчёте и под разделы для md отвёл на 1Мб меньше места, чем положено. 1530000000 киб — это 1566720000000 байт, больше, чем 1566719344640. С точки зрения сохранности данных разницы никакой, том ext4 на этом разделе заметно меньше размером, с большим запасом.

Переразбил до:

Number  Start           End             Size            Type     File system  Flags
1      1048576B        17180918271B    17179869696B    primary               raid
2      17181966336B    17718837759B    536871424B      primary               raid
3      17719885824B    1584440279039B  1566720393216B  primary               raid
4      1584440279040B  2000398934015B  415958654976B   primary               raid


Разницы, понятно, никакой. Ошибка всё та же.

KRoN73 ★★★★★
() автор топика
mdadm -C /dev/md2 --verbose -l1 -n2 /dev/sda3 /dev/sdb3

и /dev/md2 создался. Пошёл синк. Правда, ext4 пока не монтируется :)

[Sat May 28 13:19:43 2016] EXT4-fs (md2): bad geometry: block count 382500000 exceeds size of device (382467328 blocks)

Таки, временный размер md2 оказался чуть меньше. Но увеличить до полного пока идёт resync невозможно. И resync по-прежнему не останавливается. Придётся ждать, пока закончится, часа три…

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

Там уже стоит 200000, а процесс идёт на ~145Мб/с.

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

Попытался сделать resize2fs на чуть-чуть меньший размер, но он без fsck -f не стартует, а fsck страшными карами грозит за превышение размера ext4-тома над размером md2 :) Так что решил не рисковать, подожду… И, наверное, --size=max делать не рискну,высчитаю и укажу точный размер вручную.

Пока создал raid1 md3, из-за которого всё затевалось и поставил сверху lvm (из-за чего, опять же, всё затевалось). Тьфу-тьфу-тьфу, с виду всё ок сейчас, надеюсь, что разрулится :)

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

Я обычно resize2fs делаю с запасом на разброс при переразметки, чтобы точно не промахнуться. Ну его нафиг этот миллиметраж.

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

Я обычно resize2fs делаю с запасом на разброс при переразметки

Да я тоже делал. Но промахнулся :) Совсем много выделять не могу, так как задача, как раз, вынести свободное пространство на отдельный том с lvm. А то фрагментация пространства под ext4 стала просто чудовищной.

KRoN73 ★★★★★
() автор топика

Ну, в общем, всё благополучно разрешилось. Только почему-то после перезагрузки старый md2 стал md126, а новый md3 стал md127 :)

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

Только почему-то после перезагрузки старый md2 стал md126, а новый md3 стал md127 :)

«Дядь», Вы по всем вашим постам вполне взрослый/адекватный человек. Ну не ужели через гуйню это сделали? Читая Ваши посты здесь ну прям не верю. :(

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

Плохой совет, т.к. ОС не указана. Это может быть и /etc/mdadm.conf и еще много чего.

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

1. Отмонтировать ФС-ы
2. udev stop
3. Если поверх mdadm есть lvm, то lvchange -a -n VGNAME
4. mdadm --stop /dev/md127
5. mdadm --assemble /dev/mdN /dev/sd[cdef]1
6. update-initramfs -u

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

Отмонтировать ФС-ы

Это придётся теперь другого сеанса вырубания сервера ждать. Через недельку попробую. На этих выходных итак дофига чего делать с ним нужно.

KRoN73 ★★★★★
() автор топика

Если кому интересно — как на производительность повлиял вынос /var/log и /var/lib/mysql с одного общего 2Тб тома в подразделы под LVM:

http://ipfs.pics/ipfs/QmaM3URxG5bS5HU46F59qzc9xGSMMSN1DhNV4pZFGe6Tyy

Ещё предстоит кеши вынести и всякую файловую мелочь — тоже должно весьма позитивно сказаться...

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

Так я вообще-то и удивился. Обычно когда читаешь такое «md2 стал md126» как-то следом идет рассказ про гуевую прогу :)

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

Увы, я даже не знаю, как работать с md через GUI :)

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

Обычно когда читаешь такое «md2 стал md126» как-то следом идет рассказ про гуевую прогу

mdadm именует массивы как md125, md126 и далее при

a) Для соответствующего массива нет строчки в mdadm.conf и ядро находит его autodetect'ом

b) Массив указан в mdadm.conf по имени (например, ARRAY /dev/md/Raid1Hitachi1TB metadata=1.2 UUID=8e56 ...)

Может, ещё в каких-то случаях, но я пока не сталкивался. GUI не при чём.

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

Спасибо! Не знал. У меня как-то всегда в mdadm.conf порядок.

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.