Как преобразовать LV или MD RAID1 и 0 в RAID5 без потери данных

Массивы типа RAID0 выделяются довольно высокой скоростью доступа к информации, их используют исключительно из-за значительного прироста скорости операции чтениязаписи данных. Но их надежность и отказоустойчивость оставляют желать лучшего. Потому что, при поломке хотя бы одного носителя — вся хранящаяся информация станет недоступна. Восстанавливать ее крайне тяжелое занятие, да и данные, которые получится достать, гарантировано будут повреждены. Этот тип можно только с натяжкой считать массивом, так как напрочь отсутствует избыточность.
Тип RAID1 выделяется хорошей надежностью и отказоустойчивостью, потому что все данные дублируются, создается полное «зеркало» на втором носителе. Но скорость чтения/записи данных от этого страдает и не может похвастаться такой же скоростью работы как в «нулевом» типе.
Если у вас есть дополнительный накопитель, то можно «первый» тип можно расширить до «пятого» уровня. Это в свою очередь даст дополнительные бонусы надежности по сравнению с «нулевым» уровнем, а также позволит значительно увеличить скорость чтениязаписи информации по сравнению с «первым» типом. На выходе мы получим достаточно надежный, отказоустойчивый и быстрый RAID5 массив.
Как преобразовать 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 массив. Монтируем диск и проверяем, все файлы остались не тронутыми, а уровень массива изменился на пятый. Преобразовать 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. Если для создания RAID массива вы использовали функционал LVM и в этом случае можно преобразовать один тип в другой используя команду: lvconvert Выполним команду pvdisplay чтобы посмотреть информацию о группе дисков. Детальнее о том, как создать MD и LV RAID смотрите в одном из предыдущих видео. Итак, для начала конвертации нужно размонтировать логический том. Вводим команду: umount /dev/vg1/lv1 Для преобразования уровня RAID вводим следующую команду: lvconvert —type raid5 /dev/vg1/lv1 Теперь осталось добавить третий накопитель к существующей группе дисков, командой: vgextend vg1 /dev/sdd1 При ее выполнении программа предупредит что диск уже имеет разметку, вводим yes для подтверждения и жмем enter. Чтобы посмотреть добавился ли диск в группу выполним команду: pvdisplay Как видите в группе задействовано 3 диска. Снова монтируем наш диск и открываем его в менеджере файлов, как видите все данные остались на своем месте. Для конвертации RAID0 в RAID5 используется та же команда. Единственный момент перед выполнением конвертирования нужно добавить в группу третий диск, иначе система сообщит что ей недостаточно места для выполнения данной команды. Добавляем третий диск: vgextend vg1 /dev/sdd1 И для преобразования уровня RAID вводим следующую команду: lvconvert —type raid5 /dev/vg1/lv1 Смонтируем наш массив и посмотрим, что на нем осталось. Как видите все файлы на месте. Если в процессе преобразования из одного уровня RAID в другой произошел сбой или вы случайно затерли информацию, воспользуйтесь программой для восстановления данных — Hetman RAID Recovery. Утилита вычитывает из системы всю информацию о контроллере, материнской плате или программном обеспечении, на котором был создан массив дисков. Она воссоздаст разрушенный RAID и позволит скопировать из него утерянную информацию. Детальнее о восстановлении MD LV RAID можете посмотреть в одном из предыдущих видео, ссылку я оставлю в описании. Полную версию статьи со всеми дополнительными видео уроками смотрите в источнике. А также зайдите на наш Youtube канал, там собраны более 400 обучающих видео.














Как изменить RAID 0 (чередование) на RAID5 (parity)


Как конвертировать LVRAID1 в LVRAID5




Как конвертировать LVRAID0 в LVRAID5


Как восстановить данные с поврежденных RAID массивов


