阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

NFS网络文件共享存储服务器

135次阅读
没有评论

共计 8037 个字符,预计需要花费 21 分钟才能阅读完成。

什么是NFS

NFSNetwork File System)即网络文件系统,它允许网络中的计算机之间通过 TCP/IP 网络共享资源。在 NFS 的应用中,本地 NFS 的客户端应用可以透明地读写位于远端 NFS 服务器上的文件,就像访问本地文件一样

在企业集群架构的工作场景中,NFS网络文件系统一般被用来共享存储视频、图片、附件等静态资源文件,通常网站用户上的文件都会存放到 NFS 共享里。例如 bbs 产品的图片、附件头像等。然后前段所有的节点访问这些静态资源时都会读取 NFS 存储上的资源。

企业生成集群中为什么要部署 NFS 存储服务

NFS 网络文件共享存储服务器 

1)在没有 NFS 文件共享存储时的原理解释:

A 用户上传图片到 web1 服务器时,然后 B 用户访问这张图片,结果 B 用户访问图片的请求到了负载均衡器的时候,被分发到 web2 服务器上,因为 web2 没有 A 用户上传的图片,所以 B 用户就无法看到 A 用户上传的图片。

实例:淘宝卖家将新出的产品资料上传到淘宝服务器。如果没有存储服务器,那么当大量的用户访问到这个淘宝卖家店里的时候,分发器将用户的请求都分发给淘宝的其他服务器,那么用户就无法看到卖家新出的产品了,这就导致了降低了用户体验。这样对一个户门网站来说是一个很大的错误。

NFS 网络文件共享存储服务器 

2)在有 NFS 文件共享存储时的原理解释:

A 用户上传一张图片到 web 服务器中,分发器不论是转发到那一台 web 服务器,其内容最后都会被存放到 NFS 共享文件存储中。而当 B 用户访问 A 用户上传的图片时,无论请求被分发器分发 web1 还是 web2 上,最终都会到共享存储上找,都可以找到 A 用户上传的图片。

NFS的工作原理

NFS 网络文件共享存储服务器 

服务端设置一个专门用来共享的目录(/test)。设置好共享目录的权限,IP等内容。然后具有权限的客户端访问 NFS 服务器端,将这个共享目录挂载到客户端的某个目录下。客户端在正确挂载完之后,就可以通过 NFS 客户端的挂载点所在的目录中查看到 NFS 服务端共享目录 /test 下的所有数据。客户端查看时,NFS服务端的 /test 目录就相当于客户端本地的磁盘分区或目录。

什么 RPC 服务

RPC指远程过程调用。

因为 NFS 支持的功能比较多,而不同的功能都会使用不同的程序来启动,为启动一个功能就会启用一些未被使用的端口来作为传输只用,因为端口的不固定,这样一来就会造成 NFS 客户端与 NFS 服务器端的通信障碍没因为 NFS 客户端必须要知道 NFS 服务器端的数据传输端口才能进行通信,才能交互数据。

为了解决上述的问题,就需要 RPC 服务,NFS服务的 RPC 服务最主要的功能就是记录每个 NFS 功能所对饮的端口号,并且 NFS 客户端请求时将该端口和功能对应的信息传输给请求数据的 NFS 客户端,从而保证客户端可以连接到正确的 NFS 端口上去,达到实现数据交互的目的。

服务端的 RPC 服务如何知道每个 NFS 的端口的:

NFS 读取端启动服务时会随机取用若干端口,并主动向 RPC 服务注册相关端口的对应的功能,然后 RPC 服务使用固定的 111 端口来监听 NFS 客户端提交的请求,并将正确的 NFS 端口信息回复给请求的 NFS 客户端。

NFS的挂载基本使用过程

NFS 网络文件共享存储服务器 

请求数据的流程:

1)首先用户访问网站程序,由程序在 NFS 客户端上发出存取 NFS 文件的请求,这是 NFS 客户端的 RPC 服务就不通过网络向 NFS 服务器端的 RPC 服务的 111 端口发出 NFS 文件存取功能的查询请求,包括要实现的什么功能。

2)NFS服务器端的 RPC 服务找到对饮的已注册的 NFS 端口,通知 NFS 客户端的 RPC 服务。

3)此时 NFS 客户端获取到正确的端口,并与 NFS 联机存取数据。

4)NFS客户端把数据存取成功后,返回给客户端程序,告知用户存取结果。

注意:

因为 NFS 的各项功能都需要向 RPC 服务注册端口,所以只有 RPC 服务才能获取到 NFS 服务的各项功能对应的端口号,PIDNFS在主机监听的 Ip 等信息,而客户端也只能通过向 RPC 服务询问才能找到正确 的端口,因此,无论是 NFS 服务端还是 NFS 客户端都需要 RPC 服务的协助才能完成对外服务及请求。

一:实验目标

1、完成 NFS 的文件共享

二:实验环境

服务器系统

主机名

IP

作用

软件

Rhel6.5

yu61

192.168.1.61

Nfs-server

nfs-utilsrpcbind

Rhel6.5

yu62

192.168.1.62

Nfs-client1

nfs-utilsrpcbind

Rhel6.5

yu63

192.168.1.63

Nfs-client2

nfs-utilsrpcbind

三:实验步骤

1、安装 NFS 服务端

[root@yu61 ~]# yum install nfs-utils rpcbind -y

[root@yu61 ~]#

[root@yu61 ~]# /etc/init.d/rpcbind status

rpcbind (pid  1615) is running…

[root@yu61 ~]# lsof -i :111

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

rpcbind 1615  rpc    6u  IPv4  11330      0t0  UDP *:sunrpc

rpcbind 1615  rpc    8u  IPv4  11333      0t0  TCP *:sunrpc (LISTEN)

rpcbind 1615  rpc    9u  IPv6  11335      0t0  UDP *:sunrpc

rpcbind 1615  rpc   11u  IPv6  11338      0t0  TCP *:sunrpc (LISTEN)

 

2、查看 NFS 服务向 RPC 服务注册的端口信息

因为 NFS 服务还没有启动,一次没有太多注册端口映射信息。

[root@yu61 ~]# rpcinfo -p localhost

   program vers proto   port  service

    100000    4   tcp    111  portmapper

    100000    3   tcp    111  portmapper

    100000    2   tcp    111  portmapper

    100000    4   udp    111  portmapper

    100000    3   udp    111  portmapper

    100000    2   udp    111  portmapper

    100024    1   udp  43521  status

100024    1   tcp  60423  status

3、启动 NFS 服务

[root@yu61 ~]# /etc/init.d/nfs start

rpc.rquotad (pid 49232) is running…

[root@yu61 ~]# rpcinfo -p localhost

   program vers proto   port  service

    100000    4   tcp    111  portmapper

    100000    3   tcp    111  portmapper

    100000    2   tcp    111  portmapper

    100000    4   udp    111  portmapper

    100000    3   udp    111  portmapper

    100000    2   udp    111  portmapper

    100024    1   udp  43521  status

    100024    1   tcp  60423  status

    100011    1   udp    875  rquotad

    100011    2   udp    875  rquotad

    100011    1   tcp    875  rquotad

    100011    2   tcp    875  rquotad

    100005    1   udp  38917  mountd

    100005    1   tcp  44150  mountd

    100005    2   udp  42858  mountd

    100005    2   tcp  52228  mountd

    100005    3   udp  41216  mountd

100005    3   tcp  60796  mountd

4、NFS 服务常见的进程详解

[root@yu61 ~]# ps -ef | egrep “rpc|nfs”

rpc        1615      1  0 11:00 ?        00:00:00 rpcbind

rpcuser    1755      1  0 11:00 ?        00:00:00 rpc.statd

root      49221      2  0 18:35 ?        00:00:00 [rpciod/0]

root      49222      2  0 18:35 ?        00:00:00 [rpciod/1]

root      49223      2  0 18:35 ?        00:00:00 [rpciod/2]

root      49224      2  0 18:35 ?        00:00:00 [rpciod/3]

root      49232      1  0 18:35 ?        00:00:00 rpc.rquotad

root      49236      1  0 18:35 ?        00:00:00 rpc.mountd

root      49242      2  0 18:35 ?        00:00:00 [nfsd4]

root      49243      2  0 18:35 ?        00:00:00 [nfsd4_callbacks]

root      49249      2  0 18:35 ?        00:00:00 [nfsd]

root      49250      2  0 18:35 ?        00:00:00 [nfsd]

root      49251      2  0 18:35 ?        00:00:00 [nfsd]

root      49274      1  0 18:35 ?        00:00:00 rpc.idmapd

root      49318   2821  0 18:36 pts/0    00:00:00 egrep rpc|nfs

1Nfs服务启动的进程说明

NFS服务的主要任务是共享文件刺痛的数据,而文件系统数据的共享离不开权限问题。所以 NFS 服务器启动后时掷筛需要两个不同的进程,一个是管理 NFS 客户端是否能够登入 rpxc.nfsd 主进程,另一个用于管理 NFS 客户端是否能够取得对应权限的 rpc.mountd 进程,如果还需要管理磁盘配额,则 NFS 还需要再加载 rpc.rpuotad 进程。

服务或进程

用途说明

nfsd (rpc.nfsd)

Rpc.nfsd的主要功能是管理 NFS 服务器端主机

Mountd (rpc.mountd)

rpc.mountd的主要功能则是管理 NFS 文件系统,当 NFS 客户端顺利通过 rpc.nfsd 登入 NFS 服务器端的主机时,在使用 NFS 服务器提供数据之前,他会去读 NFS 的配置文件 /etc/exports 来对比 NFS 客户端的权限,通过这一关之后,还要经过 NFS 服务器端本地文件系统使用权限的认证程序,

rpc.locke

可以用来锁定文件,用于多客户端同时写入

rpc.statd

检查文件的一致性

rpc.idmapd

名字映射后台进程

5、配置 NFS 服务器端的服务开机自启动

[root@yu61 ~]# chkconfig rpcbind on

[root@yu61 ~]# chkconfig nfs on

[root@yu61 ~]# chkconfig –list | egrep “nfs\b|rpcbind”

nfs            0:off1:off2:on3:on4:on5:on6:off

rpcbind        0:off1:off2:on3:on4:on5:on6:off

[root@yu61 ~]# tail -3 /etc/rc.local

tail: inotify cannot be used, reverting to polling

#start uo nfs

/etc/init.d/rpcbind start

/etc/init.d/nfs start

 

6、Nfs 服务器端共享文件的配置文件路径

[root@yu61 ~]# cat /etc/exports

格式:

Nfs共享目录 nfs客户端 1 地址(权限)nfs客户端 2 地址(权限)

例如:可以编辑 /etc/exports 为: 

/tmp*(rw,no_root_squash)

/home/public192.168.0.*(rw)*(ro)

/home/test192.168.0.100(rw)

/home/linux*.the9.com(rw,all_squash,anonuid=40,anongid=40)

 

7、NFS 配置权限设置常用参数说明

参数名称

参数用途

ro

只读访问

rw

读写访问

sync

所有数据在请求时写入共享

async

NFS在写入数据前可以相应请求

secure

NFS通过 1024 以下的安全 TCP/IP 端口发送

insecure

NFS通过 1024 以上的端口发送

wdelay

如果多个用户要写入 NFS 目录,则归组写入(默认)

no_wdelay

如果多个用户要写入 NFS 目录,则立即写入,当使用 async 时,无需此设置。

hide

NFS 共享目录中不共享其子目录

no_hide

共享 NFS 目录的子目录

subtree_check

如果共享 /usr/bin 之类的子目录时,强制 NFS 检查父目录的权限(默认)

no_subtree_check

不检查父目录权限

all_squash

共享文件的 UIDGID映射匿名用户anonymous,适合公用目录。

no_all_squash

保留共享文件的 UIDGID(默认)

root_squash

root用户的所有请求映射成如 anonymous 用户一样的权限(默认)

anonuid=xxx

指定 NFS 服务器 /etc/passwd 文件中匿名用户的UID

 

 

实战:NFS服务案例配置

1、创建需要共享的目录并授权

[root@yu61 ~]# mkdir -p /data

[root@yu61 ~]# touch /data/a.txt

[root@yu61 ~]# cp /etc/shadow /data/

[root@yu61 ~]# chown -R nfsnobody.nfsnobody /data

[root@yu61 ~]# chmod 777 /data/

[root@yu61 ~]# ls -ld /data/

drwxrwxrwx 3 nfsnobody nfsnobody 4096 May 20 19:16 /data/

[root@yu61 ~]# grep nfsnobody /etc/passwd

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

2、配置 NFS 服务的配置文件,并在本地查看挂在信息

[root@yu61 ~]# vim /etc/exports

[root@yu61 ~]# cat /etc/exports

/data 192.168.1.0/24 (rw,sync)

[root@yu61 ~]# exportfs -rv

exporting 192.168.1.0/24:/data

exporting *:/data

[root@yu61 ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sr0        3.6G  3.6G     0 100% /mnt

[root@yu61 ~]# mount -t nfs 192.168.1.61:/data/ /mnt/

[root@yu61 ~]# df -h

Filesystem           Size  Used Avail Use% Mounted on

/dev/sr0              20G  4.6G   14G  26% /mnt

192.168.1.61:/data/   20G  4.6G   14G  26% /mnt

3、客户端安装 rpcbind

[root@yu63 ~]# yum install rpcbind nfs-utils -y  

[root@yu63 ~]# /etc/init.d/rpcbind status

rpcbind (pid  1695) 正在运行

[root@yu63 ~]# echo “/etc/init.d/rpcbind start” >> /etc/rc.local

[root@yu63 ~]# echo “/bin/mount -t nfs 192.168.1.61:/data /mnt ” >> /etc/rc.local

[root@yu63 ~]# tail -2 /etc/rc.local

tail: inotify cannot be used, reverting to polling

/etc/init.d/rpcbind start

/bin/mount -t nfs 192.168.1.61:/data /mnt

[root@yu63 ~]# showmount -e 192.168.1.61

Export list for 192.168.1.61:

/data (everyone)

4、挂在服务端的共享文件

[root@yu63 ~]# mount -t nfs 192.168.1.61:/data /mnt

[root@yu63 ~]# df -h

Filesystem          Size  Used Avail Use% Mounted on

hm

/dev/sda1           4.9G  162M  4.5G   4% /boot

/dev/sr0             20G  4.6G   14G  26% /mnt

192.168.1.61:/data   20G  4.6G   14G  26% /mnt

[root@yu63 ~]# mount

………

192.168.1.61:/data on /mnt type nfs (rw,vers=4,addr=192.168.1.61,clientaddr=192.168.1.63)

5、测试读写数据

[root@yu63 ~]# ls /mnt

a.txt   shoadow

[root@yu63 ~]# mkdir /mnt/test

[root@yu63 ~]# ls /mnt

a.txt shoadow test

[root@yu61 ~]# ls /mnt

a.txt   shoadow   test

附件:

NFS常用路径

说明

/etc/exports

NFS服务的主配置文件。

/usr/sbin/exports

NFS的管理命令,可以加载 NFS 配置生效等

/usr/sbin/showmount

用来客户端查看 NFS 配置及挂在结果命令

/var/lib/nfs/etab

NFS配置文件的完整参数设定文件

/pro/mounts

客户端挂在参数

/vae/lib/nfs/rmtab

客户端访问服务器 exports 的信息列表

CentOS 7 下 NFS 实例笔记 http://www.linuxidc.com/Linux/2016-12/138708.htm

Linux 下 NFS 搭建步骤 http://www.linuxidc.com/Linux/2016-08/134022.htm

NFS 文件系统详解  http://www.linuxidc.com/Linux/2016-06/131940.htm

基于 LAMP 平台利用 NFS 远程共享资源实现站点构建  http://www.linuxidc.com/Linux/2016-07/133510.htm

Linux NFS 服务器的安装与配置详解 http://www.linuxidc.com/Linux/2017-01/139886.htm

CentOS 7.2 中 NFS1.3 安装 http://www.linuxidc.com/Linux/2016-10/135970.htm

Ubuntu 14.04 安装配置 NFS 服务器 http://www.linuxidc.com/Linux/2016-04/129848.htm

Linux 的 NFS 配置  http://www.linuxidc.com/Linux/2017-04/143135.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-06/145030.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计8037字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中