天天看点

什么是NFS?NFS挂载1、NFS服务2、RPC服务与NFS3、NFS的优缺点4、NFS服务端的搭建与配置5、小结

文章目录

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

1、NFS服务

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

😉

更直白的说就是:

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

什么是NFS?NFS挂载1、NFS服务2、RPC服务与NFS3、NFS的优缺点4、NFS服务端的搭建与配置5、小结

如图,在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服务器的端口信息,从而建立连接进行数据传输。

具体流程:

什么是NFS?NFS挂载1、NFS服务2、RPC服务与NFS3、NFS的优缺点4、NFS服务端的搭建与配置5、小结

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文件配置格式中小括号()里的参数集:

什么是NFS?NFS挂载1、NFS服务2、RPC服务与NFS3、NFS的优缺点4、NFS服务端的搭建与配置5、小结
第三步:关闭防火墙(服务端)并启动服务
# 关闭防火墙
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
           
什么是NFS?NFS挂载1、NFS服务2、RPC服务与NFS3、NFS的优缺点4、NFS服务端的搭建与配置5、小结

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实验

继续阅读