[关闭]
@xushengkai 2022-12-22T12:39:58.000000Z 字数 4912 阅读 194

NFS网络文件共享服务

未分类

NFS概述

1.概述

NFS是一种基于TCP/IP 传输的网络文件系统协议。通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源
NAS存储: NFS服务的实现依赖于RPC (Remote Process Call,远端过程调用)机制,以完成远程到本地的映射过程。
在Centos 7系统中,需要安装nfs-utils、 rpcbind 软件包来提供NFS共享服务,前者用于NFS共享发布和访问,后者用于RPC支持。
手动加载NFS共享服务时,应该先启动rpcbind, 再启动nfs。

2.特点

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

工作原理

1.工作原理

它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利

2.工作流程

  1. 首先服务器端启动RPC服务,并开启111端口
  2. 服务器端启动NFS服务,并向RPC注册端口信息
  3. 客户端启动RPCportmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
  4. 服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
  5. 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输

3.挂载原理

当我们在NFS服务器设置好一个共享目录/opt后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,并且挂载好后我们在本地能够看到服务端/opt的所有数据

4.RPC服务概述

RPC(Remote Procedure Call)即远程过程调用。RPC 最主要的功能就是在指定每个NFS功能所对应的端口号 ,并且回报给客户端,让客户端可以连结到正确的端口上去

NFS通讯原理

1、RPC与NFS如何通讯

因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。PRC最主要的功能就是指定每个NFS功能所对应的port number,并且通知客户端,记客户端可以连接到正常端口上去。

2.RPC又是如何知道每个NFS功能的端口呢?

首先当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口,RPC就会记录下这些端口,并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那么服务器端的RPC就会将之前记录的NFS端口信息告知客户端。如此客户端就会获取NFS服务器端的端口信息,就会以实际端口进行数据的传输了。

提示:

在启动NFS SERVER之前,首先要启动RPC服务(即portmap服务,下同)否则NFS SERVER就无法向RPC服务区注册,另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。特别注意:一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行/etc/init.d/nfs reload或exportfs –rv即可使修改的/etc/exports生效。

NFS服务的优缺点

1.优点

  1. 节省本地存储空间将常用的数据存放在一台服务器可以通过网络访问
  2. 简单容易上手
  3. 方便部署非常快速,维护十分简单

2.缺点

  1. 局限性容易发生单点故障,及server机宕机了所有客户端都不能访问
  2. 在高并发下NFS效率/性能有限
  3. 客户端没用用户认证机制,且数据是通过明文传送,安全性一般(一般建议在局域网内使用)
  4. NFS的数据是明文的,对数据完整性不做验证
  5. 多台机器挂载NFS服务器时,连接管理维护麻烦

NFS在企业中的应用场景

在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频,图片,附件等静态资源文件,通常网站用户上传的文件都会放到NFS共享里,例如:BBS产品的图片,附件,头像(注意网站BBS程序不要放NFS共享里),然后前端所有的节点访问这些静态资源时都会读取NFS存储上的资源。NFS是当前互联网系统架构中最常用的数据存储服务之一。

在企业生产集群架构中,NFS作为所有前端Web服务的共享存储,存储的内容一般包括网站用户上传的图片,附件,头像等,注意,网站的程序代码不要放NFS共享里,因为网站程序是开发运维人员统一发布的,不存在发布延迟问题,直接批量发布到Web节点提供访问比共享到NFS里访问效率更高。

部署NFS服务

CentOS 6系统部署服务

1.部署测试环境

准备两台虚机,一台NFS服务端一台客户端,提前关闭防火墙和selinux

2.1部署服务端

  1. 安装nfs服务和rpc服务
  2. [root@localhost ~]# yum -y install nfs-utils rpcbind
  3. 创建共享目录
  4. [root@localhost ~]# mkdir /date

2.2创建配置文件exports

  1. exports文件是新创建的,名字不能变,写入内容
  2. 这里共享目录要提前创建好,如果没有提前创建共享目录,在写好配置文件后,重启服务会报错
  3. [root@localhost ~]# vim /etc/exports
  4. /date 192.168.200.0/24(rw,sync)
  5. 表示这个网段的所有的主机都可以访问/date目录,读写权限,数据同步

2.3,打开nfs和rpc服务

  1. 这里我先写好配置文件在启动服务,可以减少操作过程中不必要的报错
  2. [root@localhost ~]# service rpcbind start
  3. Starting rpcbind: [ OK ]
  4. [root@localhost ~]# service nfs restart
  5. Shutting down NFS daemon: [ OK ]
  6. Shutting down NFS mountd: [ OK ]
  7. Shutting down NFS services: [ OK ]
  8. Shutting down RPC idmapd: [ OK ]
  9. Starting NFS services: [ OK ]
  10. Starting NFS mountd: [ OK ]
  11. Starting NFS daemon: [ OK ]
  12. Starting RPC idmapd: [ OK

2.4更改共享目录的属主

  1. 安装完nfs服务后会自动创建程序用户nfsnobody,这里我查询一下。
  2. [root@localhost ~]# id nfsnobody
  3. uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)
  4. 更改共享目录的属主,改为程序用户nfsnobody
  5. [root@localhost ~]# chown nfsnobody /date
  6. [root@localhost ~]# ll -d /date/
  7. drwxr-xr-x. 2 nfsnobody root 4096 Nov 16 06:17 /date/

2.5显示指定NFS服务器输出目录列表(也称为共享目录列表)

  1. [root@localhost ~]# showmount -e 127.0.0.1
  2. Export list for 127.0.0.1:
  3. /date 192.168.200.0/24

3.部署客户端环境

3.1yum安装nfs-utils

  1. [root@localhost ~]# yum -y install nfs-utils

3.2开始挂载

  1. [root@localhost ~]# mount 192.168.200.128:/date /tmp
  2. 查看挂载情况:
  3. [root@localhost ~]# df -h
  4. Filesystem Size Used Avail Use% Mounted on
  5. /dev/mapper/VolGroup-lv_root 18G 1.6G 15G 10% /
  6. tmpfs 491M 0 491M 0% /dev/shm
  7. /dev/sda1 485M 33M 427M 8% /boot
  8. 192.168.200.128:/date 18G 5.5G 11G 34% /tmp

3.3开始测试,在服务端挂载目录创建新文件

  1. [root@localhost ~]# touch /tmp/{1..10}.jpg
  2. [root@localhost ~]# ls /tmp/
  3. 10.jpg 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg 7.jpg 8.jpg 9.jpg

3.4查看客户端共享目录,共享成功

  1. [root@localhost ~]# ls /date/
  2. 10.jpg 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg 7.jpg 8.jpg 9.jpg

CentOS 7系统部署服务

1.部署环境

准备两台虚机,一台NFS服务端,一台客户端,关闭防火墙和selinux

2.部署NFS服务端环境

2.1安装nfs服务

  1. [root@localhost ~]# yum -y install nfs-utils

2.2创建目录存储网站代码

  1. [root@localhost ~]# mkdir /webdate

2.3放置测试页面

  1. [root@localhost ~]# echo "nfs test" > /webdate/index.html

2.4创建配置文件,写入内容

  1. [root@localhost ~]# vim /etc/exports
  2. /webdate 192.168.200.0/24(rw)
  3. 表示这个网段下所有主机都可以访问NFS服务端下的/webdate目录,读写权限

2.5启动nfs服务

  1. [root@localhost ~]# systemctl start nfs-server

2.5检查NFS输出是否正常

  1. [root@localhost ~]# exportfs -v
  2. /webdate 192.168.200.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

2.6查看NFS服务端可用目录

  1. [root@localhost ~]# showmount -e 192.168.200.168
  2. Export list for 192.168.200.168:
  3. /webdate 192.168.200.0/24

3.部署客户端环境

3.1安装nfs,httpd服务

  1. [root@localhost ~]# yum -y install nfs-utils httpd

3.2打开httpd服务

  1. [root@localhost ~]# systemctl start httpd

3.3挂载

  1. [root@localhost ~]# mount -t nfs 192.168.200.168:/webdate /var/www/html/
  2. 查看挂载:
  3. [root@localhost ~]# df
  4. 文件系统 1K-块 已用 可用 已用% 挂载点
  5. /dev/mapper/centos-root 17811456 4663396 13148060 27% /
  6. devtmpfs 481848 0 481848 0% /dev
  7. tmpfs 498976 0 498976 0% /dev/shm
  8. tmpfs 498976 8456 490520 2% /run
  9. tmpfs 498976 0 498976 0% /sys/fs/cgroup
  10. /dev/sda1 1038336 160400 877936 16% /boot
  11. 192.168.200.168:/webdate 17811456 5433856 12377600 31% /var/www/html

3.4查看客户端共享目录,共享成功

  1. [root@localhost ~]# ls /var/www/html/
  2. index.html
  3. [root@localhost ~]# cat /var/www/html/index.html
  4. nfs test

4.验证结果最终结果,打开网页查看客户端web页面,显示我们index.html文件的内容

  1. http://192.168.200.169
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注