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

    1, NFS存储服务概念介绍
        NFS是Network File System的缩写,中文意思是网络文件系统,
        它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录
           
        NFS服务器只支持Linux服务器之间共享数据存储
        
        windows服务器和linux服务器都存在: 尽量不要使用nfs, 建议使用samba ftp
        
        如果大型网站,那么有可能还会用到更复杂的分布式文件系统,
        例如:Moosefs(mfs)入门、GlusterFS、FastDFS
      

     
    2. NFS服务软件的由来
        重要性说明:
        1) 可以实现数据信息统一一致
        2) 可以节省磁盘硬件设备成本

    3. NFS服务存储数据原理
       


        
    4. NFS服务的重点概念
        RPC服务: 远程过程调用服务(中介服务)
        


        NFS与rpc服务相关进程信息:
        [root@oldboy ~]# ps -ef|egrep "rpc|nfs"
        rpc        1564      1  0 09:32 ?        00:00:00 rpcbind
        rpc        1065      1  0 09:32 ?        00:00:00 rpc statd        <- 检查数据存储一致性
        root       4736      2  0 21:31 ?        00:00:00 [rpciod/0]
        root       5363      1  0 21:47 ?        00:00:00 rpc.rquotad    <- 磁盘配额进程(remote
        quote server)
        root       5368      1  0 21:47 ?        00:00:00 rpc.mountd    <- 权限管理验证等(NFS
        mount daemon)
        root       5375      2  0 21:47 ?        00:00:00 [nfsd4]
        root       5376      2  0 21:47 ?        00:00:00 [nfsd4_callbacks]
        root       5377      2  0 21:47 ?        00:00:00 [nfsd]        <- NFS主进程
        root       5378      2  0 21:47 ?        00:00:00 [nfsd]         <- NFS主进程
        root       5379      2  0 21:47 ?        00:00:00 [nfsd]         <- NFS主进程,管理登入,
        ID身份判别等。
        root       5380      2  0 21:47 ?        00:00:00 [nfsd]
        root       5381      2  0 21:47 ?        00:00:00 [nfsd]
        root       5382      2  0 21:47 ?        00:00:00 [nfsd]
        root       5383      2  0 21:47 ?        00:00:00 [nfsd]
        root       5384      2  0 21:47 ?        00:00:00 [nfsd]        <- NFS主进程
        root       5415      1  0 21:47 ?        00:00:00 rpc.idmapd    <- name mapping daemon
                                                                        用户压缩/用户映射(记录)
        root       5512   4670  0 22:02 pts/0    00:00:00 egrep rpc|nfs

    没有rpc的话

    存在rpc



    5. NFS服务部署流程
        服务端部署流程:
        第一个里程: 检查相应存储服务软件是否安装, 进行软件安装
        nfs-utils rpcbind(centos6) portmap(centos5)
        rpcbind服务属于nfs-utils软件的一个依赖包
        
        rpm -qa|grep -E 'nfs|rpc'
        yum install nfs-utils rpcbind -y
        
        rpm -ql nfs-utils
        /etc/rc.d/init.d/nfs
        /usr/sbin/showmount
        
        rpm -ql rpcbind
        /etc/rc.d/init.d/rpcbind
        /usr/sbin/rpcinfo    --- 查看nfs服务是否已经进行了注册
        
        第二个里程: 编写配置文件
        vim /etc/exports
        #share /data by oldboy for share at 20170220
        /data 172.16.1.0/24(rw,sync)
          ①       ②          ③
        第一列: 定义nfs服务的共享目录信息
        第二列: 定义哪些网段的主机可以访问共享目录
        第三列: 配置共享目录的一些权限或功能信息

        第三个里程: 创建共享目录信息, 目录授权
        mkdir /data -p
        [root@nfs01 ~]# id nfsnobody   --- 共享目录管理用户
        uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)
        chown -R nfsnobody.nfsnobody /data/
        
        第四个里程: 启动nfs相关服务
        先启动rpc服务
        /etc/init.d/rpcbind start
        [root@nfs01 ~]# ps -ef|grep rpcbind
        rpc        8050      1  0 10:19 ?        00:00:00 rpcbind
        root       8066   7980  0 10:20 pts/1    00:00:00 grep --color=auto rpcbind
        [root@nfs01 ~]# netstat -lntup|grep rpc
        tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      8050/rpcbind        
        tcp        0      0 :::111                      :::*                        LISTEN      8050/rpcbind
        
        再启动nfs服务
        /etc/init.d/nfs start
        [root@nfs01 ~]# ps -ef|grep nfs
        root       8128      2  0 10:21 ?        00:00:00 [nfsd4]
        root       8129      2  0 10:21 ?        00:00:00 [nfsd4_callbacks]
        root       8130      2  0 10:21 ?        00:00:00 [nfsd]
        root       8131      2  0 10:21 ?        00:00:00 [nfsd]
        root       8132      2  0 10:21 ?        00:00:00 [nfsd]
        root       8133      2  0 10:21 ?        00:00:00 [nfsd]
        root       8134      2  0 10:21 ?        00:00:00 [nfsd]
        root       8135      2  0 10:21 ?        00:00:00 [nfsd]
        root       8136      2  0 10:21 ?        00:00:00 [nfsd]
        root       8137      2  0 10:21 ?        00:00:00 [nfsd]

        rpcinfo -p localhost  --- 检查本地nfs服务是否想rpc服务进行注册
        
        
        补充: 软件重启方式
        restart : 软件正常重启(强制重启)
        reload:   软件平滑重启  --- 提升用户感受
        
        
        
        客户端部署流程:
        第一个里程: 检查安装软件服务
        nfs-utils rpcbind
        yum install -y nfs-utils rpcbind
        
        第二个里程: 进行共享目录挂载使用
        mount -t nfs 172.16.1.31:/data /mnt
        [root@backup ~]# df -h
        Filesystem         Size  Used Avail Use% Mounted on
        /dev/sda3           48G  1.9G   44G   5% /
        tmpfs              238M     0  238M   0% /dev/shm
        /dev/sda1          190M   35M  146M  19% /boot
        172.16.1.31:/data   48G  1.8G   44G   4% /mnt
        
        第三个里程: 进行存储数据测试
        
        补充: 当存储服务挂载遇到问题,如何排查
        rpcinfo -p nfs服务端地址信息   --- 查看rpc服务中是否有nfs服务注册信息
        showmount -e nfs服务端地址信息 --- 查看nfs服务端可以使用的共享目录信息
        


    6. nfs服务端配置文件详述
        1) /etc/exports文件配置格式为:
        NFS共享目录 NFS客户端地址1(参数1,参数2,...) 客户端地址2(参数1,参数2,...)
        或
        NFS 共享目录 NFS客户端地址(参数1,参数2,...)


        配置文件三个重要组成部分
        NFS共享目录:
        为NFS服务器端要共享的实际目录,要用绝对路径,如(/data)。注意共享目录的本地权限,如果需要读写共享,一定要让本地目录可以被NFS客户端的用户(nfsnobody)读写。
        NFS客户端地址:
        为NFS服务器端授权的可访问共享目录的NFS客户端地址,可以为单独的IP地址或主机名、域名等,也可以为整个网段地址。还可以用“*”来匹配所有客户端服务器,这里所谓的客户端一般来说是前端的业务的业务服务器,例如:web服务。具体说明见表10-3
        权限参数集
        对授权的NFS客户端的访问权限设置。参数具体说明见后文。
          1) nfs权限(共享目录【借给你手机】) nfs配置的/etc/exports /data 172.16.1.0/24(rw)
          2) 本地文件系统权限(【手机密码不告诉你】) 挂载目录的权限rwxr-xr-x root root /data
        
        2) 配置文件中权限信息说明
        no_root_squash   --- 当用root用户向存储服务器存储数据,root用户身份不会发生改变
        root_squash      --- 当用root用户向存储服务器存储数据,root用户身份会发生改变
        all_squash       --- 当用普通用户向存储服务器存储数据,普通用户身份会发生改变
        no_all_squash    --- 当用普通用户向存储服务器存储数据,普通用户身份不会发生改变
        
        阶段总结: 用户映射知识
        1) rsync
        rsync客户端 --->  用户身份映射  --- > rsync服务端  (默认映射为指定uid用户信息 rsync)
        2) nfs
        nfs客户端   --->  用户身份映射  --- > nfs服务端    (默认映射为nfsnobody)
        3) nginx
        nginx客户端 --->  用户身份映射  --- > nginx服务端   (默认映射为指定的www用户)
        
        
        nginx客户端 --->  用户身份映射  --- > nginx服务端   (默认映射为指定的www虚拟用户)
        
                                               nfs客户端(www) --->  用户身份映射  --- > nfs服务端    (默认映射为nfsnobody)  no_all_squash
        
                                                                                        rsync客户端 --->  用户身份映射  --- > rsync服务端  (默认映射为指定uid用户信息 rsync

    )

  • 相关阅读:
    类class解读
    函数重载
    for循环之省略{}
    《c++程序设计现代方法》笔记2
    【程序】c++雇员工资管理系统
    贪婪法
    乘法口诀程序
    百钱买百鸡问题程序
    【转】牛人十个月自学C++ 现在做C#开发工作
    c++基本规则习惯
  • 原文地址:https://www.cnblogs.com/kingle-study/p/9527814.html
Copyright © 2011-2022 走看看