Представь, что у тебя есть мощный сервер с TrueNAS, который хранит все твои данные. Но что, если на этом же железе можно запустить веб-сервер, базу данных или тестовый стенд? Именно для этого существуют виртуальные машины в TrueNAS. Давай разберем, как превратить твой NAS в полноценную виртуализационную платформу.
TrueNAS Core vs Scale: разные подходы к виртуализации
Первое, что нужно понять — TrueNAS Core и TrueNAS Scale используют разные технологии виртуализации. Это критически важно при выборе дистрибутива под твои задачи.
| Параметр | TrueNAS Core | TrueNAS Scale |
|---|---|---|
| Технология | bhyve (FreeBSD) | KVM (Linux) |
| Поддержка ОС | Ограниченная (FreeBSD, Linux) | Широкая (Linux, Windows) |
| Производительность | Хорошая для FreeBSD | Отличная для Linux |
| Графический интерфейс | Базовый | Продвинутый (на основе libvirt) |
Настройка виртуальных машин в TrueNAS Scale
В TrueNAS Scale виртуальные машины работают на базе KVM — промышленного стандарта виртуализации. Интерфейс интуитивный, но есть нюансы.
Шаг 1: Подготовка хранилища
Перед созданием ВМ нужно подготовить ZVOL — блочное устройство в ZFS, которое будет использоваться как диск виртуальной машины.
# Создание ZVOL через CLI (альтернатива GUI)
zfs create -V 20G tank/vm-disks/centos-vm
zfs set volblocksize=64k tank/vm-disks/centos-vm
Шаг 2: Создание виртуальной машины CentOS
Давай создадим виртуальную машину CentOS — популярный выбор для серверных задач.
- В веб-интерфейсе переходим в "Virtual Machines" → "Add"
- Указываем имя:
centos-server - Описание: "Production web server"
- Выбираем тип ОС: Linux
- Версия: CentOS 8/9 (в зависимости от образа)
Шаг 3: Конфигурация ресурсов
Критически важный этап — распределение ресурсов. Вот оптимальные настройки для средней нагрузки:
{
"vcpus": 4, // Ядра CPU
"memory": 8192, // 8 GB RAM
"bootloader": "UEFI", // Для современных ОС
"autostart": true, // Автозапуск при старте TrueNAS
"devices": [
{
"type": "disk",
"path": "/dev/zvol/tank/vm-disks/centos-vm",
"size": "20G"
},
{
"type": "cdrom",
"path": "/mnt/tank/isos/CentOS-9-stream.iso"
}
]
}
Шаг 4: Настройка сети
TrueNAS Scale предлагает несколько вариантов сетевой конфигурации:
- Bridge Mode — ВМ получает IP из той же сети, что и хост
- NAT — ВМ в изолированной сети с выходом через NAT
- MAC-адрес — генерируем или указываем вручную
# Просмотр доступных сетевых интерфейсов
virsh net-list --all
# Информация о bridge-интерфейсе
virsh net-info default
Особенности TrueNAS Core виртуальных машин
В TrueNAS Core виртуальная машина работает на bhyve. Интерфейс проще, но функционала достаточно для базовых задач.
Создание ВМ через веб-интерфейс
- Переходим в "Virtual Machines" → "Add"
- Выбираем тип гостевой ОС (поддерживаются не все дистрибутивы)
- Указываем размер диска — создается автоматически
- Настраиваем CPU и RAM (осторожно с oversubscription!)
- Монтируем ISO-образ для установки
Конфигурация через CLI (продвинутый уровень)
# Создание ВМ через bhyve CLI
bhyveload -m 4G -d /mnt/tank/vm/centos.img centos-vm
bhyve -c 4 -m 4G -H -A -I \
-s 0,hostbridge \
-s 1,virtio-blk,/mnt/tank/vm/centos.img \
-s 2,virtio-net,tap0 \
-s 3,fbuf,tcp=0.0.0.0:5900,w=1024,h=768 \
-s 4,xhci,tablet \
-l com1,stdio \
centos-vm
Оптимизация производительности виртуальных машин
Чтобы твои виртуальные машины в TrueNAS летали, нужно правильно настроить ZFS и параметры KVM/bhyve.
ZFS настройки для ВМ
- recordsize: 64K для ZVOL под ВМ
- primarycache: metadata или all (в зависимости от RAM)
- logbias: throughput для HDD, latency для SSD
- compression: lz4 (минимум нагрузки на CPU)
# Оптимальные настройки ZFS для пула с ВМ
zfs set recordsize=64K tank/vm-disks
zfs set primarycache=all tank/vm-disks
zfs set compression=lz4 tank/vm-disks
zfs set atime=off tank/vm-disks # Отключаем atime для производительности
Параметры CPU и памяти
Для KVM в TrueNAS Scale:
Бэкап и миграция виртуальных машин
Одна из сильных сторон TrueNAS — интеграция с ZFS снапшотами. Используй это для бэкапа ВМ.
# Создание снапшота ZVOL с ВМ
zfs snapshot tank/vm-disks/centos-vm@backup-$(date +%Y%m%d)
# Восстановление из снапшота (осторожно!)
zfs rollback tank/vm-disks/centos-vm@backup-20240115
# Клонирование ВМ для тестирования
zfs clone tank/vm-disks/centos-vm@backup-20240115 tank/vm-disks/centos-test
Частые проблемы и решения
ВМ не запускается
Проверь:
- Достаточно ли свободной памяти на хосте
- Не конфликтуют ли MAC-адреса
- Корректность ISO-образа (проверь checksum)
- Логи через
journalctl -u libvirtd(для Scale)
Плохая производительность диска
Решение:
# Проверка производительности ZVOL
fio --name=test --ioengine=libaio --rw=randread \
--bs=64k --numjobs=4 --size=1G --runtime=60 \
--filename=/dev/zvol/tank/vm-disks/centos-vm
# Если медленно — проверь фрагментацию
zpool list -v tank
Проблемы с сетью
В TrueNAS Scale:
# Перезапуск сетевого стека libvirt
systemctl restart libvirtd
# Проверка bridge-интерфейса
brctl show vm-bridge
# Просмотр правил iptables/nftables
iptables -L -n -v | grep virbr