LINUX.ORG.RU
ФорумAdmin

Как заменить исправный диск в RAID0-массиве?

 , ,


1

2

Всем привет, есть RAID0-массив на трёх дисках, построенный с помощью mdadm. В этот массив при создании был временно поставлен более медленный диск, что привело к замедлению работы остальных дисков. Теперь же имеется полностью аналогичный первым двум диск и естественное желание заменить им медленный хард. Вопрос, собственно, как это сделать?

Мануалы курил, пишут только про аварийные ситуации, про RAID0 вообще информации мало. Посекторно скопировал медленный диск на быстрый, но, суля по всему, будет недостаточно просто пересобрать массив с новым диском.

И ещё один вопрос (чтоб два раза не вставать) - если в RAID5-массиве один диск медленнее других - это скажется на производительности?

Заранее всем спасибо.

P. S. Забыл сказать - вариант «сделать бекап и переразбить» не катит. Ещё вот - массив не системный, просто файлопомойка.



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

Посекторно скопировал медленный диск на быстрый, но, суля по всему, будет недостаточно просто пересобрать массив с новым диском.

Убрать старый, попробовать завести. Скорее всего сработает.

если в RAID5-массиве один диск медленнее других - это скажется на производительности?

Да, но RAID5 такое дно, что не заметишь. К тому же ты ведь тюнил страйп-кэш, значит можно не париться.

anonymous
()
Ответ на: комментарий от router

Там для RAID5. Собственно, на нём действительно прокатит «добавить один и убрать другой диск», но то, что это подойдёт для RAID0, я очень сомневаюсь. Ключ grow для нулевых массивов есть, а вот убрать диск, если я не ошибаюсь, из него нельзя.

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

Убрать старый, попробовать завести. Скорее всего сработает.

Опять же, если я не ошибаюсь, mdadm хранит на каждом члене массива суперблок с информацией о других элементах массива и если просто выбить из-под него табуреточку и поставить другую, то в лучшем случае он не заведётся, а в худшем - всё файло просто похерится. А я не могу рисковать.

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

mdadm хранит на каждом члене массива суперблок с информацией о других элементах массива

Нет, mdadm ничего не хранит, это программа в юзерспейсе. Да, про суперблок верно.

выбить из-под него табуреточку и поставить другую

??? Ты же посекторно скопировал, с чего бы она была другой? Монтируй файловую систему в RO, если страшно, тоже мне проблема.

А я не могу рисковать.

RAID0

Даже не знаю, что именно это из десяти, но ты понял.

anonymous
()

есть RAID0-массив на трёх дисках, построенный с помощью mdadm

вариант «сделать бекап и переразбить» не катит.

А других вариантов и быть не может.

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

??? Ты же посекторно скопировал, с чего бы она была другой? Монтируй файловую систему в RO, если страшно, тоже мне проблема.

Есть ещё одна проблема :-) Размер всех дисков массива - 1 000 204 886 016 байт.

Размер нового диска - 1 000 204 754 944 байт.

Чёрт его знает, какие могут быть подводные камни и почему вообще два диска одной модели имеют разный объём.

Вот пишу это и всё явственнее ощущение, что без тотальной переразбивки никак не обойтись.

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

Не на трёх. По ссылке за счёт двух запасных дисков ( вместо одного ) идёт преобразование в raid4 ( похож на raid5, но контрольные суммы на выделенном диске ) и замена диска в нём

Сейчас проверил на файлах ( losetup ) - работает :)

 dd if=/dev/zero of=file1.raw bs=1M
 dd if=/dev/zero of=file2.raw bs=1M
 dd if=/dev/zero of=file3.raw bs=1M
 dd if=/dev/zero of=file4.raw bs=1M

 losetup /dev/loop1 file1.raw 
 losetup /dev/loop2 file2.raw 
 losetup /dev/loop3 file3.raw 
 losetup /dev/loop4 file4.raw 

 mdadm --create /dev/md0 --level=raid0 --raid-devices=2 /dev/loop1 /dev/loop2 
 mkfs.ext4 -m0 -L test /dev/md0 
 sudo mdadm /dev/md0 --grow --level=4
 mdadm /dev/md0 --add /dev/loop4
 wait -n 1 cat /proc/mdstat

 mdadm /dev/md0 -f /dev/loop1
 mdadm /dev/md0 -r /dev/loop1
 mdadm /dev/md0 --add /dev/loop3
 wait -n 1 cat /proc/mdstat

 mdadm /dev/md0 --grow --level=0

root@rhea:/home/router# cat /proc/mdstat 
Personalities : [raid0] [raid6] [raid5] [raid4] 
md0 : active raid0 loop3[4] loop2[1]
      202752 blocks super 1.2 512k chunks
      
unused devices: <none>
root@rhea:/home/router# e2fsck -C0 /dev/md0
e2fsck 1.43.4 (31-Jan-2017)
test: clean, 11/50800 files, 12065/202752 blocks
router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)
Ответ на: комментарий от router

Я не про ссылку, а про конфигурацию ТС. Просто не сразу заметил, что у него трёхдисковый массив.

По ссылке тоже смотрел, изобретательное решение. Я когда-то проделывал похожую операцию, только там вроде были первый и пятый, но точно уже не помню.

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

Я не про ссылку, а про конфигурацию ТС. Просто не сразу заметил, что у него трёхдисковый массив.

Тоже не обратил внимание. Вах, вот это джигит! Шары просто титановые. Чего не скажешь о мозге :)

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

Тоже не обратил внимание. Вах, вот это джигит! Шары просто титановые. Чего не скажешь о мозге :)

Каждому своё, как говорится. SSD большого объёма нерентабельно, а рейд обеспечивает приемлемую скорость вкупе с большим объёмом (HD-фильмы, образы нескольких виртуалок для побаловаться и прочий стафф типа игор). Да и модельный ряд дисков проверен временем. Я бы и четвёртый поставил, если б он медленным не был :-)

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

Попробую сделать сабж в виртуалке (loop тоже хорошо, но хочу приближённые к реальности условия). О результатах отпишусь.

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

Итак, в VB поднята live-Fedora 25 с четырьмя виртуальными дисками по одному Гб. Дальнейшие действия:

1). mdadm'ом на трёх дисках создан RAID0-массив;

2). На него накачена ext4 с двумя гигами нагенеренных файлов;

3). Массив был остановлен (mdadm -S /dev/md0);

4). /dev/sda был dd-шкой скопирован на /dev/sdd;

5). Массив был пересобран уже с новым диском через mdadm --assemble.

Собрался, примонтировался, раздел открылся, файлы доступны. Win! Ctrl+R'ом сымитировал обрыв питания, убрал sda вообще, перезагрузился туда же, массив собрался сам и подрубился в Дельфине, все файлы доступны и читаются. mdadm --detail /dev/md0 показывает, что всё произошло так, как и планировалось. Epic win, можно юзать, как инструкцию.

Попробую на рабочей машине и отпишусь позднее.

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

и почему вообще два диска одной модели имеют разный объём.

А вот это в доках по mdadm в кач-ве предупреждения описано «100500» лет назад.

anc ★★★★★
()

Всё по кайфу, друзья, массив завёлся, кажется, проблем никаких нет. Скорость работы значительно повысилась, всем отписавшимся - большое русское мерси.

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

Рэйд0 не более рисковый чем одиночный диск в плане потери информации. Да, среднее время до отказа массива будет в 3 раза меньше, чем у одного диска, но все же.

Рейды5-6 нужны для того, чтобы не обрывать процесс работы - горячая замена без потери данных, короче. А raid0 из 4х дисов вполне нормально пережил два посыпавшихся винта. Просто все стопоришь СРАЗУ по обнаружении проблем и делаешь dd на запаску.

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

То есть, вероятность того, что диск обсыпется до состояния нечитаемости, не рассматриваем?

RAID5 «с нестопорением работы» это чисто сферический конь в вакууме, так как перформанс массива при ребилде падает ниже плинтуса.

Без стопорения работы более-менее нормально живет только 10 (1+0).

svr4
()
Ответ на: комментарий от timdorohin

Наработка на отказ это тоже сферический конь в вакууме.

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

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

Я же не предлагаю использовать raid0 на ынтерпрайз-сервере.

Ему место там, где надо БЫСТРО, и надежность в стиле «сдох - выкинули все и заменили, развернув бекап»

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

Рэйд0 не более рисковый чем одиночный диск в плане потери информации.

Нет более рисковый в кол-ве потерянной информации, при трех отдельных дисках и выходе из строя одного вы теряете 1/3 информации, при raid0 вы теряете всю.

А raid0 из 4х дисов вполне нормально пережил два посыпавшихся винта. Просто все стопоришь СРАЗУ по обнаружении проблем и делаешь dd на запаску.

Это не посыпавшийся винт. Это вы скорее по смарту предупреждение получили, идеальный вариант, однако харды бывают мрут так что даже от смарта получить предупреждение не успеваем.

Рейды5-6 нужны для того, чтобы не обрывать процесс работы - горячая замена без потери данных, короче.

Не до конца верное замечание как минимум raid5 при выходе из строя одного диска становиться овощем в плане производительности (т.е. говорить про «не обрывать процесс работы» не совсем верно ), так же описывались случаи когда он даже терял данные.

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