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

简介:

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

 

什么是NFS

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

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

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

wKioL1k31T6SGKD_AACOFhZusIk948.png 

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

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

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

 

wKioL1k31Urhl0M9AACdTVZyC9M589.png 

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

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

NFS的工作原理

wKiom1k31VPgISEoAABarCYGBeQ437.png 

服务端设置一个专门用来共享的目录(/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的挂载基本使用过程

wKiom1k31WDx3J5JAAAhpppzNEI471.png 

请求数据的流程:

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@yu6~]# 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的信息列表











本文转自 于学康 51CTO博客,原文链接:http://blog.51cto.com/blxueyuan/1933210,如需转载请自行联系原作者

目录
相关文章
|
4天前
|
机器学习/深度学习 存储 监控
内部文件审计:企业文件服务器审计对网络安全提升有哪些帮助?
企业文件服务器审计是保障信息安全、确保合规的关键措施。DataSecurity Plus 是由卓豪ManageEngine推出的审计工具,提供全面的文件访问监控、实时异常告警、用户行为分析及合规报告生成功能,助力企业防范数据泄露风险,满足GDPR、等保等多项合规要求,为企业的稳健发展保驾护航。
|
5天前
|
安全 Linux Shell
使用SCP命令在CentOS 7上向目标服务器传输文件
以上步骤是在CentOS 7系统上使用SCP命令进行文件传输的基础,操作简洁,易于理解。务必在执行命令前确认好各项参数,尤其是目录路径和文件名,以避免不必要的传输错误。
70 17
|
11天前
|
自然语言处理 Unix Linux
解决服务器中Jupyter笔记本的文件名字符编码问题
通过上述步骤,可以有效解决Jupyter笔记本的文件名字符编码问题,确保所有文件能在服务器上正常访问并交互,避免因编码问题引起的混淆和数据丢失。在处理任何编码问题时,务必谨慎并确保备份,因为文件名变更是
56 17
|
3月前
|
Python
使用Python实现multipart/form-data文件接收的http服务器
至此,使用Python实现一个可以接收 'multipart/form-data' 文件的HTTP服务器的步骤就讲解完毕了。希望通过我的讲解,你可以更好地理解其中的逻辑,另外,你也可以尝试在实际项目中运用这方面的知识。
209 69
|
8月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
181 9
|
4月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
10月前
|
存储 UED Windows
Windows服务器上大量文件迁移方案
Windows服务器上大量文件迁移方案
674 1
|
11月前
|
消息中间件 存储 Serverless
函数计算产品使用问题之怎么访问网络附加存储(NAS)存储模型文件
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
11月前
|
存储 监控 固态存储
【vSAN分布式存储服务器数据恢复】VMware vSphere vSAN 分布式存储虚拟化平台VMDK文件1KB问题数据恢复案例
在一例vSAN分布式存储故障中,因替换故障闪存盘后磁盘组失效,一台采用RAID0策略且未使用置备的虚拟机VMDK文件受损,仅余1KB大小。经分析发现,该VMDK文件与内部虚拟对象关联失效导致。恢复方案包括定位虚拟对象及组件的具体物理位置,解析分配空间,并手动重组RAID0结构以恢复数据。此案例强调了深入理解vSAN分布式存储机制的重要性,以及定制化数据恢复方案的有效性。
225 5
|
6月前
|
存储 安全 网络安全
服务器感染了.baxia勒索病毒,如何确保数据文件完整恢复?
近年来,勒索病毒如.baxia不断演变,利用漏洞、社交工程等手段加密文件,威胁范围扩大。加密货币的兴起使其支付方式更匿名,追踪困难。技术支持尤为重要,添加技术服务号(shuju315),专业团队提供数据恢复方案。面对复杂解密要求,包括赎金支付、个人信息提供和执行特定操作,需保持冷静并寻求帮助。防御措施包括加强安全意识、定期备份数据、安装杀毒软件、避免未知文件、更新系统及制定应急响应计划。
257 11