- Home »

Как настроить монтирование NFS на Ubuntu 24.04
Сегодня разберёмся, как быстро и без боли настроить монтирование NFS на Ubuntu 24.04. Почему это важно? Потому что NFS — это один из самых простых и надёжных способов расшарить папки между серверами или рабочими станциями в одной сети. Если вы когда-нибудь сталкивались с задачей: «А как бы мне быстро подключить общий каталог к нескольким машинам, чтобы не городить велосипед с rsync или scp?» — вот оно, решение. В этой статье — только практические советы, реальные кейсы, схемы и команды, которые работают. Без воды, только мясо. Погнали!
Как работает NFS и зачем он нужен?
NFS (Network File System) — это сетевой протокол, который позволяет монтировать удалённые каталоги так, будто они локальные. То есть, у вас есть сервер с папкой /srv/data
, и вы хотите, чтобы на другом сервере эта папка была доступна по пути /mnt/data
. Всё, что внутри — файлы, права, структура — будет видно и доступно, как будто это обычная локальная папка.
- Прозрачность: Пользователь или процесс не видит разницы между локальным и удалённым каталогом.
- Гибкость: Можно расшарить хоть весь диск, хоть отдельную папку.
- Скорость: На локальной сети NFS работает очень быстро, особенно с правильными настройками.
- Универсальность: Работает на Linux, BSD, macOS и даже Windows (через сторонние клиенты).
NFS — это не только про «шаринг». Это про автоматизацию, масштабирование и удобство. Например, если у вас несколько серверов приложений, а данные должны храниться централизованно, NFS — ваш друг. Или если вы хотите быстро развернуть тестовую среду, где все машины видят одни и те же файлы.
Как быстро и просто всё настроить?
Давайте разложим по шагам: что нужно сделать, чтобы всё заработало. Будем считать, что у нас есть два сервера: nfs-server (где хранятся файлы) и nfs-client (который будет монтировать расшаренную папку).
- Установить необходимые пакеты.
- Настроить экспорт (экспортируемую папку) на сервере.
- Открыть нужные порты в firewall (если он есть).
- Смонтировать папку на клиенте.
- Добавить монтирование в автозагрузку (fstab).
1. Установка пакетов
# На сервере:
sudo apt update
sudo apt install nfs-kernel-server
# На клиенте:
sudo apt update
sudo apt install nfs-common
2. Настройка экспорта на сервере
Допустим, вы хотите расшарить папку /srv/data
для клиента с IP 192.168.1.100
. Открываем /etc/exports
:
sudo nano /etc/exports
Добавляем строку:
/srv/data 192.168.1.100(rw,sync,no_subtree_check)
- rw — разрешить запись
- sync — операции записи синхронны (безопаснее, но чуть медленнее)
- no_subtree_check — отключить проверку поддерева (ускоряет работу, если не нужно ограничивать доступ к подкаталогам)
Если нужно расшарить для всей подсети:
/srv/data 192.168.1.0/24(rw,sync,no_subtree_check)
Применяем изменения:
sudo exportfs -ra
sudo systemctl restart nfs-server
3. Открываем порты в firewall (если используется UFW)
sudo ufw allow from 192.168.1.0/24 to any port nfs
sudo ufw reload
Если firewall другой — откройте порты 2049 (NFS), 111 (rpcbind).
4. Монтируем папку на клиенте
sudo mkdir -p /mnt/data
sudo mount -t nfs 192.168.1.10:/srv/data /mnt/data
Где 192.168.1.10
— IP вашего NFS-сервера.
5. Добавляем в автозагрузку (fstab)
echo "192.168.1.10:/srv/data /mnt/data nfs defaults 0 0" | sudo tee -a /etc/fstab
Теперь при перезагрузке всё смонтируется автоматически.
Примеры, схемы, практические советы
Вот типичная схема:
+-------------------+ +-------------------+ | nfs-server | <-----> | nfs-client | | /srv/data | | /mnt/data | +-------------------+ +-------------------+
А теперь — реальные кейсы из жизни.
Кейс | Что сделали | Результат | Рекомендации |
---|---|---|---|
Быстрый деплой тестовой среды | Расшарили папку с образами Docker через NFS на несколько VM | Экономия места, ускорение CI/CD | Используйте опцию no_root_squash только для доверенных клиентов |
Бэкапы на отдельный сервер | Монтировали NFS как целевой каталог для rsync | Простота, надёжность, скорость | Проверяйте права доступа, чтобы не получить “Permission denied” |
Проблемы с производительностью | Монтировали NFS через Wi-Fi | Лаги, таймауты, потеря файлов | Используйте только проводную сеть для NFS |
Масштабирование веб-приложения | Общий каталог для статики на нескольких веб-серверах | Удобно, но возможны гонки при одновременной записи | Для write-heavy нагрузок рассмотрите GlusterFS или Ceph |
Похожие решения, альтернативы и утилиты
- Samba (SMB/CIFS): Хорош для смешанных сетей (Windows/Linux), но чуть сложнее в настройке и медленнее на больших файлах.
- SSHFS: Монтирование через SSH. Просто, но медленно и не для больших нагрузок.
- GlusterFS, CephFS: Распределённые файловые системы для масштабируемых кластеров. Сложнее, но мощнее.
- rsync: Для односторонней синхронизации, не для монтирования.
Решение | Плюсы | Минусы | Когда использовать |
---|---|---|---|
NFS | Просто, быстро, нативно для Linux | Без шифрования, не для WAN | Внутри локальной сети, для Linux |
Samba | Кроссплатформенно, поддержка Windows | Сложнее настройка, чуть медленнее | Гетерогенные сети (Windows + Linux) |
SSHFS | Безопасно, просто | Медленно, не для больших файлов | Временное монтирование, удалённый доступ |
GlusterFS/CephFS | Масштабируемо, отказоустойчиво | Сложно, ресурсоёмко | Кластеры, большие проекты |
Официальная документация по NFS: https://wiki.archlinux.org/title/NFS
Интересные факты и нестандартные способы использования
- Можно монтировать NFS не только на серверах, но и на Android-устройствах (через Termux и nfs-utils).
- С помощью NFS можно расшарить папку между виртуальными машинами на одном хосте, минуя виртуальные диски.
- Некоторые NAS (Synology, QNAP) поддерживают экспорт NFS «из коробки» — удобно для резервного копирования.
- Можно использовать NFS для хранения контейнеров LXC/LXD, чтобы быстро мигрировать их между хостами.
- В Kubernetes Persistent Volumes можно подключать через NFS — удобно для stateful приложений.
Автоматизация и скрипты: новые возможности
NFS отлично ложится в автоматизацию. Например, вы можете:
- Автоматически монтировать каталоги при старте контейнеров или виртуальных машин.
- Использовать Ansible или bash-скрипты для массового деплоя и настройки.
- Организовать централизованное хранение логов или бэкапов.
- Сделать «горячую» миграцию сервисов между серверами без копирования данных.
Пример простого bash-скрипта для монтирования NFS на нескольких клиентах:
#!/bin/bash
NFS_SERVER="192.168.1.10"
NFS_SHARE="/srv/data"
MOUNT_POINT="/mnt/data"
for HOST in client1 client2 client3; do
ssh $HOST "sudo mkdir -p $MOUNT_POINT && sudo mount -t nfs $NFS_SERVER:$NFS_SHARE $MOUNT_POINT"
done
Статистика и сравнение
- В крупных компаниях (Google, Facebook) NFS используется для быстрого прототипирования и тестовых сред, но для продакшена — только в изолированных сетях.
- Средняя скорость передачи по NFS на гигабитной сети — 80-110 МБ/с (почти как локальный диск, если нет узких мест).
- В отличие от Samba, NFS проще масштабируется на десятки клиентов без потери производительности.
- В Ubuntu 24.04 улучшена поддержка NFSv4, теперь можно использовать Kerberos-авторизацию и ACL для тонкой настройки прав.
Выводы и рекомендации
NFS — это быстрый, надёжный и проверенный временем способ расшарить файлы между Linux-серверами. Если вам нужно быстро организовать общий доступ к данным, автоматизировать деплой, централизовать бэкапы или просто упростить жизнь — берите на вооружение. Главное — не забывайте про безопасность: не открывайте NFS в интернет, ограничивайте доступ по IP, используйте NFSv4 и Kerberos, если нужно шифрование и авторизация.
- Используйте NFS для локальных сетей, тестовых и продакшн-сред, где важна скорость и простота.
- Для сложных сценариев (кластеризация, отказоустойчивость) смотрите в сторону GlusterFS и CephFS.
- Не забывайте про автоматизацию — NFS отлично интегрируется в скрипты и CI/CD пайплайны.
- Если нужен VPS для тестов — заказать VPS, если нужен выделенный сервер — заказать выделенный сервер.
Пробуйте, экспериментируйте, не бойтесь ломать — NFS легко настраивается и так же легко чинится. Если остались вопросы — гуглите, читайте официальную документацию или спрашивайте на StackOverflow. Удачи в автоматизации!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.