Лабораторна робота: налаштовуємо 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 порти

Лабораторна робота: налаштовуємо lvm, raid на linux

2) Почати встановлення Linux і дійшовши до вибору жорстких дисків зробити таке:

  • Partitioning method: manual, після чого ви повинні побачити таку картину:
    Лабораторна робота: налаштовуємо lvm, raid на linux

  • Налаштування окремого розділу під /boot: Виберіть перший диск та створіть на ньому нову таблицю розділів

    • Partition size: 512M
    • Mount point: /boot
    • Повторіть налаштування для другого диска, але оскільки одночасно монтувати 2 рази /boot не можна, то виберіть mount point: none у результаті отримавши наступне (картинка з косяком, переробляти ліньки):
      Лабораторна робота: налаштовуємо lvm, raid на linux

  • Налаштування RAID:

    • Виберіть вільне місце на першому диску і налаштуйте тип розділу physical volume for RAID
    • Виберіть "Done setting up the partition"
    • Повторіть таке ж налаштування для другого диска, в результаті отримавши таке:
      Лабораторна робота: налаштовуємо lvm, raid на linux
    • Виберіть "Configure software RAID"
    • Створити пристрій MD
    • Software RAID device type: Виберіть дзеркальний масив
    • Active devices for the RAID XXXX array: Вибрати обидва диски
    • Spare devices: Залишити 0 за замовчуванням
    • Active devices for the RAID XX array: вибрати розділи, які ви створювали під raid
    • обробка
    • У результаті ви маєте отримати таку картину:
      Лабораторна робота: налаштовуємо lvm, raid на linux

  • Налаштування 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, raid на linux
    • Завершивши налаштування LVM, ви повинні побачити наступне:
      Лабораторна робота: налаштовуємо lvm, raid на linux

  • Розмітка розділів: по черзі виберіть кожен створений у LVM тому і розмітте їх, наприклад, для root так:

    • Use as: ext4
    • mount point: /
    • результат розмітки кореневого розділу має вийти таким:
      Лабораторна робота: налаштовуємо lvm, raid на linux
    • повторіть операцію розмітки для var та log вибравши відповідні точки монтування (/var та /var/log вручну ввести), отримавши наступний результат:
      Лабораторна робота: налаштовуємо lvm, raid на linux
    • Виберіть Finish Partitioning
    • Вам поставлять кілька запитань, про те, що у вас залишився незмонтований розділ і не налаштований swap. Слід відповісти негативно на обидва питання.

  • Фінальний результат повинен вийти таким:
    Лабораторна робота: налаштовуємо lvm, raid на linux
    3) Закінчити установку ОС, поставивши grub на перший пристрій (sda) та завантажити систему.
    4) Виконайте копіювання вмісту розділу /boot з диска sda (ssd1) на диск sdb (ssd2)

    dd if=/dev/sda1 of=/dev/sdb1

    5) Виконати встановлення grub на другий пристрій:

  • подивитися диски в системі:

    fdisk -l
    lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

  • Перерахуйте всі диски, які вам видала попередня команда і опишіть, що це за диск

  • Знайдіть диск на який не було виконано встановлення 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:

    cat /proc/mdstat
    fdisk -l
    lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

    3) Вам пощастило – начальство дозволило закупити кілька нових дисків:

    2 SATA великого об'єму для завдання, що давно назріло, винесення розділу з логами на окремий диск

    2 SSD на заміну загиблому, а також на заміну поки що функціонує.

    Слід враховувати, що кошик сервера підтримує встановлення лише 4-х дисків одночасно,
    тому додати всі диски не можна.

    Об'єм HDD вибрати в 2 рази більше, ніж SSD.
    Об'єм SSD вибрати в 1,25 рази більше за колишні SSD.

    4) Додайте один новий ssd диск, назвавши його ssd4, а після додавання перевірте, що сталося:

    fdisk -l
    lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

    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 диска:

      mdadm --create --verbose /dev/md63 --level=1 --raid-devices=1 /dev/YYY

      Наведена вище команда не відпрацює без вказівки спеціального ключа.
      Прочитайте довідку та додайте цей ключ до команди.

      За допомогою команди 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?

      Виконайте переміщення даних зі старого диска на новий, підставивши правильні імена пристроїв.

      pvmove -i 10 -n /dev/system/root /dev/md0 /dev/md63 

      Повторіть операцію для всіх logical volume

      Виконайте команди і запишіть, що ви побачили і що змінилося.

      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

      8) Перевірте, що сталося після додавання дисків:

      fdisk -l
      lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

      9) Відновимо роботу основного raid масиву:

      • виконайте копіювання таблиці розділів, підставивши правильні диски:
        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) перечитаємо таблицю розділів та перевіримо результат

        partx -u /dev/XXX
        lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

        додамо новий диск до поточного 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) перечитаємо таблицю розділів та перевіримо результат

        partx -u /dev/XXX
        lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT

        Зверніть увагу, тепер sda2, sdc2 розділи мають розмір > ніж розмір raid-пристрою.

        13) на цьому етапі розмір raid можна тепер розширити

        mdadm --grow /dev/md63 --size=max
        lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT # check result

        Перегляньте lsblk та запишіть, що змінилося
        14) Проте, хоч ми змінили розмір raid, самі розміри vg root,var,log не змінилися

        • подивіться чому дорівнює розмір PV:
          pvs
        • розширимо розмір нашого PV:
          pvresize /dev/md63
        • подивіться чому дорівнює розмір PV:
          pvs

          15) Додамо знову місце VG var,root

          lvs # посмотрим сколько сейчас размечено
          lvextend -l +50%FREE /dev/system/root
          lvextend -l +100%FREE /dev/system/var
          lvs # проверьте что получилось

          На цьому етапі завершили міграцію основного масиву на нові диски. робота з ssd1,ssd2 закінчена

          16) Наше наступне завдання – перемістити /var/log на нові диски, для цього створимо новий масив та lvm на hdd дисках.

          • подивимося які імена мають нові hdd диски
            fdisk -l
          • створимо raid масив
            mdadm --create /dev/md127 --level=1 --raid-devices=2 /dev/sdc /dev/sdd
          • створимо новий PV на рейді з великих дисків
            pvcreate data /dev/md127
          • створимо у цьому PV групу з назвою data
            vgcreate data /dev/md127
          • створимо логічний том розміром всього вільного простору та назвемо його 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, але не монтуючи його.

Джерело: habr.com

Додати коментар або відгук