Если ты работаешь с TrueNAS и хочешь использовать его не только как файловый сервер, но и как платформу для виртуальных машин или баз данных, тебе нужно разобраться с ZVOL. Давай представим, что это виртуальный жёсткий диск, созданный внутри пула ZFS, который можно подключить к любой системе как обычное блочное устройство.
Что такое ZVOL в TrueNAS: Основные концепции
ZVOL (ZFS Volume) — это блочное устройство, созданное в пуле ZFS. В отличие от обычных файловых систем (датасетов), которые работают с файлами и каталогами, ZVOL предоставляет доступ к данным на уровне блоков. Это делает его идеальным для:
- iSCSI-таргетов для подключения удалённых дисков
- Хранилищ для виртуальных машин (VMware, Proxmox, Hyper-V)
- Баз данных, требующих прямого доступа к блокам
- Создания swap-разделов или загрузочных дисков
ZVOL vs Датасеты: Когда что использовать
| Критерий | ZVOL | Датасет |
|---|---|---|
| Тип доступа | Блочный (блоки данных) | Файловый (файлы/каталоги) |
| Использование | Виртуальные машины, iSCSI, БД | Файловые шары, резервные копии |
| Протоколы | iSCSI, Fibre Channel | SMB, NFS, AFP, FTP |
| Гибкость | Фиксированный или thin-provisioning | Динамическое использование пространства |
Как создать ZVOL в TrueNAS: Пошаговое руководство
Шаг 1: Доступ к интерфейсу TrueNAS
Зайди в веб-интерфейс TrueNAS и перейди в раздел Storage → Pools. Выбери пул, в котором хочешь создать ZVOL.
Шаг 2: Создание ZVOL через GUI
Нажми кнопку "Add ZVOL" и заполни параметры:
- ZVOL Name: Имя тома (например, vm-storage)
- Size for this zvol: Размер (например, 100GiB)
- Compression level: Уровень сжатия (lz4 рекомендуется)
- ZFS Deduplication: Дедупликация (осторожно, требует много RAM)
- Sparse (Thin Provisioning): Если нужно динамическое выделение
Шаг 3: Создание через CLI (для продвинутых)
Если предпочитаешь командную строку, вот как создать ZVOL:
# Создать ZVOL размером 100GB с компрессией lz4
zfs create -V 100G -o compression=lz4 pool-name/zvol-name
# Создать sparse ZVOL (thin provisioning)
zfs create -s -V 500G pool-name/sparse-zvol
# Просмотреть созданные ZVOL
zfs list -t volume
# Изменить размер существующего ZVOL
zfs set volsize=150G pool-name/zvol-name
Настройка iSCSI с ZVOL для удалённого доступа
Конфигурация iSCSI Target
После создания ZVOL, настрой его как iSCSI-таргет:
- Перейди в Sharing → Block Shares (iSCSI)
- Создай новый Target (порт 3260 по умолчанию)
- Добавь созданный ZVOL как Extent
- Настрой Access Control (CHAP при необходимости)
- Активируй службу iSCSI
# Пример конфигурации /etc/ctl.conf
portal-group pg0 {
discovery-auth-group no-authentication
listen 0.0.0.0:3260
}
target iqn.2023-05.truenas:vm-storage {
auth-group no-authentication
portal-group pg0
lun 0 {
extent extent0
}
}
Подключение с клиента
На клиентской машине (Windows/Linux):
# Linux: Установка и подключение
sudo apt-get install open-iscsi
sudo iscsiadm -m discovery -t st -p 192.168.1.100
sudo iscsiadm -m node -T iqn.2023-05.truenas:vm-storage -p 192.168.1.100 -l
# Просмотр подключённых дисков
lsblk
sudo fdisk -l
Использование ZVOL для виртуальных машин
Proxmox VE
Настройка ZVOL как хранилища в Proxmox:
# В веб-интерфейсе Proxmox:
# Datacenter → Storage → Add → iSCSI
# Или через CLI:
pvesm add iscsi iscsi-storage --portal 192.168.1.100 \
--target iqn.2023-05.truenas:vm-storage \
--content images,rootdir
VMware ESXi
Добавление iSCSI Datastore:
- Storage → Adapters → Software iSCSI → Enabled
- Добавь портал TrueNAS (IP:3260)
- Rescan адаптеров
- Storage → New Datastore → VMFS
- Выбери обнаруженный LUN (ZVOL)
Оптимизация производительности ZVOL
Критические параметры
# Оптимальные настройки для производительности
zfs set primarycache=metadata pool-name/zvol-name # Кэшировать только метаданные
zfs set secondarycache=all pool-name/zvol-name # Использовать L2ARC
zfs set recordsize=16K pool-name/zvol-name # Для СУБД
zfs set recordsize=128K pool-name/zvol-name # Для VM
zfs set sync=standard pool-name/zvol-name # Безопасность данных
zfs set sync=disabled pool-name/zvol-name # Макс. производительность (риск!)
# Мониторинг производительности
zpool iostat -v 1
zfs get all pool-name/zvol-name
Блокировка и безопасность
ZVOL поддерживает все функции безопасности ZFS:
- Снимки (Snapshots): Моментальные копии в любой точке времени
- Клонирование: Быстрое создание копий для тестирования
- Репликация: Асинхронная или синхронная на другой сервер
- Шифрование: Прозрачное шифрование данных (GELI или native ZFS)
# Создание снимка ZVOL
zfs snapshot pool-name/zvol-name@backup-2023-05-15
# Клонирование снимка
zfs clone pool-name/zvol-name@backup-2023-05-15 pool-name/zvol-clone
# Репликация на удалённый сервер
zfs send pool-name/zvol-name@snapshot | ssh remote-server zfs receive remote-pool/zvol-name
# Включение шифрования при создании
zfs create -o encryption=on -o keyformat=passphrase \
-V 100G pool-name/encrypted-zvol
Распространённые проблемы и решения
Проблема 1: ZVOL не отображается в системе
Решение: Проверь, активирована ли служба iSCSI и правильно ли настроен target. Используй команду iscsiadm -m session на клиенте для проверки подключения.
Проблема 2: Низкая производительность записи
Решение: Добавь SLOG устройство (SSD) для ZIL. Проверь настройки sync (standard для безопасности, disabled для производительности с риском).
Проблема 3: Закончилось место в пуле
Решение: Для sparse ZVOL установи квоту: zfs set refquota=200G pool-name/sparse-zvol. Регулярно мониторь использование: zfs list -o space.
Проблема 4: Не удаётся изменить размер ZVOL
Решение: Убедись, что ZVOL не подключен к системе. Отключи iSCSI сессию, измени размер через zfs set volsize=NEWSIZE, затем переподключи.
Лучшие практики работы с ZVOL
- Именование: Используйте осмысленные имена (vm-db-prod, iscsi-backup)
- Размер блоков: recordsize=16K для баз данных, 128K для VM и мультимедиа
- Мониторинг: Настройте оповещения о заполнении пула (80%, 90%, 95%)
- Резервное копирование: Регулярные снимки + репликация на другой сервер
- Тестирование: Всегда тестируйте новые конфигурации в dev-среде
ZVOL в TrueNAS — это мощный инструмент, который открывает возможности за пределами обычного файлового хранения. Освоив создание и настройку блочных устройств, ты сможешь строить отказоустойчивые инфраструктуры для виртуализации, баз данных и распределённых систем.