Не удается смонтировать общий ресурс NFS4

5896
scott8035

У меня есть две директории, экспортированные с сервера NFS. На моем клиентском компьютере NFS я могу смонтировать один из каталогов, используя синтаксис по умолчанию, как NFS4. Однако другой каталог будет монтироваться, только если я явно укажу «vers = 3». Если я не использую этот синтаксис, я получаю сообщение об ошибке «mount.nfs: доступ запрещен сервером при монтировании nat149app: / var / fea / jobs».

Обе коробки RHEL 6.1.

На сервере:

[root@nat149app fea]# cat /etc/exports # /var/fea/jobs -rw,async,no_root_squash xxx.xxx.1.0/24 # /usr/local -ro,async,no_root_squash xxx.xxx.1.0/24 /var/fea/jobs xxx.xxx.1.0/24(rw,async,no_root_squash) /usr/local xxx.xxx.1.0/24(ro,async,no_root_squash) 

На клиенте:

[root@nat145app ~]# mount /dev/sda4 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) /dev/sda5 on /home type ext4 (rw) /dev/sda3 on /usr type ext4 (rw) /dev/sda6 on /var type ext2 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)  [root@nat145app ~]# mount nat149app:/usr/local /usr/local  [root@nat145app ~]# mount nat149app:/var/fea/jobs /var/fea/jobs mount.nfs: access denied by server while mounting nat149app:/var/fea/jobs  [root@nat145app ~]# ll /var/fea total 20K drwxrwx--T 4 root feausers 4.0K Nov 29 13:25 ./ drwxr-xr-x. 22 root root 4.0K Nov 29 13:25 ../ drwxrwx--T 2 root feausers 4.0K Nov 29 13:25 jobs/ drwxrwx--T 2 root feausers 4.0K Nov 29 13:26 temp/  [root@nat145app ~]# mount -o vers=3 nat149app:/var/fea/jobs /var/fea/jobs  [root@nat145app ~]# mount /dev/sda4 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) /dev/sda5 on /home type ext4 (rw) /dev/sda3 on /usr type ext4 (rw) /dev/sda6 on /var type ext2 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) nat149app:/usr/local on /usr/local type nfs (rw,vers=4,addr=139.69.1.149,clientaddr=139.69.1.145) nat149app:/var/fea/jobs on /var/fea/jobs type nfs (rw,vers=3,addr=139.69.1.149) 

Я пробовал это как с RW, так и с Ro. Я также попробовал это без разрешения "o + t" в директориях. И я также попробовал это, используя записи в / etc / fstab. Не имеет никакого значения

2
Внимание. Я попробовал этот механизм на Fedora 16 w / и наткнулся на старую ошибку, которая должна была быть исправлена. https://bugzilla.redhat.com/show_bug.cgi?id=716483 Проблема заключается в использовании опции bind в fstab для набора экспорта. В конечном итоге не удалось загрузиться, осталось с ошибками "зависимости". Исправление заключалось в том, чтобы закомментировать записи привязки монтирования fstab для настройки nfs4. Я все еще использую более старые настройки / etc / exports. Я не знаю, какие дистрибутивы / версии затронули. 12 лет назад 0

2 ответа на вопрос

2
grawity

Из того, что я знаю, NFS v4 требует, чтобы все экспортированные каталоги находились внутри одного «корня» (который fsid=0установлен в / etc / exports). Например:

/srv/nfs xxx.xxx.1.0/24(ro,root_squash) /srv/nfs/usr-local xxx.xxx.1.0/24(ro,root_squash) /srv/nfs/fea-jobs xxx.xxx.1.0/24(rw,root_squash) 

которые затем монтируются как:

mount -t nfs4 nat149app:/usr-local /usr/local mount -t nfs4 nat149app:/fea-jobs /var/fea/jobs 

Обычно привязные крепления используются для настройки /srv/nfs( /exportsили подобного); например:

mount --bind /usr/local /srv/nfs/usr-local mount --bind /var/fea/jobs /srv/nfs/fea-jobs 

(для fstab, /usr/local /srv/nfs/usr-local none bind 0 0)

В вашей текущей конфигурации /usr/localон используется в качестве корня NFS (при nat149app:/usr/localусловии, что он принят только для совместимости; реальный адрес есть nat149app:/), и сервер запрещает доступ ко всему, что находится за его пределами.

См. Раздел 7 - Пространство имен NFS-сервера в RFC 3530 - NFS version 4 .

Это сработало отлично! Спасибо! scott8035 12 лет назад 0
Для тех, кто смотрит по сторонам: это единственный верный ответ. sCiphre 8 лет назад 0
1
Brad

При устранении этой ошибки самостоятельно, после следования руководству по Ubuntu, я сделал

apt-get purge nfs-kernel-server apt-get install nfs-kernel-server 

5 раз, прежде чем я просто оставил файлы конфигурации по умолчанию один, и он работал (NFSv4).

Вот сервер nfs / etc / exports:

/export 172.20.50.0/24(ro,fsid=0,insecure,no_root_squash,no_subtree_check,async) /export/companybackup 172.20.50.0/24(rw,nohide,insecure,no_root_squash,no_subtree_check,async) /export/p1backup 172.20.50.0/24(rw,nohide,insecure,no_root_squash,no_subtree_check,async) /export/p2backup 172.20.50.0/24(rw,nohide,insecure,no_root_squash,no_subtree_check,async) /export/p3backup 172.20.50.0/24(rw,nohide,insecure,no_root_squash,no_subtree_check,async) 

В экспорте no_root_squash позволяет корневому пользователю вашего сервера писать в общий ресурс, async дает вам лучший ввод-вывод (хотя это не надежно), а остальные упрощают разрешения.

и сервер nfs / etc / fstab:

/dev/VG/LV /mnt/bigLV ext4 noatime 0 0 /mnt/bigLV /export/companybackup none bind 0 0 /mnt/bigLV/backups/p1 /export/p1backup none bind 0 0 /mnt/bigLV/backups/p2 /export/p2backup none bind 0 0 /mnt/bigLV/backups/p3 /export/p3backup none bind 0 0 

Наконец, клиентский fstab:

172.20.50.29:/p1backup /mnt/p1backup nfs4 _netdev,auto,rw,hard,intr 0 0 

обновить монтирования из fstab:

sudo mount -a 

Похожие вопросы