NFS存储服务

一、NFS 原理图

二、NFS 原理描述

  2.1:什么是NFS

    NFS中文名字:网络共享存储,就是通过网络共享目录,让网络上的其他服务器能够挂载访问共享目录的数据(NFS一般都是用来存放视频、附件、图片等静态数据的).

    NFS是通过网络来进行服务端和客户端数据传输的,那么只要是通过网络的就一定会有端口,那NFS的端口是什么呢?很失望的是NFS的端口是随机的,每次重启服务端口都会改变.

    那么客户端是怎样知道服务端的端口的呢?其实NFS服务器是通过远程过程调用(RPC)协议/服务来实现的,也就是说RPC服务会统一管理NFS的端口,客户端和服务端通过RPC来确定端口,进行数据传输.

    PS:(哦,原来是RPC管理服务端的NFS端口分配,客户端要传数据,那客户端的RPC会先跟服务端的RPC去要服务器的端口,要到端口后再建立连接,然后传输数据)。

  2.2:什么是RPC

    RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

    RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了  传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

    RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。

    首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。

    当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

=================================上面说了这么多,其实就是百度百科上面的解释,只要理解了也是对的===================================

    PS:在NFS中RPC就是来管理NFS注册的端口的RPC的端口是111

  2.3:RPC和NFS之间的关系

    NFS服务端需要先启动RPC,在启动NFS,这样NFS才能到RPC注册端口信息,客户端的RPC可以通过向服务端的RPC请求获取服务端的NFS端口信息,获取到端口后,就可以以获取到的实际端口来进行数据传输了

  2.4:RPC和NFS启动顺序

    ① 先启动RPC服务

    ② 在启动NFS服务

    ③ 客户端只启动RPC服务就OK

  2.5:NFS客户端和NFS服务端的通讯原理

    ① 首先服务端会启动RPC服务,并开启111端口

    ② 服务端启动NFS服务,并向RPC注册端口

    ③ 客户端启动RPC服务,向服务端的RPC服务请求获取NFS端口

    ④ 服务端的RPC服务反馈端口给客户端的

    ⑤ 客户端通过服务端的RPC反馈回来的端口和服务端进行数据传输

三、NFS 优缺点

  3.1:优点

    ① 简单容易掌握

    ② 方便快速的部署维护简单

    ③ 从软件层面上来看,数据的可靠性高

    ④ 某一方面来讲节省了本地的磁盘空间

  3.2:缺点

    ① 单点故障 维护麻烦,nfs挂了,也就表示所有的客户端就没法连接了(也是可以通过NFS集群解决这个问题的,也可以考虑Moosefs(mfs)、GlusterFS(大文件存储)、FastDFS分布式文件系统)

    ② 高并发场合,效率低(2000万pv网站不是瓶颈,除非网站的架构性能很渣)

    ③ 服务端共享文件客户端认证基于IP和主机名的,安全性一般般(但是一般用NFS都是通过内网来做共享)

    ④ NFS的数据是明文的,对数据的完整性不做验证(内网用,问题不大)

四、NFS 什么环境使用

  ① 建议在中小型网站(2000万pv以下)的线上应用

  ② 访问量小的网站,可以用来做视频、附件、图片的存储

  ③ 多台服务器同时使用一台服务器的目录

五、NFS 搭建部署

  5.1:语法及常用的参数

配置文件语法规则
NFS要共享的目录    NFS客户端地址1(参数1,参数2) 客户端地址2(参数1,参数2)
或者
NFS要共享的目录    NFS客户端地址/网段(参数1,参数2)

NFS共享目录:为NFS服务端要共享的实际目录,要用绝对路径,此目录必须要有本地的权限
NFS客户端地址: 为NFS服务端授权的可访问共享目录的NFS客户端地址,可以是一个单独的IP也可以是个网段
权限参数集:rw:可读可写 sync:直接写到磁盘 async:异步写入磁盘(大并发)

常用参数
rw    可读写
ro    可读
sync    请求写入数据时,数据同步到磁盘才返回
async    请求写入数据时,数据先写到缓冲区,只有在磁盘有空的时候写到磁盘,前提是要确保服务器不间断运行,不然会丢数据
all_squash 不管访问NFS Server共享目录的用户身份如何,权限都将会被压缩成匿名用户 目的就是让所有的客户端都能互相管理
anonuid    指定用户UID
anongid    指定用户GID

部署完NFS以后会有些命令
/etc/exports    主配置文件
/usr/sbin/exportfs    管理命令
/usr/sbin/showmount    查看NFS的挂载情况
/proc/mounts     查看客户端挂载参数
/var/lib/nfs/rmtab     客户端访问服务器的exports的信息列表

NFS支持平滑重启reload
/etc/init.d/nfs reload 或者 /usr/sbin/exportfs  -rv
自我检查:showmount -e 192.168.163.129(配置NFS服务端的内网地址)

  5.2:在服务端安装NFS和RPC软件

yum安装NFS和RPC
在yum源中有nfs是不存在的,所以要先安装epel源
yum -y install epel-release
yum -y install nfs-utils  rpcbind

  5.3:编辑NFS配置文件

编辑NFS配置文件
[[email protected] ~]# vim /etc/exports
[[email protected] ~]# cat /etc/exports
# /home/shared by root for web1 server
/home/shared  192.168.163.0/24(rw,sync)

  5.4:启动NFS并检查启动状态

现在是服务端一定要遵循启动的顺序,先RPC服务在NFS服务

# 启动RPC
systemctl start rpcbind.service

# 启动NFS
systemctl start nfs.service

# 查看NFS有没有注册到RPC
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  11064  status
    100024    1   tcp   7423  status
    100005    1   udp  20048  mountd
    100005    1   tcp  20048  mountd
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100003    3   udp   2049  nfs
    100227    3   udp   2049  nfs_acl
    100021    1   udp  17683  nlockmgr
    100021    3   udp  17683  nlockmgr
    100021    4   udp  17683  nlockmgr
    100021    1   tcp   2911  nlockmgr
    100021    3   tcp   2911  nlockmgr
    100021    4   tcp   2911  nlockmgr

# 服务端检查
showmount -e 192.168.163.129
出现下面结果成功
Export list for 192.168.163.129:
/home/shared 192.168.163.0/24

  5.5:客户端安装RPC服务软件

客户端只需要启动RPC服务就好了,一开始感觉可能只安装rpcbind软件就好了,但是最后发现测试的时候没有showmount命令,也就是说明showmount命令是nfs软件带的,所以还是把nfs和RPC都装上比较好

和服务端安装的方式一样
安装epel
yum -y install epel-release
yum -y install nfs-utils rpcbind

# 启动RPC服务
systemctl start rpcbind.service

# 客户端检查
showmount -e 192.168.163.129
得到以下结果没问题
Export list for 192.168.163.129:
/home/shared 192.168.163.0/24

  5.6:客户端挂载测试

挂载命令
mount -t nfs 192.168.163.129:/home/shared/ /mnt/

检查命令(下面结果成功)
df -h | tail -1
192.168.163.129:/home/shared   32G   33M   32G    1% /mnt

mount | tail -1
192.168.163.129:/home/shared on /mnt type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.163.132,local_lock=none,addr=192.168.163.129)

六、NFS 扩展(与rsync实时同步)

  6.1:nfs+inotify+rsync

七、NFS 总结

  NFS就是网络共享文件系统,就是服务端共享目录,客户端挂载使用,共享文件服务端需要配置/etc/exports文件,添加相应的权限和目录,开启共享目录的本地权限,然后客户端mount挂载,使用默认也行,自己加参数做安全优化也行,服务端的启动顺序一定是先RPC在NFS,在2000万pv的情况下NFS还是一个不错的选择,不管是优点还是缺点,在使用中都能有一个很好的效果(缺点是有办法解决的呦)

八、NFS 错误总结

nfs的三个主程序,知道了对拍错很有帮助的

nfsd这个就是nfs的主程序,如果这个被停了,那就表示nfs完全的瘫掉不能工作,当然就连接不上了
rpc.mountd 这个属于管理共享的挂载机制
rpc.quotad 管理共享配额

=================================================

RPC故障

服务端RPC故障:原有已挂载的不会受到任何影响。所有客户端如果是要挂载本服务器的共享,或者是重新执行已经挂载本服务器的共享的操作(卸载,重新挂载)均会出现错误。因为此时还需要去向RPC去请求端口信息。新的挂载或服务端新的共享均出错。

客户端RPC故障:原有已挂载的不会受到任何影响。本客户端如果要重新挂载,卸载任何服务器的共享均会报错。新的挂载出错.

服务端NFS故障

服务器NFS故障:NFS是提供挂载的主程序,如果出现故障,那么挂载本服务器的共享的客户端均会出现故障。主程序都出错了,结果可想而知嘛。就像车子发动机都不动了,还怎么开。

网络故障

网络故障:网络是提供网络服务的最基础条件,如果出现故障,那么基于网络以上的服务都会出现故障。

原文地址:https://www.cnblogs.com/zhujingzhi/p/9574813.html

时间: 2024-10-07 09:28:25

NFS存储服务的相关文章

NFS存储服务部署(上)

作者:George 归档:学习笔记 2018/1/24 NFS存储服务部署(上) 1.1 NFS服务介绍 1.1.1 什么是NFS? 1. NFS--Network File Systemt网络文件系统,叫称为网络共享文件系统 2. 作用:通过网络(一般为局域网)让不同主机系统之间可以共享文件 3. NFS服务和winodws系统的网络共享很相似,但NFS无法部署在windows上 4. windows与linux网络共享使用FTP.samba,它们都支持windows与linux之间共享 5.

部署NFS存储服务(下)

作者:Georgekai 归档:学习笔记 2018/1/25 部署NFS存储服务(下) 2.1 服务端有关的配置 2.1.1 练习题:共享不同的俩个目录,分别赋予读和写权限 服务端部署过程: 第一个里程:编写nfs配置文件 vim /etc/exports /data/w  172.16.1.0/24(rw,sync,all_squash) /data/r  172.16.1.0/24(ro,sync,all_squash) 注:服务端配置文件中,尽量避免继承权限的发生(因权限大的会生效) 第二

NFS存储服务(下)

第1章 回顾及练习 1.1  回顾总结 1.1.1 NFS存储服务是什么? 网络文件系统,实现数据共享统一一致 1.1.2 NFS工作原理 1. 什么是rpc服务 rpc服务类似于中介,nfs服务将启动的进程和端口信息,向rpc服务进行注册 nfs客户端向rpc服务发出请求,进行共享目录挂载,从而实现通过网络存储数据信息 2. 服务端做了三件事: ①. 首先启动rpc服务 ②. 其次启动nfs服务 ③. nfs服务向rpc服务进行注册,只注册一次(如果nfs服务进行了重启,会再次注册) 3. 客

NFS存储服务及部署

1 NFS简介 1.1 什么是NFS NFS=Network File System=网络文件系统.主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录.NFS客户端(一般为应用服务器,例如web)可以通过挂载(mount)的方式将NFS服务器端共享的数据目录挂载到NFS客户端本地系统中(就是某一个挂载点下).从客户端本地看,NFS服务器端共享的目录就好像是客户端自己的磁盘分区或者目录一样,而实际上却是远端的NFS服务器的目录.分布式文件系统:Moosefs(mfs).Glu

NFS存储服务深度实践

第1章 NFS介绍 1.1 什么是NFS? NFS 是Network File System的缩写,中文意思是网络文件系统.它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录.NFS客户端(一般为应用服务器,例如web)可以通过挂载(mount)的方式将NFS服务器端共享的数据目录挂载到NFS客户端本地系统中(就是某一个挂载点下).从客户端本地看,NFS服务器端共享的目录就好像是客户端自己的磁盘分区或者目录一样,而实际上却是远端的NFS服务器的目录. NFS网络文件系统

NFS存储服务(上)

第1章 NFS介绍 1.1 什么是NFS NFS是Network File System的缩写,中文意思是网络文件系统 它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录 NFS==网络共享文件系统 互联网中小型网站集群架构后端常用NFS进行数据共享 如果大型网站,那么有可能还会用到更复杂的分布式文件系统,例如:Moosefs(mfs).GlusterFS.FastDFS 扩展:NFS网络文件系统很像Windows系统的网络共享,但是无法部署在windows系统上,NF

Linux(10):期中架构(2)--- NFS存储服务

1. 共享存储服务概念: # NFS是Network File System的缩写,中文意思是网络文件系统, # 它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录. 2. NFS共享存储服务的应用: # 将数据存储到一台服务器上,实现数据统一一致,共享访问 # NFS存储服务器中主要存储哪些信息:用户上传的图片 音频 视频 附件等信息 # NFS服务是分为服务端和客户端 # 存储服务器:NFS服务端 网站web服务器:NFS客户端 # 实现共享存储好处: 01. 实现

LAMP集群项目五 部署NFS存储服务并设置WEB服务挂载

yum install nfs-utils portmap -y 在centos6.5中portmap已经改为rpcbind 先启动rpcbind /etc/init.d/rpcbind start /etc/init.d/nfs start mkdir /backup   创建一个共享目录\ 确保nfsnobody都是同一个uid : 65534 ,否则不是一个权限 grep  nfsnobody  /etc/passwd vim  /etc/exports /backup 192.168.1

nfs存储服务实时同步

1.NFS简介 NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过网络共享资源.将NFS主机分享的目录,挂载到本地客户端当中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,在客户端端看起来,就像访问本地文件一样. RPC,基于C/S模型.程序可以使用这个协议请求网络中另一台计算机上某程序的服务而不需知道网络细节,甚至可以请求对方的系统调用. 对于Linux而言,文件系统是在内核空间实现的,即文件系统比如ext3.ext4等是在Kern