一、NFS的介绍

1.1、什么是NFS

  • NFS 是Network File System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。
  • NFS在文件传送或信息传送过程中依赖于RPC协议。RPC:远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。
  • NFS服务器可以看作是一个FILE SERVER。它可以让你的机器(客户端)通过网络将远端的NFS SERVER共享目录MOUNT到自己的系统中。
      在客户端看来使用NFS的远端文件就象是在使用本地文件一样,原理图如下:
         

1.2、NFS守护进程

  • nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器;
  • mountd:它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端登录到NFS服务器后,必须通过文件使用权限的验证。它会读取NFS的配置文件/etc/exports来对比客户端权限。
  • portmap:主要功能是进行端口映射工作。

1.3、NFS服务器的配置

1.3.1  需要的包:一般都缺省安装好了,如果需要可从镜像文件中安装。

1.3.2  NFS的相关配置文件和命令

  • /etc/exports                  NFS服务的主要配置文件
  • /usr/sbin/exportfs         NFS服务的管理命令
  • /usr/sbin/showmount   查看命令

1.3.3 /etc/exports文件内容格式:

   <输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]
       如:将NFS Server的/soft共享给192.168.3.0/24网段,权限为读写。
  [root@NFS ~]# vi /etc/exports
   /soft 192.168.3.0/24(rw) 访问权限

二、NFS 搭建

2.1. 创建NFS服务器

2.1.1 安装nfs-utils和RPC

 [root@NFS ~]# rpm -qa nfs-utils rpcbin               #检查系统中是否安装 NFS 和 RPC
[root@NFS ~]# yum -y install nfs-utils rpcbind #使用 yum 安装nfs 和 rpc

2.1.2 创建共享目录

[root@NFS ~]# mkdir -p /data/nfs/ 

[root@NFS ~]# chmod 777 /data/nfs/

[root@NFS ~]# ll /data

2.1.3 编辑配置NFS配置文件

编辑/etc/exports文件添加需要共享目录,每个目录的设置独占一行,编写格式如下:
      NFS共享目录路径 客户机IP段(参数1,参数2,...,参数n)
参数说明:
参数 说明
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 共享文件的UID和GID映射匿名用户anonymous,适合公用目录
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squash root用户具有根目录的完全管理访问权限
anonuid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的GID
  • 注1:尽量指定IP段最小化授权可以访问NFS 挂载的资源的客户端
  • 注2:经测试参数insecure必须要加,否则客户端挂载出错 mount.nfs: access denied by server while mounting
例子:
[root@NFS ~]# cat >>/etc/exports<<EOF
> /data/nfs 192.168.3.87(rw,sync,no_subtree_check) 192.168.3.88(rw,sync,no_subtree_check)
> EOF
[root@NFS ~]# cat /etc/exports
/data/nfs 192.168.3.87(rw,sync,no_subtree_check) 192.168.3.88(rw,sync,no_subtree_check)
[root@NFS ~]#

2.1.4 启动RPC和NFS服务

[root@NFS ~]# systemctl start rpcbind # 启动rpc
[root@NFS ~]# systemctl start nfs-server #启动nfs
[root@NFS ~]# systemctl enable rpcbind #设置开机自启
[root@NFS ~]# systemctl enable nfs-server #设置开机自启

2.1.5 设置配置文件生效

[root@NFS ~]# exportfs -r       #让配置文件生效

2.1.6 检查

[root@NFS ~]# rpcinfo -p localhost # 检查NFS服务是否向rpc注册端口信息
[root@NFS ~]# showmount -e  # 检查共享目录信息

2.2 客户端挂载

2.2.1  检查客户端是否可以连接服务端

[root@localhost ~]# showmount -e 192.168.0.89  # 检查共享目录信息
Export list for 192.168.3.89:
/u01/upload 192.168.3.88,192.168.3.85,192.168.3.87

2.2.2 进行挂载

[root@localhost ~]# mount -t nfs 192.168.3.89:/data/nfs /u01/upload # 进行磁盘挂载
[root@localhost ~]# df -h #检查挂载情况
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 50G 7.4G 43G 15% /
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 8.9M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sda1 1014M 145M 870M 15% /boot
/dev/mapper/centos-home 334G 34M 334G 1% /home
tmpfs 3.2G 0 3.2G 0% /run/user/0
192.168.3.89:/data/nfs 50G 22G 29G 44% /u01/upload

三、安装过程中的报错与解决

报错一
 clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
这个出现在客户端用 showmount -e 检查与服务端共享情况时报得错,一般原因是因为服务端nfs服务没启动或者是防火墙没关闭。
 
报错二
 exportfs:  192.168.3.87:/data/share: Function not implemented
 这个报错一般出现在exportfs -r 设置配置文件生效时出现的,可能是因为相关nfs服务没启动或者相关服务器需要加端口号才能访问。
解决方法让如下:
1. 尝试重启nfs服务和rpc服务
2. 配置文件加上端口号如:/data/share/ 192.168.3.87/22(rw,no_root_squash,no_all_squash,sync)
 
报错三
  -bash: showmount: command not found
 在客户端测试时,发现无法使用showmount命令,需要执行命令yum -y install nfs-utils安装相关命令
 
 其它详情参考NFS文件共享系统
 

NFS介绍与搭建的更多相关文章

  1. ubuntu 16.04 nfs服务的搭建

    nfs服务是实现Linux和Linux之间的文件共享,nfs服务的搭建比较简单. 现在介绍如何在ubuntu16.04系统中搭建nfs服务,ubuntu的搭建比红帽的还要简单. 1.安装nfs服务 s ...

  2. Red Hat 6.5 nfs服务的搭建

    nfs服务是实现Linux和Linux之间的文件共享,nfs服务的搭建比较简单. 现在介绍如何在红帽6.5系统中搭建nfs服务. 1.关闭selinux服务 如果已经关闭该服务的可以直接跳过该步骤. ...

  3. nfs服务器的搭建和使用

    目录 更新记录 1.nfs介绍 1.1 nfs概念 1.2 nfs工作原理 1.3 nfs通讯过程 2.搭建和测试 NFS 服务器 2.1 搭建NFS服务器 2.2 测试NFS服务器 3.在线调试:N ...

  4. 4、nfs服务器的搭建

    4.1.nfs服务介绍: samba服务器一般互联网企业不会使用 nfs服务的端口是不固定的,需要先启动rpc服务对nfs服务端口进行注册 4.2.安装nfs: rpm -qa nfs-utils r ...

  5. MySQL 复制介绍及搭建

    MySQL复制介绍 MySQL复制就是一台MySQL服务器(slave)从另一台MySQL服务器(master)进行日志的复制然后再解析日志并应用到自身,类似Oracle中的Data Guard. M ...

  6. crtmpserver流媒体服务器的介绍与搭建

    crtmpserver流媒体服务器的介绍与搭建 (2012-02-29 11:28) 标签:  crtmpserver  C++ RTMP Server  rtmp  Adobe FMS(Flash ...

  7. NFS配置与搭建

    参考: Linux下NFS服务器的搭建与配置 https://www.cnblogs.com/liuyisai/p/5992511.html http://blog.51cto.com/hongten ...

  8. NFS介绍 NFS服务端安装配置 NFS配置选项

    NFS 介绍 • NFS是Network File System的缩写 • NFS最早由Sun公司开发,分2,,4三个版本,2和3由Sun起草开发,.0开始Netapp公司参与并主导开发,最新为4.1 ...

  9. 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群

    笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装e ...

随机推荐

  1. 【审视】Scrum Master的检查清单

    一般情况下,一个Scrum Master如果更多的是做组织会议.确保时间盒以及对流程中的障碍快速响应等事项的话,可以同时引导2-3个团队.在这种情况下,团队会在降低问题发生率的基础上提高一定的绩效. ...

  2. Bootstrap Blazor 模板使用(一)Layout 组件

    原文链接:https://www.cnblogs.com/ysmc/p/16197223.html BootstrapBlazor 官网地址:https://www.blazor.zone Boots ...

  3. XCTF练习题---WEB---Cookie

    XCTF练习题---WEB---Cookie flag:cyberpeace{dc6a6799546a3e0fbfeacb8650b55ff0} 解题步骤: 1.观察题目,打开场景 2.观察场景内容, ...

  4. 在C#中使用 SendMessage 实现操作外部其他程序上的控件教程

    一.C#代码实现 本案例使用的是c# winform .NET Framework 4.7.2 首先我们声明一个寻找窗体的函数 [DllImport("User32.dll", E ...

  5. SpringData JPA接口总结

    1 JPA 1.1 整体概念 JPA:Java Persistence API,就是java持久化api,是SUN公司推出的一套基于ORM的规范. ORM呢:Object-Relational Map ...

  6. [题解][YZOJ50104] 密码 | 简单计数

    同步发表于 Mina! 题目大意 对于满足以下要求的长度为 \(n\) 的序列进行计数: 序列的值域为 \([1,k]\); 对于序列的任意位置 \(p\in[1,n]\),可以找到至少一个 \(i\ ...

  7. 老生常谈系列之Aop--Aop的经典应用之Spring的事务实现分析(三)

    老生常谈系列之Aop--Aop的经典应用之Spring的事务实现分析(三) 前言 上一篇文章老生常谈系列之Aop--Aop的经典应用之Spring的事务实现分析(二)从三个问题导入,分析了Spring ...

  8. django 备件管理系统

    views 1 class limit: 2 3 def limit(self,res,obj): 4 limit = int(res.GET.get('limit',1)) 5 pagelimit ...

  9. ArrayList常用Api分析及注意事项

    数组(定长,有序的,随机访问).ArrayList是Java在数组的基础上进行衍生出来的Java里的一种数据结构,它在拥有数据的特性之外,增加了可变性 (动态数组). 属性 属性 备注 DEFAULT ...

  10. 《Unix 网络编程》05:TCP C/S 程序示例

    TCP客户/服务器程序示例 系列文章导航:<Unix 网络编程>笔记 目标 ECHO-Application 结构如下: graph LR; A[标准输入/输出] --fgets--> ...