TrueNAS SMB: Настройка, оптимизация и устранение неполадок в Scale | AdminWiki

Настройка и оптимизация SMB/CIFS в TrueNAS Scale: Полное руководство для DevOps

05 января 2026 7 мин. чтения #cifs #devops #nas #samba #smb #truenas #truenas scale #сетевое хранилище

Что такое SMB и зачем он нужен в TrueNAS?

Представь, что твой TrueNAS — это большой цифровой склад. SMB (Server Message Block) — это протокол, который позволяет разным операционным системам (Windows, macOS, Linux) заходить на этот склад и работать с файлами, как будто они находятся на локальном компьютере. В контексте TrueNAS Scale, SMB — это основной способ организации файлового доступа для пользователей в сети.

Важно: В TrueNAS используется реализация Samba — открытого программного обеспечения, которое эмулирует работу Windows-сервера. Это позволяет создавать единое файловое пространство для гетерогенных сетей.

Подготовка к настройке SMB в TrueNAS Scale

Давай разберем, что нужно сделать перед тем, как включать общий доступ. Представь, что ты строишь дом — сначала нужен фундамент.

1. Создание пула и набора данных (Dataset)

Без пула данных SMB-шары создать не получится. Вот как это делается:

bash
# Проверка доступных дисков в системе
zpool status

# Создание пула (пример через CLI)
zpool create tank mirror /dev/sda /dev/sdb

# Создание набора данных с нужными параметрами
zfs create tank/smb_shares
zfs set compression=lz4 tank/smb_shares
zfs set atime=off tank/smb_shares  # Для повышения производительности

2. Настройка сетевых интерфейсов

Убедись, что сеть настроена правильно. Для SMB рекомендуется использовать статические IP-адреса:

  • Перейди в Network → Interfaces в веб-интерфейсе TrueNAS
  • Назначь статический IP-адрес на основном интерфейсе
  • Проверь настройки DNS и шлюза по умолчанию
  • Для повышения производительности рассмотри возможность агрегации каналов (LACP)

Пошаговая настройка SMB-шары в TrueNAS Scale

Теперь перейдем к самому интересному — созданию и настройке общего ресурса. Представь, что мы создаем общую папку для отдела разработки.

Шаг 1: Создание пользователей и групп

Правильная организация прав доступа — основа безопасности. Сначала создадим группу разработчиков:

bash
# Создание группы
sudo midclt call group.create '{"group": "developers", "sudo": false}'

# Создание пользователей
sudo midclt call user.create '{
    "username": "alex",
    "full_name": "Alex Developer",
    "password": "StrongPass123!",
    "group": 1001,
    "groups": [1001],
    "home": "/mnt/tank/home/alex",
    "shell": "/usr/bin/bash"
}'

Шаг 2: Создание SMB-шары через веб-интерфейс

Вот пошаговая инструкция через графический интерфейс:

  1. Перейди в Shares → Windows Shares (SMB)
  2. Нажми Add для создания новой шары
  3. Заполни основные параметры:
    • Path: Выбери созданный ранее набор данных (например, /mnt/tank/smb_shares)
    • Name: dev_share (имя, которое увидят пользователи)
    • Purpose: Выбери "Multi-user time machine" или "Default share parameters"
  4. В разделе Access настрой права доступа:
    • Добавь группу "developers" с правами "Read/Write"
    • Установи владельца и группу владельцев
  5. Сохрани конфигурацию

Шаг 3: Расширенные настройки SMB

Для тонкой настройки производительности и безопасности используем дополнительные параметры:

config
# Пример дополнительных параметров SMB в поле "Auxiliary Parameters"
# Оптимизация для гигабитной сети
aio read size = 1
aio write size = 1
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536

# Настройки кэширования
strict allocate = yes
strict sync = no

# Безопасность
server signing = required
smb encrypt = required

# Производительность при работе с множеством маленьких файлов
kernel share modes = no
posix locking = no
Внимание: Изменение параметров блокировок (locking) может привести к проблемам при одновременном доступе к файлам из нескольких клиентов. Тестируй изменения в тестовой среде!

Оптимизация производительности SMB в TrueNAS Scale

Правильная оптимизация может увеличить скорость передачи данных в 2-3 раза. Давай разберем ключевые моменты.

Сравнение настроек для разных сценариев

Сценарий Рекомендуемые настройки Ожидаемая скорость
Видеомонтаж (большие файлы) aio read/write size = 1, large read/write = yes 900+ Мбит/с на 1 Гбит сети
Веб-разработка (много мелких файлов) strict sync = no, socket options оптимизация Быстрый отклик, низкая задержка
Резервное копирование Настройки по умолчанию, focus на надежность Стабильная средняя скорость

Настройка ZFS для оптимальной работы с SMB

ZFS и SMB должны работать в гармонии. Вот ключевые параметры:

bash
# Оптимизация набора данных для SMB
zfs set atime=off tank/smb_shares          # Отключить обновление времени доступа
zfs set compression=lz4 tank/smb_shares    # Включить сжатие
zfs set recordsize=1M tank/smb_shares      # Для больших файлов
# или
zfs set recordsize=128K tank/smb_shares    # Для маленьких файлов

# Мониторинг производительности
zpool iostat -v 1                          # Статистика в реальном времени
zfs get all tank/smb_shares                # Все параметры набора данных

Типичные проблемы и их решение

Даже у опытных админов возникают проблемы с SMB. Вот самые частые и их решения.

Проблема 1: Медленная скорость передачи

Симптомы: Скорость ниже 50% от пропускной способности сети.

bash
# Диагностика:
# 1. Проверь сеть
iperf3 -c IP_TrueNAS -t 10

# 2. Проверь диски
iostat -x 1

# 3. Проверь настройки SMB
testparm -s /etc/samba/smb.conf

# Решения:
# Увеличь размеры буферов в дополнительных параметрах SMB:
socket options = TCP_NODELAY SO_RCVBUF=131072 SO_SNDBUF=131072

# Включи асинхронный ввод/вывод:
aio read size = 1
aio write size = 1

Проблема 2: Ошибки доступа "Access Denied"

Решение: Проверь цепочку прав доступа:

  1. Права на уровне файловой системы: ls -la /mnt/tank/smb_shares
  2. Настройки ACL в TrueNAS: Shares → Windows Shares → Edit → Access
  3. Параметры аутентификации: Services → SMB → Settings

Проблема 3: Шара не отображается в сетевом окружении

Решение:

bash
# 1. Проверь работу службы
sudo systemctl status smbd

# 2. Перезапусти SMB
sudo midclt call service.restart smb

# 3. Проверь настройки рабочей группы
sudo midclt call smb.config | grep workgroup

# 4. Принудительно обнови браузер сети (на клиенте Windows)
nbtstat -R

Автоматизация и мониторинг

Как настоящий DevOps, ты наверняка хочешь автоматизировать процессы. Вот полезные скрипты.

Скрипт для массового создания SMB-шар

python
#!/usr/bin/env python3
# create_smb_shares.py - автоматизация создания SMB-шар

import json
import subprocess

shares = [
    {
        "name": "dev_share",
        "path": "/mnt/tank/dev",
        "purpose": "default",
        "comment": "Development share"
    },
    {
        "name": "media_share",
        "path": "/mnt/tank/media",
        "purpose": "multimedia",
        "comment": "Media storage"
    }
]

for share in shares:
    cmd = [
        "sudo", "midclt", "call", "sharing.smb.create",
        json.dumps({
            "name": share["name"],
            "path": share["path"],
            "purpose": share["purpose"],
            "comment": share["comment"],
            "guestok": False,
            "abe": True
        })
    ]
    
    result = subprocess.run(cmd, capture_output=True, text=True)
    if result.returncode == 0:
        print(f"✓ Share '{share['name']}' created successfully")
    else:
        print(f"✗ Failed to create '{share['name']}': {result.stderr}")

Мониторинг активности SMB

bash
# Просмотр активных подключений
smbstatus

# Детальная статистика
sudo smbstatus -S  # По шаре
sudo smbstatus -L  # По блокировкам
sudo smbstatus -p  # По процессам

# Мониторинг в реальном времени
watch -n 5 'smbstatus | grep -A 10 "Service"'

Безопасность SMB в TrueNAS Scale

Безопасность — не опция, а необходимость. Вот минимальный набор мер.

  • Обязательное шифрование: Включи smb encrypt = required в глобальных настройках
  • Минимальная версия SMB: Установи server min protocol = SMB3_11 для отключения устаревших версий
  • Ограничение доступа по IP: Используй параметр hosts allow в настройках шары
  • Регулярное обновление: TrueNAS Scale получает обновления безопасности — устанавливай их
  • Аудит: Включи ведение логов и регулярно их проверяй
config
# Пример безопасной конфигурации в Auxiliary Parameters
# Обязательное шифрование
server signing = required
smb encrypt = required

# Только современные версии протокола
server min protocol = SMB3_11
client min protocol = SMB3_11

# Ограничение доступа (пример)
hosts allow = 192.168.1.0/24 10.0.0.0/8
hosts deny = 0.0.0.0/0

# Запрет анонимного доступа
restrict anonymous = 2
map to guest = Never
Поделиться:
Сохранить гайд? В закладки браузера