linux网络——NFS网络文件服务

一. NFS共享服务

1.1NFS概述

NFS 是一种基于 TCP/IP 传输的网络文件系统协议,最初由 Sun 公司开发。通过使用 NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源

  • NFS 也是 NAS 存储 设备必然支持的一种协议
  • NFS(Network File System 网络文件服务)

1.2 NFS存储原理:

NFS 服务的实现依赖于 RPC(Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。在 CentOS 7 系统中,需要安装 nfs-utils、rpcbind 软件包来提供 NFS 共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。

手动加载 NFS 共享服务时,应该先启动 rpcbind,再启动 nfs。
nfs端口号2049
RPC端口号111

在这里插入图片描述

1.3 NFS特点

  • 采用TCP/IP传输网络文件
  • 安全性低
  • 简单易操作
  • 适合局域网环境

二、NFS共享存储服务配置的相关步骤

【就是我在一台虚拟机里面配置的东西,在另外几台虚拟机也能看到】

#配置思路
1、安装nfs和rpcbind软件
2、修改配置文件设置共享
3、创建共享目录
4、开启服务
5、客户端验证共享目录可访问

2.1 服务器端

使用192.168.10.12作为服务端
在这里插入图片描述

#关闭防火墙
[root@zhang ~]# systemctl stop firewalld
[root@zhang ~]# setenforce 0
​
#安装软件包
[root@zhang ~]# yum install nfs-utils rpcbind -y
​
#新建共享目录
[root@zhang ~]# mkdir /opt/web
​
[root@zhang ~]# cd /opt/web

​[root@zhang ~]# ls //查看

#修改权限
[root@zhang web]# chmod -R 777 /web/
​
#编辑NFS配置文件
[root@zhang web]# vim /etc/exports
//【这个是共享文件】  #NFS 的配置文件为/etc/exports,文件内容默认为空(无任何共享)
/opt/web  192.168.10.0/24(rw,sync,no_root_aquash)   ##中间一定没有空格
//共享目录  网段           读写,同步,无root权限

常用选项:
rw                        表示允许读写
ro                        表示为只读
sync                      表示同步写入到内存与硬盘中
no_root_squash            表示当客户机以root身份访问时赋予本地root权限(默认是root_squash),如果不加那么客户端无法在里面编辑或写入文件,因为默认以nfsnobody的权限
root_squash               表示客户机用root用户访问该共享目录时,将root用户映射成匿名用户

其它常用选项:
all_squash                所有访问用户都映射为匿名用户或用户组
async                     将数据先保存在内存缓冲区中,必要时才写入磁盘,速度快但会丢失数据
subtree_check(默认)      若输出目录是一个子目录,则nfs服务器将检查其父目录的权限
no_subtree_check          即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率


#启动服务
[root@zhang ~]# systemctl start rpcbind 
[root@zhang ~]# systemctl start nfs 
systemctl enable rpcbind //开机自启动服务
systemctl enable nfs
​[root@zhang ~]# systemctl start httpd

[root@localhost web]# netstat -anpu | grep rpc     //查看端口
[root@localhost web]# rpcinfo -p localhost      //查看nfs向rpc注册的端口信息

#查看详细的nfs信息并且刷新一下
[root@zhang ~]#exportfs -v      ##查看
[root@zhang ~]#exportfs -r     ##刷新结果
​
#重读配置文件
[root@zhang ~]#exportfs -r
​
#查看本机发布的 NFS 共享目录
[root@localhost web]# showmount -e localhost      //验证共享

在这里插入图片描述
在这里插入图片描述

2.2 客户端配置

客户端的ip:192.168.10.10

[root@localhost ~]# yum install -y nfs-utils rpcbind
[root@localhost ~]# showmount -e 192.168.10.12  //客户端验证共享

在这里插入图片描述

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount -t nfs 192.168.10.17:/web /var/www/html     //将共享目录挂载到网页目录

在这里插入图片描述

[root@localhost ~]# systemctl start httpd    //启动web服务
[root@localhost ~]# curl 127.0.0.1     //成功访问主页内容

在这里插入图片描述

[root@localhost ~]# echo "this is kgc " >> /var/www/html/index.html    //客户端修改主页文件
[root@localhost web]# cat index.html    //服务器端会同步

在这里插入图片描述

同理可得,服务端写入或修改内容,客户端也会同步

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

df -h   #查看挂载情况

修改/etc/fstab实现自动挂载:
192.168.10.17:/opt/web    /var/www/html   nfs     defaults,_netdev  0 0

defaults,_netdev说明这是一个网络设备
注意:NFS 客户端与服务器端的耦合度是非常高的,如果客户端正在挂载使用,服务器端 NFS 服务突然间停掉了,那么在客户端就会出现执行 df -h 命令卡死的现象。这个时候使用 umount 命令是无法直接卸载的,需要加上 -lf 才能卸载
-l 表示解除正在繁忙的文件系统,-f 表示强制。

[root@localhost web]# systemctl stop nfs    //服务器端模拟nfs挂掉

[root@localhost ~]# umount /var/www/html     //客户端卸载时会卡住
^C
[root@localhost ~]# umount -lf /var/www/html   //加lf参数成功卸载

其他nfs文件:
/var/lib/nfs/etab           记录NFS分享出来的目录的完整权限设定值

/var/lib/nfs/xtab           记录曾经登录过的客户端信息

总结

编辑NFS配置文件的时候,一定注意格式(不要多空格,不要错字母)

喜欢小编记得点个小星星哦!

猜你喜欢

转载自blog.csdn.net/weixin_59663288/article/details/124408449