zoukankan      html  css  js  c++  java
  • nfs部署和优化

    nfs——网络文件系统

    1、说明:允许一个系统在网络上与他人共享目录和文件

    2、好处:通过nfs服务,就可以让这个机器访问远程的文件,像访问自己的文件一样,属于cs通信
     
    3、原理说明:假设有A,B,C 三台机器,在A上搭建nfs服务,然后把A上的一个目录(例如mnt)同时共享给B 和 C,接着B和C把A共享的目录放在自己本地上(挂载,类似磁盘挂载)。 这样,在用户看来,A,B,C同时存在一个相同的目录,有着相同的文件,。只要去改动任意一台机器且在该目录下的文件,其他两台机器都会相应同步变化。
      传统不共享的做法,不但浪费磁盘空间,而且也浪费带宽资源。
     
    一、nfs部署
    前期准备工作:
    1、准备2台机器
    (1)服务器端master:192.168.131.110
    安装两个包:(a)nfs-utils
          (b)rpcbind(CentOS6开始叫rpcbind,之前的CentOs 叫portmap包)
    简单说说rpcbind(后面会用到 /etc/init.d/rpcbind start)
    rpc服务,主要是在nfs共享时负责通知客户端、服务端的nfs端口号;简单理解rpc就是一个中介服务。
     
    (2)客户端slave:192.168.131.131
    仅需要安装:   nfs-utils
     
    2、master端
    (1)编辑配置文件 /etc/exports,  把mnt目录共享出去
    格式:  共享目录  允许访问的主机(ip/IP网段)     权限选项(可读ro, 可写rw, sync等)
    写入:  /mnt     192.168.131.131          (rw, sync)
     
    权限选项部分说明:
    sync:同步模式,内存中数据时时写入磁盘
    async:不同步,内存中数据定期写入磁盘
    no_root_squash: root用户对共享目录拥有至高的权限控制,就像是对本机的目录操作一样。(不安全,不建议使用)
    all_squash:不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份(nfsnobody)
    anonuid/anongid:要和root_squash及all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid(前提:主机的/etc/passwd 中存在这个uid和gid)
     
     
    (2)启动rpc服务: /etc/init.d/rpcbind start
    (3)启动nfs服务: /etc/init.d/nfs start
     
    3、slave端
    (1)查看master端共享出来的目录
    showmount -e 192.168.131.110
    (ps:showmount 命令是nfs-utils这个包所带的)
     
    (2)挂载NFS,到opt下
    mount -t nfs  192.168.131.110:/mnt   /opt
     
    df -h 可以查看NFS共享出来的目录mnt
     4、测试
    (1)master查看mnt权限(755)
     

    对slave端来说并不可写(权限不够)

    所以 master 需要授权挂载的目录mnt
     
    (2)master 授权挂载目录mnt
    chmod 777 /mnt/
    (3)slave 端 touch 1.txt  ——》 属主属组为 nfsnobody
     
     
     
     二、nfs优化
    背景:slave 端创建文件时并不想显示nfsnobody
     
    1、slave端查看要映射的user  
    cat  /etc/passwd
    假设我们要映射属主属组号都为500的用户(user111)
     2、master端修改配置文件 /etc/exports
    /mnt     192.168.131.131          (rw, sync, all_squash,anonuid=500,anongid=500)
     
    3、master端重新加载(重启也行,但不建议)
    exportfs -arv 
    参数说明:
    -a:全部挂载或卸载
    -r:重新挂载
    -v:显示共享的目录
     
    4、slave端卸载并重新挂载
    (1)umount -l /opt/    
    -l:即使当前在 opt 目录下,都能够顺利卸载,且解决“device  is busy” 的错误
     
    (2)重新挂载(一定要加上nfsvers=3这个参数)
    mount -t nfs -onolock, nfsvers=3 192.168.131.110:/mnt  /opt
    参数说明:
    -t: 指定挂载类型
    -o: 后跟挂载选项
    nolock: 挂载 nfs 服务时,不加锁
    nfsvers=3:避免权限混乱。指定使用nfsvers 的3版本,不加默认使用nfsvers,
    且会导致slave端创建文件时,属主属组还是nfsnobody)
     
    以上优化是把root都映射为500,如果不对root映射?——看补充
     
     
    三、补充
    (1)master:  vim  /etc/exports
    改成:  no_root_squash
    exportfs -arv
     
    (2)slave端
    umount /opt/
    mount -t nfs -onolock,nfsvers=3 192.168.131.110:/mnt /opt
    cd /opt/ 创建文件,文件所属主和组都为root
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    javaweb消息中间件——rabbitmq入门
    virtual box 桥接模式(bridge adapter)下无法获取ip(determine ip failed)的解决方法
    Apache Kylin本地启动
    git操作
    Java学习总结
    Java中同步的几种实现方式
    hibernate exception nested transactions not supported 解决方法
    vue 中解决移动端使用 js sdk 在ios 上一直报invalid signature 的问题解决
    cookie 的使用
    vue 专门为了解决修改微信标题而生的项目
  • 原文地址:https://www.cnblogs.com/windysai/p/6100561.html
Copyright © 2011-2022 走看看