承认这一点有点令人尴尬,但我无法让 NFS 服务器导出正确的目录。我在客户端和服务器上都使用最新的 CentOS 6.2。
服务器已启动并运行,测试期间防火墙被禁用。
在服务器端我创建了这个/etc/exports
:
/home/user1/documents/ *(ro,sync)
该目录是软件 raid 卷的根目录。mount
输出如下:
/dev/mapper/lvm--raid-lvol0 on /home/user1/documents type ext4 (rw,nosuid,nodev)
showmount -e
服务器上的命令显示正确的输出:
Export list for servername:
/home/user1/documents (everyone)
我尝试从客户端挂载该共享并得到以下输出:
mount.nfs: access denied by server while mounting servername:/home/user1/documents
但是,当我随后在服务器上查看文件时,/proc/fs/nfsd/exports
我看到多个挂载点,但不是正确的挂载点
# Version 1.2
# Path Client(Flags) # IPs
/ *(ro,root_squash,sync,no_wdelay,no_subtree_check,v4root,fsid=0,uuid=696f3ea6:3d7641f3:b6315631:bd63c833)
/home *(ro,root_squash,sync,no_wdelay,no_subtree_check,v4root,uuid=696f3ea6:3d7641f3:b6315631:bd63c833)
/home/user1 *(ro,root_squash,sync,no_wdelay,no_subtree_check,v4root,uuid=696f3ea6:3d7641f3:b6315631:bd63c833)
这些条目从何而来?为什么没有以 开头的行/home/user1/documents
?我尝试安装/home/user1
而不是/home/user1/documents
从客户端安装,但奇怪的是,它却能正常工作。
服务端和客户端的用户UID是相同的,会不会是导出的目录自己挂载的问题?
编辑
该文件/var/lib/nfs/xtab
是空的。
答案1
我看到您正在使用 NFSv4(/proc/fs/nfsd/exports 输出中的 fsid=0 表明了这一点)。NFSv4 需要 NFS 根目录。使用这个 /etc/exports 可能会更好。
/home *(ro,fsid=0)
/home/user1/documents/ *(ro,sync)
您可能还需要编辑 /etc/idmapd.conf 中服务器和客户端的域。
顺便提一下,如果您不希望不受信任的系统访问您的数据,我强烈建议用子网替换该星号。
答案2
我遇到了一个问题:
/my/dir1 *(rw,sync,fsid=0,crossmnt,no_subtree_check)
/my/dir2 *(rw,sync,fsid=0,crossmnt,no_subtree_check)
和两个山似乎/my/dir1
。
我尝试使用与 Ubuntu 16.04nfs-kernel-server
包/etc/exports
示例文件中给出的相同的默认选项:https://unix.stackexchange.com/questions/198009/what-provides-etc-exports-and-how-do-i-find-that-out
解决方案是删除fsid=0,crossmnt
并仅使用:
/my/dir1 *(rw,sync,no_subtree_check)
/my/dir2 *(rw,sync,no_subtree_check)
我真的不知道这些都是做什么的,有一天我会学习 NFS。也许吧。