zoukankan      html  css  js  c++  java
  • NFS文件服务器

    • NFS介绍

    • 应用场景

    • NFS安装部署

    • NFS共享

    • 客户端NFS共享挂载


    一、NFS介绍

    NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

    NFS的好处:节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。

    NFS体系有两个主要部分:

    NFS服务端机器:通过NFS协议将文件共享到网络。

    NFS客户端机器:通过网络挂载NFS共享目录到本地。

    二、应用场景

    共享存储服务器: 图片服务器、视频服务器等

    家目录漫游:域用户家目录服务器

    文件服务器:内容文件存储服务器

    三、NFS安装部署

    约定:本实验中使用过的机器为centos7.5_x86_64系统,计算机名称:baism.ayitula.com,IP地址192.168.11.16/24.请关闭防火墙和SELINUX。

    a、nfs安装
    [root@baism ~]# yum -y install nfs-utils

    b、nfs开机启动
    [root@baism ~]# systemctl enable nfs-server
    Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to
    /usr/lib/systemd/system/nfs-server.service.

    c、nfs启动
    由于服务间的依赖关系,启动NFS之前先要确保rpcbind启动
    [root@baism ~]# systemctl is-active rpcbind
    active
    [root@baism ~]# systemctl start nfs

    d、验证启动
    [root@baism ~]# systemctl is-active nfs
    active

    四、NFS共享

    教学案例

    新建目录/public

    以只读的方式共享目录 /public 同时只能被 192.168.11.0 域中的系统访问

    新建目录/protected

    以读写的方式共享目录 /protected 能被 192.168.11.0 域中的系统访问

    创建共享目录
    [root@baism ~]# mkdir /public
    [root@baism ~]# mkdir /protected
    由于客户端挂载用户是nfsnobody,本题要求客户端挂载后可读写,我们是用root用户建立的目录,所以要给其他人7的权限
    [root@baism ~]# chmod 757 /protected/  

    通过/etc/exports文件定义共享目录
    [root@baism ~]# cat /etc/exports
    /public 192.168.11.0/24(ro)
    /protected 192.168.11.0/24(rw)

    共享格式为:
    共享目录绝对路径   授权访问的IP或网段(权限1,权限2)

    权限说明
    ro                     只读访问  
    rw                     读写访问  
    sync                   所有数据在请求时写入共享  
    async                   NFS在写入数据前可以相应请求  
    secure                 NFS通过1024以下的安全TCP/IP端口发送  
    insecure               NFS通过1024以上的端口发送  
    wdelay                 如果多个用户要写入NFS目录,则归组写入(默认)  
    no_wdelay               如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。  
    hide                   在NFS共享目录中不共享其子目录  
    no_hide                 共享NFS目录的子目录  
    subtree_check           如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)  
    no_subtree_check       和上面相对,不检查父目录权限  
    all_squash             共享文件的UID和GID映射匿名用户anonymous,适合公用目录。  
    no_all_squash           保留共享文件的UID和GID(默认)  
    root_squash             root用户的所有请求映射成如anonymous用户一样的权限(默认)  
    no_root_squash         root用户具有根目录的完全管理访问权限  
    anonuid=xxx         指定NFS服务器/etc/passwd文件中匿名用户的UID  
    anongid=xxx         指定NFS服务器/etc/passwd文件中匿名用户的GID


    通过/etc/exports输出共享不需要重启NFS服务,只需通过NFS共享管理命令exportfs来生效即可
    exportfs - 管理NFS共享文件系统列表

    exportfs命令:
      -a     打开或取消所有目录共享。

      -o options,... 指定一列共享选项,与 exports(5) 中讲到的类似。

      -i     忽略 /etc/exports 文件,从而只使用默认的和命令行指定的选项。

      -r     重新共享所有目录。它使 /var/lib/nfs/xtab 和 /etc/exports 同步。它将 /etc/exports 中已删除的条目从 /var/lib/nfs/xtab 中删除,将内核共享表中任何不再有效的条目移除。

      -u     取消一个或多个目录的共享。

      -f     在“新”模式下,刷新内核共享表之外的任何东西。
                        任何活动的客户程序将在它们的下次请求中得到mountd 添加的新的共享条目。

      -v     输出详细信息。当共享或者取消共享时,显示在做什么。
                        显示当前共享列表的时候,同时显示共享的选项。

    卸载所有共享
    [root@baism ~]# exportfs -au

    重挂所有
    [root@baism ~]# exportfs -ar

    重新加载共享文件列表/etc/exports,生效设置
    [root@baism ~]# exportfs -r


    查看共享目录
    [root@baism ~]# exportfs -v
    /public           192.168.11.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
    /protected        192.168.11.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

    五、客户端挂载NFS共享目录

    使用showmount命令查看远程nfs服务器共享目录
    [root@slave ~]# showmount 192.168.11.16 -e
    Export list for 192.168.11.16:
    /protected 192.168.11.0/24
    /public    192.168.11.0/24

    新建挂载点
    [root@slave ~]# mkdir /mnt/public
    [root@slave ~]# mkdir /mnt/protected

    挂载NFS服务器共享目录
    [root@slave ~]# mount -t nfs 192.168.11.16:/public /mnt/public/
    [root@slave ~]# mount -t nfs 192.168.11.16:/protected /mnt/protected/

    验证挂载
    [root@slave ~]# mount |egrep "(public|protected)"
    192.168.11.16:/public on /mnt/public type nfs4 (rw,relatime,vers=4.1,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.11.116,local_lock=none,addr=192.168.11.16)
    192.168.11.16:/protected on /mnt/protected type nfs4 (rw,relatime,vers=4.1,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.11.116,local_lock=none,addr=192.168.11.16)

    测试权限
    [root@slave ~]# touch /mnt/public/test
    touch: 无法创建"/mnt/public/test": 只读文件系统
    [root@slave ~]# touch /mnt/protected/test
    [root@slave ~]# ls /mnt/protected/ -l
    总用量 0
    -rw-r--r-- 1 nfsnobody nfsnobody 0 2月  28 11:52 test
     
  • 相关阅读:
    C# base64编码、解码
    C#异常重试通用类Retry
    C#操作Control异步工具类
    Notepad++的Json格式化插件
    CG 标准函数库
    Unity 几种优化建议
    基于Unity的Profiler性能分析
    Time.timeScale、游戏暂停
    Lua 中的string库(字符串函数库)总结
    Lua 日志
  • 原文地址:https://www.cnblogs.com/misaki-workshop/p/14058780.html
Copyright © 2011-2022 走看看