• NFS服务器的搭建


    RPC:远程过程调用
        system call:本地系统调用,read,open,write,close
        过程没有返回值,函数没有返回值
    
        client发起一个系统调用,通过RPC协议,调用远程主机的函数,远程主机执行函数后,返回给远程主机,远程主机通过rpc协议的报文返回给client端。
    
    
    NFS:发起的是一个函数请求调用。
    
        半结构化数据:
            XML:
            HTML:
            JSON:
            HTTP:RESTful
    
        存在的问题:用户
            客户端保存一个文件到远程主机,远程主机保存用的是id,并没有此用户名(如果有,那就更好)
        解决方案:
            NIS:network imfornation system(很少用了)
                身份认证,集中于某服务器完成认证,但是是明文的,所以一般在局域网使用,
                而且容易造成单点问题。
            nfsv4:服务器进程上,运行idmapd,用户账号的映射,服务器端还是以本地用户访问,只是本地映射的结果是nfsnobody,但是无法认证
    
        NFS:只能基于 IP 认证。无法做到用户名密码认证。
            辅助性的服务:mountd,负责认证访问的文件系统是本地的 ,就发给客户端令牌,可以访问。
            服务器端:nfsd,负责完成远程过程调用。
    
        nfs:2049/tcp   2049/udp
        mountd:由本地的RPC服务随机选择的端口。
            这个RPC服务就是portmapper
    
        RPC服务:portmapper
        NFS服务器:nfsd,mountd,idmapd
    
        先找portmapper(固定端口) ---> mountd(随机端口) ---> nfsd
    
        centos7:默认没有安装 nfs-utils
    
        查看NFS服务器端共享的文件系统:
            showmount -e NFSSERVER_IP
    
        挂载NFS文件系统:
            mount -t nfs SERVER:/path/to/sharedfs  /path/to/mount_point
    
        exportfs:维护exports文件导出的文件系统表的专用工具:不需要重启nfs服务。(systemctl start nfs)
                export -ar: 重新导出所有的文件系统
                export -au: 关闭导出的所有文件系统
                export -u FS: 关闭指定的导出的文件系统
    
        开机自动挂载nfs: 
                /etc/fstab
                SERVER:/PATH/TO/EXPORTED_FS /mount_point     nfs     defaults,_netdev(要指明是网络设备,不要单独的default)     0 0
    
    
        /etc/exports: 
            文件系统     客户端(选项) 客户端(选项)
    
            客户端:IP、FQDN或DOMAIN、NETWORK
    
                常用选项
    
                    有几个常用的选项可以对 NFS 实现进行定制。这些选项包括:
                        secure: 这个选项是缺省选项,它使用了 1024 以下的 TCP/IP 端口实现 NFS 的连接。指定 insecure 可以禁用这个选项。
                        rw: 这个选项允许 NFS 客户机进行读/写访问。缺省选项是只读的。
                        async: 这个选项可以改进性能,但是如果没有完全关闭 NFS 守护进程就重新启动了 NFS 服务器,这也可能会造成数据丢失。
                        no_wdelay: 这个选项关闭写延时。如果设置了 async,那么 NFS 就会忽略这个选项。
                        nohide: 如果将一个目录挂载到另外一个目录之上,那么原来的目录通常就被隐藏起来或看起来像空的一样。要禁用这种行为,需启用 hide 选项。
                        no_subtree_check: 这个选项关闭子树检查,子树检查会执行一些不想忽略的安全性检查。缺省选项是启用子树检查。
                        no_auth_nlm: 这个选项也可以作为 insecure_locks 指定,它告诉 NFS 守护进程不要对加锁请求进行认证。如果关心安全性问题,就要避免使用这个选项。缺省选项是 auth_nlm 或 secure_locks。
                        mp (mountpoint=path): 通过显式地声明这个选项,NFS 要求挂载所导出的目录。
                        fsid=num: 这个选项通常都在 NFS 故障恢复的情况中使用。如果希望实现 NFS 的故障恢复,请参考 NFS 文档。
                用户映射
                    通过 NFS 中的用户映射,可以将伪或实际用户和组的标识赋给一个正在对 NFS 卷进行操作的用户。这个 NFS 用户具有映射所允许的用户和组的许可权限。对 NFS 卷使用一个通用的用户/组可以提供一定的安全性和灵活性,而不会带来很多管理负荷。
                    在使用 NFS 挂载的文件系统上的文件时,用户的访问通常都会受到限制,这就是说用户都是以匿名用户的身份来对文件进行访问的,这些用户缺省情况下对这些文件只有只读权限。这种行为对于 root 用户来说尤其重要。然而,实际上的确存在这种情况:希望用户以 root 用户或所定义的其他用户的身份访问远程文件系统上的文件。NFS 允许指定访问远程文件的用户——通过用户标识号(UID)和组标识号(GID),可以禁用正常的 squash 行为。
    
                    如:
                        服务器端 添加:uid 600  gentoo  su到gentoo,创建某文件夹,对此文件夹有写权限
                        客户端   添加:uid 600  centos  
                        但是centos还是可以对文件夹有写权限,是因为id一样,idmapd映射为gentoo,但是在客户端显示是nobody
                    
                    用户映射的选项包括:
                        root_squash: 这个选项不允许 root 用户访问挂载上来的 NFS 卷。例如:客户端如果cp文件到NFS卷,不允许
                        no_root_squash: 这个选项允许 root 用户访问挂载上来的 NFS 卷。
                        all_squash: 这个选项对于公共访问的 NFS 卷来说非常有用,它会限制所有的 UID 和 GID,只使用匿名用户。缺省设置是 no_all_squash。
                        anonuid 和 anongid: 这两个选项将匿名 UID 和 GID 修改成特定用户和组帐号。
  • 相关阅读:
    javascript Location对象属性和方法
    javascript History对象属性和方法
    javascript Navigator对象属性和方法
    JavaScript数组去重
    npm命令概述
    git的基本操作
    nodejs环境使用jshint
    基于GitLab CI、Docker的Node.js持续集成部署方案
    页面重构中的语义化(转自鬼哥)
    nodejs安装
  • 原文地址:https://www.cnblogs.com/JerryZao/p/10587244.html
Copyright © 2020-2023  润新知