Как преобразовать 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 массив.
Монтируем диск и проверяем, все файлы остались не тронутыми, а уровень массива изменился на пятый.
Как изменить 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 смотрите в одном из предыдущих видео.
Итак, для начала конвертации нужно размонтировать логический том. Вводим команду:
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 можете посмотреть в одном из предыдущих видео, ссылку я оставлю в описании.
Полную версию статьи со всеми дополнительными видео уроками смотрите в источнике. А также зайдите на наш Youtube канал, там собраны более 400 обучающих видео.