Лабораторна робота: налаштовуємо lvm, raid на linux
Невеликий відступ: дана ЛР є синтетичною.
Деякі завдання які тут описані можна зробити набагато простіше, але оскільки завдання л/р - познайомитися
з функціоналом raid, lvm деякі операції штучно ускладнені.
Вимоги до інструментів для виконання лр:
Засоби віртуалізації, наприклад, Virtualbox
Інсталяційний образ linux, наприклад Debian9
Наявність інтернету для скачування кількох пакетів
Підключення по ssh до встановленої VM (опціонально)
УВАГА
Ця лабораторна робота пов'язана з такою тонкою матерією як збереження даних - це така область,
яка дозволяє через найменшу помилку — одну зайву літеру або цифру втратити всі ваші дані.
Оскільки ви виконуєте лабораторну роботу, вам нічого не загрожує, хіба що доведеться почати робити її заново.
У реальному житті все набагато серйозніше, тому слід дуже уважно вводити імена дисків, розуміючи
що саме ви виконуєте поточною командою та з якими дисками працюєте.
Другий важливий момент — іменування дисків та розділів: залежно від ситуації, номери дисків можуть відрізнятися.
від тих значень, що представлені у командах у лабораторній роботі.
Так, наприклад, якщо видалити диск sda з масиву, а потім додати новий диск, новий диск буде відображатися
у системі з ім'ям sda. Якщо ж виконати перезавантаження перед додаванням нового диска, новий
диск матиме ім'я sdb, а старий буде іменуватися sda
Лабораторна робота повинна виконуватися під суперкористувачем (root) оскільки більшість команд вимагає
підвищених привілеїв і не має сенсу постійно підвищувати привілеї через sudo
Матеріали для вивчення
RAID
НВМ
Найменування дисків в ОС Linux
Що таке розділ
Що таке таблиця розділів та де вона зберігається
Що таке grub
Використовувані утиліти
1) перегляд інформації про диски
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
fdisk -l
2) перегляд інформації та робота з LVM
pvs
pvextend
pvccreate
pvresize
тощо
vgreduce
лв
lvextend
3) перегляд інформації та робота з RAID
сat /proc/mdstat
мадам
4) точки монтування
монтувати
umount
cat /etc/fstab
cat /etc/mtab
5) перерозмітка диска
fdisk /dev/XXX
6) копіювання розділів
dd if=/dev/xxx of=/dev/yyy
7) робота з таблицею розділів
partx
sfdisk
mkfs.ext4
8) робота із завантажувачем
grub-install /dev/XXX
оновлення-grub
9) misc
також
схильний
rsync
Лабораторна робота складається з 3-х частин:
налаштування працездатної системи з використанням lvm, raid
емуляція відмови одного з дисків
заміна дисків на льоту, з додаванням нових дисків та перенесенням розділів.
Завдання 1 (Встановлення ОС та налаштування LVM, RAID)
1) Створіть нову віртуальну машину, видавши їй такі характеристики:
1 Гб оперативної пам'яті
1 процесорів
2 hdd (назвати їх ssd1, ssd2 і призначити рівний розмір, поставити галочки hot swap та ssd)
SATA контролер налаштований на 4 порти
2) Почати встановлення Linux і дійшовши до вибору жорстких дисків зробити таке:
Partitioning method: manual, після чого ви повинні побачити таку картину:
Налаштування окремого розділу під /boot: Виберіть перший диск та створіть на ньому нову таблицю розділів
Partition size: 512M
Mount point: /boot
Повторіть налаштування для другого диска, але оскільки одночасно монтувати 2 рази /boot не можна, то виберіть mount point: none у результаті отримавши наступне (картинка з косяком, переробляти ліньки):
Налаштування RAID:
Виберіть вільне місце на першому диску і налаштуйте тип розділу physical volume for RAID
Виберіть "Done setting up the partition"
Повторіть таке ж налаштування для другого диска, в результаті отримавши таке:
Active devices for the RAID XXXX array: Вибрати обидва диски
Spare devices: Залишити 0 за замовчуванням
Active devices for the RAID XX array: вибрати розділи, які ви створювали під raid
обробка
У результаті ви маєте отримати таку картину:
Налаштування LVM: Виберіть Configure the Logical Volume Manager
Keep current partition layout and configure LVM: Yes
Створити групу томів
Volume group name: system
Devices for the new volume group: Виберіть створений RAID
Створіть логічний обсяг
logical volume name: root
logical volume size: 25 від розміру диска
Створіть логічний обсяг
logical volume name: var
logical volume size: 25 від розміру диска
Створіть логічний обсяг
logical volume name: log
logical volume size: 15 від розміру диска
Вибравши Display configuration details, ви повинні отримати наступну картину:
Завершивши налаштування LVM, ви повинні побачити наступне:
Розмітка розділів: по черзі виберіть кожен створений у LVM тому і розмітте їх, наприклад, для root так:
Use as: ext4
mount point: /
результат розмітки кореневого розділу має вийти таким:
повторіть операцію розмітки для var та log вибравши відповідні точки монтування (/var та /var/log вручну ввести), отримавши наступний результат:
Виберіть Finish Partitioning
Вам поставлять кілька запитань, про те, що у вас залишився незмонтований розділ і не налаштований swap. Слід відповісти негативно на обидва питання.
Фінальний результат повинен вийти таким:
3) Закінчити установку ОС, поставивши grub на перший пристрій (sda) та завантажити систему.
4) Виконайте копіювання вмісту розділу /boot з диска sda (ssd1) на диск sdb (ssd2)
Перерахуйте всі диски, які вам видала попередня команда і опишіть, що це за диск
Знайдіть диск на який не було виконано встановлення grub і виконайте цю установку: grub-install /dev/sdb
Перегляньте інформацію про поточний raid командою cat /proc/mdstat та запишіть, що ви побачили.
подивіться висновки команд: pvs, vgs, lvs, mount та запишіть що саме ви побачили
Опишіть своїми словами, що ви зробили і який результат отримали в результаті виконаного завдання
Після виконання цього завдання рекомендується зберегти резервну копію папки з віртуальною машиною або зробити
vagrant box: https://t.me/bykvaadm/191
Результат: Віртуальна машина з дисками ssd1, ssd2
Завдання 2 (Емуляція відмови одного з дисків)
1) Якщо ви поставили галочку hot swap, то вам доступне видалення дисків на льоту
Виконайте видалення диска ssd1 у властивостях машини
Знайдіть каталог, де зберігаються файли вашої віртуальної машини і видаліть ssd1.vmdk
2) Переконайтеся, що ваша віртуальна машина, як і раніше, працює
3) Виконайте перезавантаження віртуальної машини і переконайтеся, що вона, як і раніше, працює
4) перевірте статус RAID-масиву: cat/proc/mdstat
5) додайте в інтерфейсі VM новий диск такого ж розміру та назвіть його ssd3
6) виконайте операції:
подивіться що новий диск приїхав у систему командою fdisk -l
скопіюйте таблицю розділів зі старого диска на новий: sfdisk -d /dev/XXXX | sfdisk /dev/YYY
подивіться результат командою fdisk -l
Додайте до рейду масив новий диск: mdadm -manage /dev/md0 -add /dev/YYY
Перегляньте результат: cat /proc/mdstat. Ви повинні побачити, що почалася синхронізація
7) Тепер потрібно вручну виконайте синхронізацію розділів, які не входять до RAID.
Для цього скористаємось утилітою dd, скопіювавши з «живого» диска на новенький, який ви нещодавно поставили
dd if=/dev/XXX of=/dev/YYY
8) Після завершення синхронізації встановіть grub на новий диск
9) Виконайте перезавантаження ВМ, щоб переконатися, що все працює
Опишіть своїми словами, що ви зробили і який результат отримали в результаті виконаного завдання
Результат: Видалено диск ssd1, збережено диск ssd2, додано диск ssd3.
Завдання 3 (Додавання нових дисків та перенесення розділу)
Це найскладніше і найоб'ємніше завдання з усіх представлених.
Дуже уважно перевіряйте, що ви робите і з якими дисками та розділами.
Рекомендується зняти копію перед виконанням.
Це завдання незалежно від завдання №2, його можна виконувати після завдання №1 із поправкою на імена дисків.
Друга частина завдання цієї лабораторної повинна привести в такий самий стан, який був після виконання першої частини.
Для того щоб вам було простіше працювати можу рекомендувати не видаляти фізично диски з хостової машини, а тільки
від'єднувати їх у властивостях машини. З погляду ОС у ВМ це виглядатиме абсолютно однаково, але ви зможете
Якщо підключити диск назад і продовжити виконання роботи відкотившись на пару пунктів назад, якщо
у вас виникли проблеми. Наприклад, ви можете виконати неправильно або забути скопіювати на новий диск розділ /boot.
Я можу лише порадити кілька разів перевіряти ще раз з якими дисками і розділами ви працюєте, а ще краще
виписати на листочок відповідність дисків, розділів та «фізичному» номеру диска. Красиве та зрозуміле дерево
малює команда lsblk, користуйтеся їй якнайчастіше для аналізу того що ви зробили і що потрібно зробити.
До історії…
Уявіть собі, що ваш сервер працював довгий час на 2-х ssd дисках, як раптом…
1) Проемулюйте відмову диска ssd2, видаливши з властивостей ВМ диск та перезавантажившись
2) Подивіться поточний стан дисків та RAID:
5) Насамперед слід потурбуватися про збереження даних старого диска.
На цей раз ми будемо переносити дані за допомогою LVM:
насамперед необхідно скопіювати файлову таблицю зі старого диска на новий:
sfdisk -d /dev/XXX | sfdisk /dev/YYY
Підставте замість x,y правильні диски і розберіть, що робить дана команда.
Виконайте команду lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT та порівняйте її виведення з минулим викликом.
Що змінилося?
за допомогою команди dd скопіюйте дані /boot на новий диск
dd if=/dev/XXX of=/dev/YYY
якщо /boot залишився змонтований на старому диску, його слід перемонтувати на диск:
mount | grep boot # смотрим куда смонтирован диск
lsblk # смотрим какие диски есть в системе и смотрим есть ли диск, полученный из предыдущего пункта
umount /boot # отмонтируем /boot
mount -a # выполним монтирование всех точек согласно /etc/fstab.
# Поскольку там указана точка монтирования /dev/sda, то будет выполнено корректное перемонтирование на живой диск
Встановіть завантажувач на новий диск ssd
grub-install /dev/YYY
Навіщо ми виконуємо цю операцію?
створіть новий рейд-масив із включенням туди лише одного нового ssd диска:
Наведена вище команда не відпрацює без вказівки спеціального ключа.
Прочитайте довідку та додайте цей ключ до команди.
За допомогою команди cat/proc/mdstat перевірте результат вашої операції. Що змінилося?
Виконайте команду lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT та порівняйте її виведення з минулим викликом.
Що змінилося?
6) Наступним етапом необхідно налаштувати LVM
виконайте команду pvs для перегляду інформації про поточні фізичні томи
створіть новий фізичний том, включивши в нього раніше створений RAID масив:
pvcreate /dev/md63
Виконайте команду lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT та порівняйте її виведення з минулим викликом.
Що змінилося?
Знову виконайте команду pvs. Що змінилося?
Збільшимо розмір Volume Group system за допомогою такої команди:
vgextend system /dev/md63
Виконайте команди і запишіть, що ви побачили і що змінилося.
vgdisplay system -v
pvs
vgs
lvs -a -o+devices
На якому фізичному диску зараз є LV var, log, root?
Виконайте переміщення даних зі старого диска на новий, підставивши правильні імена пристроїв.
Виконайте команди і запишіть, що ви побачили і що змінилося.
vgdisplay system -v
pvs
vgs
lvs -a -o+devices
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
Змінимо наш VG, вилучивши з нього диск старого raid. Підставте правильне ім'я raid.
vgreduce system /dev/md0
Виконайте команди і запишіть, що ви побачили і що змінилося.
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
pvs
vgs
Для краси картини перемонтуйте /boot на другий диск ssd (ssd4) і виконайте lsblk. У результаті на диску ssd3 немає
має бути нічого змонтовано. Уважно перевірте, що розділ /boot не порожній! ls /boot повинен показати
кілька файлів та папок. Вивчіть, що зберігається в цьому розділі і запишіть який файл каталог за що відповідає.
7) видаліть ssd3 диск і додайте ssd5, hdd1, hdd2 згідно з вищеописаними ТЗ, в результаті отримавши:
ssd4 - перший новий ssd
ssd5 - другий новий ssd
hdd1 - перший новий hdd
hdd2 - другий новий hdd
виконайте копіювання таблиці розділів, підставивши правильні диски:
sfdisk -d /dev/XXX | sfdisk /dev/YYY
Зверніть увагу, що коли ми скопіювали таблицю розділів зі старого диска, здавалося, що новий розмір
не використовує весь об'єм жорсткого диска.
Тому незабаром нам потрібно буде змінити розмір цього розділу і розширити raid.
Переконайтеся у цьому самі, ввівши команду:
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
10) скопіюйте завантажувальний розділ /boot з диска ssd4 до ssd5
dd if=/dev/XXX of=/dev/YYY
11) Встановіть grub на новий диск (ssd5)
12) змінимо розмір другого розділу диска ssd5
запустіть утиліту для роботи з розміткою дисків:
fdisk /dev/XXX
введіть ключ d, щоб видалити існуючий розділ (виберіть 2)
введіть ключ n, щоб створити новий розділ
введіть ключ p, щоб вказати тип розділу «первинний»
введіть ключ 2, щоб новий розділ мав другий номер
First sector: натисніть enter, щоб погодитися з атоматично вичісленим розміром початку розділу
Last sector: натисніть enter, щоб погодитись з атоматично вичісленим розміром кінця розділу
введіть ключ l для того щоб побачити список всіх можливих типів розділів і знайдіть у ньому Linux raid auto
введіть ключ t, щоб змінити тип створеного розділу (2) і введіть знайдений на попередньому кроці номер.
введіть ключ w, щоб записати зміну на диск.
12) перечитаємо таблицю розділів та перевіримо результат
додамо новий диск до поточного raid масиву (не забудьте підставити правильні диски)
mdadm --manage /dev/md63 --add /dev/sda2
Розширимо кількість дисків у нашому масиві до 2-х штук:
mdadm --grow /dev/md63 --raid-devices=2
Подивіться результат: у нас розмічено 2 масиви, але обидва розділи, що входять до цього масиву, мають різні розміри
lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT
13) збільшимо розмір розділу на диску ssd4
запустіть утиліту для роботи з розміткою дисків:
fdisk /dev/XXX
введіть ключ d, щоб видалити існуючий розділ (виберіть 2)
введіть ключ n, щоб створити новий розділ
введіть ключ p, щоб вказати тип розділу «первинний»
введіть ключ 2, щоб новий розділ мав другий номер
First sector: натисніть enter, щоб погодитися з атоматично вичісленим розміром початку розділу
Last sector: натисніть enter, щоб погодитись з атоматично вичісленим розміром кінця розділу
Наприкінці розмітки слід вибрати No, щоб залишити сигнатуру приналежності до масиву.
введіть ключ w, щоб записати зміну на диск.
12) перечитаємо таблицю розділів та перевіримо результат
створимо логічний том розміром всього вільного простору та назвемо його val_log
lvcreate -l 100%FREE -n var_log data # lvs # посмотрим результат
відформатуємо створені розділ у ext4
mkfs.ext4 /dev/mapper/data-var_log
подивимося результат
lsblk
17) перенесемо дані логів зі старого розділу на новий
примонтуємо тимчасове нове сховище логів
mount /dev/mapper/data-var_log /mnt
виконаємо синхронізацію розділів
apt install rsync
rsync -avzr /var/log/ /mnt/
з'ясуємо які процеси працюють зараз із /var/log
apt install lsof
lsof | grep '/var/log'
зупиняємо ці процеси
systemctl stop rsyslog.service syslog.socket
виконаємо фінальну синхронізацію розділів (тих даних, що могли змінитися з моменту останньої синхронізації)
rsync -avzr /var/log/ /mnt/
поміняємо місцями розділи
umount /mnt
umount /var/log
mount /dev/mapper/data-var_log /var/log
перевіряємо що вийшло
lsblk
18) Правимо /etc/fstab
fstab - файл, в якому записуються правила, за якими при завантаженні будуть змонтовані
наше завдання - знайти той рядок, в якому монтується /var/log і поправити пристрій system-log на data-var_log
19) Найважливіше цьому етапі — не забути змінити таблицю раделов (ext4, наприклад). Оскільки як би ми не змінювали всякі raid, lvm - поки ФС на розділі не буде повідомлено про те, що тепер розмір розділу змінився, ми не зможемо використовувати новий простір. Використовуйте команду resize2fs зміни ФС.
20) Фінальний акорд
виконаємо перезавантаження. Якщо ви все зробили правильно - ви знову потрапите у вашу ОС (це потрібно для того, щоб переконатися, що все працює. Жодного сенсу крім самоперевірки цей крок не несе)
виконайте перевірки, що все, що ми хотіли зробити дійсно було зроблено:
pvs
lvs
vgs
lsblk
cat /proc/mdstat
21) [ОПЦІОНАЛЬНО] Виконайте дії
перезавантажтеся натискаючи F12, щоб вказати при завантаженні різні диски, щоб переконатися що ви можете завантажитися
з будь-якого з ssd дисків, так щоб ми не боялися відмови одного з них
тепер у вас є непотрібний LV log у VG system. Розподіліть цей простір між root або var, але замість використання
конструкції 100%FREE вкажіть розмір руками за допомогою ключа -L:
-L 500M
виправте проблему з тим, що /boot знаходиться на двох розділах без синхронізації, по-правильному так робити не потрібно,
тут це додано для прикладу. Не забудьте заздалегідь кудись скопіювати вміст /boot.
створіть новий рейд і увімкніть до нього sda1,sda2
увімкніть ці розділи в існуючий raid і відновіть /boot в основному raid, але не монтуючи його.