我想挂载 Zyxel NSA310s NAS 的 NFS 共享。Showmount,在客户端机器上调用,显示共享:
$ showmount 10.0.0.100 -e
Export list for 10.0.0.100:
/i-data/7fd943bf/nfs/zyxelNFS *
Run Code Online (Sandbox Code Playgroud)
客户端的 /etc/fstab 包含以下行:
10.0.0.100:/i-data/7fd943bf/nfs/zyxelNFS /media/nasNFS nfs rw 0 0
Run Code Online (Sandbox Code Playgroud)
但是安装不起作用:
sudo mount /media/nasNFS/ -v
mount.nfs: timeout set for Mon May 25 17:34:46 2015
mount.nfs: trying text-based options 'vers=4,addr=10.0.0.100,clientaddr=10.0.0.2'
mount.nfs: mount(2): Protocol not supported
mount.nfs: trying text-based options 'addr=10.0.0.100'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 10.0.0.100 prog 100003 vers 3 prot TCP port 2049
mount.nfs: portmap query retrying: RPC: Program/version mismatch
mount.nfs: …Run Code Online (Sandbox Code Playgroud) Perl 5.x 文档指出,它的 flock(..) 实现将使用以下本地调用之一,从 1 开始,如果不可用,则朝 3 工作:
没关系。但是,您可能已经注意到他们的免责声明,即不应在 NFS 上使用 flock(2)。该文档建议使用 -Ud_flock 标志来强制 Perl 使用 flock(2)。flock(2) 的手册页(在 Redhat 上)陈述了关于 NFS 问题的类似免责声明。
我的问题是,为什么!?!?我似乎找不到深入的文章或解释为什么 flock(2) 在 NFS 上不安全。
我已经在 Redhat(使用 flock(2) 的地方)和 Solaris(使用 fcntl(2) 的地方)用 C 和 Perl 编写了几个测试脚本。我运行了 strace/truss 以确保 Perl 确实分别使用了 flock(2) 和 fcntl(2)。我无法复制任何没有兑现锁的问题!是什么赋予了??
我们有一个 NFS 4 共享,在多个服务器(NFS 服务器和所有 Debian 8 的客户端)之间共享一个卷。我们最近遇到了一些问题,网络中断会冻结客户端系统。
我们的NFS选项是最小的,只是rw(所以默认值hard,fg等等)。
我现在正在试验这些选项,但没有得到我期望的行为:
rw,soft,bg,retrans=6,timeo=150
(我增加了转发以抵消一些软风险)
我要测试的程序是:
cd 到 /mnt/mountpointcd /ifdown eth0cd 到 /mnt/mountpointls此时命令行冻结,我无法中断它。 一段时间后,消息“nfs: server [servername] 没有响应,超时”,似乎每分钟重复一次(不确定)。
我希望/期望发生的操作失败并返回控制权。
请有人告诉我这些设置哪里出了问题?
(PS:我也试过用 autofs 挂载,但看到了类似的行为)
谢谢
我有一个 NFS 共享,它在其他两台机器之间共享。我最近意识到其中一台服务器没有共享目录,而是为自己保留文件。有没有办法查看 NFS 共享是否安装在我认为它所在的目录中?
我尝试 chmod 一些文件,但出现错误“超出磁盘配额”:

确实,我在使用 chmod 的文件系统中没有多少剩余空间,即nfs.mit.edu:/export/evodesign/beatdb(这是一个NFS),无论是字节还是 inode:

但是为什么 chmod 需要更多空间呢?
我使用 Ubuntu 12.04。
编辑:评论后的更多信息:
1)我不知道NFS服务器的操作系统(nmap -O nfs-server-ip没有返回任何东西)
2) 挂载的 NFS 文件系统使用的 NFS 协议是NFSv3:

3)quota -v:

4)我没有任何/var/log/messages日志,我确实有一些/var/log/syslog日志,但那里看起来没有什么奇怪的。
我还没有找到有关此的灌篮文档,所以让我们开始吧。
在 CentOS 7.1 主机上,我已经阅读了 linuxconfig HOW-TO,包括firewall-cmd条目,并且我有一个可导出的文件系统。
[root@<server> ~]# firewall-cmd --list-all
internal (default, active)
interfaces: enp5s0
sources: 192.168.10.0/24
services: dhcpv6-client ipp-client mdns ssh
ports: 2049/tcp
masquerade: no
forward-ports:
rich rules:
[root@<server> ~]# showmount -e localhost
Export list for localhost:
/export/home/<user> *.localdomain
Run Code Online (Sandbox Code Playgroud)
但是,如果我showmount从客户端,我仍然有问题。
[root@<client> ~]# showmount -e <server>.localdomain
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
Run Code Online (Sandbox Code Playgroud)
现在,我如何确定这是防火墙问题?简单。关闭防火墙。服务器端:
[root@<server> ~]# systemctl stop firewalld
Run Code Online (Sandbox Code Playgroud)
和客户端:
[root@<client> ~]# showmount -e <server>.localdomain …Run Code Online (Sandbox Code Playgroud) 我正在为我们的平板共享运行一个小型服务器。它主要是带有一些附加服务的文件服务器。客户端是 Linux 机器(主要是 Ubuntu,但也有其他一些发行版)和介于两者之间的一些 Mac(-Book)(但它们对于问题并不重要)。服务器运行的是Ubuntu 11.10 (Oneiric Ocelot)“服务器版”,我从中进行设置和测试的系统运行的是 11.10“桌面版”。我们使用 Samba(我们更熟悉)运行我们的共享很长一段时间,然后迁移到NFS(因为我们在 LAN 中没有任何 Windows 用户并想尝试一下),到目前为止一切正常.
现在我想使用autofs设置自动挂载以平滑一切(到目前为止,每个人都在需要时手动挂载共享)。自动安装似乎也有效。问题是我们的“服务器”不是 24/7 全天候运行以节省能源(如果有人需要服务器上的东西,他/她会打开它然后关闭它,所以它每天只运行几个小时)。但是由于 autofs 设置客户端挂断时服务器没有运行时经常退出。
即使服务器没有运行,我也可以很好地启动所有客户端。
但是,当我想显示一个目录(在终端或 nautilus 中)时,该目录包含指向共享的符号链接,/nfs而服务器未运行时,它会挂起至少两分钟(因为 autofs 无法连接到服务器但保持尝试,我假设)。
/nfs?我认为不是,但也许有可能不尝试访问它这么长时间?只需给我一个空目录或“无法找到/连接到该目录”或类似的内容。当服务器运行时,一切正常。
但是当服务器关闭时,在卸载共享之前,工具(如df或ll)挂起(假设是因为他们认为共享仍然存在但服务器将不再响应)。
此外,当服务器关闭并且它们仍然安装了共享时,客户端也不会关闭或重新启动。它们在“杀死剩余的进程”中挂起(看起来是无限的)并且似乎什么也没发生。
我认为这一切都归结为安装和卸载的简洁超时值。并且可能在与服务器的连接丢失时删除所有共享。
所以我的问题是:如何处理这个?作为奖励:是否有一种/nfs无需挂载真实共享即可在内部链接的好方法(autofs 选项或可能使用/nfs在挂载发生或类似情况时被替换的伪 FS )?
在NFS设置是非常基本的,但我们很好,到目前为止(使用服务的NFSv4):
/etc/default/nfs-common
NEED_STATD=
STATDOPTS=
NEED_IDMAPD=YES
NEED_GSSD=
Run Code Online (Sandbox Code Playgroud)
/etc/idmapd.conf
[General]
Verbosity = 0
Pipefs-Directory = …Run Code Online (Sandbox Code Playgroud) 我有一个有点有趣的设置:一个服务器,在一个文件夹中安装了多个远程 NFS 服务器,然后通过 Samba 重新导出该文件夹。将其视为共享代理,将所有共享文件夹保存在一个地方。
我的问题是,每当其中一个挂载出现故障(服务器重新启动、服务重新启动、服务器导出的外部硬盘驱动器被移除等)时,任何尝试永远读取挂载块的尝试。这也意味着ls在该目录中运行会冻结并且通过 Samba 连接的用户也会冻结。这也导致我的一个 cron 作业有几次被阻塞,这几乎使服务器崩溃,因为它有数百个被阻塞的进程。这变得非常烦人,因为我通常必须打开一个不等待ls完成的终端(无法取消它),运行for i in *; do sudo umount -l -f $i; done;,希望它起作用,解决问题,然后重新安装所有内容。
有没有办法挂载 NFS 共享,并规定如果连接因任何原因(最好有重试期)失败,则挂载本身会卸载或至少不会阻塞?
有没有办法强制 Linux 客户端在失去连接后重新连接到 NFS 服务器?客户端最终会注意到服务器已恢复并恢复正常工作。我只是想知道是否有办法加快这种重新连接的速度。
这是我在服务器上得到的:
manuel@server ~ $ cat /etc/exports
/var/share 192.168.178.20(rw, sync)
manuel@server ~ $ cat /etc/hosts.allow
portmap: 192.168.178.20
manuel@server /etc $ cat /proc/filesystems | grep nfs
nodev nfs
nodev nfs4
Run Code Online (Sandbox Code Playgroud)
这是我在我的机器上得到的:
manuel@Timeline:~$ sudo mount -t nfs 192.168.178.2:/var/share /media/share/
mount: wrong fs type, bad option, bad superblock on 192.168.178.2:/exports/var/share,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount.<type> helper program)
Manchmal liefert das Syslog wertvolle Informationen – versuchen
Sie dmesg | tail oder …Run Code Online (Sandbox Code Playgroud) nfs ×10
file-server ×3
autofs ×1
automounting ×1
centos ×1
chmod ×1
file-sharing ×1
filesystems ×1
firewalld ×1
fstab ×1
linux ×1
mount ×1
quota ×1
rhel ×1
system-calls ×1
ubuntu ×1