bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward

Як налаштувати сховище для віртуальних машин?

calendar_month October 09, 2025 schedule 8 хв. читання visibility 569 переглядів
person
Valebyte Team
Як налаштувати сховище для віртуальних машин?
summarize

TL;DR

  • iSCSI передает SCSI-команды по TCP/IP, позволяя использовать удаленные диски как локальные через Ethernet.
  • Для высокой производительности хранилища iSCSI рекомендуется использовать сеть 10 Gigabit Ethernet.
  • Использование LVM поверх iSCSI упрощает масштабирование дисков и управление разделами виртуальных машин.
  • Конфигурация включает iSCSI Target на сервере хранения и iSCSI Initiator на хосте (KVM или VMware ESXi).

Як налаштувати сховище для віртуальних машин: iSCSI та LVM

У світі віртуалізації, правильне налаштування сховища критично важливе для продуктивності та стабільності віртуальних машин. Неправильно сконфігуроване сховище може призвести до вузьких місць, зниження продуктивності і, зрештою, до проблем з вашими віртуальними машинами. У цій статті ми зосередимося на використанні iSCSI та LVM (Logical Volume Manager) для створення надійного та гнучкого сховища для віртуальних машин, що працюють, наприклад, на KVM або VMware ESXi. Ми розглянемо покрокове налаштування, а також наведемо конкретні приклади та конфігураційні файли.

Зміст

Що таке iSCSI і навіщо він потрібен для віртуальних машин?

Як налаштувати сховище для віртуальних машин? - Diagram illustrating the iSCSI communication process between initiator and target
iSCSI (Internet Small Computer System Interface) - це протокол, який дозволяє передавати SCSI команди по мережі TCP/IP. По суті, він дозволяє нам використовувати Ethernet мережу для підключення до сховища, як якщо б це був локальний SCSI диск. Для віртуальних машин iSCSI надає декілька переваг:

  • Централізоване сховище: Віртуальні машини можуть отримувати доступ до сховища, розташованого на окремому сервері або масиві зберігання, що спрощує управління та резервне копіювання.
  • Економічність: iSCSI може бути реалізований з використанням стандартного мережевого обладнання, що знижує витрати в порівнянні з Fibre Channel.
  • Гнучкість: Легко додавати або розширювати сховище для віртуальних машин по мірі необхідності.
  • Продуктивність: При правильному налаштуванні та використанні швидких мережевих з'єднань (наприклад, 10 Gigabit Ethernet), iSCSI може забезпечити високу продуктивність для віртуальних машин.
Розглянемо приклад: у вас є декілька серверів, на яких запущені віртуальні машини. Замість того, щоб на кожному сервері встановлювати локальні диски, ви можете використовувати iSCSI, щоб всі віртуальні машини отримували доступ до одного спільного сховища. Це спрощує резервне копіювання (backup), міграцію віртуальних машин (migration) та загальне управління сховищем.

Приклад 1: Переваги централізованого сховища

Уявіть, що у вас три фізичні сервери (host1, host2, host3), кожен з яких управляє декількома віртуальними машинами. Без iSCSI кожен сервер потребуватиме локального сховища. Якщо віртуальній машині на host1 потрібно більше місця, вам доведеться фізично додавати диски на host1. З iSCSI всі три сервери можуть використовувати спільне сховище iSCSI Target. Якщо потрібно розширити сховище, ви збільшите його тільки на iSCSI Target, а зміни будуть автоматично доступні для всіх серверів.

Приклад 2: Спільна файлова система та iSCSI

iSCSI часто використовується в зв'язці з кластерними файловими системами, такими як GFS2 або OCFS2. iSCSI надає блоковий пристрій (block device), який потім монтується як спільна файлова система. Це дозволяє декільком віртуальним машинам одночасно отримувати доступ до одних і тих же файлів, що необхідно для кластерних додатків. Експертна порада: При використанні iSCSI для віртуальних машин, переконайтеся, що ваша мережа правильно налаштована для Jumbo Frames (MTU 9000). Це може значно збільшити продуктивність за рахунок зменшення навантаження на процесор при обробці мережевих пакетів. У наступному розділі ми розглянемо, як налаштувати iSCSI Target на сервері.

Потрібен надійний хостинг для ваших віртуальних машин?

Оптимізуйте продуктивність та зберігання даних. Виберіть ідеальний VPS-план для ваших потреб. — від €4.49 в місяць.

Вибрати VPS-план →
rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Налаштування iSCSI Target на сервері

Як налаштувати сховище для віртуальних машин? - Screenshot of the iSCSI target configuration file
Налаштування iSCSI Target включає в себе установку і налаштування програмного забезпечення iSCSI Target на сервері, який буде надавати сховище. В цьому прикладі ми будемо використовувати `targetcli` в Linux.

Крок 1: Встановлення необхідних пакетів

Спочатку нам потрібно встановити необхідні пакети. В залежності від дистрибутива Linux, команда може трохи відрізнятися. Наприклад, в Debian/Ubuntu:
sudo apt update
sudo apt install targetcli
В CentOS/RHEL:
sudo yum install targetcli

Крок 2: Створення блокового пристрою (LVM або файл)

iSCSI Target надає блоковий пристрій. Це може бути LVM том, фізичний диск або звичайний файл. В цьому прикладі ми створимо LVM том:
sudo vgcreate iscsivg /dev/sdb  # /dev/sdb - фізичний диск
sudo lvcreate -L 50G -n iscsilv iscsivg  # Створюємо логічний том розміром 50ГБ
Замість LVM можна використовувати файл, але це не рекомендується для виробничих середовищ через продуктивність:
sudo dd if=/dev/zero of=/iscsi/iscsi_disk.img bs=1M count=51200 # Створюємо файл 50ГБ

Крок 3: Налаштування iSCSI Target за допомогою `targetcli`

Запускаємо `targetcli`:
sudo targetcli
Всередині `targetcli` створюємо iSCSI target:
/backstores/block create iscsi_disk /dev/iscsivg/iscsilv  # Для LVM
# або
/backstores/fileio create iscsi_disk /iscsi/iscsi_disk.img  # Для файла

/iscsi create iqn.2024-01.example.com:storage.vmdisk1
/iscsi/iqn.2024-01.example.com:storage.vmdisk1/tpg1/luns create 0 /backstores/block/iscsi_disk
/iscsi/iqn.2024-01.example.com:storage.vmdisk1/tpg1/acls create iqn.2024-01.example.com:initiator.host1  # Дозволяємо доступ з initiator
/iscsi/iqn.2024-01.example.com:storage.vmdisk1/tpg1/portals create 10.0.0.1 # IP адрес iSCSI Target
Важливо: Замініть `iqn.2024-01.example.com:storage.vmdisk1` і `iqn.2024-01.example.com:initiator.host1` на ваші власні iqn (iSCSI Qualified Name). Також замініть `10.0.0.1` на IP адрес вашого iSCSI Target сервера. Після налаштування зберігаємо конфігурацію та виходимо з `targetcli`:
saveconfig
exit
Приклад конфігураційного файлу `/etc/target/saveconfig.json`:
{
  "version": 1,
  "configuration": {
    "iscsi": {
      "iqn.2024-01.example.com:storage.vmdisk1": {
        "tpg1": {
          "luns": {
            "0": {
              "lun": 0,
              "target_portal_group_tag": 1,
              "mapped_lun": 0,
              "backstore": "/backstores/block/iscsi_disk",
              "write_cache": false
            }
          },
          "acls": {
            "iqn.2024-01.example.com:initiator.host1": {
              "authentication": {},
              "mapped_luns": [
                0
              ]
            }
          },
          "portals": {
            "10.0.0.1": {
              "port": 3260
            }
          },
          "authentication": {}
        }
      }
    },
    "backstores": {
      "block": {
        "iscsi_disk": {
          "dev_name": "/dev/iscsivg/iscsilv",
          "write_cache": false
        }
      }
    }
  }
}
Цей файл містить конфігурацію iSCSI target, включаючи iqn, логічні пристрої (LUNs), ACLs (Access Control Lists) і портали.

Крок 4: Запуск та увімкнення сервісу `target`

Вмикаємо та запускаємо сервіс `target`:
sudo systemctl enable target
sudo systemctl start target
Тепер iSCSI Target налаштовано та готово до використання. У наступному розділі ми розглянемо налаштування iSCSI Initiator на клієнті.

Налаштування iSCSI Initiator на клієнті (хості віртуалізації)

Налаштування iSCSI Initiator на хості віртуалізації дозволяє цьому хосту підключатися до iSCSI Target та використовувати надане сховище для віртуальних машин.

Крок 1: Встановлення iSCSI Initiator пакетів

Як і у випадку з Target, спочатку потрібно встановити необхідні пакети. У Debian/Ubuntu:
sudo apt update
sudo apt install open-iscsi
У CentOS/RHEL:
sudo yum install iscsi-initiator-utils

Крок 2: Налаштування iSCSI Initiator імені

Необхідно налаштувати iSCSI Initiator ім'я. Воно повинно відповідати тому, що було вказано в ACL на iSCSI Target. Редагуємо файл `/etc/iscsi/initiatorname.iscsi`:
sudo nano /etc/iscsi/initiatorname.iscsi
І змінюємо рядок `InitiatorName=` на:
InitiatorName=iqn.2024-01.example.com:initiator.host1
Важливо: Переконайтеся, що це ім'я відповідає тому, що ви вказали в ACL на iSCSI Target.

Крок 3: Виявлення iSCSI Target

Запускаємо службу iscsid та виконуємо виявлення iSCSI Target:
sudo systemctl enable iscsid
sudo systemctl start iscsid
sudo iscsiadm -m discovery -t st -p 10.0.0.1  # Замінюємо 10.0.0.1 на IP адресу iSCSI Target
Ця команда виявляє доступні iSCSI Target на вказаній IP адресі. Вивід буде приблизно таким:
10.0.0.1:3260,1 iqn.2024-01.example.com:storage.vmdisk1

Крок 4: Підключення до iSCSI Target

Тепер підключаємось до iSCSI Target:
sudo iscsiadm -m node -T iqn.2024-01.example.com:storage.vmdisk1 -p 10.0.0.1 -l # Замінюємо iqn та IP адресу
Ця команда встановлює з'єднання з iSCSI Target. Перевірити підключення можна командою `lsblk`:
lsblk
Ви повинні побачити новий блоковий пристрій, що відповідає вашому iSCSI диску.

Крок 5: Створення файлової системи та монтування

Тепер можна створити файлову систему на iSCSI диску та примонтувати його:
sudo mkfs.ext4 /dev/sdd # Замінюємо /dev/sdd на ім'я вашого iSCSI диска
sudo mkdir /mnt/iscsi
sudo mount /dev/sdd /mnt/iscsi
Щоб диск монтувався автоматично при завантаженні системи, додайте запис в `/etc/fstab`:
echo "/dev/sdd /mnt/iscsi ext4 defaults,_netdev 0 0" | sudo tee -a /etc/fstab
Опція `_netdev` вказує, що це мережевий пристрій, і його потрібно монтувати після ініціалізації мережі. Тепер iSCSI сховище підключено та готове до використання віртуальними машинами.

Використання LVM для управління сховищем iSCSI

LVM (Logical Volume Manager) - це потужний інструмент для управління сховищем. Він дозволяє створювати логічні томи (Logical Volumes) поверх фізичних томів (Physical Volumes), об'єднувати декілька дисків в одну групу томів (Volume Group) та динамічно змінювати розмір логічних томів. Використання LVM в зв'язці з iSCSI надає додаткову гнучкість та зручність управління сховищем для віртуальних машин.

Переваги використання LVM з iSCSI

  • Динамічна зміна розміру: Можна легко збільшувати або зменшувати розмір логічних томів без простою віртуальних машин (при використанні online resizing).
  • Снепшоти: LVM дозволяє створювати снепшоти логічних томів, що корисно для резервного копіювання та тестування.
  • Об'єднання дисків: Можна об'єднати декілька iSCSI дисків в одну групу томів і створити один великий логічний том.
  • Управління на рівні блоків: LVM надає гнучкість в управлінні сховищем на рівні блоків, що дозволяє оптимізувати продуктивність та розподіл ресурсів.

Крок 1: Створення Physical Volume (PV) на iSCSI диску

Після підключення iSCSI диска, необхідно створити Physical Volume на ньому:
sudo pvcreate /dev/sdd  # Замінюємо /dev/sdd на ім'я вашого iSCSI диска

Крок 2: Створення Volume Group (VG)

Потім створюємо Volume Group, використовуючи створений Physical Volume:
sudo vgcreate vmvg /dev/sdd  # vmvg - ім'я Volume Group

Крок 3: Створення Logical Volume (LV)

Тепер можна створити Logical Volume всередині Volume Group:
sudo lvcreate -L 20G -n vm1 vmvg  # Створюємо LV розміром 20ГБ для VM1
sudo lvcreate -L 30G -n vm2 vmvg  # Створюємо LV розміром 30ГБ для VM2
Тепер у нас є два Logical Volume, які можна використовувати для віртуальних машин. Ці логічні томи можна знайти в `/dev/vmvg/vm1` та `/dev/vmvg/vm2`.

Крок 4: Створення файлової системи та монтування LV

Створюємо файлову систему на Logical Volume та монтуємо його:
sudo mkfs.ext4 /dev/vmvg/vm1
sudo mkdir /mnt/vm1
sudo mount /dev/vmvg/vm1 /mnt/vm1
Додаємо запис в `/etc/fstab` для автоматичного монтування:
echo "/dev/vmvg/vm1 /mnt/vm1 ext4 defaults 0 0" | sudo tee -a /etc/fstab

Приклад: Збільшення розміру Logical Volume

Якщо віртуальній машині знадобиться більше місця, можна легко збільшити розмір Logical Volume:
sudo lvextend -L +10G /dev/vmvg/vm1  # Додаємо 10ГБ до LV
sudo resize2fs /dev/vmvg/vm1  # Розширюємо файлову систему
Ці команди дозволяють збільшити розмір Logical Volume та файлової системи без простою віртуальної машини.

Приклад: Створення снепшота Logical Volume

Для резервного копіювання або тестування можна створити снепшот Logical Volume:
sudo lvcreate -s -L 5G -n vm1_snap -p r /dev/vmvg/vm1 #Створюємо snapshot для vm1 (параметр -p r означає, що snapshot буде read-only)
Снепшот дозволяє отримати консистентне представлення даних на певний момент часу.
ТермінОпис
PV (Physical Volume)Фізичний диск або розділ, який використовується LVM.
VG (Volume Group)Група з одного або декількох PV, об'єднаних в єдиний пул зберігання.
LV (Logical Volume)Логічний том, створений в VG і використовується для зберігання даних.
Використання LVM з iSCSI надає потужні інструменти для управління сховищем віртуальних машин, забезпечуючи гнучкість, масштабованість і надійність. Правильне налаштування і використання LVM може значно спростити управління сховищем і підвищити продуктивність ваших віртуальних машин. На закінчення, правильне налаштування сховища для віртуальних машин, особливо з використанням iSCSI і LVM, є ключовим фактором для забезпечення високої продуктивності і надійності вашої інфраструктури віртуалізації. Розуміння і застосування описаних технік дозволить вам ефективно управляти сховищем і адаптуватися до змінних вимог вашого середовища.

Потрібна максимальна продуктивність для ваших VM?

Розблокуйте блискавичну швидкість і ємність зберігання. Вивчіть наші виділені сервери NVMe для чудової продуктивності.

Знайти NVMe сервер →
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.