linux 通过nfs下提供目录共享给其他服务器,就是做了个共享盘

起因:应用部署在多台服务器上的时候,我们上传文件到一个指定共享目录,这个共享目录要各台服务器都能访问到。程序本地访问到。

经过:百度一番后,搜索做共享盘用的最多的就是nfs。

结果:找了个感觉还不错的文档跟着做,试了下,心领神会了。。

1、准备工作,所有需要用到这个目录的服务器,都需要安装nfs服务,然后设置开启启动,并且把所需服务启动起来。

安装所需服务nfs、rpcbin

yum install  -y nfs-utils rpcbind

分别设置开启启动

chkconfig nfs on 
chkconfig rpcbind on

启动这两个服务 

service rpcbind start 
service nfs start

备注:所有linux的服务启动都是

重启:[root@VM_15_8_centos server]# service 服务名 restart 
停止:[root@VM_15_8_centos server]# service 服务名 stop 
开启:[root@VM_15_8_centos server]# service 服务名 start

2、创建共享目录

我这有3台服务器
192.168.89.137 客户端 A
192.168.89.138 客户端 B
192.168.89.139 服务端 S

2.1 在服务端S上创建共享目录,其实所有服务目录都一样比较好。这里是为了区分服务端与客户端

mkdir -p /home/soft/nfs/server

2.2 编辑/etc/exports 文件,添加如下内容

/home/soft/nfs/server *(rw,no_root_squash,no_all_squash,sync)

说明:其中

/home/soft/nfs/server --共享目录位置
* --IP限制,若是星号则都可以访问,192.168.89.*,则是IP鄙视是192.168.89段的菜可以访问。
(rw,no_root_squash,no_all_squash,sync) --(rw  ro 该目录分享的权限是可擦写 (read-write) 或只读 (read-only),但最终能不能读写,还是与文件系统的 rwx 及身份有关。 
sync  async sync 代表数据会同步写入到内存与硬盘中,async 则代表数据会先暂存于内存当中,而非直接写入硬盘! 
no_root_squash  root_squash 客户端使用 NFS 文件系统的账号若为 root 时,系统该如何判断这个账号的身份?预设的情况下,客户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody, 如此对服务器的系统会较有保障。但如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash 才行! 
all_squash 不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody) 啦! 
no_subtree_check 关闭子树检查 
anonuid  anongid anon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名用户的 UID 设定值,通常为 nobody(nfsnobody),但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中! anonuid 指的是 UID 而 anongid 则是群组的 GID 啰。 
其他选项可以通过man exports查阅man文档)

2.3 刷新配置,让修改的配置立即生效
cd /etc 
exportfs -r

2.4 重启服务

service nfs restart

2.5 查看服务注册情况

说明下,如果不设置端口信息,那么nfs会随机启用端口提供服务,不利于服务器之间做安全控制,所以我们设定固定端口,在所有的服务器上都设置相同端口。

vi /etc/sysconfig/nfs
文件末端添加如下内容

RQUOTAD_PORT=30001 
LOCKD_TCPPORT=30002 
LOCKD_UDPPORT=30002 
MOUNTD_PORT=30003 
STATD_PORT=30004

重启服务
service nfs restart

查看RPC注册情况
rpcinfo -p localhost

 rpcinfo 选项与参数: 

-p :针对某 IP (未写则预设为本机) 显示出所有的 port 与 porgram 的信息; 
-t :针对某主机的某支程序检查其 TCP 封包所在的软件版本; 
-u :针对某主机的某支程序检查其 UDP 封包所在的软件版本;

2.6 查询本机的nfs共享盘信息情况

showmount -e localhost 
也可以任意客户机
showmount -e 192.168.89.139

3、客户端配置

3.1 挂在盘创建

执行命令:

mkdir -p /home/soft/nfs/client

3.2 配置挂载服务端与客户端关系,提供挂载稳定性,使用TCP进行传输

执行命令:

mount -t nfs -o vers=3 服务端IP:服务端目录 当前机器目录 -o proto=指定协议 -o nolock 
mount -t nfs -o vers=3 192.168.89.139:/home/soft/nfs/server /home/soft/nfs/client -o proto=tcp -o nolock 

3.4 查看挂载目录情况

df -h

3.5 测试

在任意一台服务器的共享目录下,创建或者上传一个文件 上去。

然后查看目录下的内容,我这里在137上上传了一个index.html文件

然后查看各个服务器之间的目录,可以看到服务端与多客户端之间文件已经同步。

再删除。再看。也都同步了。在服务端139上删除index.html那么客户端也都是删除了的。

至此测试nfs成功共享文件目录。

4、 取消挂载

当我们那个盘符不需要挂载了的时候,客户端

执行:
umount /home/soft/nfs/client

提示繁忙 。。device is busy

强制执行:
umount -lf /home/soft/nfs/client

执行结果如下:

[root@localhost client]# umount /home/soft/nfs/client
umount.nfs: /home/soft/nfs/client: device is busy
[root@localhost client]# umount -lf /home/soft/nfs/client
[root@localhost client]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 27G 6.5G 21G 24% /
/dev/sda1 1014M 163M 852M 16% /boot
tmpfs 98M 0 98M 0% /run/user/0

重启服务后发现,
之前挂载的目录内容也不见了

service nfs restart

5、设置开机挂载

否则重启服务器后,之前命令配置的挂载信息就丢失了

 

 6、windows挂载

1.开启nfs客户端:打开控制面板》程序》启用或关闭windos功能》选中nfs客户端,点击确定
.2.挂载:mount 192.168.89.139:/home/soft/nfs/server X:   (此处注意只能定位到nfs目录,否则会报网络错误)

会创建一个网络盘X盘,里面挂载文件
3.取消挂载:右键X盘,点击取消连接或者执行命令:umount X:

 打开后,也能看到我们挂载的共享目录的内容

 ok,完成。。

参考文档:

https://www.cnblogs.com/xujingyang/p/9209549.html

原文地址:https://www.cnblogs.com/a393060727/p/13043738.html