NFS: некоторые ошибки

NFS – это служба, обеспечивающая доступ к удаленной файловой системе, точнее ее подветви. Возникла как-то необходимость и вместе с этим желание таки ее попробовать. Короче:
Клиент – FreeBSD 6.0
Сервер – сетевое хранилище Proware EN-3166H-QX.
Ниже я опишу грабли, с которыми мне пришлось столкнуться. Мне кажется, что это все, которые только могут попасться 🙂 Итак, грабли по порядку.

1. [udp] 10.0.1.100:/share: RPCPROG_NFS: RPC: Port mapper failure – RPC: Timed out
На сервере portmapper все-таки работал (вывод команды rpcinfo -p):

   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper

Однако на локальной машине (клиенте) входящий трафик от сервера был запрещен. Открыл.

2. [udp] 10.0.1.100:/share: RPCPROG_NFS: RPC: Program not registered
Скорее всего не запущены демоны службы NFS – nfsd и mountd, либо доступ к нужным портам закрыт файрволлом со стороны сервера. В моем случае почему-то не были запущены эти службы, пришлось их запускать руками:
rpc.nfsd
rpc.mountd
Посмотреть информацию о запущенных демонах RPC можно командой: rpcinfo -p. Должно быть примерно так:

-bash-3.00# rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100011    1   udp   1013  rquotad
    100011    2   udp   1013  rquotad
    100011    1   tcp   1016  rquotad
    100011    2   tcp   1016  rquotad
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100021    1   udp  32772  nlockmgr
    100021    3   udp  32772  nlockmgr
    100021    4   udp  32772  nlockmgr
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100021    1   tcp  51540  nlockmgr
    100021    3   tcp  51540  nlockmgr
    100021    4   tcp  51540  nlockmgr
    100005    1   udp    855  mountd
    100005    1   tcp    858  mountd
    100005    2   udp    855  mountd
    100005    2   tcp    858  mountd
    100005    3   udp    855  mountd
    100005    3   tcp    858  mountd
    100024    1   udp    876  status
    100024    1   tcp    879  status

3. [udp] 10.0.1.100:/share: Permission denied
Оказалось, что я неправильно пишу команду монтирования. В веб-морде было написано, что NFS-шара называется share, вот я и писал:

mount 10.0.1.100:share /mnt/nas

А надо так, с полным путем до нужного каталога:

mount 10.0.1.100:/usr/local/nfs4/share /mnt/nas

Вот за это я и не люблю веб-интерфейсы и вообще графические интерфейсы над серьезными вещами. Порадовало, что теперь NFS все-таки смонтировалась 🙂

4. [udp] 10.0.1.100:/usr/local/nfs4/shara: No such file or directory
Поковырял, оказывается может быть и такая ошибка. Очевидно, это опечатка. Надо правильно путь писать!

5. -bash: cd: nas: Permission denied
Интересно, что по умолчанию NFS монтируется таким образом, что даже локальный пользователь root не может прочитать содержимое удаленного каталога, владельцем которого выступает другой пользователь (К примеру с UID=501). Чтобы обойти это ограничение, нужно либо указать на стороне сервера опцию -maproot=root в файле /etc/exports, например так (взято из Руководства FreeBSD):

/a  -maproot=root  host.example.com box.example.org

Но в моем случае все шары управлялись веб-админкой (proNAS 1.1) и там не было такой опции. Поэтому пришлось заводить пользователя с UID, равным UID пользователя – владельца NFS-шары. Добавив такого пользователя в клиентскую систему, я назначил права доступа chmod a+rx -R /mnt/nas, и root смог прочесть содержимое каталога.

Похожие статьи

Leave a Reply

Your email address will not be published. Required fields are marked *