LINUX.ORG.RU
ФорумAdmin

Конвертация RAID5 в RAID1

 , , , ,


0

1

Есть программный массив RAID5 из 2 дисков на 2Тб и одного на 1Тб. Надо исправить это недоразумение и сделать RAID1 из двух дисков на 2Тб, а остальные убрать. Вариант заново создать и скопировать все данные и т.д. не подходит.

На каждом диске 2 раздела, grub boot на 1мб и все остальное linux fd. Из всех fd создан raid5, поверх него lvm2, на lvm2 2 тома.

Как это сделать?

Вариант заново создать и скопировать все данные и т.д. не подходит.

В начале делаешь резервную копию, а далее пробуешь преобразовывать.

Без резервной копии даже не пробуй.

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

Тогда в начале пишешь заявление по собственному, подписываешь у начальника.

А потом пробуешь конвертировать на лету без резервного копирования.

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

Ну а если всё пройдёт успешно заберёшь заявление.

infomeh ★★ ()

Слить данные –> пересоздать массив –> вернуть данные на место

Если данные важные, то другие варианты я бы не рассматривал. К тому же LVM усложнит задачу.

Nekto_Vladislav ()

RAID5 из 2 дисков на 2Тб и одного на 1Тб

Что-что? Извините.

Массив предполагает, что элементы массива имеют одинаковый тип, в данном случае - размер.

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

Если взять только ёмкость двух дисков по 2 Тб, из которых ты хочешь собрать RAID1, то на дисках сейчас под данные RAID использован только 1Тб на каждом диске и из этого 1 Тб на каждом диске 1/3 Тб использованы под данные контроля чётности и 2/3 Тб под собственно сами данные.

И ещё 1/3 Тб данных контроля чётности находится на третьем 1Тб диске и там же ещё 2/3 Тб данных RAID.

Теперь подумай как ты будешь преобразовывать?

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

массив имеет размер 2тб

Так и пиши, что у тебя raid5 на 3 дисках по 1ТБ, и 1+1 ТБ в трубу. mdadm умеет конвертировать только 2-дисковый raid5 в raid1.

Вывод. Бекап и создавай по новой.

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

2-дисковый raid5 - это пародия на raid1. Практического смысла не имеет, и в реальности не встречается. То есть практически mdadm не умеет конвертировать raid5 -> raid1

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

Переходи на zfs, там умеют и предпочитают извращаться над дисками, прям как ты.

Увы, ZFS вообще не умеет такое, там обычно только пересоздание пула. А вот Btrfs — запросто.

anonymous ()

Рецепт суицидник:

  • грузим с livecd
  • монтируем raid массив
  • создаем и монтируем раздел tmpfs (в оперативку)
  • копируем данные в tmpfs раздел
  • разбираем массив и создаем новый
  • копируем назад И МОЛИМСЯ
Silerus ★★★ ()
Ответ на: комментарий от anonymous

Переходи на zfs, там умеют и предпочитают извращаться над дисками, прям как ты.

Увы, ZFS вообще не умеет такое, там обычно только пересоздание пула. А вот Btrfs — запросто.

++

intelfx ★★★★★ ()

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

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

Может, ему нельзя уходить в оффлайн.

1. Конвертация RAID5 в RAID1 (комментарий)
2. И что? Когда внезапно навернется это гораздо больнее чем когда ты это осознано сделаешь сам.
3. Могли бы догадаться что с моей стороны это стеб, но только отчасти.

anc ★★★★★ ()

Так-то ты можешь извратиться в пределах этих 3 дисков. Создать lvm-том на неиспользуемых 1+1 ТВ. Скопировать туда данные с рейда. Убить рейд. Переместить физический том с 1 ТБ, освободив целый диск на 2ТБ. Создать degraded raid1 из одного диска. Скопировать туда данные с lvm и освободит диск. Добавить диск в raid. Как-то так.

anonymous ()

Как уже сказали, очень хорошо было бы иметь бекап.

Есть программный массив RAID5 из 2 дисков на 2Тб и одного на 1Тб

массив имеет размер 2тб

Т.е. ты создал массив из трёх кусков по 1 Тб, а на больших дисках часть места не используется?

Если да, ты можешь свободное место использовать для временного хранения данных вместо того, чтобы экспериментировать с конвертацией. Тем более что есть lvm

Начать точно стоит с понимания текущей ситуации. Смотри

# по всему массиву
mdadm --detail /dev/md0
# и по всем отдельным дискам ( см. в выводе предыдущей команды или в /proc/mdstat)
mdadm -E /dev/sdb

Если есть lvm, то вообще прекрасно, сможешь мигрировать данные на временный диск и обратно на лету, без даунтайма

Если всё так, я бы попробовал

  1. вытащить из рейда один 2 Тб диск (будет деградировавший рейд без отказоустойчивости)
  2. создать на нём деградировавший 2 Тб raid1 из одного диска
  3. перенести данные со старого рейда на новый (если есть lvm, идеально - через pvmove). Т.к. реальные размеры дисков чуть меньше, скорее всего тебе придётся чуть ужать разделы
  4. после того, как старый рейд освободится, удалить его и добавить второй 2 Тб диск в новый рейд
  5. дождаться, пока пройдёт ребилд
  6. profit
router ★★★★★ ()
Ответ на: комментарий от router

Можно ли просто конвертировать raid5 (особенно в такой извращённой конфигурации) в raid1 - без понятия. Гугли, читай документацию. Удачи

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

копируем данные в tmpfs раздел

Идея интересная, но все 2 Тб? На работе есть несколько серверов с таким объёмом памяти, но большинство поменьше будут :)

router ★★★★★ ()

Если тебе вот прямо нечего больше делать, то ты можешь капитально воскурить man lvmraid, понять что там написано, понять что у тебя за рейд и как он устроен (какие страйпы и т.п.) и, возможно в несколько шагов, сконвертировать. Но это думать надо. Просто копипастить командочки из мана или тем более из инетов - это означает просрать данные.

legolegs ★★★★★ ()

Так а в чем проблема? Если все диски исправны (хотя бы посмотреть значения параметров и чистоту логов ошибок через smartctl -x), выдернуть один 2тб диск, убедиться, что с деградировавшего массива все читается, создать рейд1 из этого вынутого диска, скопировать данные на него с рейд5, потом добавить в рейд1 второй 2тб из рейд5. Синхронизировать рейд1, и можно уже прекращать молиться.

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

Лучше задействовать lvm по полной, в том числе и raid его средствами.

Создать pv на пустых местах и добавть в vg lvm. Сменить тип lv на зеркальный или raid.

Грохнуть raid-5. Lv деградируют. На этом месте тоже создать pv и восстановить избыточность lv.

Все делается без необходимости остановки. Теряется избыточность только на одном шаге.

Если lv можно утрамбовать в 1 tb, то было бы сильно проще но даже так, можно усложнить - одну часть raid-5 отдать в vg lvm - тогда можно сделать временную избыточностью хотя-бы для половины.

Вообще, теоретически можно перемолотить, как это делается при конвертировании в luks, наверно.

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

У этого варианта на двух шагах страдает избыточность, против моего с одним.

У тебя странное понимание избыточности на логических томах, которые неизвестно как расположены на дисках. Что будет, если выйдет из строя один из реальных дисков?

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

В моем случае избыточность сначала увеличивается за счет пустого места. Если считать части raid5, как 5¹,5²,5³, а две части lv, как 1 и 2, то получается сначала такая схема:

5¹#
5²#
5³

А после первого этапа:

5¹1
5²2
5³

Отказоустойчивость не упала. Может пережить потерю диска во время изменений.

У router получается так:

# #
5²#
5³

А потом так:

1 2
5²#
5³#

Деградированный raid5 не переживет потерю диска с 5² или 5³.

Потом по моему место raid5 заменяется на место для lvm и восстановления избыточности:

21
12
#

А у router так:

12
12
#

Тут особой разницы нет, только в моем способе одна из пар в другом порядке но это можно исправить задействовав третий диск.

В моем при изменениях нельзя потерять любой из 2 дисков, а в другом нельзя потерять только «первый».

С его способом про raid1 можно много неговорить - переживет, пока один из 2TB дисков жив. А с моим тоже, т.к. останется 12 или 21.

Если сравним этапы перекрестно:
Его первый этап так же опасен, как мой второй, если считать диски 1TB и 2TB одинаково надежными.
А его второй этап опасней, чем мой первый.

С LVM с несколькими pv можно пережить их потерю, если остались метаданные в оставшихся pv, или памяти, а есть еще бэкап в /etc/. Ну и, если там были размещены части lv типа mirror или raid>0, о чем и речь.

От неупорядоченности на последнем шаге можно избавиться добавив избыточность так:

#1
12
2

Потом сдвинуть:

1#
12
2

И так:

12
12
#
boowai ★★★ ()