美文网首页
NFS 服务

NFS 服务

作者: fangfc | 来源:发表于2018-12-23 01:18 被阅读0次

    1. NFS

    1.1 概述

    • NFS (Network File System) 网络文件系统, 最早由Sun 公司发展出来, 可以提供 通过网络, 让不同操作系统, 不同机器, 可以彼此分享指定的文件/目录, 所以可以看做是一个文件服务器, 但是这个NFS 可以让PC 通过网络访问.
    • NFS 支持很多工功能, 不同功能启动不同程序, 每个程序都需要一些端口来传输数据, 所以NFS 没有固定端口, 是具体的功能提供的端口,
    • NFS 最重要的就是远程调用(RPC) 服务, RPC服务是用于为 NFS 的每个功能分配对应的 port number, 并且返回给客户端, 客户端可以根据RPC 服务提供的 其他服务的端口, 然后连接到对应的端口
    • NFS服务端 在启动任何服务时, 会主动向RPC 注册, 因此 RPC 会知道NFS 的功能对应的每个端口, 而RPC 的端口有时固定的, 所以客户端可以根据服务端的 RPC 知道NFS的功能.

    1.2 客户端 到NFS 服务端的连接过程

    • 客户端: 向服务端的RPC(port 111) 发出NFS 存取功能请求
    • 服务端: 找到对应的注册 NFS daemon 端口, 发回客户端
    • 客户端: 根据收到的端口, 与 NFS daemon 通信

    1.2 NFS 软件结构

    • NFS 有两个必备的程序,

      • RPC -- rpcbind
        • 用于为客户端 提供NFS服务的端口map.
      • NFS -- nfs-utils
        • NFS 主程序
    • NFS 相关配置文件

      • 主配置文件: /etc/exports

        • NFS 的主配置文件, 系统没有默认设置, 需要手动建立
      • NFS 文件系统维护指令: /usr/sbin/exportfs

        • 维护NFS 分享资源的指令, 可以利用该指令 重新分享 /etc/exports 文件内设置的目录资源, 可以将 NFS Server 分享的目录 卸载, 重新分享, 等等
      • 分享资源的 登录文件 /var/lib/nfs/*tab

        • nfs 服务器登陆文件, 两个比较重要的, etab 用于设置分享目录的完整权限设置, xtab 记录曾经连接到NFS 服务器的相关客户端数据
      • 客户端查询分享资源的配置文件: /usr/sbin/showmount

        • 客户端的配置文件, showmount 用来查看NFS 分享出来的目录资源

    1.3 主配置文件

    • 主配置文件 /etc/exports
    • 常见参数
    参数          内容
    rw  ro      该目录分享的权限 是可写的(read-write) 或者只读(read-only), 但是最终可不可读写, 还是文挨近系统的 rwx 以及用户身份.
    
    sync async  代表目录是否是 立即同步写入硬盘, async 表示暂时缓存到 内存中, 而非直接写入硬盘.
    
    no_root_sqaush  root_squash     客户端使用账号如果是 root时, 如何判断该账号身份, root_squash 表示会变成 nfsnobody, 如果需要使用 root 用户 则应该使用 no_root_squash
    
    all_squash  不论登录的 NFS 的用户身份是谁, 都会被被设置成匿名 nobody(nfsnobody)
    
    anonuid anongid     anon表示anonymous(匿名者) 设置用户UID/GID, 通常是 nobody
    
    • 生效配置文件

      • exportfs -r
    • 启动服务

      • systemctl start rpcbind
      • systemctl start nfs
    • 查看 RPC 服务的注册状态

      • rpcinfo -p localhost
      • rpc 选项
        • -p: 针对某个IP(未写则设置成本机) 显示出所有port 和 porgram 信息
        • -t: 检测 TCP
        • -u: 检测 UDP

    1.4 客户端配置

    • 安装 nfs-utils

    2. 安装

    2.1 服务端安装

    • yum -y install nfs-utils rpcbind
    • 查看
    [root@node10009 ~]# systemctl start nfs
    [root@node10009 ~]# systemctl status nfs | grep Active
       Active: active (exited) since Sat 2018-12-22 08:38:56 CST; 1min 38s ago
    [root@node10009 ~]# systemctl start rpcbind
    [root@node10009 ~]# systemctl status rpcbind | grep Active
       Active: active (running) since Sat 2018-12-22 08:34:09 CST; 6min ago
    [root@node10009 ~]# 
    

    2.2 服务端配置

    • 创建共享的目录
      • mkdir -p /data/share/
      • chmod 777 /data/share
    • 编辑配置文件
    [root@node10009 ~]# cat  /etc/exports
    /data/share 192.168.10.*(rw,no_root_squash,no_all_squash,sync)
    
    • 注意事项:

      • /etc/exports 文件内主机和权限之间不可以有空格, 权限之间使用逗号(,) 分割, 且不可以有空格.
    • 重启服务

      • systemctl restart nfs

    2.3 客户端连接

    [fangfc@node10011 ~]$ showmount -e 192.168.10.9
    Export list for 192.168.10.9:
    [fangfc@node10011 ~]$ mkdir /data
    [fangfc@node10011 ~]$ sudo mkdir /data
    [sudo] password for fangfc: 
    [fangfc@node10011 ~]$ sudo mount -t nfs 192.168.10.9:data/share /data/ -o proto=tcp -o nolock
    [fangfc@node10011 ~]$ df -h
    Filesystem                Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root    37G   25G   13G  68% /
    devtmpfs                  1.9G     0  1.9G   0% /dev
    tmpfs                     1.9G     0  1.9G   0% /dev/shm
    tmpfs                     1.9G   12M  1.9G   1% /run
    tmpfs                     1.9G     0  1.9G   0% /sys/fs/cgroup
    /dev/sda1                1014M  142M  873M  14% /boot
    tmpfs                     378M     0  378M   0% /run/user/1000
    192.168.10.9:/data/share   17G   16G  1.5G  92% /data
    [fangfc@node10011 ~]$ 
    

    2.4 测试拷贝文件

    • 服务端
    [root@node10009 ~]# echo 'hello' > /data/share/a.txt
    
    • 客户端
    [fangfc@node10011 data]$ cp a.txt  /tmp
    [fangfc@node10011 data]$ cat /tmp/a.txt
    hello
    

    2.5 客户端添加文件

    • 客户端
    [fangfc@node10011 ~]$ 
    [fangfc@node10011 ~]$ sudo echo 'hello' > /data/b.txt
    [sudo] password for fangfc: 
    [fangfc@node10011 ~]$ 
    
    • 服务端
    [root@node10009 data]# ls /data/share/
    a.txt  b.txt
    [root@node10009 data]# 
    

    END

    相关文章

      网友评论

          本文标题:NFS 服务

          本文链接:https://www.haomeiwen.com/subject/velgkqtx.html