少なくともグーグルで問題を抱えている 6時間 運のない28時間。ディレクトリをマウントしようとするたびに、次のエラーが表示されます(詳細バージョンが最後に表示されます)。
mount.nfs:マウント中にサーバーによって拒否されたアクセス:
最初はcomputer1
をnfsサーバーとして使用していましたが、computer2
に移動し、computers3-8
にマウントしようとしています。さらなる注意として、computer2
は他のすべてのコンピューターのdhcpルーターとして機能しています(computer1
を含む)が、問題はcomputer2
のnfs設定と関係があることはほぼ確実私は次を試しました:
computer1
サーバーからcomputers3-8
クライアントのいずれかにフォルダーをマウントしてみてください-SUCCESScomputer1
サーバーから新しいcomputer2
サーバーにフォルダーをマウントしてみてください-SUCCESScomputer2
サーバーからcomputers3-8
クライアントのいずれかにフォルダーをマウントしてみてください-FAILUREcomputer2
サーバーから古いcomputer1
サーバーにフォルダーをマウントしてみてください-FAILUREcomputer2
に他のフォルダーをマウントしてみてください-FAILUREcomputer2
-SUCCESSこれに加えて、/etc/exports
ファイルの関連部分に間違いがないことも確認しました。したがって、私はほぼこれが許可の問題ではないことを完全に確信しています。
質問:これはネットワークエラーではないことを考えると、この問題のデバッグを開始する方法について誰でもアドバイスできますか?.
詳細出力:
mount: proc already mounted on /proc
mount: /dev/mmcblk0p5 already mounted on /boot
mount: tmpfs already mounted on /var/tmp
mount: tmpfs already mounted on /var/log
mount.nfs: timeout set for Fri Nov 15 07:27:02 2013
mount.nfs: trying text-based options 'vers=3,rsize=8192,wsize=8192,nolock,addr=192.168.7.1'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.7.1 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 192.168.7.1 prog 100005 vers 3 prot UDP port 37300
mount.nfs: mount(2): Permission denied
mount.nfs: access denied by server while mounting 192.168.7.1:/home/raspi/Documents/raspi/raspi
詳細出力2:
ここでは、マウントを問題のディレクトリのみに分離する、より直接的なアプローチを示します。
$ Sudo mount -v -o "vers=3" 192.168.7.1:/home/raspi/Documents/raspi/raspi /home/raspi/test
mount: no type was given - I'll assume nfs because of the colon
mount.nfs: timeout set for Fri Nov 15 07:47:38 2013
mount.nfs: rpc.statd is not running but is required for remote locking.
mount.nfs: Either use '-o nolock' to keep locks local, or start statd.
mount.nfs: an incorrect mount option was specified
以前にこのrpc.statd is not running but is required for remote locking
エラーに遭遇しましたが、世界中のすべてのグーグルは私をまったく助けませんでした...
編集:
Chaos は、次のコマンドを実行して結果を表示するように要求しました。
最初にサーバーで:
SERVER$ Sudo exportfs -rv
exporting raspi1:/home/raspi/Documents/raspi/raspi
exporting raspi2:/home/raspi/Documents/raspi/raspi
exporting raspi3:/home/raspi/Documents/raspi/raspi
exporting raspi4:/home/raspi/Documents/raspi/raspi
exporting raspi5:/home/raspi/Documents/raspi/raspi
exporting raspi6:/home/raspi/Documents/raspi/raspi
exporting raspi7:/home/raspi/Documents/raspi/raspi
exporting raspi8:/home/raspi/Documents/raspi/raspi
exporting raspi9:/home/raspi/Documents/raspi/raspi
exporting raspi10:/home/raspi/Documents/raspi/raspi
exporting raspi11:/home/raspi/Documents/raspi/raspi
exporting raspi12:/home/raspi/Documents/raspi/raspi
exporting raspi13:/home/raspi/Documents/raspi/raspi
exporting raspi14:/home/raspi/Documents/raspi/raspi
exporting raspi15:/home/raspi/Documents/raspi/raspi
exporting raspi16:/home/raspi/Documents/raspi/raspi
exporting raspi17:/home/raspi/Documents/raspi/raspi
exporting raspi18:/home/raspi/Documents/raspi/raspi
exporting raspi19:/home/raspi/Documents/raspi/raspi
exporting raspi20:/home/raspi/Documents/raspi/raspi
exporting raspi21:/home/raspi/Documents/raspi/raspi
exporting raspi22:/home/raspi/Documents/raspi/raspi
exporting raspi23:/home/raspi/Documents/raspi/raspi
exporting raspi24:/home/raspi/Documents/raspi/raspi
exporting raspi25:/home/raspi/Documents/raspi/raspi
exporting raspi26:/home/raspi/Documents/raspi/raspi
exporting raspi27:/home/raspi/Documents/raspi/raspi
exporting raspi28:/home/raspi/Documents/raspi/raspi
exporting raspi29:/home/raspi/Documents/raspi/raspi
exporting raspi30:/home/raspi/Documents/raspi/raspi
exporting raspi5:/home/raspi/Downloads
exporting 192.168.7.105:/home/raspi/Documents/raspi
そして、クライアント上で
CLIENT$ showmount -e 192.168.7.1
Export list for 192.168.7.1:
/home/raspi/Documents/raspi 192.168.7.105
/home/raspi/Documents/raspi/raspi raspi30,raspi29,raspi28,raspi27,raspi26,raspi25,raspi24,raspi23,raspi22,raspi21,raspi20,raspi19,raspi18,raspi17,raspi16,raspi15,raspi14,raspi13,raspi12,raspi11,raspi10,raspi9,raspi8,raspi7,raspi6,raspi5,raspi4,raspi3,raspi2,raspi1
/home/raspi/Downloads raspi5
CLIENT$ Sudo mount -a
mount.nfs: access denied by server while mounting 192.168.7.1:/home/raspi/Documents/raspi/raspi
CLIENT$ Sudo tail -f /var/log/daemon.log 2>&1
Nov 15 21:35:55 raspi5 dhclient: bound to 192.168.7.105 -- renewal in 250 seconds.
Nov 15 21:40:05 raspi5 dhclient: DHCPREQUEST on eth0 to 192.168.7.1 port 67
Nov 15 21:40:05 raspi5 dhclient: DHCPACK from 192.168.7.1
Nov 15 21:40:05 raspi5 dhclient: bound to 192.168.7.105 -- renewal in 294 seconds.
Nov 15 21:44:59 raspi5 dhclient: DHCPREQUEST on eth0 to 192.168.7.1 port 67
Nov 15 21:44:59 raspi5 dhclient: DHCPACK from 192.168.7.1
Nov 15 21:44:59 raspi5 dhclient: bound to 192.168.7.105 -- renewal in 262 seconds.
Nov 15 21:49:21 raspi5 dhclient: DHCPREQUEST on eth0 to 192.168.7.1 port 67
Nov 15 21:49:21 raspi5 dhclient: DHCPACK from 192.168.7.1
Nov 15 21:49:21 raspi5 dhclient: bound to 192.168.7.105 -- renewal in 273 seconds.
EDIT 2:
Chaos は、次のコマンドをさらに実行して結果を表示するように要求しました。
SERVER$ ping raspi5
PING raspi5 (192.168.7.105) 56(84) bytes of data.
64 bytes from raspi5 (192.168.7.105): icmp_seq=1 ttl=64 time=0.699 ms
64 bytes from raspi5 (192.168.7.105): icmp_seq=2 ttl=64 time=0.683 ms
SERVER$ Sudo tail -f /var/log/daemon.log
tail: cannot open ‘/var/log/daemon.log’ for reading: No such file or directory
これがサーバー上の/etc/exports
ファイルです。ご覧のとおり、/etc/hosts
で定義されている名前、IPアドレスを使用しようとしています。また、エクスポートするために別のフォルダーを使用しようとしています。他のすべての行は、最後の行の単なる複製であり、異なるraspiにリダイレクトされるだけなので、省略しました。
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
/home/raspi/Downloads raspi5(rw,sync,no_subtree_check,no_root_squash)
/home/raspi/Documents/raspi/ 192.168.7.105(rw,sync,no_subtree_check,no_root_squash,fsid=0)
/home/raspi/Documents/raspi/raspi raspi5(rw,sync,no_subtree_check,no_root_squash,fsid=0)
Raspi5クライアントの/etc/fstab
ファイルは次のとおりです
proc /proc proc defaults 0 0
/dev/mmcblk0p5 /boot vfat defaults 0 2
/dev/mmcblk0p6 / ext4 defaults,noatime 0 1
# a swapfile is not a swap partition, so no using swapon|off from here on, use dphys-swapfile swap[on|off] for that
#automatically mount the shared raspi folder(s)
# Remember that NFS4 is AIDS, so use NFS3
192.168.7.1:/home/raspi/Documents/raspi/raspi /home/raspi/ nfs nfsvers=3,rsize=8192,wsize=8192,rw,auto,nolock 0 0
# Move highly used directories to RAM
tmpfs /var/tmp tmpfs nodev,nosuid,size=50M 0 0
tmpfs /var/log tmpfs nodev,nosuid,size=50M 0 0
編集3:
いくつかのアドバイスに従います here エクスポートでinsecure
フラグも設定しますが、有効ではありません。クライアントとサーバーでのrpcinfo -p
の出力は次のとおりです。
CLIENT$ Sudo rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 53553 status
100024 1 tcp 60026 status
SERVER$ rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 42430 status
100024 1 tcp 49377 status
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049
100227 3 tcp 2049
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049
100227 3 udp 2049
100021 1 udp 33106 nlockmgr
100021 3 udp 33106 nlockmgr
100021 4 udp 33106 nlockmgr
100021 1 tcp 47922 nlockmgr
100021 3 tcp 47922 nlockmgr
100021 4 tcp 47922 nlockmgr
100005 1 udp 50875 mountd
100005 1 tcp 53329 mountd
100005 2 udp 53583 mountd
100005 2 tcp 42062 mountd
100005 3 udp 36556 mountd
100005 3 tcp 39984 mountd
編集4:
さらにいくつかのアドバイスに従ってください here 次のデバッグログを取得しました:
[ 2233.803852] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[ 2233.803885] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[ 3261.750455] nfsd: last server has exited, flushing export cache
[ 3262.912654] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[ 3262.912688] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[ 5231.798334] nfsd: last server has exited, flushing export cache
[ 5232.956633] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[ 5232.956668] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[ 5350.889640] nfsd: last server has exited, flushing export cache
[ 5352.023534] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[ 5352.023577] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[ 5517.837425] nfsd: last server has exited, flushing export cache
[ 5518.987793] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[ 5518.987826] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[56604.080162] Netfilter messages via NETLINK v0.30.
[56707.453535] nfsd: last server has exited, flushing export cache
[56708.605020] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[56708.605057] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[57338.926093] NFSD: laundromat service - starting
[57338.926105] NFSD: laundromat_main - sleeping for 90 seconds
[57363.216188] nfsd: freeing readahead buffers.
[57363.216244] nfsd: last server has exited, flushing export cache
[57364.351041] set_max_drc nfsd_drc_max_mem 6008832
[57364.354764] nfsd: creating service
[57364.354771] nfsd: allocating 32 readahead buffers.
[57364.356023] nfsd4_umh_cltrack_upcall: cltrack_prog is disabled
[57364.356040] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[57364.356072] NFSD: starting 90-second grace period (net ffffffff81cd29c0)
[57364.369688] nfsd_dispatch: vers 3 proc 0
[57372.738225] nfsd_dispatch: vers 4 proc 0
[57372.753507] nfsd_dispatch: vers 4 proc 1
[57372.753521] nfsv4 compound op #1/3: 24 (OP_PUTROOTFH)
[57372.755550] exp_export: export of invalid fs type.
[57372.755679] found domain 192.168.7.105,raspi5
[57372.755685] found fsidtype 1
[57372.755690] found fsid length 4
[57372.755695] Path seems to be <>
[57372.755722] nfsv4 compound op ffff8801a47ec080 opcnt 3 #1: 24: status 2
[57372.755731] nfsv4 compound returned 2
[57372.779429] nfsd_dispatch: vers 3 proc 0
[57372.792595] exp_export: export of invalid fs type.
EDIT 5:
私はいくつかの進歩を遂げ、以下を推測しました
telnet 192.168.7.1 2049
にtelnetで接続できるため、ポートの問題ではありませんnfs-kernel-server 1:1.2.4-1
を実行していましたが、マウントをサポートしない新しいサーバーはnfs-kernel-server 1:1.2.8-2
を実行していますSudo /etc/init.d/portmap restart
は古いサーバーで機能しますが、新しいサーバーでは機能しません。これにより、新しいサーバーのポートマップが欠落していることがわかります。ただし、Sudo apt-get install portmap
経由でインストールしようとすると、Note, selecting 'rpcbind' instead of 'portmap', and that
rpcbindがすでに最新バージョンであることがわかります `編集6:
これが私のサーバー上のiptables -L
の出力です:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
LOG all -- anywhere anywhere LOG level warning
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
正しいポートが開いています:
CLIENT$ nmap -P0 192.168.7.1
Starting Nmap 6.00 ( http://nmap.org ) at 2013-11-16 06:44 UTC
Nmap scan report for raspiserver (192.168.7.1)
Host is up (0.0095s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
2049/tcp open nfs
Nmap done: 1 IP address (1 Host up) scanned in 1.55 seconds
OPと同じ問題がありました。これは以前は機能していましたが、更新後は機能しませんでした。解決策は、「nfsvers = 3」オプションを追加することでした。
職場の私の2人の同僚は、Vagrant内で同様の問題を解決しました。犯人はAppArmorでした。解決策は こちら で見つかりました。
mount: cannot mount block device /some/path read-only
dmesgショー:
[ 6944.194280] type=1400 audit(1385049795.420:32): apparmor="DENIED" operation="mount" info="failed type match" error=-13 parent=6631 profile="lxc-container-default" name="/some/other/path" pid=6632 comm="mount" srcname="/some/path" flags="rw, bind"
AppArmorは、LXCコンテナ内でmount -o bindをブロックしています。
IDを有効にするには/etc/apparmor.d/lxc/lxc-default
を追加します:
profile lxc-container-default flags=(attach_disconnected,mediate_deleted) {
...
mount options=(rw, bind),
...
装甲のリロード:
# /etc/init.d/apparmor reload
まず、デーモンが実行されていないため、rpc.statdエラーが発生します。デーモンを起動します:
Sudo service statd start
第二に、マウントオプションvers=3
が間違っています。
nfsvers=3
サーバーがローカルホストにマウントされていない場合、問題はネットワークではありません。
/etc/hosts.denyと/etc/hosts.allowを見てください。
さらに問題がある場合のみ::私はこの頃、古いバージョンのNFSでプレイしました。 ServerIP <-> ClientIPからのすべてのTCPおよびUDP通信を許可する2つのホスト間に中間スイッチがあり、telnetはすべてのポートで機能しましたが、rpcinfo -pはできませんでした。
スイッチには、すべての「sunrpc」パケットを検査する「inspect」と呼ばれる機能があり、バージョンが「許可された」バージョンでない場合は、何もログに記録せずにパケットをドロップしました。 「アプリケーション層プロトコル検査」と呼ばれます。 http://www.Cisco.com/c/en/us/td/docs/security/fwsm/fwsm31/configuration/guide/fwsm_cfg/inspct_f.html#wp1349924
この後、ファイアウォール用に静的ポートを構成する必要があることもわかりましたが、それは別の問題です。
フォルダーの名前を変更したり、新しいフォルダーにアクセスしようとした後に突然このエラーが発生した場合は、実際にサーバー側のフォルダーは共有され、/etc/exports
にないもの-これは私の場合の問題でした。
そのファイルを変更した後、Sudo service nfs-kernel-server restart
を行う必要もあります