NFS的坑

最近项目有个需求,需要把upload目录共享出来,很简单啊,直接NFS就可以,简单、直接,小规模使用很方便,但是遇到一些坑,让我踩了半天。现在写出来供后者借鉴一下。

部署太简单了,就不写太多了

yum install -y nfs*

master

/etc/init.d/rpcbind start
/etc/init.d/nfs start
vim /etc/exports 
/application/XXX/webapps/ROOT/upload       10.173.38.*(rw,sync)

client

/etc/init.d/rpcbind start
mount -t nfs 10.173.38.XX:/application/XXX/webapps/ROOT/upload /application/XXX/webapps/ROOT/upload

坑就来了,挂载时提示:

mount.nfs: access denied by server while mounting...

1.参数问题:

//如果端口号大于1024,则需要将 insecure 选项加入到配置文件(/etc/exports)相关选项中mount客户端才能正常工作。

ro                    只读访问 
rw                    读写访问 
sync                  所有数据在请求时写入共享 
async                 NFS在写入数据前可以相应请求 
secure                NFS通过1024以下的安全TCP/IP端口发送 
insecure              NFS通过1024以上的端口发送 
wdelay                如果多个用户要写入NFS目录,则归组写入(默认) 
no_wdelay             如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。 
Hide                  在NFS共享目录中不共享其子目录 
no_hide               共享NFS目录的子目录 
subtree_check         如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认) 
no_subtree_check      和上面相对,不检查父目录权限 
all_squash            共享文件的UID和GID映射匿名用户anonymous,适合公用目录。 
no_all_squash         保留共享文件的UID和GID(默认) 
root_squash           root用户的所有请求映射成如anonymous用户一样的权限(默认) 
no_root_squash        root用户具有根目录的完全管理访问权限 
anonuid=xxx           指定NFS服务器/etc/passwd文件中匿名用户的UID 。

2.版本问题:

//配置文件默认关闭了这三个的NFS版本,我们需要打开NFS-4

vim /etc/sysconfig/nfs

RPCNFSDARGS="-N 2 -N 3"
RPCNFSDARGS="-N 4"

3.授权地址:

exports配置文件中的IP地址要写成访问者的IP地址,而不是本机,如果要求一般的话,可以用*代替

/application/XXX/webapps/ROOT/upload       *(rw,sync,insecure,)

4.权限问题:

我在网上看到很多人都是在root目录下做共享目录,但是有一个问题,root目录下的权限是RW——-,如果必须是root目录的话,需要改成

/application/XXX/webapps/ROOT/upload       *(rw,sync,insecure,no_root_squash)

或者授权成777

chmod 777 .

5.优化的小问题:

关闭IPV6

/etc/netconfig
#udp6       tpi_clts      v     inet6    udp     -       -
#tcp6       tpi_cots_ord  v     inet6    tcp     -       -


 

发表评论