Преобразование без потерь: как перейти от LV или MD RAID1 и 0 к RAID5 без утраты данных
Узнайте, как безопасно преобразовать LVM или mdadm MD RAID1 и 0 в RAID5 без утраты ваших ценных данных! В этой статье мы подробно разберем процесс и поделимся советами по сохранению информации.

- Как преобразовать RAID1 (зеркало) в RAID5 (parity)
- Как изменить RAID 0 (чередование) на RAID5 (parity)
- Как конвертировать LVRAID1 в LVRAID5
- Как конвертировать LVRAID0 в LVRAID5
- Как восстановить данные с поврежденных RAID массивов
- Заключение
- Вопросы и ответы
- Комментарии
Массивы типа RAID0 выделяются довольно высокой скоростью доступа к информации, их используют исключительно из-за значительного прироста скорости операции чтения\записи данных. Но их надежность и отказоустойчивость оставляют желать лучшего. Потому что, при поломке хотя бы одного носителя – вся хранящаяся информация станет недоступна. Восстанавливать ее крайне тяжелое занятие, да и данные, которые получится достать, гарантировано будут повреждены. Этот тип можно только с натяжкой считать массивом, так как напрочь отсутствует избыточность.

Как преобразовать LV или MD RAID1 и 0 в RAID5 без потери данных
Тип RAID1 выделяется хорошей надежностью и отказоустойчивостью, потому что все данные дублируются, создается полное «зеркало» на втором носителе. Но скорость чтения/записи данных от этого страдает и не может похвастаться такой же скоростью работы как в «нулевом» типе.
Если у вас есть дополнительный накопитель, то можно «первый» тип можно расширить до «пятого» уровня. Это в свою очередь даст дополнительные бонусы надежности по сравнению с «нулевым» уровнем, а также позволит значительно увеличить скорость чтения\записи информации по сравнению с «первым» типом. На выходе мы получим достаточно надежный, отказоустойчивый и быстрый RAID5 массив.
Параметр | RAID 0 | RAID 1 | RAID 5 |
---|---|---|---|
Структура | Стрипинг | Зеркалирование | Стрипинг с четностью |
Количество дисков | Минимум 2 | Минимум 2 | Минимум 3 |
Производительность | Высокая | Средняя | Высокая |
Использование пространства | 100% | 50% | (n-1)/n |
Надежность | Низкая | Высокая | Средняя |
Восстановление | Нет | Легко | Сложнее |
Применение | Для скорости | Для критически важных данных | Для баланса между скоростью и надежностью |
Как преобразовать RAID1 (зеркало) в RAID5 (parity)
Итак, у нас есть программный md_RAID1 созданный на операционной системе Linux. Данный массив состоит их двух дисков.

Нам нужно преобразовать его в RAID5 и добавить еще один диск, при этом нужно чтобы информация, которая на нем лежит осталась на своем месте. На дисковом массиве записаны несколько файлов: фото, видео, документы, так далее.

Прежде чем приступать к операции преобразования рекомендуется сделать резервную копию, так как в процессе неправильно выполненных команд может затереться важная информация.
Открываем терминал, чтобы команды выполнялись от root-а выполним команду:
sudo -i
и вводим пароль.

Далее, если массив смонтирован нужно его необходимо размонтировать, для этого вводим такую команду:
umount /dev/md0
или
umount /mnt

Если система пишет, что ресурс занят (target is busy), попробуйте сделать это принудительно:
umount -f /dev/md0

Затем нужно остановить RAID1, выполняем следующую команду:
mdadm --stop /dev/md0
(md0 или другое имя, посмотреть путь)
где, md0 – идентификатор нашего RAID.

Если вы загружаетесь с этого рейда, то остановить его разумеется не получится и необходимо будет использовать какой-нибудь LiveCD.
Далее нужно перезаписать метаданные старого RAID1, для этого создаем поверх него RAID5 из тех же дисков, которые входили в RAID1, sdb и sdc, вводим такую команду:
mdadm --create /dev/md0 -a yes -l 5 -n 2 /dev/sdb1 /dev/sdc1
где,
- l5 – задает уровень массива,
n2 – количество дисков из которых он состоит и далее указываются эти диски.

После выполнения команды программа выведет предупреждение о том, что эти диски уже используются в RAID1, жмем Enter для продолжения.
Для проверки успешного преобразования вводим команду:
cat /proc/mdstat

Теперь нужно дождаться завершения ребилда RAID5, в процентах указан его статус.
По завершению команда cat /proc/mdstat выведет следующие данные.

После можно добавить новый диск в массив и сделать его полноценным RAID5. Новый диск добавится как запасной (spare). Для добавления вводим такую команду:
mdadm --add /dev/md0 /dev/sdd1

Далее нужно расширить рейд до трех активных дисков, задействовав запасной диск, этой командой:
mdadm --grow /dev/md0 --raid-disks=3
Проверяем что из этого получилось командой:
cat /proc/mdstat

Теперь в рейде задействованы 3 диска sdb, sdc, sdd и начался процесс изменения (reshap).
В процентах отображен его прогресс, ждем окончания.
По завершении проверим дисковый массив на ошибки, такой командой:
e2fsck -f /dev/md0
и расширим его следующей командой:
resize2fs -p /dev/md0

И в конце нужно обновить файл конфигурации, выполнив такую команду:
mdadm --examine --scan >> /etc/mdadm.conf

Если в процессе выполнения этих команд не было сбоев, все данные которые были на RAID1 перенесутся на новый RAID5 массив.
Монтируем диск и проверяем, все файлы остались не тронутыми, а уровень массива изменился на пятый.

Как изменить RAID 0 (чередование) на RAID5 (parity)
Преобразовать RAID0 в RAID5, без форматирования и потери информации таким способом не получится. Но вместо этого есть быстрый способ конвертации с помощью одной команды.
Миграция с RAID0 на RAID5 возможна лишь в случае с двумя дисками, при котором RAID0 удобно совпадает с RAID5. При этом просто изменится уровень массива, не затрагивая информацию на дисках.
Эта команда преобразует RAID0 с двумя дисками в RAID5 с тремя накопителями.
mdadm --grow /dev/md0 --level=5 --raid-devices=3 --add /dev/sdd --backup-file=/tmp/grow_md0.bak
Перед ее выполнением нужно отмонтировать диск.
Проверяем командой:
cat /proc/mdstat
Ждем окончания reshap-а

После преобразования в RAID-5 вы сможете добавить в массив дополнительные диски, как я ранее писал выше:
mdadm --add /dev/md0 /dev/sdc1

После перезагрузки в управлении дисками его имя изменится на RAID5.
Если в RAID0 больше двух дисков сначала нужно уменьшить их количество, и только после этого станет возможным конвертировать его в RAID5.
Как конвертировать LVRAID1 в LVRAID5
Если для создания RAID массива вы использовали функционал LVM и в этом случае можно преобразовать один тип в другой используя команду:
lvconvert
Выполним команду
pvdisplay
чтобы посмотреть информацию о группе дисков.

Детальнее о том, как создать MD и LV RAID смотрите в одном из предыдущих видео.

Как создать программный RAID на Linux Ubuntu
Итак, для начала конвертации нужно размонтировать логический том. Вводим команду:
umount /dev/vg1/lv1
Для преобразования уровня RAID вводим следующую команду:
lvconvert --type raid5 /dev/vg1/lv1

Теперь осталось добавить третий накопитель к существующей группе дисков, командой:
vgextend vg1 /dev/sdd1
При ее выполнении программа предупредит что диск уже имеет разметку, вводим yes для подтверждения и жмем enter.
Чтобы посмотреть добавился ли диск в группу выполним команду:
pvdisplay
Как видите в группе задействовано 3 диска.

Снова монтируем наш диск и открываем его в менеджере файлов, как видите все данные остались на своем месте.

Как конвертировать LVRAID0 в LVRAID5
Для конвертации RAID0 в RAID5 используется та же команда. Единственный момент перед выполнением конвертирования нужно добавить в группу третий диск, иначе система сообщит что ей недостаточно места для выполнения данной команды.
Добавляем третий диск:
vgextend vg1 /dev/sdd1
И для преобразования уровня RAID вводим следующую команду:
lvconvert --type raid5 /dev/vg1/lv1

Смонтируем наш массив и посмотрим, что на нем осталось. Как видите все файлы на месте.

Как восстановить данные с поврежденных RAID массивов
Если в процессе преобразования из одного уровня RAID в другой произошел сбой или вы случайно затерли информацию, воспользуйтесь программой для восстановления данных – Hetman RAID Recovery. Утилита вычитывает из системы всю информацию о контроллере, материнской плате или программном обеспечении, на котором был создан массив дисков.

Она воссоздаст разрушенный RAID и позволит скопировать из него утерянную информацию.

Детальнее о восстановлении MD LV RAID можете посмотреть в одном из предыдущих видео, ссылку я оставлю в описании.

🥇 Как восстановить данные с LVM RAID 5, 0 или 1 в Linux (Ext4)
Заключение
Переход с одного типа RAID на другой осуществляется всего в несколько шагов. Сначала необходимо сконвертировать массив в средний тип, а потом еще раз в нужный вам тип. Как пример, чтобы переделать «первый» тип в «шестой», вам сначала потребуется преобразовать его в «пятый» уровень, а только после этого его можно будет превратить в «шестой» уровень.
Md126 здесь не является основным RAID-массивом, это md127, поэтому все, что я бы сделал, это повторно добавил этот новый диск в md127 с помощью команды:
mdadm --manage /dev/md127 --force --add /dev/sdb и Рейд начнет восстанавливаться
Размонтируйте все файловые системы, размещенные на томах LVM, командой umount, деактивируйте группу томов LVM vg0 командой:
vgchange -an vg0,
выключите массив RAID командой:
mdadm --stop /dev/md0,
удалить устройство RAID командой:
mdadm --удалить /dev/md0
и только потом обнулить суперблок на sda4 командой:
mdadm --zero-superblock /dev/sda4.
Ошибка, вероятно, является временной, потому что один диск перестраивается в соответствии с вашими выводами mdstat.
После завершения восстановления вы можете продолжить. Или вы просто удаляете диск nvme1 из ваших массивов, а затем перейти к raid0 и добавить диск.