Linux服务器部署NFS服务,实现跨服务器挂载
(一)简要描述
比如现在有两台服务器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)
3、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
1.出现此问题是因为配置中对应挂载目录没有设置insecure选项,默认为secure,限制客户端只能从小于1024的tcp/ip端口连接服务器。
2.出现此问题还有可能是/etc/exports中配置的客户端ip不对。
3.如果修改了/etc/exports,需要重启两个服务器的nfs服务(service nfs-server status/ service nfs-server stop/ service nfs-server start/ service nfs-server status)
4、启动NFS服务
service nfs-server start
service rpcbind start
查询RPC信息
rpcinfo -p
获取到上图相关信息,然后在防火墙与安全组把这几个端口号放行给要共享的服务器127.0.0.2
5、查看共享目录和参数设置
cat /var/lib/nfs/etab
6、使用showmount命令查看共享目录发布及使用情况
showmount -e localhost
(三)客户端配置
1、挂载目录
mount -t nfs 服务端IP:服务端共享目录 客户端挂载目录(目录一定要存在)
mount -t nfs 127.0.0.1:/data /data(注意目录)
服务端目录名称与客户端目录名称可以不相同。
2、取消挂载
umount 服务端目录 客户端目录
umount /data /data
卸载目录报错:
[root@localhost ~]# umount /usr/geoc
umount.nfs4: /usr/geoc: device is busy
解决方案:
umount -lf /usr/geoc
备注:当服务器重启时,需要重新执行挂载命令,也可以设置成自动挂载,挂载方式如下。
编辑文件
vim /etc/rc.local
输入
mount -t nfs 127.0.0.1:/data /data
因为rc.local是Linux启动程序在login程序前执行的最后一个脚本。
该文章详细介绍了如何在两台Linux服务器之间设置NFS服务,包括服务端的配置(安装nfs-utils,编辑exports文件,启动NFS服务,开放防火墙端口)和客户端的挂载操作(挂载目录,取消挂载)。文章还提到了可能出现的问题及解决方法,如权限问题和端口放行。
2877

被折叠的 条评论
为什么被折叠?



