Все, описані нижче дії, ви робите на свій страх і ризик. Ми не несемо відповідальності за втрату або пошкодження даних.
Маємо два жорсткі диски / dev / sda і / dev / sdb, однакового розміру. Диск / dev / sdb - новий, підключений до системи. Диск / dev / sda має слкдующіе розділи:
- / Dev / sda1 - розділ / boot, ext4
- / Dev / sda2 - swap
- / Dev / sda3 - розділ /, ext4
Завдання - отримати RAID1-масив такого вигляду:
- / Dev / md0 (що складається з / dev / sda1 і / dev / sdb1) - розділ / boot, ext4
- / Dev / md1 (що складається з / dev / sda2 і / dev / sdb2) - розділ підкачки
- / Dev / md2 (що складається з / dev / sda3 і / dev / sdb3) - розділ /, ext4
Установка утиліти mdadm
Для настройки і управління програмним RAID-му в Linux використовується утиліта mdadm. Встановимо її:
MD arrays needed for the root file system: all
Завантажимо необхідні модулі ядра:
Для того щоб упевнитися, що всі необхідні модулі та компоненти встановлені, виконаємо наступну команду:
Якщо Ви бачите щось подібне, значить все добре.
Обидва диска в масиві повинні мати абсолютно однакове розбиття. Залежно від використовуваного типу таблиці розділів (MBR або GPT) необхідно використовувати відповідні утиліти для копіювання таблиці розділів.
Жорсткий диск з таблицею розділів MBR
Для жорсткого диска з MBR використовуємо утиліту sfdisk:
де / dev / sda - диск джерело, / dev / sdb - диск призначення.
Переконався, що все вірно:
На наступному кроці змінимо тип трьох розділів жорсткого диска / dev / sdb на Linux raid autodetect:
Жорсткий диск з таблицею розділів GPT
Для жорсткого диска з GPT використовуємо утиліту sgdisk з GPT fdisk:
де / dev / sda - диск джерело, / dev / sdb - диск призначення. Другий рядок призначає нового жорсткого диска випадковий UUID.
Перевіримо, що розділи створені:
Змінимо тип трьох розділів жорсткого диска / dev / sdb на raid:
де цифри 1,2,3 - номери розділів, отриманих попередньою командою. В результаті отримуємо таку таблицю розділів:
Очищаємо суперблоці RAID на розділах / dev / sdb, в разі якщо цей диск вже використовувався в RAID-масивах:
Якщо жорсткий диск новий, буде видано наступне повідомлення:
В іншому випадку-ніяких повідомлень не буде.
Створимо три RAID-масиву: / dev / md0, / dev / md1, / dev / md2. Розділ / dev / sdb1 буде входити в / dev / md0, / dev / sdb2 в / dev / md1, / dev / sdb3 в / dev / md2. Розділи жорсткого диска / dev / sda, на даному етапі, в RAID-масиви включені бути не можуть, так як вони використовуються системою. Використовуємо опцію missing при створенні масивів:
На питання про створення масивів відповідаємо ствердно:
[_U] - означає, що масив рассінхронізірован, тому що відсутня перший розділ масиву (розділи диска / dev / sda). В робочому, синхронізований стані, квадратні лапки виглядають так - [UU].
Створимо файлові системи на щойно створених складових дисках / dev / md0 (/ boot), / dev / md1 (swap), / dev / md2 (/):
Запишемо інформацію про створених масивах в конфігураційний файл mdadm.conf. попередньо зробивши резервну копію:
Конфігураційний файл прийме наступний вигляд:
Підготовка системи для роботи з RAID-масивами
Подмонтіруем / dev / md0 і / dev / md2 в нашу систему (монтувати розділ подкачкі- / dev / md1, немає ніякого сенсу):
Підправимо файл / etc / mtab подібним чином:
Прийшла черга настройки завантажувача GRUB2:
Зверніть увагу на версію ядра в рядках linux і initrd. Якщо ваша версія ядра відрізняється - змініть їх. Перевірити версію ядра можна командою:
Рядок "set root = 'md / 0'" передає завантажувачу інформацію про те, що завантаження повинна здійснюватися з масиву / dev / md0 (розділ / boot). Тепер у завантажувача немає прив'язки до жодного з жорстких дисків, встановлених в системі. У разі виходу з ладу одного з них, система зможе завантажитися.
Так як ми змінили файл / etc / fstab на використання звичайних назв пристроїв замість їх UUID, повідомимо про це завантажувачу:
Прийшов час перенести систему з диска / dev / sda на складові пристрою / dev / mdx. Тобто вміст розділу / dev / sda1 на / dev / md0, а / dev / sda3 на / dev / md2. Нагадаю, що масиви / dev / md0 і / dev / md2 у нас подмонтіровать в / mnt / md0 і / mnt / md2 відповідно. Розділ підкачки переносити не будемо.
Налаштування завантажувача GRUB2 (частина 1)
Встановимо завантажувач на обидва жорстких диска:
Перевіряємо, що завантаження з / dev / md0 можлива:
Підготовка диска / dev / sda
Після завантаження системи перевіряємо чи все загрузилось і працює:
Якщо бачимо щось схоже - все нормально.
Жорсткий диск / dev / sda з MBR
Змінимо тип розділів диска / dev / sda на Linux raid autodetect.
Жорсткий диск / dev / sda з GPT
Змінимо прапор розділів на raid.
Додаємо розділи / dev / sda в RAID-масиви:
Перевіряємо, що масиви синхронізуються:
По закінченню процесу синхронізації побачимо наступне:
Залишилось зовсім небагато. Підправимо файл /etc/mdadm/mdadm.conf. відновивши його попередньо з резервної копії:
Його вміст стане приблизно таким:
Налаштування завантажувача GRUB2 (частина 2)
Видалимо файл /etc/grub.d/09_swraid1_setup.
І оновимо конфігурацію завантажувача:
Якщо подивитися на секцію ### BEGIN /etc/grub.d/10_linux ### файлу /boot/grub/grub.cfg. побачимо ті ж дані, що були в /etc/grub.d/09_swraid1_setup.
Оновимо завантажувач на обох жорстких дисках:
Ось власне і все. Заздалегідь плануйте правильну конфігурацію для свого сервера, щоб у вашій роботі не виникало подібної не безпечною і трудомісткої роботи.