Если ваш TrueNAS тормозит передача по сети, и скорость копирования файлов оставляет желать лучшего — вы не одиноки. Это распространённая проблема, которая может иметь десятки причин: от неправильных настроек сети до проблем с оборудованием. Давай разберём эту ситуацию системно, как настоящий инженер.
Шаг 1: Базовый бенчмарк — измеряем реальную скорость
Прежде чем лезть в настройки, нужно понять масштаб проблемы. Запустим несколько тестов, чтобы отделить сетевые проблемы от проблем с дисками.
Тест скорости локального диска TrueNAS
Сначала проверим, не тормозят ли сами диски. Подключаемся к TrueNAS через SSH:
# Тест последовательной записи/чтения
fio --name=test --ioengine=libaio --rw=write --bs=128k --numjobs=1 --size=1G --runtime=60 --time_based --direct=1
# Тест случайного доступа
fio --name=randtest --ioengine=libaio --rw=randwrite --bs=4k --numjobs=16 --size=1G --runtime=60 --time_based --direct=1
Тест скорости сети
На клиентской машине (Linux/Windows/Mac) устанавливаем iperf3:
# На TrueNAS (сервер):
iperf3 -s
# На клиенте:
iperf3 -c IP_адрес_TrueNAS -t 30 -P 4
Если iperf3 показывает близкую к гигабиту скорость (940 Мбит/с), а передача файлов всё равно тормозит — проблема в настройках протоколов или ZFS.
Шаг 2: Диагностика сетевого оборудования
Часто проблема кроется в «железе». Проверим основные моменты:
- Кабели: Используйте Cat5e или Cat6. Cat5 может не вытянуть гигабит на длинных дистанциях.
- Порты коммутатора: Убедитесь, что все порты работают в режиме 1 Гбит/с full duplex.
- Дуплекс: Принудительно установите 1000/full в настройках сетевой карты TrueNAS.
- MTU: Для jumbo frames нужна поддержка на всём пути (коммутатор, сетевая карта, настройки ОС).
Проверка сетевых настроек в TrueNAS
# Просмотр текущих настроек интерфейса
ifconfig ix0 # замени ix0 на имя своего интерфейса
# Проверка ошибок
netstat -i
# Статистика по протоколам TCP
netstat -s -p tcp | head -30
Шаг 3: Оптимизация SMB (Samba) — самая частая причина
Если передача по сети через SMB тормозит, нужно тонко настроить сервис. Идём в Services → SMB → Edit и настраиваем Auxiliary Parameters:
# Основные параметры для ускорения
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072
read raw = yes
write raw = yes
max xmit = 65536
dead time = 15
getwd cache = yes
min receivefile size = 16384
use sendfile = yes
aio read size = 16384
aio write size = 16384
# Для современных клиентов
server multi channel support = yes
# Отключаем ненужные проверки (осторожно!)
smb2 leases = no
smb2 max read = 8388608
smb2 max write = 8388608
Настройка размера буферов SMB
Добавьте в тот же Auxiliary Parameters для конкретных share:
[share_name]
write cache size = 262144 # 256KB
read raw = yes
write raw = yes
max xmit = 65536
Шаг 4: Тонкая настройка ZFS — когда дисковая подсистема тормозит
Даже с быстрыми дисками ZFS может ограничивать скорость из-за настроек. Проверим и оптимизируем:
# Просмотр текущих настроек пула
zpool get all pool_name
# Критически важные параметры для скорости
zfs set atime=off pool_name/dataset # отключаем запись времени доступа
zfs set compression=lz4 pool_name/dataset # lz4 быстрее gzip
zfs set recordsize=1M pool_name/dataset # для больших файлов
zfs set primarycache=all pool_name/dataset # кэшируем всё в ARC
# Для записи маленьких файлов
zfs set recordsize=128K pool_name/dataset
# Проверка фрагментации
zpool list -v
Оптимизация ARC (кэш ZFS)
# Просмотр статистики ARC
arcstat
# Настройка лимитов ARC (в GiB)
sysctl vfs.zfs.arc_max=4294967296 # 4GB
sysctl vfs.zfs.arc_min=2147483648 # 2GB
# Для записи в sysctl.conf
echo 'vfs.zfs.arc_max=4294967296' >> /etc/sysctl.conf
echo 'vfs.zfs.arc_min=2147483648' >> /etc/sysctl.conf
Шаг 5: Оптимизация NFS (если используете)
Для NFS есть свои тонкости. Редактируем службу NFS в TrueNAS:
# На клиенте Linux монтируем с оптимизациями:
mount -t nfs -o rw,async,noatime,nodev,nosuid,rsize=65536,wsize=65536,tcp,timeo=600,retrans=2 \
truenas_ip:/mnt/pool/dataset /mnt/nfs_mount
# Или в /etc/fstab:
truenas_ip:/mnt/pool/dataset /mnt/nfs_mount nfs rw,async,noatime,nodev,nosuid,rsize=65536,wsize=65536,tcp,timeo=600,retrans=2 0 0
Шаг 6: Расширенная диагностика — когда ничего не помогает
Мониторинг в реальном времени
# Мониторинг сетевой активности
iftop -i ix0 -n # показывает кто сколько трафика гонит
# Дисковая активность
iostat -x 1
# ZFS I/O
zpool iostat -v 1
# Поиск узких мест
dtrace -n 'io:::start { printf("%s %d", args[0]->dev_statname, args[0]->b_bcount); }'
Проверка на аппаратные ошибки
# SMART дисков
smartctl -a /dev/ada0 | grep -E "(Reallocated|Pending|Uncorrectable|Temperature)"
# Ошибки памяти
dmesg | grep -i error
# Статус RAID (если используется)
zpool status -x
FAQ — частые вопросы и ответы
Почему скорость падает со временем при копировании больших файлов?
Это классическая проблема ZFS. Сначала данные пишутся в быстрый ZIL (если есть SLOG), потом происходит flush на основные диски. Решение: добавьте SSD в качестве SLOG устройства для пула.
Гигабитная сеть, а скорость только 30-40 МБ/с — что не так?
Скорее всего проблема в: 1) Кабеле Cat5 (нужен Cat5e/6), 2) Дуплексе (автосогласование сбоит), 3) Мелких файлах (recordsize не оптимизирован), 4) Включённом atime.
SSD кэш (L2ARC) не ускоряет передачу — почему?
L2ARC помогает только при повторном чтении одних и тех же данных. Для ускорения записи нужен SLOG (ZIL на SSD). Также L2ARC эффективен только при достаточном объёме ARC.
Разная скорость при копировании с разных клиентов
Проверьте: 1) Настройки сетевой карты клиента, 2) Антивирус (часто тормозит SMB), 3) Версию SMB (SMB1 медленный, нужен SMB2/3), 4) Размеры TCP Window на клиенте.
Чек-лист быстрой оптимизации
| Проблема | Решение | Ожидаемый прирост |
|---|---|---|
| Мелкие файлы копируются медленно | recordsize=128K, sync=disabled (осторожно!) | До 5x |
| Большие файлы не выходят на гигабит | recordsize=1M, atime=off, compression=lz4 | 20-40% |
| Скорость падает со временем | Добавить SLOG SSD, настроить ARC | Стабильная скорость |
| Высокая загрузка CPU при передаче | Отключить шифрование, использовать lz4 вместо gzip | Снижение CPU на 50% |
Помни: оптимизация — это итеративный процесс. Начинай с базовых тестов (iperf3, fio), затем настраивай сеть, потом протоколы (SMB/NFS), и только потом лезь в глубины ZFS. В 80% случаев проблема решается настройкой SMB и проверкой сетевого оборудования.
Если после всех оптимизаций передача по сети всё ещё тормозит — возможно, аппаратные ограничения (медленные диски, слабый CPU для шифрования). В этом случае рассматривайте апгрейд железа или пересмотр архитектуры хранения данных.