NFS存储服务概念介绍
  • NFS是Network File System的缩写,网络文件共享系统

  • 主要功能是通过网络(一般是局域网)让不同的主机系统主机系统之间可以共享文件或目录

  • 存储服务的种类

    • FTP(文件传输协议):权限麻烦
    • samba:windows——>linux之间数据传输,linux部署samba
    • NFS:linux——>linux之间数据传输
  • 分布式存储解决存储服务器压力

    • Moosefs(mfs),比较落伍,初学者学习比较简单
    • GlusterFS
    • FastDFS,企业应用较多
NFS存储服务作用
  • 实现数据的共享存储
  • 便于数据操作管理
  • 节省购买服务器磁盘开销
NFS服务部署流程
  • RPC:远程过程调用程序(中介)

    • 因为NFS会有多个随机端口
    • RPC端口固定111,用来管理nfs端口来解决客户端的请求,不然客户端不知道访问哪个端口
  • NFS服务端(房源)

    • 下载安装软件

      #查询是否安装
      rpm -qa | grep "nfs|rpc"#安装
      yum install -y nfs-utils rpcbind安装好nfs会自动创建好nfsnobody用户
      
    • 编写配置文件

      vim /etc/exports
      
    • 配置格式:01 02(03)

      • 01:设置数据存储的目录
      • 02:设置网络一个白名单
        • 允许那些主机连接到存储服务器进行数据存储
      • 03:配置存储目录的权限信息、存储目录的一些功能
    • 配置内容

      /data 172.16.1.0/24(rw,sync)
      
    • 服务环境配置

      mkdir /data
      chown -R nfsnobody.nfsnobody /data
      
    • 启动服务程序(先启动rpc、在启动nfs)

      #rpc
      systemctl start rpcbind.service
      systemctl enable rpcbind.service#检查
      netstat -nptl | grep rpc#nfs
      systemctl start nfs
      systemctl enable nfsnetstat -nptl | grep nfsnfs启动后系统看不到端口号,交给rpc处理了
      
  • 客户端(租客)

    • 安装nfs,让系统挂载远程时可以识别到nfs文件系统

      yum install -y nfs-utils
      
    • 实现远程挂载共享目录

      mount -t nfs 172.16.1.31:/data /mnt-t:type     挂载存储类型#检查
      df -h | grep mnt#创建数据
      touch 1.txt#然后服务端和客户端都有这个文件
      #别的服务器在挂载,也会看到这个创建的文件
      
NFS工作原理
  • 服务端

    • 启动rpc服务,开启111端口
    • 启动nfs服务
    • 实现nfs服务进程和端口号注册信息

    PS:检查nfs服务进程与端口注册信息

    rpcinfo -p ip地址(本机:localhost)
    
  • 客户端

    • 建立TCP网络链接
    • 客户端执行挂载命令,进行远程挂载
    • 可以数据远程传输存储
查看相关进程
ps -ef | grep -E "nfs|rpc"#检查数据存储一致性
rpc statd#磁盘配额进程
rpc.rquotad#权限管理验证等(NFS mount daemon)
rpc.mountd#NFS主进程
nfsd#name mapping daemon 用户压缩/用户映射(记录)
rpc.idmapd
exports服务端详细配置说明
  • 实现多个网段主机可以进行挂载

    #第一种方法
    /data 172.1.1.0/24(rw,sync) 10.0.0.0/24(rw,sync)#第二种方法
    /data 172.1.1.0/24(rw,sync)
    /data 10.0.0.0/24(rw,sync)
    
  • 共享目录的权限和哪些因素有关

    • 和存储目录的本身权限有关(要是nfsnobody.nfsnobody)
    • 配置文件里面的权限(要是rw)
      • rw:读写
      • ro:只读
      • async:异步方式存储数据
        • 放入内存中

          • 优点:传输数据快
          • 缺点:数据传输不可靠,易丢失数据
      • sync:同步方式存储数据
        • 放入硬盘中

          • 优点:传递数据可靠,不易丢失数据
          • 缺点:数据传输慢
      • no_root_squash:不要将root用户身份进行转换,客户端是root,创建的文件身份也是root
      • root_squash:将root 用户身份进行转换为nfsnobody
      • all_squash:将普通用户身份都进行转换为nfsnobody
      • no_all_squash:不将普通用户身份进行转换,但需要将目录权限进行修改,其他用户加上w权限(有rw)
    (rw,sync,all_squash)
    
企业中如何配置nfs各种squash参数
  • 保证网站存储服务器用户数据安全性

    • no_all_squash是必须要配置的(不可以配置all_squash)

      • 否则任何一个用户都可以删除存储服务器里面的数据

      • 但同时也不能添加数据

    • root_squash也需要配置,默认将root用户转为nfsnobody。但是存储目录权限已经改为www,这样就算客户端是root用户,要存删数据也不可以。www是虚拟用户不可以登录

      #只想让www用户可以添加数据存储服务器和客户端都要有www用户,同时他们的uid要是一样的#查看客户端www的uid
      id www
      uid:1002#查看服务端uid是否存在
      grep 1002 /etc/passwd
      grep 1002 /etc/group#删除存在uid为1002的用户
      userdel -r rsync#添加www用户并且uid为1002
      useradd -u 1002 -M -s /sbin/nologin
      id wwwchown -R www.www /datawww用户就可以存储数据了
      
  • 以上配置就是默认配置

    • 如何查看默认配置

      #记录nfs的默认配置,不是配置文件。修改了没有任何影响
      cat /var/lib/nfs/etab
      
  • 如何让客户端 root用户可以操作管理www用户管理的data目录

    grep anonuid /var/lib/nfs/etab
    anonuid=65534,anongid=65534grep 65534 /etc/passwd
    nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologinanonuid可以指定的映射用户#将之前默认修改客户端的用户nfsnobody为www
    vim /etx/exports
    /data 172.16.1.0/24(rw,sync,anonuid=1002,anongid=1002)systemctl restart nfs
    
企业中如何编辑nfs配置文件
  • 通用方法

    /data 172.16.1.0/24(rw,sync)默认是 no_all_squash root_squash
    
  • 特殊情况(部分人员不能操作存储目录,可以看目录中的数据)

    /data 10.0.0.0/24(ro,sync)
    
  • 修改默认的匿名用户

    /data 10.0.0.0/24(ro,sync,anonuid=xxx,anongid=xxx)
    
nfs服务问题:nfs服务重启挂载后创建数据比较慢
  • 服务重启方式不正确
  • 服务重启的两种方式:
    • systemctl restart nfs

      • 不管有没有其他的客户端数据传输直接全部断开连接
      • 然后全部重新连接重新传,用户感受不好
    • systemctl reload nfs这个更好一点,平滑重启
      • 有数据连接的有数据传输接着传,等传完了再断开重新连接
      • 没有数据连接的强制断开
如何实现自动挂载
  • 利用rc.local,这个文件要有执行权限

    echo "mount -t nfs 172.16.1.31:/data /mnt" >>/etc/rc.local
    
  • 利用/etc/fstab

    172.16.1.31:/data /mnt nfs defaults 0 0
    

    实现fstab文件自动挂载的特殊服务

    • centos6:根据系统服务启动顺序

      • 按照顺序依次启动(所有服务时间累加)
      • 先加载/etc/fstab,如果是挂载的外网目录。如果网络服务没有开启就不能实现自动挂载
      • autofs服务程序:开机自动启动,服务器启动好后,再重新加载fstab文件
    • centos7:根据系统服务启动顺序
      • 服务并行启动(取决于最慢的服务)
      • 但也先加载/etc/fstab,在加载network服务
      • remote-fs.target服务需要开启,开启后就可以自动挂载
  • 如何看开机已经自启的服务

    ll /etc/systemd/system/multi-user.target.wants
    
客户端mount命令参数-o 后面指定
参数 解释
rw 实现挂载后挂载点目录可读可写
ro 实现挂载后挂载点目录只可读
suid 在共享目录中可以让setuid权限位生效(默认)
chmod u+s 文件,这个文件所有用户身份都可以有全部的权限。
nosuid 在共享目录中可以让setuid权限位不生效,建议设置这个,提高共享目录的安全性
exec 共享目录中的执行文件可以直接执行(默认)
noexec 共享目录中的执行文件不可以直接执行,提高共享目录的安全性
auto 可以实现自动挂载,
172.16.1.31:/data /mnt nfs auto 0 0
mount -a 可以实现fstab批量挂载
noauto 不可以实现自动挂载
nouser 禁止普通用户可以卸载挂载点
user 允许普通用户可以卸载挂载点
客户端如何卸载
  • 强制卸载挂载点

    umount -lf /mntl:不退出挂载点目录也可以进行卸载
    f:强制进行卸载操作
    
总结
  • NFS存储服务器概念
  • NFS存储工作原理
  • NFS存储服务部署
  • NFS服务端详细配置说明
    • 服务端配置参数 xxx_squash
  • NFS客户端详细配置说明
    • 如何实现自动挂载
    • 客户端挂载参数说明 man mount
    • 如何强制卸载共享目录
NFS服务挂载不上排查方法
  • 服务端

    • 检查nfs进程信息是否注册

      rpcinfo -p localhost
      
      • 服务启动顺序不对,没有启动nfs服务
    • 检查有没有可用的存储目录

      showmount -e 172.16.1.41
      
      • 配置文件编写有问题,重启nfs服务
    • 在服务端进行挂载测试

      mount -t nfs localhost:/data /mnt
      
      • 是否能够在存储目录中创建或删除 数据
  • 客户端

    • 检查nfs进程信息是否注册

      rpcinfo -p localhost
      
      • 服务启动顺序不对,没有启动nfs服务
    • 检查有没有可用的存储目录

      showmount -e 172.16.1.41
      
      • 配置文件编写有问题,重启nfs服务

      • 网络是否正常

        ping 172.16.1.41
        talnet 172.16.1.41 111
        
查看rpc启动开启的端口
[root@pert data]# rpcinfo -p | awk 'NR>1{print $4}' | uniq | xargs | sed 's# #,#g'
111,20048,39700,20048,48387,20048,2049,53531,43121

Linux NFS存储服务详解相关推荐

  1. linux开机启动服务详解

    http://blog.163.com/sjt_linux/blog/static/19931031920126295452884/ linux开机启动服务详解(转) 2012-07-29 17:45 ...

  2. Linux开源存储网络详解

    这本<Linux开源网络全栈详解:从DPDK到OpenFlow>是那本<Linux开源存储全栈详解>的姊妹篇,把Linux开源网络相关的项目做了个梳理,对于想了解或参与网络相关 ...

  3. Linux NFS存储服务部署

    什么是NFS 中文意思是网络文件系统,主要功能是通过网络(一般是局域网)让不同主机之间可以共享文件或目录 NFS属于本地文件存储服务 缺点1: 1 2 3 4 5 6 7 windows上无法使用 如 ...

  4. Linux NetworkManager网络服务详解

    一.网络配置文件 Linux 为 配 置 网 络 提 供 了 许 多 工 具 , 其 中 有 图 形 界 面 的 ( 如:NetworkManager).也有伪图形界面(如:system-config ...

  5. Linux服务详解(主要基于RedHat系的及Centos默认服务详解)(综合整理)

    转自:http://blog.csdn.net/jj198981/article/details/7605558 acpid ACPI(全称 Advanced Configuration and Po ...

  6. NFS 服务详解及实现方式

    NFS 服务详解 NFS 介绍 1.NFS 服务 2.NFS 文件系统 3.NFS 工作原理 4.NFS 各个版本的对比 NFS 程序环境 1.环境介绍 2.NFS 服务主要进程 3.配置防火墙(NF ...

  7. linux系统设置服务开机启动3种方法,Linux开机启动程序详解

    linux系统设置服务开机启动 方法1:.利用ntsysv伪图形进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图 方法2:利用命令行chkconfig命令进行设置 简要说明一下ch ...

  8. centos终止linux程序,CentOS启动和停止服务详解

    CAMS 在安装过程中, 1. 添加服务 添加服务的步骤为: (1) 将该服务的脚本文件拷入/etc/rc.d/init.d 文件夹下,例如: service camsd stop 停止 camsd ...

  9. linux网络服务详解,Linux网络服务器配置基础详解 (3)

    Linux网络服务器配置基础详解 (3) Linux网络服务器配置基础详解 (3) 第三步:编辑"inetd.conf"文件(vi /etc/inetd.conf),禁止所有不需要 ...

最新文章

  1. box_sizing
  2. 计算机组成原理——概述
  3. CTFshow 信息收集 web11
  4. 爬虫实现csdn文章一键(批量)更换阅读类型(全部可见、粉丝可见、vip可见)
  5. 2ab对应的c语言表达式是,编译原理 作业标准答案
  6. shell介绍 命令历史 命令补全和别名 通配符 输入输出重定向
  7. 10.1综合强化刷题 Day1 morning
  8. 论EFMS模拟量部分采集电路的修改
  9. Nginx工作原理和优化、漏洞
  10. matlab改进中值滤波,求助中值滤波和自适应中值滤波算法错误修改
  11. 阿蛮歌霸未能成功访问服务器,阿蛮歌霸KTV点歌软件提示“歌库数据库连接不正常”的解决方法...
  12. 用matlab实现“太阳-地球-月亮运行示意图”动画
  13. html中switch的控件,自己实现简单的switch开关插件
  14. 9 * 9 数独求解
  15. oracle热备份全过程,oracle数据库热备份的简单实现过程
  16. Python财务分析
  17. 更改电脑软件默认安装位置
  18. IT十年人生过客-十六-再见雍和宫
  19. uniapp小程序获取手机号、获取用户信息
  20. STM32选型手册 2021

热门文章

  1. 浏览器去除烦人的黑白滤镜
  2. 【干货】淘金币用户体验升级(含直播回放)
  3. 色 彩 RGB 值 对 照 表
  4. android studio 屏幕翻转
  5. 平面设计:创建复古风格的宇航员海报
  6. 微博的大数据挖掘:知著、见微、晓意
  7. Eolink 征文活动- -后端研发需要的API文档工具
  8. Ubuntu 16.04如何安装Cinnamon 3.0
  9. 微信无法连接到服务器的原因
  10. java 序列化理解_对Java Serializable(序列化)的理解和总结(二)