Бюджетный NAS для дизайн-студии: 5 ТБ хранилище за 20 000 рублей

Зачем дизайн-студии свой NAS

Дизайн-студия «АртДизайн» — 12 сотрудников, работающих с Photoshop, Illustrator и After Effects. Суммарный объём рабочих файлов — 5 ТБ, из которых 2 ТБ — архив завершённых проектов. Файлы хранились на внешних дисках, Google Drive и локальных машинах. Проблемы:

  • Нет единого хранилища — чтобы получить файл коллеги, нужно просить его расшарить через мессенджер.
  • Нет бэкапов — когда у дизайнера умер SSD, пропали две недели работы над проектом.
  • Google Drive не тянет — файлы PSD по 2–5 ГБ синхронизируются часами, а 5 ТБ в облаке стоит 4 500 руб/мес.
  • Бюджет ограничен — готовый Synology DS920+ стоит 55 000 руб без дисков. Руководитель студии попросил уложиться в 20 000 руб за всё, кроме дисков.

Выбор железа: б/у серверное vs готовый NAS

Мы сравнили три варианта:

ПараметрSynology DS920+Б/у Xeon-сборкаMini-PC + DAS
Стоимость55 000 ₽17 200 ₽25 000 ₽
CPUCeleron J4125Xeon E3-1260LN100
RAM4 ГБ (до 8)16 ГБ DDR316 ГБ DDR5
Отсеки для дисков44 (hot-swap)4 (через DAS)
Энергопотребление30–35 Вт45–55 Вт25–35 Вт
ОСDSM (проприетарная)TrueNAS/OMVTrueNAS/OMV
ZFS поддержкаBtrfs толькоПолная (16 ГБ RAM)Полная

Выбрали б/у Xeon-сборку — максимальная отдача за минимальные деньги. Детализация затрат:

  • Процессор Xeon E3-1260L (б/у) — 1 500 ₽. Четыре ядра, 8 потоков, TDP 45 Вт, встроенная графика для IPMI.
  • Материнская плата ASUS P8H61-I LX (б/у) — 1 500 ₽.
  • DDR3 16 ГБ (2×8 ГБ, б/у) — 2 000 ₽. Критично для ZFS — минимум 8 ГБ, рекомендуется 1 ГБ на каждый ТБ хранилища.
  • Корпус InnoVision 4 Bays с hot-swap — 6 000 ₽.
  • БП Exgate ServerPro 1U-F300S Flex — 2 000 ₽.
  • Кулер ID-Cooling IS-30 — 1 000 ₽.
  • Intel PRO/1000 MT dual-port (б/у) — 2 800 ₽. Два гигабитных порта для агрегации (LACP).
  • USB-флешка 16 ГБ для ОС — 400 ₽.

Итого без дисков: 17 200 ₽.

TrueNAS vs OpenMediaVault: выбор ОС

Два главных кандидата для NAS-ориентированной ОС:

TrueNAS CORE (бывший FreeNAS):

  • Основан на FreeBSD, нативная поддержка ZFS.
  • Веб-интерфейс для управления пулами, шарами, снапшотами.
  • Встроенная репликация ZFS на удалённый сервер.
  • Минус: FreeBSD хуже поддерживает некоторое железо (Wi-Fi, USB-контроллеры).

TrueNAS SCALE:

  • Основан на Debian Linux, поддержка Docker и K8s.
  • ZFS через OpenZFS (тот же код, что и на FreeBSD).
  • Лучшая совместимость с железом.
  • Можно запускать контейнеры (Plex, Nextcloud).

OpenMediaVault (OMV):

  • Основан на Debian, легковесный, минимальные требования к ресурсам.
  • Поддержка ext4, Btrfs, ZFS (через плагин).
  • Проще в настройке для новичков.
  • Минус: ZFS — через сторонний плагин, не так глубоко интегрирован.

Мы выбрали TrueNAS SCALE — нативный ZFS на Linux, Docker для будущего Nextcloud, и веб-интерфейс для управления. Установка на USB-флешку заняла 15 минут.

ZFS RAID-Z2: настройка пула хранения

Для 5 ТБ данных с отказоустойчивостью взяли 4 диска Seagate IronWolf 4 ТБ (ST4000VN006) по 7 500 ₽ каждый. IronWolf — серия для NAS: оптимизированы для работы 24/7, вибростойкие, гарантия 3 года.

Конфигурация RAID-Z2 (аналог RAID 6) — выдерживает одновременный выход из строя двух дисков:

# Создаём пул через CLI (можно через веб-интерфейс TrueNAS)
zpool create -f \
  -o ashift=12 \
  -o autoexpand=on \
  -O compression=lz4 \
  -O atime=off \
  -O xattr=sa \
  -O acltype=posixacl \
  -O recordsize=1M \
  datapool raidz2 \
  /dev/disk/by-id/ata-ST4000VN006_ZGY0001 \
  /dev/disk/by-id/ata-ST4000VN006_ZGY0002 \
  /dev/disk/by-id/ata-ST4000VN006_ZGY0003 \
  /dev/disk/by-id/ata-ST4000VN006_ZGY0004

# Проверяем
zpool status datapool
#   pool: datapool
#  state: ONLINE
# config:
#   NAME                                STATE     READ WRITE CKSUM
#   datapool                            ONLINE       0     0     0
#     raidz2-0                          ONLINE       0     0     0
#       ata-ST4000VN006_ZGY0001         ONLINE       0     0     0
#       ata-ST4000VN006_ZGY0002         ONLINE       0     0     0
#       ata-ST4000VN006_ZGY0003         ONLINE       0     0     0
#       ata-ST4000VN006_ZGY0004         ONLINE       0     0     0

zfs list
# NAME       USED  AVAIL  REFER  MOUNTPOINT
# datapool   312K  7.10T   128K  /mnt/datapool

Разбираем ключевые опции:

  • ashift=12 — размер сектора 4096 байт (для современных AF-дисков). Неправильный ashift невозможно изменить после создания пула!
  • compression=lz4 — прозрачное сжатие. Для графики и проектных файлов даёт 15–30% экономии места. LZ4 практически не нагружает CPU.
  • recordsize=1M — увеличенный размер записи для больших файлов (PSD, видео). Для баз данных использовали бы 8K–16K.
  • atime=off — отключаем обновление времени доступа при каждом чтении. Экономит до 15% IOPS.

Полезный объём при RAID-Z2 из 4×4 ТБ: ~7.1 ТБ (2 диска на паритет). Для 5 ТБ данных — запас 40%.

Samba и NFS: сетевые шары

Создаём датасеты ZFS и настраиваем сетевой доступ:

# Создаём датасеты для разных отделов
zfs create datapool/projects
zfs create datapool/archive
zfs create datapool/shared

# Для архива — более агрессивное сжатие
zfs set compression=zstd datapool/archive

# Квоты
zfs set quota=4T datapool/projects
zfs set quota=3T datapool/archive

Samba для Windows- и Mac-клиентов:

# /etc/samba/smb.conf
[global]
    workgroup = ARTDESIGN
    server string = NAS АртДизайн
    security = user
    map to guest = never

    # Производительность
    socket options = TCP_NODELAY IPTOS_LOWDELAY
    read raw = yes
    write raw = yes
    use sendfile = yes
    aio read size = 16384
    aio write size = 16384

    # macOS совместимость
    vfs objects = catia fruit streams_xattr
    fruit:metadata = stream
    fruit:model = MacSamba
    fruit:posix_rename = yes
    fruit:veto_appledouble = no
    fruit:nfs_aces = no

[Projects]
    path = /mnt/datapool/projects
    valid users = @designers
    read only = no
    create mask = 0664
    directory mask = 0775
    force group = designers

[Archive]
    path = /mnt/datapool/archive
    valid users = @designers
    read only = yes
    write list = admin

[Shared]
    path = /mnt/datapool/shared
    valid users = @designers, @managers
    read only = no

NFS для Linux-рабочих станций (два дизайнера на Ubuntu):

# /etc/exports
/mnt/datapool/projects  10.0.10.0/24(rw,sync,no_subtree_check,no_root_squash)
/mnt/datapool/shared    10.0.10.0/24(rw,sync,no_subtree_check)

exportfs -ra

# На клиенте
mount -t nfs4 nas.artdesign.local:/mnt/datapool/projects /mnt/projects

Скорость по гигабитной сети: чтение 110–115 МБ/с, запись 95–105 МБ/с. Близко к теоретическому пределу 125 МБ/с. С LACP-агрегацией двух портов: чтение до 220 МБ/с при параллельном доступе нескольких клиентов.

Снапшоты и offsite-бэкап в S3

ZFS-снапшоты — одна из главных причин выбора этой файловой системы. Снапшот создаётся мгновенно (copy-on-write) и позволяет откатить любой файл к предыдущему состоянию:

# Расписание автоматических снапшотов
# Ежечасные — хранить 24
# Ежедневные — хранить 30
# Еженедельные — хранить 12

# Создаём скрипт
cat > /usr/local/bin/zfs-snapshot.sh << 'SCRIPT'
#!/bin/bash
DATASET="$1"
TYPE="$2"  # hourly, daily, weekly
KEEP="$3"
TAG="auto-${TYPE}-$(date +%Y%m%d-%H%M)"

# Создаём снапшот
zfs snapshot "${DATASET}@${TAG}"

# Удаляем старые
zfs list -t snapshot -o name -s creation -r "$DATASET" \
  | grep "auto-${TYPE}" \
  | head -n -${KEEP} \
  | xargs -r -n1 zfs destroy
SCRIPT
chmod +x /usr/local/bin/zfs-snapshot.sh

# Crontab
0 * * * * /usr/local/bin/zfs-snapshot.sh datapool/projects hourly 24
0 2 * * * /usr/local/bin/zfs-snapshot.sh datapool/projects daily 30
0 3 * * 0 /usr/local/bin/zfs-snapshot.sh datapool/projects weekly 12

Для пользователей снапшоты доступны через скрытую директорию .zfs/snapshot/ прямо в Samba-шаре. Дизайнер может сам восстановить удалённый файл без обращения к админу.

Offsite-бэкап в S3-совместимое хранилище:

# Используем restic — поддерживает S3, дедупликация, шифрование
apt install restic

# Инициализируем репозиторий в S3
export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
restic -r s3:s3.storage.selcloud.ru/artdesign-backup init

# Бэкап
restic -r s3:s3.storage.selcloud.ru/artdesign-backup backup \
  /mnt/datapool/projects \
  /mnt/datapool/archive \
  --exclude='*.tmp' \
  --exclude='.DS_Store'

# Ежедневный бэкап в cron
0 4 * * * /usr/local/bin/restic-backup.sh >> /var/log/restic-backup.log 2>&1

# Ротация: 7 ежедневных, 4 еженедельных, 6 ежемесячных
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune

Restic с дедупликацией: первый полный бэкап 5 ТБ занял 18 часов, последующие инкрементальные — 10–30 минут (только изменённые блоки). Стоимость S3 для 5 ТБ — около 750 руб/мес в Selectel.

Энергопотребление и итоговая стоимость владения

NAS работает 24/7, поэтому энергопотребление — значимая статья расходов:

# Замеры ваттметром
# Idle (диски в спящем режиме): 28 Вт
# Idle (диски активны): 42 Вт
# Нагрузка (чтение 4 дисков): 55 Вт
# Пиковая (scrub + запись): 62 Вт

Средняя нагрузка в течение дня — около 45 Вт. В месяц: 45 × 24 × 30 = 32.4 кВт·ч. При тарифе 6.5 руб/кВт·ч — 211 руб/мес.

Сравнение TCO за 3 года:

СтатьяСамосборкаSynology DS920+Облако (5 ТБ)
Оборудование17 200 ₽55 000 ₽0 ₽
Диски (4×4 ТБ)30 000 ₽30 000 ₽
Электричество (36 мес)7 596 ₽5 616 ₽
Подписка (36 мес)0 ₽0 ₽162 000 ₽
Offsite S3 (36 мес)27 000 ₽27 000 ₽
Итого81 796 ₽117 616 ₽162 000 ₽

Самосборка экономит 36 000 ₽ по сравнению с Synology и 80 000 ₽ по сравнению с облаком за 3 года. При этом ZFS на 16 ГБ RAM работает быстрее, чем Btrfs на Synology с 4 ГБ. Единственный минус — нет аккуратного мобильного приложения Synology, но для рабочей студии это некритично.

Температура дисков стабильно держится на 33–36°C благодаря прямому обдуву корпусным вентилятором. Заменили штатный вентилятор на Noctua NF-A8 — уровень шума снизился с 35 дБА до 22 дБА, что незаметно в офисе.

Часто задаваемые вопросы

ZFS предлагает контроль целостности данных через контрольные суммы (защита от bit rot), мгновенные снапшоты, прозрачное сжатие и нативную репликацию. Ext4 + mdadm не обнаруживает повреждение данных на диске. Btrfs поддерживает часть этих функций, но его RAID 5/6 реализация до сих пор считается нестабильной. ZFS требует больше RAM (1 ГБ на ТБ хранения), но для NAS это оправдано.
Минимум 8 ГБ для базовой работы. Рекомендация — 1 ГБ RAM на каждый ТБ хранилища для оптимальной работы ARC-кеша. Для нашего пула 7 ТБ поставили 16 ГБ — ZFS использует свободную RAM для кеширования, что ускоряет повторное чтение файлов в 10–50 раз.
RAID-Z1 (аналог RAID 5) выдерживает потерю одного диска, но при восстановлении нагрузка на оставшиеся диски максимальная — и если второй диск откажет в этот момент, все данные потеряны. С ростом объёма дисков (4+ ТБ) вероятность URE при rebuild растёт. RAID-Z2 выдерживает два отказа одновременно, что критично для дисков большой ёмкости.
Расширить существующий vdev (группу RAID-Z) нельзя — это ограничение ZFS. Но можно добавить второй vdev в пул: например, добавить ещё 4 диска как второй RAID-Z2, и пул увеличится. Начиная с OpenZFS 2.3 появилась экспериментальная поддержка RAIDZ expansion, позволяющая добавлять диски в существующий vdev.
Для домашнего и малого бизнеса — однозначно да. Серверные Xeon прошлых поколений стоят копейки на вторичке, при этом поддерживают ECC-память (критично для ZFS), имеют низкий TDP и высокую надёжность. Главное — проверяйте комплектующие перед покупкой (memtest86 для RAM, SMART для дисков) и имейте запасной план на случай поломки.

Нужна помощь с проектом?

Специалисты АйТи Фреш помогут с архитектурой, DevOps, безопасностью и разработкой — 15+ лет опыта

📞 Связаться с нами
#nas сборка#truenas#openmediavault#zfs#raid-z2#samba#nfs#бюджетный сервер
Комментарии 0

Оставить комментарий

загрузка...