文章目录

1、NFS服务2、RPC服务与NFS3、NFS的优缺点4、NFS服务端的搭建与配置5、小结

1、NFS服务

NFS,全称Network File System,即网络文件系统。最大的功能是通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。

 更直白的说就是:

让PC将网络中的NFS服务器共享的目录挂载到本地的文件系统中,这样在本地端访问挂载点就等于访问共享目录,NFS服务器共享的目录就像是自己的一个磁盘分区一样。

如图,在NFS服务器设置了一个共享目录/home/public,有权访问的客户端A就可以将这个共享目录挂载到自己文件系统的某个点,如/home/data/mypublic,如此,就可以在本地访问远程共享目录。

# 挂载后,可以看客户端磁盘的具体信息:

df -h /home/data/mypublic

# 这里指定了挂载点是/home/data/mypublic

NFS是通过网络来进行服务器端和客户端之间的数据传输,那么两者之间要传输数据就要有相对应的网络端口。NFS服务器的端口开在2049,此外,由于文件系统非常复杂。因此NFS还有其他的程序去启动额外的端口,这些额外的用来传输数据的端口是随机选择的,是小于1024的端口。既然是随机选择,那客户端如何知道NFS服务器使用的是哪个端口呢?

答案是通过远程过程调用协议,即RPC服务(Remote Procedure Call)

2、RPC服务与NFS

RPC( Remote Procedure Call )协议的主要目的是做到:不同服务间调用方法像同一服务间调用本地方法一样。

当NFS启动后,会随机使用一些端口,然后NFS会向RPC去注册登记这些端口。RPC记录下这些端口,并开启自身111端口,等待客户端请求。当客户端请求时,RPC就将NFS记录的端口信息告诉客户端,客户端获取到了NFS服务器的端口信息,从而建立连接进行数据传输。

具体流程:

1)首先服务器端启动RPC服务,并开启111端口

2)服务器端启动NFS服务,并向RPC注册登记端口信息

3)客户端启动RPC,向服务端的RPC服务请求服务端的NFS端口

4)服务端的RPC服务反馈NFS端口信息给客户端

5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输

3、NFS的优缺点

优点:

节省本地存储空间,将一些常用的数据存放在一台服务器通过网络访问对于大多数负载均衡群集来说,使用NFS协议来共享数据存储是比较常见的方法

缺点:

局限性: 容易发生单点故障,即server服务器宕机所有的客户端都不能访问性能瓶颈: 网站高并发的情况下,NFS性能有限安全性: 客户端的数据都是通过明文传送,客户端没有用户认证机制,安全性一般,建议在局域网内使用数据完整性: NFS服务器传输数据都是采用明文的方式进行传输,对数据没有什么验证机制,对数据完整性较高的业务不建议使用维护繁琐: NFS服务器都是多台客户端挂载在一台server端,对于共享服务器的连接管理维护都是一项比较繁琐的事情

4、NFS服务端的搭建与配置

第一步:NFS服务端包安装(服务端)

//查询是否安装nfs-utils和rpcbind,未装则安装

rpm -q nfs-utils|| yum -y install nfs-utils

rpm -q rpcbind || yum -y install rpcbind

注意:

有的文章中提到了portmap,centos 6.4中portmap已经被rpcbind取代,而它又已经在安装nfs-utils包的时候安装了,不放心可以装完nfs后service rpcbind status验证

第二步:NFS配置文件修改(服务端)

# 创建服务端用于测试的共享目录

mkdir -p /root/test

# 编辑配置文件,我直接>>追加了

# 以下:*即客户机随意,ro表示客户端是只读权限

echo "/root/test *(ro)" >> /etc/exports

关于NFS配置权限设置,即/etc/exports文件配置格式中小括号()里的参数集:

第三步:关闭防火墙(服务端)并启动服务

# 关闭防火墙

systemctl stop firewalld

# 查看是否关闭成功

systemctl status firewalld

# 先启动rpcbind!!!并设置开机自启动

systemctl start rpcbind

systemctl enable rpcbind

# 再启动nfs并设置开机自启动

systemctl start nfs

systemctl enable nfs

# 发布共享目录

exportfs -rv

# 查看共享目录

showmount -e

第四步:客户端安装NFS并挂载

//查询是否安装nfs-utils和rpcbind,未装则安装

rpm -q nfs-utils|| yum -y install nfs-utils

rpm -q rpcbind || yum -y install rpcbind

//启动rpcbind和nfs

systemctl start rpcbind

systemctl start nfs

//查看NFS服务端共享的目录情况,假设服务端IP为1.1.1.1

showmount -e 1.1.1.1

//挂载

//其中,1.1.1.1是NFS服务器IP,/root/test是第二步中共享出来的目录

//目录/home/mnt是客户端的挂载点

mount 1.1.1.1:/root/test /home/mnt

//查看挂载是否成功

df -h /home/mnt

mount的时候报错no route to host,八成是防火墙忘关了,systemctl stop firewalld

5、小结

NFS是一种基于TCP/IP传输的网络文件系统协议,可以实现客户机访问远程服务器中的共享资源,NFS服务配置文件是/etc/exports,其缺点是安全性差。

配置NFS共享存储的步骤:

服务器端

第一步:安装nfs-utils和rpcbind软件,并关闭防火墙和增强安全功能

第二步:设置共享目录并把共享目录的权限设为777

第三步:修改NFS的配置文件(格式为:共享的目录名称 客户机地址(权限))

第四步:启动NFS服务(先启动rpcbind,再启动nfs),并设置开机自启动

第五步:发布NFS共享目录,并查看

客户端

第一步:安装nfs-utils和rpcbind软件,并关闭防火墙和增强安全功能

第二步:查看服务器端的共享目录,并将其挂载到新建目录上(可手动或自动挂载)

参考文章: 篇一:NFS详解 篇二:NFS实验

查看原文