一、简介

二、工作原理

三、安装配置

一、简介

NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过网络共享资源。将NFS主机分享的目录,挂载到本地客户端当中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,在客户端端看起来,就像访问本地文件一样。

RPC,基于C/S模型。程序可以使用这个协议请求网络中另一台计算机上某程序的服务而不需知道网络细节,甚至可以请求对方的系统调用。

对于Linux而言,文件系统是在内核空间实现的,即文件系统比如ext3、ext4等是在Kernel启动时,以内核模块的身份加载运行的。

二、原理

NFS本身的服务并没有提供数据传递的协议,而是通过使用RPC(远程过程调用 Remote Procedure Call)来实现。当NFS启动后,会随机的使用一些端口,NFS就会向RPC去注册这些端口。RPC就会记录下这些端口,RPC会开启111端口。通过client端和sever端端口的连接来进行数据的传输。在启动nfs之前,首先要确保rpc服务启动。

具体过程如下:

  1. 本地用户要访问nfs服务器中文件,先向内核发起请求,内核处理调用nfs模块及rpc client
  2. rpc client向rpc server发起连接
  3. 在连接之前,NFS服务除了启动nfsd本身监听的端口2049/tcp和2049/udp,还会启动其它进程(如mountd,statd,rquotad等)以完成文件共享,这些进程的端口是不固定的;是每次NFS服务启动时向RPC服务注册的,RPC服务会随机分配未使用的端口
  4. 完成连接,接受访问请求
  5. nfs应用程序向内核发起请求
  6. 内核调用文件系统

然后client端通过获取的NFS端口来建立和server端的NFS连接并进行数据的传输。

以下为启动各服务的作用

rpc:远程过程调用协议,是实现本地调用远程主机实现系统调用的协议。

portmapper:负责分配rpc server的端口,并在client端请求时,负责响应目的rpc server端口返回给client端,工作在tcp与udp的111端口上。

mountd:是nfs服务的认证服务的守护进程,client在收到返回的真正端口时,就会去连接mountd,认证取得令牌。

nfsd:nfs的守护进程,负责接收到用户的调用请求后与内核发出请求并得到调用结果响应给用户,工作在tcp和udp的2049端口。

idmapd:是NFS的一个程序,用来负责远程client端创建文件后的权限问题。

quotad:用用于实现磁盘配额,当client端挂载nfs后可以限制磁盘空间的大小。

三、NFS服务配置安装

相关配置文件及命令的使用

/etc/exports

/path/to/somedir CLIENT_LIST

多个客户之间使用空白字符分隔

每个客户端后面必须跟一个小括号,里面定义了此客户访问特性,如访问权限等

172.16.0.0/16(ro,async) 192.16.0.0/24(rw,sync) *(ro)

权限属性:

ro:只读

rw:读写

sync:同步,数据同步写到内存与硬盘中

async:异步,数据先暂存内存

root_squash: 将root用户映射为来宾账号

no_root_squash: 有root的权限,不建议使用

all_squash: 全部映射为来宾账号

anonuid, anongid: 指定映射的来宾账号的UID和GID

exportfs命令:

-a:跟-r或-u选项同时使用,表示重新挂载所有文件系统或取消导出所有文件系统;

-r: 重新导出

-u: 取消导出

-v: 显示详细信息

showmount命令:

showmount -e NFS_SERVER: 查看NFS服务器"导出"的各文件系统

showmount -a NFS_SERVER: 查看NFS服务器所有被挂载的文件系统及其挂载的客户端对应关系列表

showmount -d NFS_SERVER: 显示NFS服务器所有导出的文件系统中被客户端挂载了文件系统列表

rpcinfo

-p hostname(orIP)

-p :显示所有的 port 与 program 的信息!

如果要让mountd和quotad等进程监听在固定端口,编辑配置文件/etc/sysconfig/nfs

客户端使用mount命令挂载

mount -t nfs NFS_SERVER:/PATH/TO/SOME_EXPORT /PATH/TO/SOMEWHRERE

安装配置

环境准备:

server端:192.168.1.222 centos 7

client端:192.168.1.200 centos 6.5

  1.在服务端安装nfs,

  # yum install nfs-utils rpcbind -y

  2.编辑/etc/exports,并启动nfs

  

  #systemctl start nfs

  3.客户端同样安装nfs-utils和rpcbind并启动,必须先启动rpcbind,否则报错(注意防火墙等)

  

  4.挂载并查看挂载信息

  # mount -t nfs 192.168.1.222:/var/nfs /mnt

  #showmount –e 192.168.1.222

  

  在服务器端/var/nfs创建目录或文件,并在客户端/mnt查看即可。

将所有用户映射为来宾账号实验

  1. 在服务器端添加用户hot,并修改配置文件并重新挂载文件系统

    添加用户

    useradd –u 520 hot

    修改/etc/exports

    /var/nfs    192.168.1.0/24(rw,async,all_squash,anonuid=520)

    重新挂载导出

    exportfs –ra

  2. 在客户端上添加用户code,分别在code用户和root用户下创建文件,查看文件属性

    可以看到文件属主都为服务器端设置好的来宾账号hot的uid

    让mountd和quotad等进程监听在固定端口,编辑配置文件/etc/sysconfig/nfs,取消注释

    重启nfs,查看端口

nfs原理及安装配置的更多相关文章

  1. NFS相关、NFS服务端安装配置、exportfs命令、nfs客户端的问题

    1.NFS (network file system,基于RPC协议) 2.NFS服务端安装配置安装服务端:yum install nfs-utils rpcbind -y安装客户端:yum inst ...

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

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

  3. (转)使用LVS实现负载均衡原理及安装配置详解

    使用LVS实现负载均衡原理及安装配置详解 原文:https://www.cnblogs.com/liwei0526vip/p/6370103.html

  4. LVS实现负载均衡原理及安装配置

    LVS实现负载均衡原理及安装配置 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F ...

  5. LVS实现负载均衡原理及安装配置 负载均衡

    LVS实现负载均衡原理及安装配置 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F ...

  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. zookeeper工作原理、安装配置、工具命令简介

    1.Zookeeper简介 Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集群管理.分布式应用配置项的管理等等. 2.zo ...

  8. LINUX下NFS系统的安装配置

    准备:NFS系统服务器IP 192.168.135.1 ,NFS共享目录/mnt/NFS 一.安装NFS 查看nfs是否安装 #rpm -qa | grep nfs 若没有则安装nfs包 #yum i ...

  9. [转载] zookeeper工作原理、安装配置、工具命令简介

    转载自http://www.cnblogs.com/kunpengit/p/4045334.html 1 Zookeeper简介Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到 ...

随机推荐

  1. HDU6095

    Rikka with Competition Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/O ...

  2. flex 布局下,css 设置文本不换行时,省略号不显示的解决办法

    大致是有一个 main 容器是 flex 布局,左边一个 logo 固定宽高,右边 content 动态宽度. <div class="main"> <img a ...

  3. demo:动态生成专属二维码

    在日常生活中,随处可见二维码,那么js如何生成动态的专属二维码?其实,通过"二维码插件"我们可以快速生成二维码.在这,记录一下的生成专属二维码demo,一起来看看jquery.qr ...

  4. VUE组件 之 倒计时(防刷新)

    思路: 一.效果图: 二.CSS代码 .box{ width: 300px; height: 100px; line-height: 100px; margin: 100px auto; backgr ...

  5. docker第一章:docker核心概念及centos6下安装

    Docker三大核心概念 镜像 容器 仓库 镜像 docker镜像类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统. 容器 1.容器是从镜像创建的应用运行实例,容器和 ...

  6. centos 多个yum源,系统怎么选择

    yum配置文件: /etc/yum.conf pkgpolicy:包的策略.一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repositor ...

  7. modifyGeoJSON

    from osgeo import ogr import json from geojson import loads, dumps, Feature, FeatureCollection from ...

  8. 自定义控件详解(四):Paint 画笔路径效果

    Paint  画笔 ,即用来绘制图形的"笔" 前面我们知道了Paint的一些基本用法: paint.setAntiAlias(true);//抗锯齿功能 paint.setColo ...

  9. 总结Hibernate4.1+版本与Hibernate3.3+版本区别

    利用休假时间好好学习了当今流行的ORMapping框架-Hibernate,看完了马士兵老师经典的Hibernate视频教程,也算是小小入门了吧. 马老师在讲课中使用的Hibernate版本是3.3. ...

  10. 图解get方法与filter方法

    在django的数据库查找方法中,get与filter方法是查找单目数据,用图记录了这两个方法查找数据各自返回的是什么?