Представь, что у тебя есть мощный сервер на базе TrueNAS, который отлично справляется с хранением данных. Но что, если ты хочешь запустить на этом же железе веб-сервер, медиацентр или тестовую среду? Именно здесь на помощь приходит функционал virtual machine в TrueNAS. Давай разберем, как превратить твой NAS в полноценный гипервизор.
Что такое Virtual Machine в TrueNAS?
TrueNAS использует гипервизор bhyve (BSD Hypervisor) для создания и управления виртуальными машинами. Это легковесное, но мощное решение, интегрированное прямо в веб-интерфейс TrueNAS. В отличие от отдельных систем виртуализации, здесь всё управляется централизованно: и твои ZFS пулы, и ВМ.
Подготовка к созданию Virtual Machine
Перед созданием первой ВМ нужно выполнить несколько важных шагов:
- Проверь поддержку виртуализации в CPU: Убедись, что в BIOS/UEFI включены технологии Intel VT-x/AMD-V.
- Выдели ресурсы: Реши, сколько ядер CPU, оперативной памяти и дискового пространства ты готов выделить для ВМ.
- Подготовь установочный образ: ISO-файл с операционной системой (Ubuntu, Windows, Alpine Linux и др.).
- Настрой сетевой мост: Для доступа ВМ к сети.
Создание сетевого моста (Bridge)
Виртуальной машине нужен доступ к сети. Создадим сетевой мост в интерфейсе TrueNAS:
- Перейди в Network → Interfaces.
- Нажми ADD и выбери тип Bridge.
- Укажи имя (например,
br0) и выбери физический интерфейс (например,igb0). - Сохрани настройки.
# Проверка созданного моста через CLI TrueNAS
ifconfig | grep bridge
# Пример вывода: bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
Пошаговое создание Virtual Machine в TrueNAS
Теперь перейдем к самому интересному — созданию виртуальной машины. Представь, что мы разворачиваем легковесный веб-сервер на Alpine Linux.
Шаг 1: Добавление ВМ через веб-интерфейс
- Перейди в раздел Virtual Machines.
- Нажми кнопку ADD.
- Заполни основные параметры:
- Name:
alpine-web - Description: Легковесный веб-сервер
- Virtual CPUs: 2 ядра
- Memory Size: 1024 MiB
- Name:
Шаг 2: Настройка загрузочного устройства
Здесь мы укажем ISO-образ для установки системы:
Boot Method: UEFI
# или Legacy для старых ОС
Devices:
- Type: CD-ROM
Path: /mnt/tank/iso/alpine-virt-3.18.4-x86_64.iso
# Путь к ISO в твоем ZFS пуле
Шаг 3: Настройка диска виртуальной машины
Создадим виртуальный диск на ZFS. Это может быть файл (ZVOL) или отдельный dataset.
Disk Type: AHCI
# или VirtIO для лучшей производительности
Create New Image: Yes
Location: /mnt/tank/vm/
Size: 10 GiB
# ZFS автоматически создаст ZVOL
Шаг 4: Настройка сети для virtual machine
Привяжем ВМ к созданному ранее сетевому мосту:
Adapter Type: VirtIO
# Максимальная производительность
Attach NIC: br0
# Имя нашего моста
MAC Address: (оставь auto или задай вручную)
Шаг 5: Запуск и установка ОС
После сохранения конфигурации:
- В списке ВМ найди свою alpine-web.
- Нажми кнопку >_ (Launch VNC) для доступа к консоли.
- Запусти ВМ кнопкой PLAY.
- Следуй стандартной установке Alpine Linux через VNC.
Оптимизация производительности Virtual Machine
Чтобы твои виртуальные машины работали максимально эффективно, используй эти продвинутые настройки:
| Параметр | Рекомендация | Эффект |
|---|---|---|
| CPU Pinning | Закрепи ядра CPU за ВМ | Уменьшает contention, улучшает отзывчивость |
| VirtIO драйверы | Используй в гостевой ОС | +30-50% к скорости диска и сети |
| ZFS настройки | recordsize=16K для ВМ дисков | Оптимизация под нагрузку случайного чтения/записи |
| Memory Ballooning | Включи в настройках ВМ | Динамическое перераспределение RAM между ВМ |
# Настройка ZFS dataset под ВМ диски (через CLI)
zfs create tank/vm-disks
zfs set recordsize=16K tank/vm-disks
zfs set primarycache=metadata tank/vm-disks
# primarycache=metadata экономит RAM, т.к. данные ВМ и так кэшируются в гостевой ОС
Управление Virtual Machine через CLI
Иногда удобнее работать через командную строку. Основные команды для управления ВМ в TrueNAS CORE (bhyve):
# Список всех ВМ
midclt call vm.query
# Запуск ВМ по ID
midclt call vm.start 1
# Остановка ВМ
midclt call vm.stop 1
# Получение статуса ВМ
midclt call vm.status 1
# Изменение параметров ВМ
midclt call vm.update 1 '{"memory": 2048}'
Бэкап и миграция Virtual Machine
Одно из главных преимуществ использования TrueNAS для виртуализации — интеграция с ZFS. Бэкап ВМ становится тривиальной задачей:
- Снимки (Snapshots): Создай снапшот dataset с дисками ВМ перед обновлением.
- Клонирование: Клонируй снапшот для тестирования.
- Репликация: Настрой репликацию dataset на другой TrueNAS сервер для аварийного восстановления.
# Создание снапшота диска ВМ
zfs snapshot tank/vm-disks/alpine-web@before-update
# Клонирование для тестовой среды
zfs clone tank/vm-disks/alpine-web@before-update tank/test-vm/disk
# Восстановление из снапшота (если что-то пошло не так)
zfs rollback tank/vm-disks/alpine-web@before-update
Частые проблемы и решения
Решение: Проверь, не исчерпана ли память ZFS ARC. Временно уменьши
vm.kmem_size или выдели меньше RAM для ВМ.
Решение: 1) Убедись, что используешь VirtIO; 2) Проверь нагрузку на физические диски; 3) Рассмотри возможность выделения SSD под L2ARC или SLOG.
TrueNAS CORE vs SCALE для виртуализации
Выбор платформы зависит от твоих задач:
- TrueNAS CORE (bhyve): Стабильность, глубокая интеграция с FreeBSD, но меньше совместимости с гостевыми ОС.
- TrueNAS SCALE (KVM): Широкая поддержка ОС (включая Windows), Docker-контейнеры рядом с ВМ, но моложе и может быть менее стабилен в некоторых сценариях.
Теперь у тебя есть полное руководство по работе с virtual machine в TrueNAS. Начни с простой ВМ, поэкспериментируй с настройками, и вскоре ты сможешь развернуть на своем NAS целую инфраструктуру: файловое хранилище, веб-сервер, медиацентр и систему мониторинга — всё на одном физическом сервере. И помни главное преимущество: все твои ВМ хранятся на отказоустойчивых ZFS пулах с мгновенными снапшотами.