• NFS基本介绍


    注:文中截图来自鸟哥的linux私房菜,链接见文末。

    一、NFS简介
      NFS:Network File System,网络文件系统。借助网络,不同机器、不同操作系统之间可以分享彼此的某些本地文件目录;允许一个机器通过网络挂载一个远程机器的某些目录,挂载后可以很方便的访问这些目录下的文件,就如同本地目录一般。
      NFS采用C/S模式,目录分享者为服务器,挂载使用者为客户端,二者使用RPC进行通信。
     
    二、NFS服务器
    1. 服务组成
      NFS支持的功能比较多,不同的功能会启动不同的RPC服务进程来完成,主要服务进程有:
    (1)rpc.nfsd:NFS的主要服务进程,大部分工作由它来完成,主要负责管理客户端的登入,以及判别登入者ID。
    (2)rpc.mountd:负责管理NFS的文件系统。客户端登入后,使用分享目录文件之前,进行文件权限判断,以及通过读取NFS配置文件/etc/exports对客户端进行权限控制。
    (3)rpc.lockd:非必要,管理文件的锁定,解决多个客户端同时写入某个文件的问题,必须同时在客户端与服务端都开启才有效,常与rpc.statd同时使用。
    (4)rpc.statd:非必要,用于检查文件的一致性,检测文件是否被损毁,必须同时在客户端与服务端都开启才有效。
    2. 通信管理
      为了支持NFS功能,启动了多个服务进程,每个进程都会占用一个端口来传输数据。除了rpc.nfsd固定使用2049端口,其他进程的端口都是随机选取一些未被使用的小于1024的端口。既是随机,客户端如何得知,进而与之通信呢?
      所以除了NFS相关的服务进程,还需要启动另一个服务进程——rpcbind(CentOs5.x以前称为portmap)。rpcbind主要负责管理RPC服务进程与其端口之间的映射关系,NFS相关进程启动时,选取各自端口,然后向rpcbind注册映射关系。rpcbind固定在111端口监听客户端请求,客户端需要请求NFS相关服务进程时,先请求rpcbind得到对应端口,然后再通过端口直接与对应服务进程通信。整个过程示意图如下:

    3. 权限控制
      既是要将自己的文件分享给其他主机,自然要控制好其他主机登入后的操作权限,不可听之任之。NFS的权限配置文件为:/etc/exports,配置格式示例:
    权限控制常见参数如下:
    说明:
    (1)通配符只能用在主机名上,不可用于网段。
    (1)若client登录server的user的UID在server上不存在,则创建文档的拥有者会直接记录UID而不是用户名。
    (3)不显式设置的话,默认属性里都具有root_squash。
    (4)sync与async,默认属性为sync。
    (5)/etc/exports只是一些比较特别的权限参数而已,还有很多预设参数,可见/var/lib/nfs/etab:
    4. 安装 & 启动 & 管理
    (1)安装
    查看Linux Kernel版本:
    uname -r
    
    Linux Kernel版本若小于2.2不支持NFS功能。
    查看是否已安装相关程序包:
    rpm -qa | grep rpcbind
    rpc -qa | grep nfs-utils
    
    若未安装则安装:
    yum install rpcbind
    yum install nfs-utils
    
    (2)启动
    查看服务是否已启动:
    systemctl status rpcbind
    systemctl status nfs
    
    若未启动则启动:
    systemctl start rpcbind
    systemctl start nfs
    
    (3)管理
    <1>showmount
    查看当前主机/etc/exports所分享的目录信息:
    查看当前主机与各个客户端分享的状态列表:
    这些客户端分享状态的信息记录在/var/lib/nfs/xtab或/var/lib/nfs/rmtab。
    <2>修改配置文件/etc/exports以后,需要重新nfs服务才可生效。若不想重启nfs服务,可执行exportfs指令使配置修改立即生效。exportfs指令参数解析如下:
    5. 安全
    (1)设置防火墙
    仅开放NFS相关服务端口,但除了rpcbind和nfsd,其他服务进程端口不确定,iptables很难设置,若是CentOS6.x以上版本,可在文件/etc/sysconfig/nfs中为各个服务进程设置固定的端口,然后再设置iptable即可。
    (2)操作权限设置
    <1>使用/etc/exports设置更安全的权限,善用root_squash、all_squash、anonuid等权限参数。
    <2>文件系统权限的设置。
    (3)更安全的partition规划
    预留一个partition作为NFS服务开放的文件系统,避免NFS文件大小与安全问题影响本地文件系统的使用。同时可在/etc/fstab为该partition设置更为严格的参数。
    (4)NFS服务器关机前的注意事项
    关机前需要先关闭rpcbind与nfs服务,否则要等很久才能正常关机成功。
     
    三、NFS客户端
    1. 手动挂载
    (1)确认是否已启动rpcbind服务与nfs服务,若未启动则启动:
    systemctl start rpcbind
    systemctl start nfs
    
    (2)查看NFS服务器分享的目录列表
    showmount -e nfs-server-hostname/ip
    
    (3)创建挂载点目录
    (4)使用mount指令进行挂载,-t nfs指定文件系统类型:
    (5)若不再需要使用挂载目录,则可使用umount指令卸载。
    2. 挂载参数
      虽然是挂载使用别人的文件目录,也需要做好自我保护。
    安全参数:
    特殊参数:
      如果挂载了NFS服务器的目录,只要有用到文件系统,那么整个目录树系统就会主动的去查询全部的挂载点,如果NFS服务器与客户端之间的网络出现问题,或者服务器关机了,那么客户端只要执行涉及文件系统的指令(df,ls,cp等),整个系统就会很慢,因为需要等文件系统搜索等待超时后才会返回结果。
      可在mount命令中使用- o指定安全/特殊参数,示例:
    3. 开机自动挂载
      开机自动挂载配置文件为/etc/fstab,但该文件配置的自动挂载发生于网络启动之前,NFS需要使用网络,故不能在此文件配置,可配置于文件/etc/rc.d/rc.local中。
    4. 无法挂载可能原因
    (1)服务器或客户端的rpcbind或nfs服务未启动。
    (2)NFS服务器的/etc/exports未对当前主机授权相应目录。
    (3)防火墙。
    5. 自动挂载autofs的使用
      RPC服务使得NFS的服务器和客户端任何一方脱机都可能造成另一方总是等待超时。autofs服务位于客户端主机,它会持续侦测某个指定目录,当需要使用该目录下的资源时,才会请求NFS服务器,自动挂载,若持续一段时间没有使用该目录下的资源,则又会自动卸载。
    (1)配置文件设置
    <1>主配置文件:/etc/auto.master(配置顶层目录)
    配置挂载点目录及其数据对应文件:
    挂载点目录不需要存在,autofs会自动创建;数据对应文件是自己定义的。
    <2>数据对应文件(配置子目录)
    配置了挂载点目录子目录与服务器源目录的对应关系:
    (2)启动服务
    systemctl start autofs
    
    autofs会遍历/etc/auto.master中配置的每个挂载点目录,对每个挂载点目录遍历数据对应文件中配置的子目录。

    参考:
     
     

  • 相关阅读:
    20155328 《网络攻防》 实验一:PC平台逆向破解(5)M
    20155328 《信息安全系统设计基础》 课程总结
    构建之法
    20155327 2017-2018-2《Java程序设计》课程总结
    20155327 实验五 网络编程与安全
    20155327 网络对抗 实验
    20155327 Exp9 Web安全基础
    20155327 EXP8 Web基础
    20155327 实验四 Android程序设计
    20155327 李百乾 Exp7 网络欺诈防范
  • 原文地址:https://www.cnblogs.com/wujuntian/p/16321019.html
Copyright © 2020-2023  润新知