一、什么是NFS

NFS 是 Network File System 的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由 Sun 公司开发,于 1984 年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类 Unix 系统间实现磁盘文件共享的一种方法 它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。NFS 服务器可以允许 NFS 客户端将远端 NFS 服务器端的共享目录挂载到本地的 NFS 客户端中。在本地的 NFS 客户端的机器看来,NFS 服务器端共享的目录就好像自己的磁盘分区和目录一样。

NFS 服务主要用于文件共享,例如音乐,视频,音乐等静态文件。

二、NFS服务连接原理

NFS 是通过网络来进行服务端和客户端之间的数据传输。两者之间要传输数据就要有想对应的网络端口来进行传输。NFS 服务器到底使用什么网络端口来传输数据的,NFS 服务器端其实是随机选择端口来进行数据传输。那 NFS 客户端又是如何知道NFS服务器端到底使用的是哪个端口呢?

其实NFS服务器时通过远程过程调用(remote procedure call 简称 RPC) 协议/服务来实现的。也就是说 RPC 服务会统一管理 NFS 的端口,客户端和服务端通过 RPC 来先沟通 NFS 使用了哪些端口,之后再利用这些端口(小于 1024)来进行数据的传输。 也就是 RPC 管理服务端的 NFS 端口分配,客户端要传数据,那客户端的 RPC 会先跟服务端的 RPC 去要服务器的端口,要到端口后再建立连接,然后传输数据。

首先当 NFS 启动后,就会随机的使用一些端口,然后 NFS 就会向 RPC 去注册这些端口。RPC 就会记录下这些端口。并且 RPC 会开启 111 端口,等待客户端 RPC 的请求,如果客户端有请求,那服务端的 RPC 就会将记录的 NFS 端口信息告知客户端。

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

/etc/init.d/nfs  reload
三、NFS服务连接过程
  • 1)首先服务器端启动 RPC 服务,并开启 111 端口
  • 2)启动 NFS 服务,并向 RPC 注册端口信息
  • 3)客户端启动 RPC(portmap 服务),向服务端的 RPC(portmap)服务请求服务端的 NFS 端口
  • 4)服务端的 RPC(portmap)服务反馈 NFS 端口信息给客户端。
  • 5)客户端通过获取的 NFS 端口来建立和服务端的 NFS 连接并进行数据的传输
五、相关软件安装

协议:

RPC(Remote Procedure Call Protocol) 远程过程调用协议

软件:

nfs-utils-* :包括 NFS 命令与监控程序

rpcbind-* :支持安全 NFS RPC 服务的连接

注:通常情况下,是作为系统的默认包安装的

Cent OS6.*之前 rpcbind 叫 portmap

yum install nfs -y
六、NFS 服务配置

NFS 服务器的配置相对比较简单,只需要在相应的配置文件中进行设置,然后启动 NFS 服务器即可。

NFS 服务的配置文件为 /etc/exports,这个文件是 NFS 的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在,可能要使用 vim 手动建立,然后在文件里面写入配置内容。

共享目录  客户机(访问权限,用户映射,其他)
客户机
  • 指定 ip 地址的主机:100.100.100.200
  • 指定子网中的所有主机:100.100.100.0
  • 指定域名的主机:www.love1.com
  • 指定域中的所有主机:*.love1.com
  • 所有主机:*
访问权限
  • 设置输出目录只读:ro
  • 设置输出目录读写:rw
用户映射
  • root_squash:将 root 用户的访问映射为匿名(nfsnobody)用户 uid 和 gid;(默认生效)
  • no_root_squash:保留管理员权限,以服务器管理员的权限管理;
  • all_squash:将远程访问的用户及所属组都映射为指定 uid、gid 的匿名用户;

    anonuid=xxx:将远程访问的所有用户都映射为指定 uid 的匿名用户

    anongid=xxx:将远程访问的所有用户组都映射为指定 gid 匿名组账户
其他
  • sync: 将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性(同步);
  • async:将数据先保存在内存缓冲区中,必要时才写入磁盘(异步)
七、NFS 服务管理

1、启动 NFS 服务器

service rpcbind start
service nfs start

2、查询 NFS 服务器状态

service rpcbind status
service nfs status

3、停止 NFS 服务器

要停止 NFS 运行时,需要先停止 nfs 服务再停止 rpcbind 服务,对于系统中有其他服务(如 NIS)需要使用时,不需要停止 rpcbind 服务。

service nfs stop
service rpcbind stop

4、设置 NFS 服务器的自动启动状态

设置开机启动,默认在2345级别启动

chkconfig --level rpcbind on
chkconfig --level nfs on

5、查看 RPC 服务器开启了哪些端口

rpcinfo –p localhost
八、相关实验
1、创建目录修改配置文件
[root@centos ~]#mkdir /share
[root@centos ~]#vim /etc/exports
/share 100.100.100.103(rw)
[root@centos ~]#service nfs restart
[root@centos ~]# exportfs
/share 100.100.100.103
2、查看共享服务
[root@centos ~]# showmount -e 100.100.100.102
Export list for 100.100.100.102:
/share 100.100.100.103
3、客户机挂载
[root@centos ~]# mkdir /share
命令格式:mount NFS服务器IP:共享目录 本地挂载点目录
[root@centos ~]# mount 100.100.100.102:/share /share
#mount –o vers=3 共享 本地 #指定挂载使用nfs V3版本(避免同步延迟)
#[root@centos /]# mount -o vers=3 100.100.100.102:/share /share
[root@centos ~]# mount | grep /share
100.100.100.102:/share on /share type nfs (rw,vers=4,addr=100.100.100.102,clientaddr=100.100.100.103)
[root@centos share]# echo haha>1.txt
-bash: 1.txt: Permission denied
#此时,无法写入文件,因为没有文件系统权限,/share目录所属用户是root,我们进行挂载时,用户为nfsnobody,因此没有权限。有多种方法,这里示例两种。
1)修改配置文件
[root@centos ~]# vim /etc/exports
/share 100.100.100.103(no_root_squash,rw)
[root@centos share]# echo haha>1.txt
[root@centos share]# ll
total 4
-rw-r--r-- 1 root root 5 Jan 1 21:38 1.txt
2)修改文件系统权限
chmod 777 /share
4、卸载和自动挂载

卸载:

    1. 卸载客户端的挂载目录
umount 挂载点
2. 停止服务器端的共享
exportfs –au

自动挂载

[root@centos ~]# vim /etc/fstab
格式:
<server>:</remote/export> </local/directory> nfs < options> 0 0
100.100.100.102:/share /sharenfs defaults 0 0
#100.100.100.102:/share /share nfs defaults,vers=3 0 0(指定版本)
[root@centos ~]# mount –a
exportfs命令

如果我们在启动了NFS之后又修改了/etc/exports,是不是还要重新启动nfs呢?这个时候我们就可以用exportfs 命令来使改动立刻生效,该命令格式如下:

格式:exportfs [-aruv]
-a 全部挂载或卸载 /etc/exports中的内容
-r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
-v 在export的时候,将详细的信息输出到屏幕上。

具体例子:

# exportfs -au 卸载所有共享目录
# exportfs -ra 重新共享所有目录并输出详细信息
rpcinfo命令
rpcinfo -p 可以查看出RPC开启的端口所提供的程序有哪些,其中nfs 开启的是2049,portmapper(rpcbind) 开启的是111,其余则是rpc开启的

NFS服务介绍及实验的更多相关文章

  1. Linux nfs服务介绍

    nfs服务介绍 nfs(Network File System) 网络文件系统,能使用户访问服务器的文件系统,就像访问自己的本机的文件系统一样,并且多个 客户端共享访问该文件系统. 目前nfs服务,较 ...

  2. 第四章 NFS服务相关介绍

    一.NFS服务介绍 1.什么是NFS?是一个共享存储,文件服务器 2.NFS基本概述NFS是Network File System的缩写及网络文件系统.NFS主要功能是通过局域网络让不同的主机系统之间 ...

  3. Linux nfs服务讲解

    nfs服务介绍 nfs(Network File System) 网络文件系统,能使用户访问服务器的文件系统,就像访问自己的本机的文件系统一样,并且多个 客户端共享访问该文件系统. 目前nfs服务,较 ...

  4. Linux_搭建NFS服务(基础)

    [RHEL8]-NFSserver :[Centos7]-NFSclient !!!测试环境我们首关闭防火墙和selinux(NFSserver和NFSclient都需要) [root@localho ...

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

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

  6. Linux centosVMware NFS介绍、NFS服务端安装配置、NFS配置选项

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

  7. nfs服务部署记录

    一.概念介绍NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操作系统能 ...

  8. Centos 7网络文件系统nfs服务的安装与配置

    实验环境>>>>>>>>> nfs服务端:(nfs-server)192.168.100.2 nfs客户端:(nfs-client)192.168 ...

  9. [转]RHEL7上配置NFS服务

    原文地址:http://380531251.blog.51cto.com/7297595/1659865 1.课程目标 了解什么是NFS及其功能: 掌握NFS的配置: 掌握NFS的验证: 能够单独熟练 ...

随机推荐

  1. 2018-9-30-VisualStudio-使用多个环境进行调试

    title author date CreateTime categories VisualStudio 使用多个环境进行调试 lindexi 2018-09-30 18:39:26 +0800 20 ...

  2. Datagrid添加右键菜单 标签: 三层EasyUI 2015-08-14 19:57 1029人阅读 评论(22)

    最近的一个项目前台使用的EasyUI,每个界面都有DataGrid控件,按照我们的想法,应该做出来的效果是单击选中,双击可编辑,当然右键也应该出现这些菜单按钮,想的挺好,那么该如何实现呢?一开始不知道 ...

  3. Python基础:03序列:字符串、列表和元组

    一:序列 1:连接操作符(+) 这个操作符允许把一个序列和另一个相同类型的序列做连接,生成新的序列.语法如下:sequence1 + sequence2 该表达式的结果是一个包含sequence1和s ...

  4. Laravel 下的伪造跨站请求保护 CSRF#

    简介# Laravel 可以轻松地保护应用程序免受跨站请求伪造(CSRF) 的攻击.跨站请求伪造是一种恶意的攻击, 他凭借已通过身份验证的用户身份来运行未经过授权的命令. Laravel 会自动为每个 ...

  5. 知识点补充,set集合,深浅copy

    一:对之前知识点的补充 1;字符串(str)中的join方法.把列表转换成字符串 2;列表list[ ]和字典dic{ }在循环过程中不能字节删除.需要把要删除的内容记录在新列表中.然后在循环新列表, ...

  6. 2018-2-13-windows-10预览版升级win10-7月29-10240.16384

    title author date CreateTime categories windows 10预览版升级win10 7月29 10240.16384 lindexi 2018-2-13 17:2 ...

  7. MapReduce数据流-输出

  8. 唯一索引与非唯一索引区别(UNIQUE INDEX, NON-UNIQUE INDEX)

    索引是我们经常使用的一种数据库搜索优化手段.适当的业务操作场景使用适当的索引方案可以显著的提升系统整体性能和用户体验.在Oracle中,索引有包括很多类型.不同类型的索引适应不同的系统环境和访问场景. ...

  9. Project Euler Problem 9-Special Pythagorean triplet

    我是俩循环暴力 看了看给的文档,英语并不好,有点懵,所以找了个中文的博客看了看:勾股数组学习小记.里面有两个学习链接和例题. import math def calc(): for i in rang ...

  10. Python--day26--反射

    反射对象的属性:(非常重要) getattr(类名,‘属性名’):获得属性值 使用getattr的好处:需要查看某个属性值的时候,不用再在代码中用if else elif 去判断输入(input函数) ...