文档章节

NFS介绍 NFS服务端安装配置 NFS配置选项

lyy549745
 lyy549745
发布于 06/21 22:08
字数 3057
阅读 25
收藏 0
点赞 0
评论 0

14.1 NFS介绍
14.2 NFS服务端安装配置
14.3 NFS配置选项

NFS介绍

  • NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步

  • NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,目前最新为4.1版本——>4.1版本是2010年出来还没更新过

  • NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写,意思为 远程过程调用

    • 例子:
      • 服务端和客户端通信,A机器和B机器之间不能直接通信,需要借助RPC协议来实现
  • NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致

  • NFS架构

    输入图片说明

    • 例子:
      • 跑了一个网站,上面传输了很多图片,用户访问一个图片时,需要从A机器上去请求,但A机器负载高,为了分担负载,就多弄了两台机器,B机器C机器同时提供服务;正常的话,需要到A机器上才能拿到数据,但是B机器和C机器做了负载均衡,分担了相同的服务器,那么用户也有可能到B机器或者C机器上;那么用户请求到B机器上的时候,如何才能获取到A机器上的数据呢;要么把A机器的数据传输到B机器上,同时传输到C机器上,但是这个不能时时更新,(用户上传的数据是存放在A机器上,但用户请求的时候数据是请求到B机器上)这样A上的数据还没到B上面去,就会导致用户请求获取的数据访问不到,访问为空,为404;那么NFS服务就可以解决这个问题,将A机器的数据共享到B机器、C机器,通过NFS来实现。有NFS服务以后,上传到A机器上的数据,B机器或C机器上就能马上看到和调用
    • 总结,NFS就是实时同步

NFS原理图

  • 服务端需要启动一个NFS服务,服务端要想给客户端提供服务,需要借助RPC协议,RPC协议是由rpcbind服务所实现的;在centos 5或者之前的版本叫portmap服务,centos6及之后的版本叫rpcbind服务,这两个都是一个服务,最终实现了RPC协议的通信,NFS服务默认不会监听任何端口(启动服务,但不会监听端口),最终监听端口,实现RPC通信的过程是由rpcbind服务产生的RPC协议实现的,RPC协议 默认监听 的 端口是111 端口;
  • 整个流程为:服务端的NFS服务监听一个端口通过RPC协议监听的端口,再去告诉客户端RPC协议,然后NFS客户端通过本机的RPC端口回传数据信息到服务端NFS监听的端口,最终实现通信

输入图片说明

  • NFS服务需要借助RPC协议实现通信

NFS服务端安装配置目录概要

  • yum install -y nfs-utils rpcbind
  • vim /etc/exports //加入如下内容
/home/nfstestdir 192.168.180.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
  • 保存配置文件后,执行如下准备操作
  • mkdir /home/nfstestdir
  • chmod 777 /home/nfstestdir
  • systemctl start rpcbind
  • systemctl start nfs
  • systemctl enable rpcbind
  • systemctl enable nfs

NFS服务端安装配置

  1. 首先准备两台机器,我这里准备两台虚拟机,A机器IP分别为192.168.180.134,B机器IP为192.168.180.135
  2. 将A机器作为服务端,并安装两个包,分别为 nfs-utils 和 rpcbind
  • yum install -y nfs-utils rpcbind
[root@yong-01 ~]# yum install -y nfs-utils rpcbind
  • 将B机器作为客户端,安装 nfs-utils 包
  • 每次刚开机运行yum的时候都会很慢,因为需要重新生成一个缓存文件
  • 有时yum安装的时候很慢,我们可以先禁掉,进入到/etc/yum.repos.d/目录下,将目录下的epel.repo文件改个名字,重新安装即可
  • yum install -y nfs-utils
[root@yong-02 ~]# yum install -y nfs-utils 
  • 在安装完成后,需要去A机器中 /etc/exports 编辑配置文件
  • vim /etc/exports //加入如下内容
[root@yong-01 ~]# vim /etc/exports

/home/nfstestdir     192.168.180.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
  1. 下面就可以启动服务了,启动服务前需要先创建目录,并设置权限
  2. 在A机器上创建分享的目录 并设置成777的权限,这里设置777权限是为了方便接下里的实验
[root@yong-01 ~]# mkdir /home/nfstestdir
[root@yong-01 ~]# chmod 777 /home/nfstestdir/
  • 启动 rpcbind ,再启动前查看A机器上监听的端口,就会看到启动了systemd,这是centos7系统的一个特性——>111端口是rpcbind服务监听的
  • 用ps可以查看服务已经启动,因为有这个服务,所以监听了111端口
[root@yong-01 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      3428/rpcbind        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1110/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1467/master         
tcp6       0      0 :::111                  :::*                    LISTEN      3428/rpcbind        
tcp6       0      0 :::22                   :::*                    LISTEN      1110/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1467/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      1423/mysqld         
[root@yong-01 ~]# ps aux |grep rpc
rpc       3428  0.0  0.0  64956  1044 ?        Ss   22:42   0:00 /sbin/rpcbind -w
root      3431  0.0  0.0 112676   980 pts/0    R+   22:43   0:00 grep --color=auto rpc
  • 再到B机器上查看下端口,会看到也启动了rpcbind
[root@yong-02 mysql]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      2755/rpcbind        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      996/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1215/master         
tcp6       0      0 :::111                  :::*                    LISTEN      2755/rpcbind        
tcp6       0      0 :::22                   :::*                    LISTEN      996/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1215/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      2360/mysqld         
[root@yong-02 mysql]# ps aux |grep rpc
rpc       2755  0.0  0.0  64956  1044 ?        Ss   22:42   0:00 /sbin/rpcbind -w
root      2789  0.0  0.0 112676   980 pts/0    R+   22:45   0:00 grep --color=auto rpc
  • 在A机器启动了rpcbind,下面就可以启动nfs服务,在使用ps查看
  • systemctl start nfs
[root@yong-01 ~]# systemctl start nfs
[root@yong-01 ~]# ps aux |grep nfs
root      3479  0.0  0.0      0     0 ?        S<   22:46   0:00 [nfsd4_callbacks]
root      3485  0.0  0.0      0     0 ?        S    22:46   0:00 [nfsd]
root      3486  0.0  0.0      0     0 ?        S    22:46   0:00 [nfsd]
root      3487  0.0  0.0      0     0 ?        S    22:46   0:00 [nfsd]
root      3488  0.0  0.0      0     0 ?        S    22:46   0:00 [nfsd]
root      3489  0.0  0.0      0     0 ?        S    22:46   0:00 [nfsd]
root      3490  0.0  0.0      0     0 ?        S    22:46   0:00 [nfsd]
root      3491  0.0  0.0      0     0 ?        S    22:46   0:00 [nfsd]
root      3492  0.0  0.0      0     0 ?        S    22:46   0:00 [nfsd]
root      3496  0.0  0.0 112676   976 pts/0    R+   22:46   0:00 grep --color=auto nfs
  • 同时也可以在A机器上ps aux |grep rpc查询,在启动nfs服务的时候,它会自动帮你启动rpc相关的一些服务
[root@yong-01 ~]# ps aux |grep rpc
rpc       3428  0.0  0.0  64956  1424 ?        Ss   22:42   0:00 /sbin/rpcbind -w
rpcuser   3449  0.0  0.0  42376  1756 ?        Ss   22:46   0:00 /usr/sbin/rpc.statd
root      3451  0.0  0.0      0     0 ?        S<   22:46   0:00 [rpciod]
root      3468  0.0  0.0  42564   948 ?        Ss   22:46   0:00 /usr/sbin/rpc.mountd
root      3469  0.0  0.0  43816   544 ?        Ss   22:46   0:00 /usr/sbin/rpc.idmapd
root      3499  0.0  0.0 112676   980 pts/0    R+   22:47   0:00 grep --color=auto rpc
  • 而在客户端B机器上是没有的这些服务的
  • 如果想让nfs开机启动,还需要执行systemctl enable nfs 命令,在服务端A机器上调用
  • systemctl enable nfs 开机启动nfs
  • systemctl disable nfs 关闭开机启动
[root@yong-01 ~]# systemctl enable nfs 
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

NFS配置选项

  • rw 读写
  • ro 只读
  • sync 同步模式,内存数据实时写入磁盘,相应的就会降低磁盘效率
  • async 非同步模式,它会每隔一段时间才会将数据刷新到磁盘
    • 优势:能够保证磁盘的效率
    • 劣势:万一断电,就会有可能丢失一部门数据
  • no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大
    • NFS,要想在客户端上去使用服务端上共享的目录,需要去把它挂载到客户端上的一个挂载点,那就跟本地上的目录是一样的,在操作本地的目录时候,肯定会有一些权限设置,如果加上no_root_squash,这样root用户去共享目录下读写文件的时候,就不会受到限制(就相当于root用户在本地上读写)
  • root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户
  • all_squash 客户端上所有用户(包括root用户)在使用NFS共享目录时都被限定为一个普通用户
  • anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid

客户端上挂载

  1. 首先在客户端B机器上安装了rpcbind,它是由nfs-utils 这个包自动安装的
  2. 在B机器上安装完成后不需要启动任何服务
  3. 在B机器上执行 showmount -e 命令
  • showmount -e 192.168.180.134 //查看在NFS服务端是否有权限
    • 该ip为NFS服务端ip
[root@yong-02 mysql]# showmount -e 192.168.180.134
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
  • 这时候会看到报错了,RPC: Port mapper failure说明网络不通,无法与192.168.180.134端口通信
  • 不能通信的两种情况
    • 要么是对方没有开启rpcbind的服务,没有监听111端口
    • 要么是防火墙导致的原因
  1. 因为之前在服务端已经开启了rpcbind服务,那这时只能说明是防火墙导致的,所以要想让NFS实现正常的通信,还需要把防火墙关闭,因为NFS服务比较特殊,虽然rpc可以通信,就算iptables把111端口放行但NFS也不一定能正常通信,因为它们使用了一个不固定的端口
  2. 这时先把A机器服务端和B机器客户端,防火墙关闭,命令systemctl stop firewalld  setenforce 0
  3. 这时再去B机器客户端来showmount -e 192.168.180.134 ,这时会看到可以能show到远程服务端192.168.180.134这台机器,它共享的目录是/home/nfstestdir
[root@yong-02 ~]# showmount -e 192.168.180.134
Export list for 192.168.180.134:
/home/nfstestdir 192.168.180.0/24
  • 这时候在B机器客户端上来挂载了,然后查看——>挂载的时间可能有点慢
[root@yong-02 ~]# mount -t nfs 192.168.180.134:/home/nfstestdir /mnt/
[root@yong-02 ~]# df -h
文件系统                          容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root            18G  5.6G   13G   32% /
devtmpfs                          905M     0  905M    0% /dev
tmpfs                             916M     0  916M    0% /dev/shm
tmpfs                             916M  8.6M  908M    1% /run
tmpfs                             916M     0  916M    0% /sys/fs/cgroup
/dev/sda1                         197M  121M   77M   62% /boot
tmpfs                             184M     0  184M    0% /run/user/0
192.168.180.134:/home/nfstestdir   18G  8.1G  9.8G   46% /mnt
  1. 这个就是远程NFS服务端共享的目录
  2. 这时到B机器客户端共享的目录下创建文件
[root@yong-02 ~]# cd /mnt/
[root@yong-02 mnt]# ls 
[root@yong-02 mnt]# touch yueyong.txt
[root@yong-02 mnt]# ll
总用量 0
-rw-r--r-- 1 user1 user1 0 6月  21 23:15 yueyong.txt
[root@yong-02 mnt]# id user1
uid=1000(user1) gid=1000(user1) 组=1000(user1)
  • 到A机器的服务端查看,可以看到文件的属主和属组都为1000
[root@yong-01 ~]# ll /home/nfstestdir/
总用量 0
-rw-r--r-- 1 yyl yyl 0 6月  21 23:15 yueyong.txt
[root@yong-01 ~]# id yyl
uid=1000(yyl) gid=1000(yyl) 组=1000(yyl)
  • 原因是配置 /etc/export 文件时,配置了anonuid=1000,anongid=1000
  • 客户端显示 user 用户 是因为客户端机器user就是1000权限的用户
  • 同样,服务端显示yyl,是因为服务端上的机器yyl 就是1000权限的用户

总结

  • 在/etc/exports文件中的/home/nfstestdir 192.168.180.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000) ,其中ip与(rw之间不能有空格, 否则客户端挂载的目录会变成只读..

© 著作权归作者所有

共有 人打赏支持
lyy549745
粉丝 4
博文 84
码字总数 199933
作品 0
深圳
2018-3-26 14周1次课 NFS服务端安装、配置

14.1 NFS介绍 ·NFS是Network File System的缩写 ·NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本 ·NFS数据传输基于RPC协议...

alexis7gunner
03/25
0
0
NFS服务配置

服务端配置NFS CentOS上使用NFS服务,需要安装两个包(nfs-utils和rpcbind), 不过当使用yum安装nfs-utils时会把rpcbind一起安装上: [root@localhost ~]# yum install -y nfs-utils 在之前的C...

zhiqiangw
2016/11/10
1
0
NFS文件系统、服务器与客户端安装、exportfs命令

NFS介绍 NFS是Network File system的缩写,也就是网络文件系统; 基于RPC协议进行传输; 服务端安装 客户端安装 NFS挂载选项 cat /etc/exports rw:读写 ro:只读 sync:同步模式,内存数据实...

若白衣
03/27
0
0
14.1 NFS介绍 14.2 NFS服务端安装配置 14.3 NFS配置选项

14.1 NFS介绍 NFS是Network File System的缩写 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本 NFS数据传输基于RPC协议,RPC...

ch71smas
2017/11/01
0
0
2018-3-26 Linux学习笔记

14.1 NFS介绍 NFS是Network File System的缩写,它基于网络层面的,借助网络实现数据同步. NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为...

XiaoluHuang
06/28
0
0
14.1 NFS介绍14.2 NFS服务端安装配置14.3 NFS配置选项

14.1 NFS介绍 centos6之前的版本叫portmap 之后的版本叫rpcbind 14.2 NFS服务端安装配置 首先要准备2台机器,一台是服务端ip:192.168.133.130,一台是客户端ip:192.168.133.131 在服务端安装...

cwliang
06/29
0
0
CentOS 6.5 NFS配置详细教程

1.1 NFS介绍 NFS是Network File System的缩写,它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件或目录 1.1.2 NFS挂载结构图 1.1.3 NFS工作原理简图 NFS服务端要先启动rpcbind(...

o凤舞九天o
06/27
0
0
linux复盘:NFS共享存储

用于网络上的共享存储,ABC三台机器,需要访问同一个目录并且目录中都是图片,A共享数据出来,B和C分别挂载A共享的数据目录,从而B和C访问到的数据和A上的一致,NFS服务是通过RPC协议实现通信...

历经35天的选择
01/30
0
0
一步步搭建NFS服务(2)------安装和配置

一、需要安装的软件包 1)rpcbind :RPC的主程序,这个软件包在客户端和服务器端都需要安装 2)nfs-utils :NFS的主程序,提供nfsd和mountd等相关服务,客户端和服务端都要安装 二、开始行动。...

Becaning
2014/03/08
0
0
NFS介绍与基本安装

1NFS介绍 > NFS是Network File System的缩写(分布式文件系统协议),==它最大的功能就是可以透过网络,让不同的机器、不同的操作系统、可以彼此分享个别的档案 (share files)== NFS最早由Sun公...

我不是瘦子
2017/12/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
2
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
1
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
161
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部