Представь, что ты настроил свой TrueNAS сервер, но скорость передачи файлов оставляет желать лучшего. Знакомая ситуация? Давай разберемся, почему это происходит и как превратить твой NAS в скоростную магистраль данных. В этой статье я, как Senior DevOps, покажу тебе все этапы оптимизации — от диагностики до тонкой настройки.
Диагностика: почему TrueNAS медленный?
Перед оптимизацией нужно понять узкие места. Основные факторы, влияющие на скорость TrueNAS:
- Сетевое оборудование — гигабитный или 2.5/10 Гбит Ethernet
- Конфигурация дисков — RAIDZ, зеркала, количество vdev
- Аппаратные ресурсы — объем RAM, наличие кэширующих SSD
- Настройки ZFS — recordsize, compression, sync
- Протоколы доступа — SMB, NFS, iSCSI
Шаг 1: Тестирование текущей скорости
Начнем с базовых измерений. Подключись к TrueNAS через Shell и выполни команды:
# Тест скорости чтения/записи дисков
zpool status # проверь состояние пула
# Тест последовательной скорости (используй свой путь)
sudo dd if=/dev/zero of=/mnt/pool1/testfile bs=1G count=1 oflag=dsync
# Тест скорости сети (установи iperf3 через пакетный менеджер)
iperf3 -s # на TrueNAS
iperf3 -c IP_TRUENAS # с клиента
# Проверка нагрузки в реальном времени
top # смотри на load average и использование RAM
gstat # мониторинг активности дисков (если установлен)
Нормальные показатели скорости для разных конфигураций
| Конфигурация | Ожидаемая скорость чтения | Ожидаемая скорость записи | Лимитирующий фактор |
|---|---|---|---|
| 4x HDD RAIDZ1 (1 GbE) | 100-115 MB/s | 80-100 MB/s | Сеть 1 Гбит |
| 2x SSD Mirror (1 GbE) | 110-115 MB/s | 110-115 MB/s | Сеть 1 Гбит |
| 4x SSD RAIDZ1 (10 GbE) | 800-1000 MB/s | 400-600 MB/s | Производительность SSD |
| HDD + SLOG/L2ARC (10 GbE) | 300-500 MB/s | 200-400 MB/s | Запись на HDD |
Шаг 2: Оптимизация сетевой скорости
Сеть — частая причина низкой скорости TrueNAS. Вот что нужно проверить:
Настройка MTU (Jumbo Frames)
Для 10 Гбит сетей обязательно настрой Jumbo Frames (MTU 9000):
# Проверка текущего MTU
ifconfig | grep mtu
# Настройка в TrueNAS Web UI:
# Сеть → Интерфейсы → Редактировать интерфейс
# MTU: 9000 (только если все устройства в сети поддерживают!)
Оптимизация SMB (Samba) для высокой скорости
Добавь эти параметры в дополнительные настройки SMB:
# В TrueNAS: Sharing → SMB → Advanced Options → Auxiliary Parameters
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=524288 SO_SNDBUF=524288
read raw = yes
write raw = yes
max xmit = 65536
dead time = 15
getwd cache = yes
# Для 10 Гбит сетей добавь:
server multi channel support = yes
aio read size = 1
aio write size = 1
Шаг 3: Оптимизация пулов ZFS и настройка кэширования
Правильная конфигурация пула
- Больше vdev = выше скорость — каждый vdev добавляет производительность
- Зеркала быстрее RAIDZ — для скорости используй mirror (RAID1)
- Оптимальный recordsize — 128K для медиафайлов, 16K для баз данных
# Просмотр и изменение свойств набора данных
zfs get recordsize,compression,atime pool1/dataset
# Изменение recordsize (делай на пустом наборе данных!)
zfs set recordsize=128K pool1/media
# Отключение atime для увеличения скорости
zfs set atime=off pool1/dataset
Настройка SLOG и L2ARC для ускорения
SLOG (ZIL) ускоряет синхронные записи, L2ARC — чтение:
# Добавление SLOG устройства (только для sync=standard)
zpool add pool1 log mirror /dev/nvme0n1 /dev/nvme0n2
# Добавление L2ARC кэша
zpool add pool1 cache /dev/nvme0n3
# Проверка статистики кэша
arcstat # или zpool iostat -v pool1 1
Шаг 4: Оптимизация аппаратной части
- RAM — чем больше, тем лучше. Минимум 8GB для базовой установки, 32GB+ для кэширования
- CPU — ядра важнее частоты. ZFS любит многопоточность при сжатии
- Диски — одинаковые модели в vdev. Разная производительность дисков снижает скорость всего vdev
- Контроллеры — HBA в режиме IT. Избегай RAID контроллеров
Шаг 5: Мониторинг и тонкая настройка
# Постоянный мониторинг производительности
zpool iostat -vl 1 # статистика пула каждую секунду
# Проверка загрузки ARC кэша
sysctl -a | grep arc # или cat /proc/spl/kstat/zfs/arcstats
# Настройка параметров ARC (в /etc/sysctl.conf)
vfs.zfs.arc_max="4G" # лимит ARC кэша
vfs.zfs.prefetch_disable="0" # включить prefetch
vfs.zfs.vdev.async_write_max_active="10" # активные асинхронные записи
Чек-лист быстрой оптимизации
- Проверь сеть — тест iperf3 между клиентом и TrueNAS
- Настрой правильный MTU для своей сети
- Оптимизируй SMB настройки для своего использования
- Установи recordsize в зависимости от размера файлов
- Отключи atime на редко используемых наборах данных
- Добавь SLOG если используешь синхронные записи (NFS, iSCSI, БД)
- Увеличь RAM для лучшего кэширования
- Используй больше vdev для параллелизации операций
Частые проблемы и решения
Проблема: Скорость падает со временем
Решение: Проверь фрагментацию пула: zpool list -o fragmentation. Если >20%, рассмотри перезапись данных или добавление дисков.
Проблема: Хорошая скорость чтения, но медленная запись
Решение: Проверь настройки sync. Для не критичных данных установи zfs set sync=disabled pool/dataset. Или добавь SLOG.
Проблема: Скорость нестабильная, скачет
Решение: Мониторь нагрузку в реальном времени: gstat -p. Возможно, фоновая задача (scrub, resilver) крадет ресурсы.