zoukankan      html  css  js  c++  java
  • 企业级NFS网络文件共享服务(存储服务器,实时,定时)

    1.什么是nfs

    • network file system  通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录
    • nfs客户端(一般是应用服务器,例如web),可以通过过挂载的方式将NFS服务端共享的数据目录挂载到NFS客户端本地系统中,从客户端本地看,NFS服务器端共享的目录就好像客户端自己的磁盘分区或则目录一样,二实际上确实远端的nfs服务端目录

    2.nfs的历史介绍

    • 第一个网络文件系统

    3.工作原理讲解

    • nfs 本身监听的端口号是2049,但是由于nfs支持的功能相当的多,需要启用的端口号较多,需要由RPC来协助
    • RPC的作用:指定NFS个功能对应的端口号,然后通知给客户端,让客户端可以连接到正确的端口号上
    • NFS:处理客户端数据请求
    • RPC:处理客户端链接请求

    4.需要的软件包(rpm -aq nfs-utils rpcbind

    • rpc : rpcbind
    • nfs : nfs-utils
    • yum -y install nfs-utils rpcbind

    5.启动服务

    • systemctl start rpcbind  必须先启动这个
    • systemctl start nfs

    6.多个进程功能介绍

    • rpc.statd 检查文件一致性
    • rpc.mountd  权限管理验证
    • nfsd 主进程(很多)
    • rpc.idmapd 主进程映射

    7.nfs软件结构

    • /etc/nfsmount.conf --> 存放挂载时候会调用的一些参数
    • /etc/exports --> 主配置文件, 由setup程序安装出来.
    • /var/lib/nfs/etab -->日志文件 记录了NFS共享出来的目录完整权限的设置值
    • /var/lib/nfs/xtab -->日志文件 记录了客户端访问NFS服务器的数据信息接!

    8. 主配置文件(/etc/exports -)

    格式:
    共享目录 允许谁来访问我的共享目录(权限)
    /project proj*.local.domain(rw)
    /share *.local.domain(ro) @trusted(rw)
    /home/www pc001(rw,all_squash,anonuid=150,anongid=100)
    /public *(ro,insecure,all_squash)
    /srv/www -sync,rw server @trusted @external(ro)
    /foo 2001:db8:9:e54::/64(rw) 192.0.2.0/24(rw)
    /build buildhost[0-9].local.domain(rw)

    9、客户端(192.168.1.11)访问

    a、查看远程nfs共享的目录是什么,谁可以访问这个目录

    命令:showmount -e 192.168.1.10

     

    [root@linux-node ~]# showmount -e 192.168.86.11 #192.168.86.11为服务器端ip

    Export list for 192.168.86.11:/share 192.168.86.0/24

    b,挂载

    格式:mount [-t nfs] 服务器端ip:共享目录 挂载点
    [root@linux-node ~]# mount 192.168.86.11:/share /mnt

    永久挂载(/etc/fstab):
    192.168.86.11:/share /mnt nfs defaults 0 0

    10、权限问题

    1、root用户在 /mnt 创建文件受限,在服务器端把共享目录权限改为 755 后,在里面创建好文件以后,发现文件拥有者和所属组为nobody,主要是因为映射问题 (root_squash)

    2、如果root用户创建文件,想让客户端拥有者和所属组也为root,要在服务器端配置权限的时候将映射关系改为 no_root_squash

    3、普通用户在 /mnt 目录下创建文件时,服务器端识别到的只有 uid 和 gid,如果服务器找不到,就会将该文件的拥有者和所属组改成 nobody

    4、想让所有人在此目录下创建文件,需要在服务器端配置权限的时候加上 all_squash

     

    11,更改用户企业案例(nfs优化)

    1.vi /etc/exports            /data1 192.168.1.1/24(rw,sync,all_squash,anonuid=888,anongid=888) 服务端

    2.useradd -u 888 zuma -s /sbin/nologin -M   创建用户,不需要家目录 不需要登陆

    3.创建zuma(mkdir /data1) ,授权zuma(chown -R  zuma.zuma /data1)  

    4.挂载 mount -t nfs 192.168.1.10:/data1 /opt

    5.usermod -s /bin/bash zuma 更改账户权限能够登陆系统

    12.实时同步(nfs+rsync+inotify)

    #!/bin/bash
    inotify=/usr/local/inotify-tools/bin/inotifywait
    $inotify -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e delete,create,close_write /data

    |while read file
    do
    cd / &&
    rsync -az /data --delete rsync_backup@192.168.1.17::backup
    --password-file=/etc/rsync.password
    done

                                https://www.cnblogs.com/hackerer/p/5243639.html 参考

  • 相关阅读:
    游戏开发设计模式之子类沙盒模式(unity3d 示例实现)
    Unity3d 屏幕空间人体皮肤知觉渲染&次表面散射Screen-Space Perceptual Rendering & Subsurface Scattering of Human Skin
    Unity5 Screen-Space Subsurface Scattering屏幕空间次表面散射SSSSS
    游戏开发Camera之Cinematic Camera-深度
    这次GDC China 2015的总结与关卡设计教程的梳理
    游戏开发设计模式之状态模式 & 有限状态机 & c#委托事件(unity3d 示例实现)
    游戏开发设计模式之原型模式 & unity3d JSON的使用(unity3d 示例实现)
    MyBatis结果集一对多映射
    Builder模式实例 MyBatis的ResultMapping和ResultMap
    MyBatis PropertyTokenizer
  • 原文地址:https://www.cnblogs.com/qiulovelinux/p/10401366.html
Copyright © 2011-2022 走看看