NFS服务器

 
port:2049
     NFS 为 Network FileSystem 的简称,它的目的就是想让不同的机器、不同的操作系统可以彼此分享个别的档案啦!目前在 Unix Like 当中用来做为文件服务器是相当不错的一个方案!基本上, Unix Like主机连接到另一部 Unix Like 主机来分享彼此的档案时,使用 NFS 要比 SAMBA 这个服务器快速且方便的多了!此外, NFS 的设定真的很简单,几乎只要记得启动 Remote Procedure Call  (RPC, 就是 rpcbind 这个软件啦! ) 就一定可以架设的起来!真是不错啊!
 
13.1 NFS的由来与其功能
 
NFS 这个藉由网络分享文件系统的服务在架设的时候是很简单的,不过,它最大的问题在于『权限』方面的概念!
因为在客户端与服务器端可能必须要具备相同的账号才能够存取某些目录或档案
另外, NFS 的启动需要透过所谓的远程过程调用 (RPC),也就是说,我们并不是只要启动 NFS 就好了, 还需要启动 RPC 这个服务才行!
 
13.1.1 什么是NFS(Network FileSystem)
 

     就如同上面的图示一般,当我们的 NFS 服务器设定好了分享出来的/home/sharefile 这个目录后,其他的 NFS 客户端就可以将这个目录挂载到自己系统上面的某个挂载点 (挂载点可以自定义),例如前面图示中的 NFS client 1 与 NFSclient 2 挂载的目录就不相同。我只要在 NFS client 1 系统中进入/home/data/sharefile 内,就可以看到 NFS 服务器系统内的 /home/sharefile 目录下的所有数据了 (当然,权限要足够啊!^_^)!这个 /home/data/sharefile 就好像 NFSclient 1 自己机器里面的一个 partition 喔!只要权限对了,那么你可以使用 cp, cd,mv, rm... 等等磁盘或档案相关的指。
 
      因为 NFS 支持的功能相当的多,而不同的功能都会使用不同的程序来启动, 每启动一个功能就会启用一些端口口来传输数据,因此, NFS 的功能所对应的端口口才没有固定住, 而是随机取用一些未被使用的小于 1024 的端口来作为传输之用。但如此一来又造成客户端想要连上服务器时的困扰, 因为客户端得要知道服务器端的相关端口才能够联机吧!
      此时我们就得需要远程过程调用 (RPC) 的服务啦!
 
13.1.2 什么是RPC(Remote Procedure Call)
 
     RPC 最主要的功能就是在指定每个 NFS 功能所对应的 port number ,并且回报给客户端,让客户端可以连结到正确的端口上去。
 
注意: 要启动 NFS 之前, RPC 就要先启动了,否则 NFS 会无法向 RPC 注册。 另外, RPC 若重新启动时,原本注册的数据会不见,因此 RPC 重新启动后,它管理的所有服务都需要重新启动来重新向 RPC 注册。
 

如上图所示,当客户端有 NFS 档案存取需求时,他会如何向服务器端要求数据呢?
  1. 客户端会向服务器端的 RPC (port 111) 发出 NFS 档案存取功能的询问要求;
  2. 服务器端找到对应的已注册的 NFS daemon 端口后,会回报给客户端;
  3. 客户端了解正确的端口后,就可以直接与 NFS daemon 来联机。
 
 
由于 NFS 的各项功能都必须要向 RPC 来注册,如此一来 RPC 才能了解 NFS 这个服务的各项功能之 port number, PID, NFS 在服务器所监听的 IP 等等,而客户端才能够透过 RPC 的询问找到正确对应的端口。
 
 
13.1.3 NFS 启动的 RPC daemons
 
     NFS 服务器主要的任务是进行文件系统的分享,文件系统的分享则与权限有关。 所以 NFS 服务器启动时至少需要两个 daemons ,一个管理客户端是否能够登入的问题, 一个管理客户端能够取得的权限。
     
以较单纯的 NFS 服务器来说:
  • rpc.nfsd:最主要的 NFS 服务器服务提供商。

    • 这个 daemon 主要的功能就是在管理客户端是否能够使用服务器文件系统挂载信息等, 其中还包含这个登入者的 ID 的判别!
  • rpc.mountd这个 daemon 主要的功能,则是在管理 NFS 的文件系统!
    • 当客户端顺利的通过 rpc.nfsd 而登入服务器之后,在他可以使用 NFS 服务器提供的档案之前,还会经过档案权限 (就是那个 -rwxrwxrwx 与 owner, group 那几个权限啦)的认证程序!
    • 他会去读 NFS 的配置文件 /etc/exports 来比对客户端的权限,当通过这一关之后客户端就可以取得使用 NFS 档案的权限啦!
    • (注:这个也是我们用来管理 NFS 分享之目录的权限与安全设定的地方哩! )
  • rpc.lockd (非必要)这个玩意儿可以用在管理档案的锁定 (lock) 用途。为何档案需要『锁定』呢?因为既然分享的 NFS 档案可以让客户端使用,那么当多个客户端同时尝试写入某个档案时, 就可能对于该档案造成一些问题啦!这个 rpc.lockd 则可以用来克服这个问题。 但 rpc.lockd 必须要同时在客户端与服务器端都开启才行喔!此外, rpc.lockd 也常与 rpc.statd 同时启用。
  • rpc.statd (非必要)可以用来检查档案的一致性,与 rpc.lockd有关。 若发生因为客户端同时使用同一档案造成档案可能有所损毁时, rpc.statd 可以用来检测并尝试回复该档案。与 rpc.lockd 同样的,这个功能必须要在服务器端与客户端都启动才会生效。
 
 
     上述这几个 RPC 所需要的程序,其实都已经写入到两个基本的服务启动脚本中了,那就是 nfs 以及 nfslock 啰! 亦即是在 /etc/init.d/nfs, /etc/init.d/nfslock,与服务器较有关的写入在 nfs 服务中,而与客户端的 rpc.lockd 之类的,就设定于nfslock 服务中。
 
 
13.1.4 NFS 的档案访问权限
 
当我以 dmtsai 这个一般身份使用者要去存取来自服务器端的档案时,你要先注意到的是:
 
文件系统的 inode 所记录的属性为 UID, GID 而非账号与群组名。
那一般Linux 主机会主动的以自己的 /etc/passwd, /etc/group 来查询对应的使用者、组名。
所以当 dmtsai 进入到该目录后,会参照 NFS client 1 的使用者与组名。
 
但是由于该目录的档案主要来自 NFS server ,所以可能就会发现几个情况:
  • NFS server/NFS client 刚好有相同的账号与群组则此时使用者可以直接以 dmtsai 的身份进行服务器所提供的文件系统之存取。
  • NFS server 的 501 这个 UID 账号对应为 vbird若 NFS 服务器上的 /etc/passwd 里面 UID 501 的使用者名称为 vbird 时,则客户端的 dmtsai 可以存取服务器端的 vbird 这个使用者的档案喔!只因为两者具有相同的 UID 而已。这就造成很大的问题了!因为没有人可以保证客户端的 UID 所对应的账号会与服务器端相同, 那服务器所提供的数据不就可能会被错误的使用者乱改?
  • NFS server 并没有 501 这个 UID另一个极端的情况是,在服务器端并没有 501 这个 UID 的存在,则此时 dmtsai的身份在该目录下会被压缩成匿名者, 一般 NFS 的匿名者会以 UID 为 65534为其使用者,早期的 Linux distributions 这个 65534 的账号名称通常是nobody ,我们的 CentOS 则取名为 nfsnobody 。但有时也会有特殊的情况,例如在服务器端分享 /tmp 的情况下, dmtsain 的身份还是会保持 501 但建立的各项数据在服务器端来看,就会属于无拥有者的资料。
  • 如果使用者身份是 root 时有个比较特殊的使用者,那就是每个 Linux 主机都有的 UID 为 0 的 root 。
 
     总之,客户端使用者能做的事情是与 UID 及其 GID 有关的,那当客户端与服务器端的 UID 及账号的对应不一致时, 可能就会造成文件系统使用上的困扰,这个就是NFS 文件系统在使用上面的一个很重要的地方!
 
而在了解使用者账号与 UID 及文件系统的关系之后,要实际在客户端以 NFS 取用服务器端的文件系统时, 你还得需要具有:
  • NFS 服务器有开放可写入的权限 (与 /etc/exports 设定有关);
  • 实际的档案权限具有可写入 (w) 的权限。
 
当你满足了:
(1)使用者账号,亦即 UID 的相关身份;
(2)NFS 服务器允许有写入的权限;
(3)文件系统确实具有 w 的权限时,你才具有该档案的可写入权限!
尤其是身份 (UID) 确认的环节部分,最容易搞错啦!也因为如此, 所以 NFS 通常需要与NIS这一个可以确认客户端与服务器端身份一致的服务搭配使用,以避免身份的错乱。
 
 
 
 

NFS服务器原理的更多相关文章

  1. NFS服务器工作原理

    一.NFS简介 NFS是Network File System的缩写,中文称为网络文件系统,它的主要功能是通过网络(一个局域网)让不同的主机系统之间可以共享文件或目录,NFS的客户端(一般为应用服务器 ...

  2. NFS笔记(一)NFS服务器工作原理及详细配置

    一.NFS工作原理 1.什么是NFS服务器 NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器.不同的操作系统可以共享彼此的文件. NFS服务器可以让P ...

  3. Windows Server 2008 R2 添加且制成“NFS服务器”角色后与Unix客户端匿名访问常见问题

    在复杂的主机与网络环境中,我们可能会接触到多种主机与操作系统,配合Windows Server 2008 R2的原生“NFS服务器”功能可以让这样的复杂操作系统更方便应用. 然而面对网络上众多的帮助指 ...

  4. 客户端挂载NFS服务器中的共享目录(用户后台上传图片与前台上传图片放在同一个服务器上)

    服务器端使用showmount命令查询NFS的共享状态 # showmount -e //默认查看自己共享的服务,前提是要DNS能解析自己,不然容易报错 # showmount -a //显示已经与客 ...

  5. NFS工作原理及配置文件详解

    nfs工作原理流程       如上图所示,当访问程序通过NFS客户端向NFS服务端存取文件时,其请求数据流程如下几点:     1.首先用户访问网站程序,由程序在NFS客户端上发出NFS文件存取功能 ...

  6. centOS7搭建NFS服务器

    借鉴别人这篇博客搭建成功的:http://blog.51cto.com/mrxiong2017/2087001 NFS系统:用来共享文件.图片.视频 准备两个centOS7服务器,一个作NFS ser ...

  7. NFS服务器实现文件共享

    NFS服务器运行原理 实战配置NFS服务器 配置Samba服务器及实现文件共享 (一)NFS器服务端描述 NFS服务器: Network File System,网络文件系统使FreeBSD支持的一种 ...

  8. linux下安装与配置nfs服务器

    NFS 什么是NFS?(NAS) NFS(网络文件系统):它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录.NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的N ...

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

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

随机推荐

  1. Excel 读取字符串引发的问题

    将EXCEL数据导出的时候如果同一列数据中既有文字,又有数字!读取时一列中要么文字丢失只剩下数字,要么数字丢失,只剩下文字,这是由第一行的数据类型决定的.出现这种问题是由于数据类型不统一造成的. 连接 ...

  2. table中bordercolor属性设置后最新ie浏览器或firefox中不显示边线,借助table的css来实现边线

    table中的bordercolor属性设置后在最新的ie或者firefox中均不显示边线,table的边线又是常用功能.只能使用css来实现了,更通用,更方便一些. css: ​.ctable{ b ...

  3. PHP http 简单用户验证

    <?php $valid_passwords = array ("user" => "password"); $valid_users = arra ...

  4. SQL JOIN的用法

    背景:(血的教训) 非常感谢能够有幸的去活力世纪面试,面试官非常的祥和,虽然最后没能够去成,但是非常的感谢,是他让我明白了自己还有很多需要去学习,每一次的面试不是为了去证明自己有多强,能拿多少的工资, ...

  5. Java多线程系列- DelayQueue延时队列

    我们在开发中,有如下场景 a) 关闭空闲连接.服务器中,有很多客户端的连接,空闲一段时间之后需要关闭之.b) 缓存.缓存中的对象,超过了空闲时间,需要从缓存中移出.c) 任务超时处理.在网络协议滑动窗 ...

  6. java byte&0xFF

    做串口端口通讯时,数据都是以byte类型发送的 普通的byte范围是-128-127,而java的byte范围是0-255 因此将数据的byte转成java的byte时,需要与0xff(1111111 ...

  7. CentOS7:安装Zabbix

    参考:CentOS 7 yum安装Zabbix 1. 安装Zabbix Server EPEL源里面有Zabbix的安装包,所以需要先安装EPEL. Zabbix源也可以从这里获得:http://re ...

  8. maven多项目配置实践

    工具:IntelliJ IDEA 1.新建maven项目top 略 提示:不使用任何模版 2.在上面的maven项目的目录下(虽然这不一定是必须的),新建另一个maven项目secend. 同上 3. ...

  9. 关于tomcat的热部署

    在做java web开发时,常用的服务器就是tomcat了.如果tomcat不能实现热部署,那么恐怕每次更改文件进行发布就尤其费时了. 热部署定义:在未改变class文件的签名的前提下,文件的修改是不 ...

  10. C++设计模式-Strategy策略模式

    Strategy策略模式作用:定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户. UML图: Strategy模式将逻辑(算法)封装到一个类(Cont ...