一、服务端配置
安装 NFS 服务器所需的软件包:nfs 和 rpcbind
# yum install nfs-utils
# yum install rpcbind(默认系统已安装)
设置启动
# chkconfig nfs on
# chkconfig rpcbind on
启动NFS服务
1)先启动rpcbind service rpcbind start
2)再启动nfs service nfs start
配置服务器端共享目录
1)编辑配置文件
假设服务端 目录为/home/data
# vi /etc/exports
格式:
要共享的目录(使用绝对路径) 客户端主机IP......(可多个IP,之间空格隔开)
/home/data 10.1.0.2(rw,sync,all_squash,anonuid=0,anongid=1000) 10.1.0.3(rw,sync,all_squash,anonuid=0,anongid=1000)
括号里的参数:
rw:read-write,可读写;
ro:read-only,只读;
sync:文件同时写入硬盘和内存;
async:文件暂存于内存,而不是直接写入硬盘;
no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。
root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;
all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;
anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;
anongid:匿名用户的GID值。
其它选项
secure 限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure 允许客户端从大于1024的tcp/ip端口连接服务器;
sync 将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async 将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay 检查是否有相关的写操作,如果有则将这些写操作 一起执行,这样可以提高效率(默认设置);
no_wdelay 若有写操作则立即执行,应与sync配合使用;
subtree 若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
2)加载配置文件
exportfs 参数
参数:
-a 全部挂载/etc/exports 文件内的设定
-r: 重新挂载/etc/exports中的设置,此外同步更新/etc/exports 及 var/lib/nfs/xtab中的内容。
-u:卸载某一目录
-v:在export时将共享的目录显示在屏幕上。
3)配置服务器端防火墙
开启服务端防火墙端口2049
# vi /etc/sysconfig/iptables
添加一行 -A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT 保存退出
# /etc/init.d/iptables restart 重启生效
二、客户端配置
同服务端一样安装nfs和rpcbind服务 并启动 开启2049端口
使用monut 命令进行挂载
假设客户端要挂载的目录为/home/client 服务端IP为10.1.0.1
mount -t nfs 10.0.1.1:/home/server /home/client
umount -a 取消所有挂载
umount /home/client //取消挂载
umount, 老是提示:device is busy, 服务又不能停止的。 可以用"umount -fl"解决!
挂载nfs的共享目录:
root@rabbit-0:~# mount -t nfs 192.168.207.129:/home/tomcat/img /home/tomcat/img -o proto=tcp -o nolock
mount.nfs: access denied by server while mounting 192.168.207.129:/home/tomcat/img
原因:在centos 6 x64的系统下使用的是NFSv4,在/var/log/messages中能看到nfs启动时的日志输出:
1 2 3 4 |
|
使用NFSv4时,在nfs服务端做如下操作:
1 2 3 4 5 6 7 |
|
重启服务:
1 |
|
问题:mount.nfs: requested NFS version or transport protocol is not supported
此错误发生的一种解决办法:
更新文件 /etc/exports和/etc/hosts.allow,加入对应网段:
/etc/exports:
/rootfs *(rw,no_root_squash,sync,insecure)
/etc/hosts.allow:
portmap mountd nfsd statd lockd rquotad : 192.168.1.*, 192.168.2.*
其他的一些设置:
mount -t nfs -o nfsvers=3
mount -t nfs -o nfsvers=2
或者是 rpcbind nfs 启动顺序不对, 重新启动 rpcbind nfs