NFS настройка · 6 min read · Dec 26, 2025

Настройка NFS сервера и клиента на Debian 9 (Stretch)

Этот гид объясняет, как настроить NFS сервер и NFS клиент на Debian 9. NFS означает Сетевую файловую систему; через NFS клиент может получить доступ (чтение, запись) к удаленной общей папке на NFS сервере так, как будто она находится на локальном жестком диске. В этом учебнике я покажу вам два различных экспорта NFS: экспорт клиентского каталога, который хранит файлы как пользователь nobody/nogroup без сохранения прав файловой системы, и экспорт каталога /var/www, который сохраняет права и владельца файлов, как требуется в настройке хостинга.

1 Предварительная заметка

Я использую две системы Debian Wheezy:

  • NFS Сервер: server.example.com, IP адрес: 192.168.1.100
  • NFS Клиент: client.example.com, IP адрес: 192.168.1.101

2 Установка NFS

Убедитесь, что сервер обновлен, обновив списки пакетов и установив ожидающие обновления на обоих серверах

apt-get update
apt-get upgrade

Затем продолжите с установкой NFS сервера и клиента.

сервер:

На NFS сервере мы выполняем:

apt-get install nfs-kernel-server nfs-common

Затем мы создаем системные ссылки для запуска NFS сервера и запускаем его:

клиент:

На клиенте мы можем установить NFS следующим образом (это на самом деле то же самое, что и на сервере):

apt-get install nfs-common

3 Экспортирование каталогов на сервере

сервер:

Я хотел бы сделать каталоги /home/client1 и /var/www доступными для клиента, чтобы показать два различных режима доступа к NFS серверу. Каталог /home/client1 делится в стандартном режиме, так что все файлы, записанные в этот каталог, хранятся как пользователь nobody и группа nogroup. Для каталога /var/www я использую опцию no_root_squash, которая инструктирует NFS сервер сохранять права и владельца файлов. Это, например, требуется, когда вы хотите экспортировать каталог /var/www веб-сервера, управляемого ISPConfig 3.

Сначала я создам каталог /home/client1

mkdir /home/client1  
chown nobody:nogroup /home/client1  
chmod 755 /home/client1

Каталог /var/www, скорее всего, уже существует на вашем сервере. Если нет, то создайте его:

mkdir /var/www  
chown root:root /var/www  
chmod 755 /var/www

Теперь мы должны изменить /etc/exports, где мы “экспортируем” наши NFS ресурсы. Мы указываем /home/client1 и /var/www как NFS ресурсы и говорим NFS делать доступы к /home/client1 как пользователь nobody (чтобы узнать больше о /etc/exports, его формате и доступных опциях, посмотрите на

man 5 exports

)

nano /etc/exports
/home/client1           192.168.1.101(rw,sync,no_subtree_check)
/var/www        192.168.1.101(rw,sync,fsid=0,crossmnt,no_subtree_check,no_root_squash)

(Опция no_root_squash делает так, что /var/www будет доступен как root.)

Чтобы применить изменения в /etc/exports, мы перезапускаем сервер ядра nfs

service nfs-kernel-server restart

4 Монтирование NFS ресурсов на клиенте

клиент:

Сначала мы создаем каталоги, где мы хотим смонтировать NFS ресурсы, например:

mkdir -p /mnt/nfs/home/client1  
mkdir -p /var/www

Если каталог /var/www уже существует на вашем сервере, то остановите apache, переименуйте каталог и создайте новый пустой каталог как точку монтирования

service apache2 stop  
mv /var/www /var/www_bak  
mkdir -p /var/www

После этого мы можем смонтировать их следующим образом:

mount 192.168.1.100:/home/client1 /mnt/nfs/home/client1  
mount 192.168.1.100:/var/www /var/www

Теперь вы должны увидеть два NFS ресурса в выводах

df -h
root@server1:/tmp# df -h  
Filesystem Size Used Avail Use% Mounted on  
udev 990M 0 990M 0% /dev  
tmpfs 201M 6.0M 195M 3% /run  
/dev/sda1 28G 1.2G 25G 5% /  
tmpfs 1001M 0 1001M 0% /dev/shm  
tmpfs 5.0M 0 5.0M 0% /run/lock  
tmpfs 1001M 0 1001M 0% /sys/fs/cgroup  
tmpfs 200M 0 200M 0% /run/user/1000  
192.168.1.100:/home/client1 28G 1.2G 25G 5% /mnt/nfs/home/client1  
192.168.1.100:/var/www 28G 1.2G 25G 5% /var/www  
root@server1:/tmp#

и

mount
root@server1:/tmp# mount  
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)  
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)  
udev on /dev type devtmpfs (rw,nosuid,relatime,size=1012912k,nr_inodes=253228,mode=755)  
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)  
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204804k,mode=755)  
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)  
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)  
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)  
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)  
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)  
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)  
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)  
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)  
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)  
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)  
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)  
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)  
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)  
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)  
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)  
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)  
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=9848)  
mqueue on /dev/mqueue type mqueue (rw,relatime)  
debugfs on /sys/kernel/debug type debugfs (rw,relatime)  
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)  
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=204800k,mode=700,uid=1000,gid=1000)  
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)  
192.168.1.100:/home/client1 on /mnt/nfs/home/client1 type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)  
192.168.1.100:/var/www on /var/www type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)  
root@server1:/tmp#

5 Тестирование

На клиенте вы теперь можете попробовать создать тестовые файлы на NFS ресурсах:

клиент:

touch /mnt/nfs/home/client1/test.txt  
touch /var/www/test.txt

Теперь перейдите на сервер и проверьте, можете ли вы увидеть оба тестовых файла:

сервер:

ls -l /home/client1/
root@server1:/tmp# ls -l /home/client1/  
total 0  
-rw-r--r-- 1 nobody nogroup 0 Nov 16 10:52 test.txt  
root@server1:/tmp#
ls -l /var/www
root@server1:/tmp# ls -l /var/www  
total 0  
-rw-r--r-- 1 root root 0 Nov 16 10:52 test.txt  
root@server1:/tmp#

(Обратите внимание на разные владельцы тестовых файлов: NFS ресурс /home/client1 доступен как nobody / nogroup и принадлежит nobody / nogroup; ресурс /var/www доступен как root, поэтому /var/www/test.txt принадлежит пользователю и группе root.)

6 Монтирование NFS ресурсов при загрузке

Вместо того, чтобы монтировать NFS ресурсы вручную на клиенте, вы можете изменить /etc/fstab, чтобы NFS ресурсы монтировались автоматически при загрузке клиента.

клиент:

Откройте /etc/fstab и добавьте следующие строки:

nano /etc/fstab
[...]  
192.168.1.100:/home/client1  /mnt/nfs/home/client1   nfs      rw,sync,hard,intr  0     0  
192.168.1.100:/var/www  /var/www   nfs      rw,sync,hard,intr  0     0

Вместо rw,sync,hard,intr вы можете использовать другие параметры монтирования. Чтобы узнать больше о доступных опциях, посмотрите на

man nfs

Чтобы проверить, работает ли ваш измененный /etc/fstab, размонтируйте ресурсы и выполните mount -a:

umount /mnt/nfs/home/client1  
umount /var/www  
mount -a

Теперь вы должны увидеть два NFS ресурса в выводах

df -h
root@server1:/# df -h  
Filesystem Size Used Avail Use% Mounted on  
udev 990M 0 990M 0% /dev  
tmpfs 201M 6.0M 195M 3% /run  
/dev/sda1 28G 1.2G 25G 5% /  
tmpfs 1001M 0 1001M 0% /dev/shm  
tmpfs 5.0M 0 5.0M 0% /run/lock  
tmpfs 1001M 0 1001M 0% /sys/fs/cgroup  
tmpfs 200M 0 200M 0% /run/user/1000  
192.168.1.100:/home/client1 28G 1.2G 25G 5% /mnt/nfs/home/client1  
192.168.1.100:/var/www 28G 1.2G 25G 5% /var/www  
root@server1:/#

и

mount
root@server1:/# mount  
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)  
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)  
udev on /dev type devtmpfs (rw,nosuid,relatime,size=1012912k,nr_inodes=253228,mode=755)  
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)  
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=204804k,mode=755)  
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)  
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)  
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)  
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)  
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)  
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)  
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)  
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)  
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)  
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)  
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)  
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)  
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)  
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)  
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)  
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)  
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=33,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=9848)  
mqueue on /dev/mqueue type mqueue (rw,relatime)  
debugfs on /sys/kernel/debug type debugfs (rw,relatime)  
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)  
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=204800k,mode=700,uid=1000,gid=1000)  
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)  
192.168.1.100:/home/client1 on /mnt/nfs/home/client1 type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)  
192.168.1.100:/var/www on /var/www type nfs (rw,relatime,vers=3,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.1.100,mountvers=3,mountport=57821,mountproto=udp,local_lock=none,addr=192.168.1.100)  
root@server1:/#

7 Благодарности

Этот учебник основан на учебнике по NFS серверу Centos от Фалко Тимме.

8 Ссылки

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.