美文网首页
综合架构之存储服务之NFS

综合架构之存储服务之NFS

作者: 一只打不死的小强 | 来源:发表于2019-07-16 21:11 被阅读0次
    1. 存储服务概念介绍
    2. 存储服务部署流程 
    3. 存储服务存储原理 
    4. 存储服务配置参数
    5. 存储服务挂载方法 
    6. 存储服务常见异常
    7. 存储服务优点缺点
    

    第一部分 存储的概念介绍

    1.1存储服务器的价值

    1. 可以实现数据统一共享存储(解决数据不一致的问题)
    2. 节省架构服务运营成本(如果不用共享存储,则会每台服务器都会存储一个集群内服务器的数据,更浪费磁盘资源。)
    3. 减少web服务器的压力。
    

    1.2如何实现数据存储

    NFS(network file system --- 网络共享文件系统 不支持windows) server u 搭建FTP服务器
    FTP(文件共享存储 --- windows比较方便简单 linux如何部署FTP--数据权限设置)
    samba (linux部署服务端 可以让 windows 与 linux同时可以访问)

    注:samba配置比较复杂 135 139端口也较危险。

    1.3分布式存储

    分布式存储原理图

    原理:将数据分散的传到各个存储服务器,通过一定的算法将数据进行保存。然后由一台管理服务器进行对多个存储服务器进行控制。当客户端访问存储时,只需要访问分布式存储服务器的管理服务器即可。同时当一台存储服务器出现问题时,这时将数据转移到其他服务器上。

    第二部分 部署nfs存储流程

    nfs存储原理图

    存储服务器 客户端
    把远程的存储服务器的一个目录作为存储设备
    把客户端的一个目录作为挂载点
    由多个服务器共同挂载服务端的目录,通过网络并实现共享存储。

    2.1 rpc服务的原理

    RPC 远程过程调用程序---中介服务

    rpc服务原理

    实际上用租房子来理解 租客找房子要找中介,中介那有房源信息。相当于客户端挂载必须要找RPC服务。


    2.2 nfs服务的工作原理

    nfs多进程服务

    一旦服务一启动,会出现多个网络进程。每个进程会产生相应的端口,并且是随机端口,为了减少客户连接的复杂度,出现了一个RPC服务。客户端连接存储,只需要访问RPC服务。


    图片.png

    2.3 nfs服务的部署流程

    第一个历程:安装软件程序
        yum install -y nfs-utils rpcbind
        rpm -qa nfs-utils 
        rpm -qa rpcbind
        第二个历程:编写配置文件
        vim /etc/exports
        01                              02 
        可以进行共享存储目录     允许存储数据网段信息(存储目录权限配置 存储数据方式配置)
        /data                    172.16.1.0/24(rw,sync-同步方式存储数据)
        同步方式存储数据:用户有数据存储  ----  存储服务器(磁盘中) 存储安全性高 安全
        异步方式存储数据:用户有数据存储  ----  内存 --- 存储服务器(磁盘中)  存储效率高
        /data 172.16.1.0/24(rw,sync) 英文小括号 多个参数用,分割
        第三个历程:创建备份目录 对存储目录进行授权
        mkdir /data
        chown nfsnobody.nfsnobody /data
        第四个历程:启动服务程序
        systemctl start rpcbind
        systemctl enable rpcbind
        systemctl start nfs
        systemctl enable nfs
    

    2.4客户端部署的流程

    第一个历程:安装相关软件
        yum install -y nfs-utils
    第二个历程:进行存储目录挂载
    mount -t nfs  172.16.1.31:/data  /mnt
    第三个历程:进行测试
    客户端web01   在挂载点创建数据   存储服务是否有创建好的数据
                                         检查其它客户端挂载点是否有创建的数据
    

    客户端一定要安装nfs-utils这个软件,否则会出现报错!



    报错提示:文件类型使用错了


    第三部分 nfs服务用户映射原理

    三种服务用户映射原理图

    当客户端的用户通过网络向存储服务器进行存储,无认证项目,白名单通过,最终会把用户变成nfsnobody(安装好服务以后,会默认有这个用户)。


    当软件包无法安装时该如何解决

     异常下载软件问题:
        01. 更新yum源 更改后 yum clean all
        02. 利用rpm安装软件 获得rpcbind软件包
            vim /etc/yum.conf 
            cachedir=/var/cache/yum/$basearch/$releasever   --- 下载软件保存路径
            keepcache=1                                     --- 下载软件保留下来,不要被删除,0代表删除。
    yum reinstall rpcbind
            rpm -ivh  rpcbindxxx.rpm
      [root@nfs01 ~]#   rpm -ivh /tmp/rpcbind-0.2.0-47.el7.x86_64.rpm 
        Preparing...                          ################################# [100%]
        error: %pre(rpcbind-0.2.0-47.el7.x86_64) scriptlet failed, exit status 1   --- 创建用户动作 nfsnobody
        rpm -e rpcbind --nodeps
        error: rpcbind-0.2.0-47.el7.x86_64: install failed
        说明:发现还不行的时候看报错信息 脚本创建失败
        1. nfs服务安装好之后,会自动创建nfsnobody虚拟用户
        2. 需要确认4个和用户相关的文件不能上锁
        lsattr 
       chartr -i 是解锁
    

    第四部分 存储服务配置文件编写格式

    man exports

    • ro 只读配置 使存储目录权限位只读
      应用场景:使开发人员(线下)可以查看线上服务器数据(线上的服务器只能运维操作)
      一是 让他查看自己的电脑
      二是 给他挂载只读目录
    • rw 读写权限
      sync 同步存储数据
      async 异步存储数据

    注:以上四个为常用


    all_squash     将所有普通用户映射为指定nfsnobody用户
     no_all_squash  将所有普通用户都不做映射
    root_squash    将root用户映射为指定nfsnobody用户
    no_root_squash 将root用户不做映射
    

    • all_squash映射实践:
      第一步: 服务端(修改配置文件)
      /data 172.16.1.0/24(ro,sync,all_squash)

    systemctl reload nfs
    restart:将所有连接会话都会直接断开
    reload: 只会将没有数据传输链接断开, 重新建立连接 让用户访问感受更好 让传输的数据继续传,传完再断开再重新传.

    第二步:上传数据测试
    [oldboy@web01 mnt] touch oldboy.txt
    [oldboy@web01 mnt]$ ll
    total 4
    -rw-r--r-- 1 nfsnobody nfsnobody 19 Jul 16 12:03 oldboy.txt --- 所有普通用户都会做映射

    • no_all_squash映射实践:
      第一步: 服务端(修改配置文件)
      /data 172.16.1.0/24(ro,sync,no_all_squash)
      systemctl reload nfs
      第二步:上传数据测试 服务端查看
      [root@nfs01 data]# ll
      total 4
      -rw-rw-r-- 1 1017 1017 0 Jul 16 12:08 oldboy02.txt
      -rw-rw-r-- 1 1017 1017 0 Jul 16 12:10 oldboy_1017.txt --- 用户传输数据身份没有变化,看用户uid信息

    注:当服务端也有普通用户并且uid也和客户端相同时,则可以存储,如果不相同 会将属主组变为客户端文件uid信息
    如果服务端已经有了用户并且uid和服务端相同,备份的时候虽然会显示备份的文件属组 属组会显示服务端用户的名字。但UID是跟客户端相同的。

    • root_squash映射实践:
      第一步:服务端编写配置文件
      /data 172.16.1.0/24(rw,sync,root_squash)
      第二步:客户端检查存储信息
      [root@web01 mnt]# touch root_01.txt
      [root@web01 mnt]# ll
      -rw-r--r-- 1 nfsnobody nfsnobody 0 Jul 16 12:19 root_01.txt --- root用户会映射为指定的nfsnobody用户

    • no_root_squash映射实践:
      第一步:服务端配置文件修改
      /data 172.16.1.0/24(rw,sync,no_root_squash)
      第二步:客户端检查存储信息
      [root@web01 mnt]# touch root_02.txt
      [root@web01 mnt]# ll
      -rw-r--r-- 1 root root 0 Jul 16 12:22 root_02.txt

    相关文章

      网友评论

          本文标题:综合架构之存储服务之NFS

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