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

- Централізоване сховище: Віртуальні машини можуть отримувати доступ до сховища, розташованого на окремому сервері або масиві зберігання, що спрощує управління та резервне копіювання.
- Економічність: iSCSI може бути реалізований з використанням стандартного мережевого обладнання, що знижує витрати в порівнянні з Fibre Channel.
- Гнучкість: Легко додавати або розширювати сховище для віртуальних машин по мірі необхідності.
- Продуктивність: При правильному налаштуванні та використанні швидких мережевих з'єднань (наприклад, 10 Gigabit Ethernet), iSCSI може забезпечити високу продуктивність для віртуальних машин.
Приклад 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-план →Шукаєте сервер, який просто працює?
Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.
Налаштування iSCSI Target на сервері

Крок 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 і використовується для зберігання даних. |
Потрібна максимальна продуктивність для ваших VM?
Розблокуйте блискавичну швидкість і ємність зберігання. Вивчіть наші виділені сервери NVMe для чудової продуктивності.
Знайти NVMe сервер →