Як конвертувати LV або MD RAID1 і 0 у RAID5 без втрати даних
У цій статті я розповім, як перейти з RAID 0 або 1 на RAID 5. Як в ОС Linux на mdadm або LVM перетворити програмний RAID1 (0) в RAID5 зі збереженням всієї інформації, що зберігається на вашому масиві.
- Як конвертувати RAID1 в RAID5 (parity)
- Як змінити RAID 0 (чергування) на RAID5 (parity)
- Як конвертувати LV RAID1 у LV RAID5
- Як конвертувати LVRAID0 у LVRAID5
- Як відновити дані з пошкоджених RAID масивів
- Підсумок
- Питання та відповіді
- Коментарі
Масиви типу RAID0 виділяються досить високою швидкістю доступу до інформації, їх використовують виключно для збільшення швидкості операцій читання\запису даних. Але їх надійність залишає бажати кращого. При поломці хоча б одного носія — вся інформація стане недоступною. Відновити її вкрай важко, та й дані, які вийде дістати, гарантовано будуть пошкоджені.
Тип RAID1 виділяється хорошою надійністю та стійкістю до поломки, тому що всі дані дублюються, створюється повна «копія» на другому носії. Але швидкість читання/запису даних від цього страждає і не може похвалитися такою ж швидкістю роботи, як в «нульовому» типі.
Якщо у вас є додатковий накопичувач, то можливо «перший» тип розширити до «п’ятого» рівня. Це своєю чергою надає додаткові бонуси надійності в порівнянні з «нульовим» рівнем, а також дозволить значно збільшити швидкість читання\запису інформації в порівнянні з «першим» типом. На виході ми отримаємо досить надійний, відмовостійкий та швидкий RAID5 масив.
Параметр | RAID 0 | RAID 1 | RAID 5 |
---|---|---|---|
Структура | Стріпінг (striping) | Дзеркалювання (mirroring) | Стріпінг з паритетом |
Кількість дисків | Мінімум 2 | Мінімум 2 | Мінімум 3 |
Продуктивність | Висока (швидкість читання/запису) | Середня (читання швидше, ніж запис) | Висока (швидкість читання, повільніший запис) |
Витрати місця | 100% (все місце використовується) | 50% (диск на диск) | (n-1)/n (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.
Як конвертувати LV RAID1 у LV RAID5
Якщо для створення RAID масиву ви використовували функціонал LVM то в цьому випадку можна перетворити один тип в інший використовуючи команду:
lvconvert
Виконаємо команду
pvdisplay
Щоб переглянути інформацію про групу дисків.
Отже, для початку конвертації потрібно демонтувати логічний том. Вводимо команду:
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 можете переглянути в одному з наших відео.
Підсумок
Перехід з одного типу 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.