Налаштування програмного raid1 на працюючій системі linux debian (використовуючи завантажувач grub2)

Все, описані нижче дії, ви робите на свій страх і ризик. Ми не несемо відповідальності за втрату або пошкодження даних.

Маємо два жорсткі диски / 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.

Оновимо завантажувач на обох жорстких дисках:

Ось власне і все. Заздалегідь плануйте правильну конфігурацію для свого сервера, щоб у вашій роботі не виникало подібної не безпечною і трудомісткої роботи.

Читайте також