NAS

Материал из wiki

NAS: подключение сетевых хранилищ и интеграция с сервисами

NAS (Network Attached Storage) — это сетевое хранилище, которое предоставляет доступ к файлам по протоколам NFS, SMB/CIFS, AFP и другим. В контексте self‑hosted решений NAS часто используется как:

  • внешнее хранилище для Nextcloud (расширение дискового пространства);
  • резервное хранилище для бэкапов Docker-томов и баз данных;
  • централизованное файловое хранилище для нескольких серверов.

В этой статье описано подключение NAS-шары к серверам на Linux (Ubuntu/Debian), Windows и macOS, а также монтирование этих шаров в Docker-контейнеры и интеграция с Nextcloud.

1. Типы подключений

Протокол Порт Описание ОС
NFS (Network File System) 2049 (TCP/UDP) нативная файловая система для UNIX/Linux, высокая производительность Linux, macOS, Windows (с клиентом)
SMB/CIFS (Server Message Block) 445 (TCP), 139 (TCP) универсальный протокол для Windows и всех основных ОС Windows, Linux, macOS
AFP (Apple Filing Protocol) 548 (TCP) устаревающий протокол Apple, рекомендуется использовать SMB macOS (режим совместимости)

Для большинства современных систем рекомендуются NFS (для Linux‑серверов) и SMB (для смешанных сред и Windows).

2. Подключение NAS по NFS (Linux)

2.1. Установка клиента NFS

На клиентской машине (ваш сервер) установите пакет:

sudo apt update
sudo apt install nfs-common -y

2.2. Монтирование шары вручную

Предположим, NAS-сервер имеет IP 192.168.1.100, а шара называется /export/nas_share.

Создайте точку монтирования:

sudo mkdir -p /mnt/nas

Смонтируйте:

sudo mount -t nfs 192.168.1.100:/export/nas_share /mnt/nas

Проверьте:

df -h | grep nas

2.3. Автоматическое монтирование при загрузке (fstab)

Добавьте строку в /etc/fstab:

192.168.1.100:/export/nas_share /mnt/nas nfs defaults,noatime 0 0

Проверьте монтирование:

sudo mount -a

2.4. Опции NFS для производительности

Для улучшения производительности добавьте опции:

192.168.1.100:/export/nas_share /mnt/nas nfs rw,hard,intr,noatime,vers=4.2,timeo=600,retrans=5 0 0
  • hard — повторять запросы при сбое (вместо soft).
  • intr — разрешить прерывание запросов (для отказоустойчивости).
  • noatime — не обновлять время доступа к файлам (повышает скорость).
  • vers=4.2 — использовать NFSv4.2 (поддержка современных возможностей).

3. Подключение NAS по SMB/CIFS (Linux)

3.1. Установка клиента SMB

sudo apt install cifs-utils -y

3.2. Создание файла с учётными данными

Для безопасного хранения логина и пароля создайте файл ~/.smbcredentials:

username=your_smb_user
password=your_smb_password
domain=WORKGROUP

Установите права доступа:

chmod 600 ~/.smbcredentials

3.3. Монтирование шары

Создайте точку монтирования:

sudo mkdir -p /mnt/nas_smb

Смонтируйте:

sudo mount -t cifs //192.168.1.100/share_name /mnt/nas_smb -o credentials=/home/user/.smbcredentials,uid=33,gid=33,file_mode=0755,dir_mode=0755
  • uid=33,gid=33 — владелец www-data (пользователь веб-сервера). Если монтируете для другого пользователя, укажите его uid/gid.
  • file_mode и dir_mode — права доступа.

3.4. Автоматическое монтирование (fstab)

Добавьте строку в /etc/fstab:

//192.168.1.100/share_name /mnt/nas_smb cifs credentials=/home/user/.smbcredentials,uid=33,gid=33,file_mode=0755,dir_mode=0755,iocharset=utf8 0 0

4. Подключение NAS на Windows

4.1. Подключение сетевого диска (графический способ)

  1. Откройте «Проводник».
  2. Нажмите правой кнопкой на «Этот компьютер» → «Подключить сетевой диск».
  3. Выберите букву диска и укажите путь: \\192.168.1.100\share_name.
  4. Введите учётные данные (если требуется).
  5. Отметьте «Восстанавливать при входе в систему» для автоматического подключения.

4.2. Подключение через командную строку (cmd)

net use Z: \\192.168.1.100\share_name /user:username password /persistent:yes

4.3. Доступ к NAS из WSL2

Если вы используете WSL2 с Ubuntu, смонтированная на Windows шара доступна по пути /mnt/z/ (если буква диска Z:). Но для лучшей производительности лучше монтировать SMB-шару напрямую внутри WSL2 через mount (см. раздел для Linux).

5. Подключение NAS на macOS

5.1. Графический способ

  1. Откройте Finder → «Переход» → «Подключение к серверу».
  2. Введите smb://192.168.1.100/share_name или nfs://192.168.1.100/export/nas_share.
  3. Введите учётные данные.
  4. Шара появится в боковой панели Finder и будет автоматически монтироваться при входе, если добавить её в «Объекты входа» в системных настройках.

5.2. Командная строка (для SMB)

mkdir -p /Volumes/nas_smb
sudo mount -t smbfs //username:password@192.168.1.100/share_name /Volumes/nas_smb

Для автоматического монтирования добавьте запись в /etc/fstab (подробнее в документации Apple).

6. Монтирование NAS-шары в Docker

Чтобы контейнеры могли использовать NAS-хранилище, есть два способа:

6.1. Bind mount (прямая привязка папки хоста)

Если шара смонтирована на хост-системе (например, в /mnt/nas), вы можете привязать эту папку в контейнер:

docker run -d --name my-app -v /mnt/nas:/app/data my-image

В Docker Compose:

volumes:
  - /mnt/nas:/app/data

6.2. Использование плагина NFS для Docker (рекомендуется для продакшена)

Docker имеет встроенную поддержку NFS-томов через драйвер nfs. Это позволяет не монтировать шару на хост, а подключать её напрямую в контейнер.

Создайте том:

docker volume create --driver local \
  --opt type=nfs \
  --opt o=addr=192.168.1.100,rw,noatime \
  --opt device=:/export/nas_share \
  nas_volume

Используйте этот том в Compose:

services:
  app:
    image: nextcloud
    volumes:
      - nas_volume:/var/www/html/data
volumes:
  nas_volume:
    external: true

Этот подход безопаснее, так как не требует монтирования на хост и позволяет Docker управлять подключением.

7. Интеграция с Nextcloud (внешнее хранилище)

После того как NAS-папка смонтирована (на хост или как Docker-том), её можно добавить как внешнее хранилище в Nextcloud.

  1. Зайдите в Nextcloud как администратор.
  2. Перейдите в «Настройки» → «Администрирование» → «Внешнее хранилище».
  3. Включите приложение «External Storage Support» (если не активно).
  4. Нажмите «Добавить хранилище» → выберите «Local».
  5. В поле «Путь» укажите путь внутри контейнера (например, /mnt/nas или /var/www/html/data/external, если вы привязали том).
  6. Укажите доступную для пользователей папку, права доступа и сохраните.

Теперь пользователи смогут видеть эту папку в своём файловом менеджере Nextcloud.

8. Рекомендации по производительности и безопасности

  • Используйте NFSv4 (или выше) вместо v3, так как он быстрее и безопаснее.
  • Для SMB включайте опцию cache=strict или cache=none в зависимости от сценария.
  • Если NAS используется для Nextcloud, убедитесь, что папка данных доступна для записи пользователю www-data (uid 33) или тому пользователю, под которым работает PHP-FPM.
  • Настройте бэкап данных с NAS на другой носитель (например, облачный или внешний диск) — NAS не является гарантией сохранности.
  • Ограничьте доступ к NAS-шарам по IP-адресам через файрвол или настройки самого NAS.
  • Для чувствительных данных используйте шифрование на стороне клиента (например, EncFS или Cryptomator) перед записью на NAS.

9. Полезные команды

Команда Назначение
df -h посмотреть смонтированные файловые системы
mount -t nfs смонтировать NFS-шару
mount -t cifs смонтировать SMB-шару
umount /mnt/nas отмонтировать шару
showmount -e 192.168.1.100 посмотреть доступные экспорты на NFS-сервере (только если разрешено)
smbclient -L //192.168.1.100 -U username просмотр списка SMB-ресурсов

См. также

  • Linux – монтирование NAS в Linux
  • Windows – подключение сетевого диска в Windows
  • macOS – подключение NAS в macOS
  • Docker – использование томов и bind mounts
  • Nextcloud – настройка внешнего хранилища в Nextcloud
  • ZeroTier – доступ к NAS через виртуальную сеть