【文件系统】NFS网络文件服务搭建

NFS网络文件系统

简介

NFS依赖RPC协议在不同操作系统和网络中进行文件共享。


NFS服务安装

yum install -y rpcbind nfs-utils
  • rpcbind

NFS服务动态端口分配守护进程,固定端口111,NFS服务启动前必须先启动rpcbind。

  • nfs-utils
    • rpc.nfsd

      主要服务进程,管理客户机登录权限判别,客户机ID判别,
      可搭配/etc/host.allow,/etc/host.deny使用。

    • rpc.mountd

      通过/etc/exports分配共享目录,同时做一些客户机权限验证,对应客户机mount需求。

    • rpc.lockd

      与rpc.statd同时启用,客户端与服务端需要同时启用,用于多客户机写入访问时的文件锁定。

    • rpc.statd

      用于文档一致性检测,客户端与服务端需要同时启用。

    • rpc.rquotad

      客户文件的磁盘配额限制。


NFS服务主要配置

#vim /etc/exports
# [共享目录] [客户端1](选项) [客户端2](选项)
/home/nfs *(rw,no_root_squash)
  1. 共享目录

共享给客户端主机使用的目录,如/home/nfs/;

  1. 客户端
  • 开放给指定客户端IP,如192.168.159.1
  • 开放给指定子网,如192.168.159.0/24
  • 开放给指定主机域名,如www.domain.com
  • 开放给指定域名内所有主机,如*.domain.com
  • 开放给所有主机,如*
  1. 选项
选项说明
ro文件夹仅共享只读权限,默认
rw文件夹共享读写权限
root_squash将客户机的root用户及用户组映射为匿名用户和用户组,默认
no_root_squash保留客户机root用户及用户组属性
all_squash将客户机所有普通用户及用户组映射为匿名用户和用户组
no_all_squash保留客户机普通用户及用户组属性,默认
anonuid=uid客户机用户映射为本机UID
anongid=gid客户机用户组映射为本机GID
sync同步写入磁盘和内存,影响性能但可以保证数据一致性,默认
async先写入内存,必要时写入磁盘,Linux的sync命令将内存数据写入硬盘
hide共享目录时不共享其子目录,默认
no_hide共享子目录
wdelay多客户机对同一目录进行写入操作时,将这些操作集中执行;对有很多小IO操作时,可以有效提高效率,默认
no_wdelaysync搭配使用,对async无效,同步写入多客户机的写入操作
subtree_check共享子目录时,检查父目录权限
no_subtree_check共享子目录时,不检查父目录权限,默认
secure启用小于1024端口进行NFS访问连接,默认
insecure禁用secure
crossmntnohide类似,但hide需要显示导出子文件系统
nocrossmnt禁用crossmnt
secure_locksauth_nlm同义,NLM验证请求行为,启用锁保存有读取权限用户的凭证,下次就不用对加锁请求进行权限检查了,默认
insecure_locksno_auth_nlm同义
acl启用acl访问控制列表,默认
pnfs如果NFS协议版本为NFSv4.1或以上版本,则启用PNFS扩展模块,PNFS模块可以绕过服务器直接对磁盘进行I/O操作,默认no_pnfs
no_pnfs默认操作,参考pnfs
sec=sys默认sys,表示采用本地UID和GID通过AUTH_SYS进行身份验证;krb5,使用Kerberos V5代替UID与GID进行身份验证并使用安全检验和执行NFS完整性检查,以防止数据篡改;krb5i,出进行krb5的操作外,增加NFS流量加密放置流量嗅探;最安全但是也增大了性能开销
  • exportfs

        # NFS可以通过exportfs动态的配置共享文件系统。
        # 共享文件系统
        exportfs -o 选项 NFS服务主机:NFS共享目录
        # 挂载全部/etc/exports与/etc/exports.d/目录的配置
        exportfs -arv 或 exportfs -a
        # 卸载全部/etc/exports与/etc/exports.d/目录的配置
        exportfs -auv
        # 卸载单个文件系统
        exportfs -u NFS服务主机:NFS共享目录
        # 查看当前已挂载NFS文件系统,/var/lib/nfs/etab文件内容
        exportfs -s
        # 如果已经挂载了/proc/fs/nfs,/proc/fs/nfsd,刷新内核导出表
        exportfs -f
        # 忽略/etc/exports与/etc/exports.d/目录,仅接受命令行参数
        exportfs -i<aoruv> [host:/path]
    
  • 共享文件的权限

    • 客户机访问的UID和GID与服务器授权的UID和GID相同

      • 如果设置匿名映射的选项(root_squash或all_squash),且没有指定anonuid和anongid

        目录需要开启other权限,读取为r-x,新建需要rwx,
        修改文档需要开启other权限,读取为r--,新建需要rw-,
        新建文档用户和用户组为nfsnobody(UID=65534,GID=65534)
        
      • 如果设置匿名映射的选项(root_squash或all_squash),且指定anonuid和anongid

        目录需要anonuid或aongid指定用户或用户组权限,读取为r-x,新建需要rwx,
        修改文档需要开启文档other权限,读取为r--,新建需要rw-,
        新建文档用户和用户组为anonuid和aongid指定用户和用户组。
        
      • 如果设置匿名不映射的选项(no_root_squash或no_all_squash)

        目录需要开启other权限,读取为r-x,新建需要rwx,
        修改文档需要开启文档other权限,读取为r--,新建需要rw-,
        新建文档用户和用户组为客户机访问用户。
        
    • 客户机访问的UID和GID与服务器授权的UID和GID不同

      • 设置匿名映射的选项,同上
      • 设置匿名不映的选项
      目录需要设置与客户机对应的用户或用户组权限,读取为r-x,新建需要rwx,
      文档拥有者与客户机访问UID不同,修改文档需要文档other权限,读取为r--,新建需要rw-,
      文档拥有者与客户机访问UID相同,修改文档需要ower权限,读取为r--,新建需要rw-,
      新建文档用户和用户组为客户机访问用户。
      

服务启动

    # 启动rpcbind
    systemctl start rpcbind
    # 启动NFS服务
    systemctl start nfs 或 systemctl start nfs-server
    # 启动文档一致性检测守护进程
    systemctl start rpc-statd 或 systemctl start nfslock

服务检查

  • rpcinfo

        # 显示启动的NFS服务进程与对应的端口
        rpcinfo -p NFS主机
        # 检查进程的TCP/UDP封包的相关软件版本信息
        rpcinfo -t|-u NFS主机 NFS服务进程
    
    • 例1
        [root@localhost ~]# rpcinfo -p
       program vers proto   port  service
        100000    4   tcp    111  portmapper
        100000    3   tcp    111  portmapper
        100000    2   tcp    111  portmapper
        100000    4   udp    111  portmapper
        100000    3   udp    111  portmapper
        100000    2   udp    111  portmapper
        100005    1   udp  20048  mountd
        100005    1   tcp  20048  mountd
        100024    1   udp  33973  status
        100005    2   udp  20048  mountd
        100024    1   tcp  49015  status
        100005    2   tcp  20048  mountd
        100005    3   udp  20048  mountd
        100005    3   tcp  20048  mountd
        100003    3   tcp   2049  nfs
        100003    4   tcp   2049  nfs
        100227    3   tcp   2049  nfs_acl
        100003    3   udp   2049  nfs
        100003    4   udp   2049  nfs
        100227    3   udp   2049  nfs_acl
        100021    1   udp  50672  nlockmgr
        100021    3   udp  50672  nlockmgr
        100021    4   udp  50672  nlockmgr
        100021    1   tcp  43766  nlockmgr
        100021    3   tcp  43766  nlockmgr
        100021    4   tcp  43766  nlockmgr
    

    可以看出rpcbind启用了TPC和UDP的111端口,
    NFS主进程启用了2049端口,其他进程则启用了大于1024的随机端口。

    • 例2
        # 查看本机nfs程序的tcp封包相关软件版本信息
        [root@localhost ~]# rpcinfo -t localhost nfs
        program 100003 version 3 ready and waiting
        program 100003 version 4 ready and waiting
    
  • showmount

# 显示NFS已挂载的客户机IP和对应挂载的文件目录,/var/lib/nfs/rmtab文件内容
showmount -a <localhost>
# 显示指定NFS主机共享目录或权限信息
showmount -e localhost
# 显示NFS主机共享目录
showmount -d
  • ls -lchmod
客户机是否可以读写NFS文件系统还需要开放本机目录和文档权限。
读取需要有r-x权限,写入则需要rwx权限。
  • getfaclsetfacl

ACL方式设置目录权限

  • /var/lib/nfs/etab

记录NFS文件系统的完整权限设定值

  • /var/lib/nfs/xtab

客户机访问记录


NFS防火墙设定

一般NFS服务进程都是随机端口,不好设定防火墙规则。
但是可以通过/etc/sysconfig/nfs配置主要进程的固定端口,方便防火墙配置。


客户机挂载/卸载

  • mount

    mount <-t 文件系统类型> <-o 挂载选项> [NFS主机:NFS文件系统目录] [本地挂载点]
    
    • 文件系统类型

      如nfs,vfat,ntfs,smbfs。

    • 挂载参数

      windows使用mount -o -h查看,Linux使用man mount查看。

  • umount

    卸载挂载点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值