简要描述
比如现在有两台服务器A与B。
A服务器IP:127.0.0.1
B服务器IP:127.0.0.2
将A作为服务器端,将B作为客户端。
服务端
1、首先检查服务器是否安装了NFS服务
service nfs status
如果没有显示unrecognized service则说明未安装
# 通过如下代码安装服务
yum install nfs-utils
2、编辑配置文件
# 编辑文件
vim /etc/exports
格式:共享文件夹 客户端IP(访问权限,用户映射,其他)
# 输入
/data 127.0.0.2(rw,sync,no_root_squash)
NFS参数
参数名 | 解释说明 |
---|---|
ro | 共享目录只读 |
rw | 共享目录可读可写 |
all_squash | 所有访问用户都映射为匿名用户或用户组(可选) |
no_all_squash(默认) | 访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组 |
root_squash(默认) | 将来访的root用户映射为匿名用户或用户组(可选) |
no_root_squash | 来访的root用户保持root帐号权限(安全隐患) |
anonuid= | 指定匿名访问用户的本地用户UID,默认为nfsnobody(65534) |
anongid= | 指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534) |
secure | 限制客户端只能从小于1024的tcp/ip端口连接服务器 |
insecure | 允许客户端从大于1024的tcp/ip端口连接服务器 |
sync | 将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性 |
async | 将数据先保存在内存缓冲区中,必要时才写入磁盘 |
备注:mount_nfs: can’t mount /xxx/xxx from XXX.XXX.XXX.XXX onto /xxx/xxx: Permission denied
出现此问题是因为配置中对应挂载目录没有设置insecure选项,默认为secure,限制客户端只能从小于1024的tcp/ip端口连接服务器。
启动NFS服务
service nfs-server start
service rpcbind start
3、查询RPC信息
rpcinfo -p
获取到上图相关信息,然后在防火墙与安全组把这几个端口号放行给要共享的服务器127.0.0.2
4、查看共享目录和参数设置
cat /var/lib/nfs/etab
5、使用showmount命令查看共享目录发布及使用情况
showmount -e localhost
客户端
1、挂载目录
mount -t nfs 服务端IP:服务端共享目录 客户端挂载目录(目录一定要存在)
mount -t nfs 127.0.0.1:/data /data
服务端目录名称与客户端目录名称可以不相同。
2、取消挂载
umount 服务端目录 客户端目录
umount /data /data
备注:当服务器重启时,需要重新执行挂载命令,也可以设置成自动挂载,挂载方式如下。
# 编辑文件
vim /etc/rc.local
#输入
mount -t nfs 127.0.0.1:/data /data
因为rc.local是Linux启动程序在login程序前执行的最后一个脚本