CentOS6.6上搭建NFS服务
原理篇:
NFS通过RPC(远程过程调用)服务来连接。
启动NFS SERVER前,先启动RPC服务(portmap服务),否则NFS SERVER无法向RPC服务注册。
更详细的介绍请参考我在网上看到的一篇博客:
实操篇:
CentOS6上的NFS服务依赖rpcbind、nfs-utils这两个软件包。
Server: 192.168.2.10/24
Client: 192.168.2.11/24
Sever端配置如下:
# 安装rpcbind、nfs-utils软件包
yum installrpcbind nfs-utils -y
# 创建挂载目录
mkdir/shares
# 编辑配置文件
vi /etc/exports写入如下内容:
/shares 192.168.2.0/24(ro,no_root_squash)
说明:配置文件的格式为:需要共享的目录 客户端地址(权限设置)
1.目录必须为绝对路径
2.客户端地址可以是域名、网段、IP地址;支持在一个条目下写多个客户端地址,分别配置不同的权限
3.客户端地址和后面的括号之间没有空格
4.权限设置
rw 可读写
ro 只读
sync 文件同时写入硬盘和内存
async 文件暂存内存,不立刻写入磁盘
no_root_squash NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。
root_squash NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;
all_squash 不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户nobody权限;
no_all_squash 不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有root权限;
anonuid 指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid 指定NFS服务器/etc/passwd文件中匿名用户的GID
例:
/usr/local/test/192.168.1.226(rw,no_root_squash,no_all_squash,sync)
/nfsfile 192.168.59.0/24(rw,sync,all_squash,anonuid=2000,anongid=2000) # 生产环境建议这样写
#注意:要想让客户端也能写入数据,配置时候需要加no_all_squash权限
# 启动NFS服务
servicerpcbind start # 注意这两个服务的启动的顺序。必须先启动rpcbind服务。
servicenfs start
Client端配置如下:
# 安装rpcbind、nfs-util,,s软件包
yum installrpcbind nfs-utils -y
# 查看能否访问nfs服务
showmount-e 192.168.2.10
# 创建目录并挂载NFS
mkdir/files
mount -tnfs 192.168.2.10:/home /files
ls -l /files或者mount命令查看是否挂载成功
# 配置开自动挂载
编辑/etc/fstab写入挂载信息即可。但是不建议这样设置,因为如果NFS服务器连接不上会导致客户端开机时候直接卡住。
# 附:配置过程中会涉及到的问题说明:
1.修改了/etc/exports,并不需要重启NFS服务,只要用exportfs重新扫描一次/etc/exports,并且重新加载即可。
exportfs-a 全部挂载或卸载/etc/exports的设定
exportfs-r 重新挂载/etc/exports里面的设定,也同步更新/etc/exports和/var/lib/nfs/xtab里面的内容
exportfs-u 卸载某一目录
-v 参数表示可视化显示
常用exportfs -rv # 重新export一次
exportfs -au # 全部卸载
2. 可以给多个客户端不同的授权,如
/home192.168.2.11(rw,sync,no_root_squash,no_all_squash)
/home192.168.2.7(ro,sync)
服务端端执行exportfs -rv 即可生效。【注:客户端也需要重新挂载才能看到起作用】
3.文件系统无法卸载时候,用fuser-m -v /PATH/TO/FILES查看哪个用户在访问。
4.客户端在挂载的时候遇到的一个问题如下,可能是网络不太稳定,NFS默认是用UDP协议,换成TCP协议即可:
mount -tnfs 192.168.2.10:/home /files -oproto=tcp -o nolock
5.如果有客户端通过RPC连接在服务器上,那么主机想要关机是不可能的。因此如果确实需要关机,请先停止nfs-utils、rpcbind服务。