zoukankan      html  css  js  c++  java
  • 网络文件系统nfs

    NFS(network file system)网络文件系统主要让不同的主机系统之间可以彼此共享目录,可以使用在体量比较小的网站集群架构中。
    NFS简单易用、方便部署、保持集群数据一致性、满足中小企业需求。NFS的数据都在文件系统之上,所有数据都是能看得见。但是存在单点故障,如果搭建高可用维护麻烦,而且是明文模式,只能内网使用。

    nfs共享参数 参数作用
    rw 读写
    ro 只读
    root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(不常用)
    no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员(不常用)
    all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户nfsnobody 65534 (常用)
    sync 同时将数据写入到内存与硬盘中,保证不丢失数据
    async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
    anonuid* 配置all_squash使用,指定NFS的用户UID,必须存在系统
    anongid* 配置all_squash使用,指定NFS的用户UID,必须存在系统
    NFS实现原理(需要先了解[程序|进程|线程])
     
        1.NFS客户端执行增、删等操作,客户端会使用不同的函数对该操作进行封装。
     
        2.NFS客户端会通过TCP/IP的方式传递给NFS服务端。
     
        3.NFS服务端接收到请求后,会先调用portmap进程进行端口映射。
     
        4.nfsd进程用于判断NFS客户端是否拥有权限连接NFS服务端。
     
        5.Rpc.mount进程判断客户端是否有对应的权限进行操作。
     
        6.idmap进程实现用户映射和压缩。
     
        7.NFS服务端将客户端的函数转换为本地能执行的命令,然后将命令传递至内核,由内核驱动硬件
    
    

    服务端配置nfs可挂载目录

    ##安装nfs-utils(rpcbind在c6中需要安装,7中为依赖包,会自动安装)
     
    [root@servera ~]# yum install nfs-utils -y
     
    [root@servera ~]# systemctl start nfs
     
    [root@servera ~]# systemctl enable nfs
     
    [root@servera ~]# vim /etc/exports
     
    /data 172.16.1.0/24(rw,all_squash)
     
    [root@servera ~]# chown nfsnobody.nfsnobody /data #配置/data的属性参数
     
    ###将/data目录共享到172.16.1.0/24网段,属性为读写,压缩用户(强制用户进入nfs服务器时转变为65534 nfsnobody用户)需要注意,地址网段和参数之间不能添加空格。
     
    [root@servera ~]# vim /etc/exports
     
    /data1 172.16.1.0/24(rw,sync,all_squash,anonuid=888,anongid=888)
     
    ###将/data1目录共享到172.16.1.0/24网段,属性为读写,压缩用户(强制用户进入nfs服务器时转变为uid=888,gid=888的用户),同时将数据写入到内存和硬盘,保持数据安全
     
    [root@servera ~]# groupadd -g 888 nfs
     
    [root@servera ~]# useradd -u 888 -g 888 nfs
     
    [root@servera ~]# id nfs
    uid=888(nfs) gid=888(nfs) groups=888(nfs)
     
    [root@servera ~]# chown nfs.nfs /data1  #配置/data1的属性参数
     
    [root@servera ~]# cat /var/lib/nfs/etab   #查看nfs共享目录参数情况
     
    /data1  172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=888,anongid=888,sec=sys,rw,secure,root_squash,all_squash)
     
    /data   172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,all_squash)
     
    [root@servera ~]# showmount -e localhost #查看共享情况
    Export list for localhost:
    /data1 172.16.1.0/24
    /data  172.16.1.0/24
     
    (默认为关闭防火墙状态)
    
    

    客户端配置

    [root@clientb ~]# yum install -y nfs-utils #安装nfs服务,不需要配置,只是需要rpcbind服务
     
    #挂载目录
    [root@clientb ~]# mount.nfs 172.16.1.200:/data /mnt
    [root@clientb ~]# mount.nfs 172.16.1.200:/data1 /mnt1
    #查看目录
    [root@clientb ~]# df -h
    :
    :
    172.16.1.200:/data        17G  2.5G   15G  15% /mnt
    172.16.1.200:/data1       17G  2.5G   15G  15% /mnt1
    ##测试
    [root@clientb ~]# touch /mnt/file
    [root@clientb ~]# touch /mnt1/file1
     
    
    
  • 相关阅读:
    零基础学python-2.24 一些常用函数
    零基础学python-2.23 模块
    零基础学python-2.22 回到我们的游戏 加入文件和异常
    tcp协议:三次握手四次挥手详解---总结
    centos7安装jmeter + ant
    centos7安装jenkins
    centos7安装tomcat
    centos7安装jdk (jdk-8u161-linux-x64.tar.gz 和 java-1.8.0-openjdk* 介绍)
    波浪场景jp@gc
    阶梯场景jp@gc
  • 原文地址:https://www.cnblogs.com/dinghc/p/12217140.html
Copyright © 2011-2022 走看看