Представь, что твой TrueNAS — это не просто хранилище файлов, а полноценный мини-датацентр. Он умеет не только хранить данные, но и запускать виртуальные машины (VM) для самых разных задач: от домашнего медиасервера и игрового сервера до тестового стенда для разработки. Давай разберем, как превратить твой NAS в мощный гипервизор, используя встроенные возможности TrueNAS VM.
Что такое TrueNAS VM и зачем это нужно?
TrueNAS, в зависимости от дистрибутива, использует разные технологии виртуализации:
- TrueNAS SCALE (на базе Linux) использует KVM (Kernel-based Virtual Machine) через удобный веб-интерфейс. Это современная, мощная и гибкая система.
- TrueNAS CORE (на базе FreeBSD) использует bhyve. Он проще и легче, но с немного меньшими возможностями и поддержкой ОС.
Зачем запускать VM на TrueNAS? Это консолидация: один физический сервер выполняет роль и хранилища, и вычислительного узла. Экономия на железе, энергии и упрощение управления инфраструктурой.
Подготовка TrueNAS к работе с виртуальными машинами
Прежде чем создавать первую VM, нужно подготовить окружение. Вот обязательные шаги:
1. Настройка пула для дисков VM
Виртуальным машинам нужно где-то хранить свои виртуальные диски. Создай отдельный набор данных (dataset) в одном из твоих пулов. Для производительности лучше использовать SSD.
# Пример создания dataset через командную строку (опционально)
zfs create pool01/vm-storage
# Установка типа recordsize, оптимального для VM дисков
zfs set recordsize=128k pool01/vm-storage
2. Настройка сети для виртуальных машин
Чаще всего используется мостовой (bridge) интерфейс. В TrueNAS SCALE это делается так:
- Зайди в «Сеть» → «Интерфейсы».
- Нажми «Добавить» и выбери тип «Мост» (Bridge).
- Укажи физический интерфейс (например,
eno1) в качестве участника моста. - Настрой IP-адрес моста, если нужен статический (можно оставить DHCP).
Пошаговое создание виртуальной машины в TrueNAS SCALE
Давай создадим виртуальную машину с Ubuntu Server 22.04 LTS. Представь, что это твой будущий Docker-хост или веб-сервер.
Шаг 1: Загрузка установочного образа (ISO)
Зайди в «Виртуальные Машины» → «Диспетчер загрузок». Нажми «Загрузить» и укажи URL образа. Например, для Ubuntu:
https://releases.ubuntu.com/22.04.4/ubuntu-22.04.4-live-server-amd64.iso
Шаг 2: Создание новой VM
Нажми «Добавить» в разделе «Виртуальные Машины». Заполни основные параметры:
| Параметр | Рекомендуемое значение (для Ubuntu) | Описание |
|---|---|---|
| Имя VM | ubuntu-server-01 |
Удобное имя для идентификации |
| Описание | Основной сервер для Docker | Необязательно, но полезно |
| Виртуальные ЦП | 4 ядра | Выдели 2-4 ядра из доступных |
| Память | 4096 МБ (4 ГБ) | Минимум для комфортной работы |
| Загрузочное устройство | Ubuntu ISO образ | Выбери загруженный ранее ISO |
Шаг 3: Настройка виртуальных дисков
На вкладке «Диски» нажми «Добавить». Ключевые настройки:
- Тип ZVol: Создаст отдельный ZFS том. Высокая производительность и поддержка снапшотов.
- Размер: Укажи 20-40 ГБ для системного диска.
- SSD эмуляция: Поставь галочку, если размещаешь на SSD-пуле.
Шаг 4: Конфигурация сети
На вкладке «Сети» добавь интерфейс. Выбери созданный ранее мостовой интерфейс (br0) в качестве «Присоединить к NIC». Модель адаптера можно оставить «VirtIO» — это самый производительный вариант для гостевых ОС Linux.
Шаг 5: Запуск и установка ОС
Сохрани конфигурацию и запусти VM. Затем открой «Виртуальные Машины» → ubuntu-server-01 → «Устройства» → «Дисплей». Нажми «Подключиться», чтобы открыть VNC-консоль и начать установку Ubuntu как на физической машине.
# Проверка, что VirtIO драйвера работают (сетевой адаптер должен быть enp0sX или подобный)
ip a
# Обновление системы
sudo apt update && sudo apt upgrade -y
Расширенные возможности TrueNAS VM
PCI Passthrough: Прямой доступ к железу
Хочешь отдать виртуальной машине целую видеокарту для игрового сервера или аппаратного кодирования? Включи IOMMU в BIOS/UEFI и настрой passthrough в TrueNAS.
- В веб-интерфейсе TrueNAS SCALE зайди в «Системные Настройки» → «Дополнительно».
- В поле «Аргументы загрузки ядра» добавь (для AMD):
amd_iommu=onили для Intel:intel_iommu=on. - Перезагрузи TrueNAS.
- В разделе VM при редактировании добавь устройство типа «PCI Passthrough» и выбери нужное устройство из списка.
Управление через CLI (для автоматизации)
Иногда удобнее управлять через командную строку. Используй команду midclt.
# Получить список всех виртуальных машин
midclt call vm.query
# Запустить конкретную VM по ID
midclt call vm.start 1
# Создать снапшот диска VM (ZVol)
midclt call zfs.snapshot.create ["pool01/vm-storage/disk-01@snap_before_update"]
Оптимизация производительности виртуальных машин
- VirtIO везде: Используй драйвера и устройства VirtIO для дисков и сети (вместо эмуляции SATA или E1000). Это даст прирост скорости.
- Кэширование дисков: В настройках диска VM выбери режим кэширования «Write Back» для лучшей скорости записи (риск потери данных при сбое питания). Для надежности — «Write Through».
- Выделение CPU: Для чувствительных к задержкам нагрузок можно «приколоть» (pin) виртуальные ядра к конкретным физическим ядрам процессора.
- Память Ballooning: Включи опцию в настройках VM. Это позволит гостевой ОС возвращать неиспользуемую память хосту для перераспределения.
Часто задаваемые вопросы (FAQ) по TrueNAS VM
Моя VM тормозит. В чем может быть проблема?
Проверь: 1) Достаточно ли оперативной памяти выделено хосту (самому TrueNAS нужно минимум 8 ГБ). 2) Используешь ли ты VirtIO драйвера в гостевой ОС. 3) Не перегружен ли дисковой подсистему пул, на котором лежат диски VM. Мониторь нагрузку через графики в дашборде TrueNAS.
Как сделать резервную копию виртуальной машины?
Самый надежный способ — создание снапшота ZFS тома (ZVol), на котором находится диск VM. Затем можно реплицировать этот снапшот на другой пул или внешнее хранилище. Также можно использовать встроенные инструменты резервного копирования внутри гостевой ОС.
Чем отличается виртуализация в TrueNAS CORE (bhyve) от SCALE (KVM)?
KVM в SCALE — более зрелая и производительная технология с лучшей поддержкой различных гостевых ОС (особенно Windows) и расширенных функций (живая миграция в кластере). bhyve в CORE — легковесный, хорошо интегрирован в FreeBSD, но может иметь ограничения по драйверам и производительности для некоторых ОС.
Можно ли запускать Docker внутри VM на TrueNAS?
Да, это отличная практика. Создай виртуальную машину с Linux (Ubuntu, Debian) и установи в нее Docker. Это изолирует твои контейнеры от хостовой системы TrueNAS и дает больше гибкости в управлении.
Заключение
Виртуальные машины превращают TrueNAS из простого сетевого хранилища в универсальную платформу для развертывания любой IT-инфраструктуры. Начни с простой VM для тестового веб-сервера, освои базовые настройки сети и дисков, а затем переходи к более сложным сценариям вроде PCI passthrough или кластеризации. Главное — не бойся экспериментировать: создавай снапшоты перед major-изменениями, и твой домашний или рабочий гипервизор на базе TrueNAS будет работать стабильно и эффективно.
Используй силу TrueNAS VM, чтобы консолидировать workloads и построить отказоустойчивую, гибкую систему на базе одного мощного сервера.