nfs服务器

nfs简介

NFS ( Network File System ,网络文件系统)是 FreeBSD 支持的文件系统中的一种,它允许网络中的计算机(不同的计算机、不同的操作系统)之间通过TCP/IP 网络共享资源,主要在 unix 系列操作系统上使用。在NFS 的应用中,本地 NFS 的客户端应用可以透明地读写位于远端 NFS 服务器上的文件,就像访问本地文件一样。

NFS 服务器可以让 PC 将网络中的 NFS 服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中看来,那个远程主机的目录就好像是自己的一个磁盘分区一样。

由于 NFS 支持的功能比较多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS 的功能所对应的端口并不固定,而是随机取用一些未被使用的小于 1024 的端口用于传输。但如此一来就会产生客户端连接服务器的问题,因为客户端需要知道服务器端的相关端口才能够连接。

RPC服务简介

RPC ( Remote Procedure Call ,远程过程调用)服务。由于当服务器在启动 NFS 时会随机选取数个端口号,并主动向RPC 注册,所以 RPC 知道每个 NFS 功能所对应的端口号, RPC 将端口号通知给客户端,让客户端可以连接到正确的端口上去。RPC 采用固定端口号 port 111 来监听客户端的需求并向客户端响应正确的端口号。

注:在启动NFS 之前,要先启动 RPC ,否则 NFS 会无法向 RPC 注册。另外, RPC 若重新启动,原来注册的数据会消失不见,因此RPC 重启后,它管理的所有服务都需要重新启动以重新向 RPC 注册。

nfs 配置

bash 复制代码
#下载nfs相关包
[root@localhost ~]# yum install rpcbind
[root@localhost ~]# yum install nfs-utils
 
#相关文件
/etc/exports 主配置文件(文件不一定存在)
/usr/sbin/showmount 该命令主要用在client端。这个命令可以查看NFS共享出来的目录资源

共享文件:

服务端:
bash 复制代码
[root@server data]# mkdir /data
 
#server 给了 192.168.168.140 /data 目录的读写权限
[root@server data]# cat /etc/exports
/data 192.168.168.140(rw)
#共享目录 主机名(权限)
#可以使用完整的IP或者是网络号,例如172.24.8.128或172.24.8.0/24或者
172.24.8.128/255.255.255.0;也可以使用*表示所有主机
 
#添加权限
[root@server data]# chmod o+w /data/
#关闭防火墙和selinux
[root@server data]# systemctl disable firewalld --now
[root@server data]# getenforce
Enforcing
[root@server data]# setenforce 0
#重启服务
[root@server data]# systemctl restart nfs-server
#用showmount -e 查看nfs共享的相关文件
[root@server data]# showmount -e 192.168.168.128
Export list for 192.168.168.128:
/data 192.168.168.140
客户端:
bash 复制代码
#客户端(192.168.168.140)
[root@client ~]# showmount -e 192.168.168.128
Export list for 192.168.168.128:
/data 192.168.168.140
[root@client ~]# mkdir -p /nfsclient/client-data/
[root@client ~]# mount 192.168.168.128:/data /nfsclient/client-data/
[root@client ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.6M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 37G 1.8G 36G 5% /
/dev/sda1 1014M 150M 865M 15% /boot
tmpfs 182M 0 182M 0% /run/user/0
192.168.168.128:/data 40G 6.2G 34G 16% /nfsclient/client-data
权限相关参数可以写多个,多个参数之间用逗号隔开,具体相关参数说明如下:

配置 autofs 自动挂载

在一般 NFS 文件系统的使用过程中,如果客户端要使用服务端所提供的文件系统,可以在 /etc/rc.d/rc.local 中设置开机时自动挂载( /etc/rc.d/rc.local 文件中写入的命令,在每次启动系统用户登录之前都会执行一次); 也可以在登录系统后手动利用 mount 来挂载。

由于网络的问题, NFS 服务器与客户端的连接不会一直存在,当我们挂载了 NFS 服务器之后,任何一方脱机都可能造成另外一方等待超时。为了解决这样的问题,就出现了下面的想法:

  • 当客户端在有使用 NFS 文件系统的需求时才让系统自动挂载。
  • 当 NFS 文件系统使用完毕后,让 NFS 自动卸载。

于是就产生了 autofs 这个服务。

autofs 这个服务是在客户端的上面,它会持续的检测某个指定的目录,并预先设置当使用到该目录的某个子目录时,将会取得来自服务器端的NFS 文件系统资源,并进行自动挂载的操作

bash 复制代码
#客户端配置autofs
[root@client ~]# yum install autofs -y
[root@client ~]# grep suibian /etc/auto.master
/client /etc/auto.suibian
#本地端目录 具体挂载配置文件
[root@client ~]# cat /etc/auto.suibian
upload 192.168.168.128:/nfs/upload
#本地端子目录 挂载参数 服务器:服务器对应目录
[root@client ~]# systemctl restart autofs
#触发自动挂载
[root@client ~]# cd /client
[root@client ~]# cd upload
相关推荐
A小辣椒2 天前
TShark:Wireshark CLI 功能
linux
A小辣椒2 天前
TShark:基础知识
linux
AlfredZhao2 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334663 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪3 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式