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为Remote Procedure Call的简写。
  • NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致
  • 例如: 一个站点,上面传输了很多图片,用户访问一个图片时,需要从A机器调用,但A机器负载高,所以就弄多两台B机器C机器同时提供服务;正常的话,需要到A机器上才能拿到数据,但是B机器和C机器做了负载均衡,分担了相同的服务器,那么用户也有可能到B机器或者C机器上;那么用户请求到B机器上的时候,如何才能获取到A机器上的数据呢;要么把A机器的数据传输到B机器上,但是这个不能时时更新,(用户上传的数据是存放在A机器上,但用户请求的时候数据是请求到B机器上)这样就会导致用户请求获取的数据访问不到;那么NFS服务就可以解决这个问题,将A机器的数据共享到B机器、C机器。有NFS服务以后,上传到A机器上的数据,B机器或C机器上就能马上看到和调用
  • NFS原理图: 服务端需要启动一个NFS服务,服务端要想给客户端提供服务,需要借助RPC协议,RPC协议是由rpcbind服务实现;在centos 5或者之前的版本叫portmap服务;之后的版本叫rpcbind服务;NFS服务默认不会监听任何端口;最终实现NFS服务,需要借助rpcbind服务产生的RPC协议,RPC协议默认监听的端口是111; 整个流程为:服务端的NFS服务监听一个端口通过RPC协议监听的端口,告诉客户端RPC协议,然后客户端通过本机的RPC端口回传数据信息到服务端NFS监听的端口,最终实现通信

14.2 NFS服务端安装配置

  • 步骤如下
  1. yum install -y nfs-utils rpcbind
  2. vim /etc/exports //加入如下内容
  3. /home/nfstestdir 192.168.133.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
  4. 保存配置文件后,执行如下准备操作
  5. mkdir /home/nfstestdir
  6. chmod 777 /home/nfstestdir
  7. systemctl start rpcbind
  8. systemctl start nfs
  9. systemctl enable rpcbind
  10. systemctl enable nfs
  • 首先要准备俩台机器,一台服务端,一台客户端
  • 在客户端 192.168.202.132 安装 nfs-utils yum install -y nfs-utils
  • 在服务端 192.168.202.131 上安装 nfs-utils ,rpcbind yum install -y nfs-utils rpcbind
  • 首先服务端上安装nfs-utils ,rpcbind,客户端安装 nfs-utils
```
[[email protected] ~]# yum install -y nfs-utils rpcbind
已加载插件:fastestmirror

已安装:
  nfs-utils.x86_64 1:1.3.0-0.48.el7_4                                         rpcbind.x86_64 0:0.2.0-42.el7                                        

作为依赖被安装:
  gssproxy.x86_64 0:0.7.0-4.el7      keyutils.x86_64 0:1.5.8-3.el7       libbasicobjects.x86_64 0:0.1.1-27.el7  libcollection.x86_64 0:0.6.2-27.el7
  libevent.x86_64 0:2.0.21-4.el7     libini_config.x86_64 0:1.3.0-27.el7 libnfsidmap.x86_64 0:0.25-17.el7       libpath_utils.x86_64 0:0.2.1-27.el7
  libref_array.x86_64 0:0.1.5-27.el7 libtirpc.x86_64 0:0.2.4-0.10.el7    libverto-libevent.x86_64 0:0.2.5-4.el7 quota.x86_64 1:4.01-14.el7         
  quota-nls.noarch 1:4.01-14.el7     tcp_wrappers.x86_64 0:7.6-77.el7   

完毕!
[[email protected] ~]# 

刚刚改了下主机名 hostname
[[email protected] ~]# yum install -y nfs-utils rpcbind
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.btte.net
 * epel: ftp.riken.jp
 * extras: mirrors.163.com
 * updates: mirrors.163.com
软件包 1:nfs-utils-1.3.0-0.48.el7_4.x86_64 已安装并且是最新版本
软件包 rpcbind-0.2.0-42.el7.x86_64 已安装并且是最新版本
无须任何处理
[[email protected] ~]# 

```
- 客户端安装
```
[[email protected] ~]# yum install -y nfs-utils
已安装:
  nfs-utils.x86_64 1:1.3.0-0.48.el7_4                                                                                       

作为依赖被安装:
  gssproxy.x86_64 0:0.7.0-4.el7          keyutils.x86_64 0:1.5.8-3.el7             libbasicobjects.x86_64 0:0.1.1-27.el7   
  libcollection.x86_64 0:0.6.2-27.el7    libevent.x86_64 0:2.0.21-4.el7            libini_config.x86_64 0:1.3.0-27.el7     
  libnfsidmap.x86_64 0:0.25-17.el7       libpath_utils.x86_64 0:0.2.1-27.el7       libref_array.x86_64 0:0.1.5-27.el7      
  libtirpc.x86_64 0:0.2.4-0.10.el7       libverto-libevent.x86_64 0:0.2.5-4.el7    quota.x86_64 1:4.01-14.el7              
  quota-nls.noarch 1:4.01-14.el7         rpcbind.x86_64 0:0.2.0-42.el7             tcp_wrappers.x86_64 0:7.6-77.el7        

完毕!
[[email protected] ~]# 
```
- 安装完了之后在服务端 编辑 vim /etc/exports
- 创建一个/home/nfstestdir 目录 把它的权限改为777
```
[[email protected] ~]# vim /etc/exports

/home/nfstestdir 192.168.202.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
~                                                                                                                           
                          
                                                                                                                          
:wq 

[[email protected] ~]# vim /etc/exports
[[email protected] ~]# mkdir /home/nfstestdir
[[email protected] ~]# chmod 777 /home/nfstestdir
[[email protected] ~]# 

```
- 在启动rpcbind之前 来看下 现在启动的服务
- 发现rpnbind安装完之后就自动帮你起来
```
[[email protected] ~]# 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      1/systemd           
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      954/nginx: master p 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      953/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1774/master         
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      954/nginx: master p 
tcp6       0      0 :::3306                 :::*                    LISTEN      1480/mysqld         
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::22                   :::*                    LISTEN      953/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1774/master         
[[email protected] ~]# 
```
- 看看客户端的开启的服务
```
[[email protected] ~]# 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      1/systemd           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      832/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1385/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      1161/mysqld         
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::22                   :::*                    LISTEN      832/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1385/master         
[[email protected] ~]# 

[[email protected] ~]# ps aux |grep rpc
rpc        2426  0.0  0.1  64964  1052 ?        Ss   22:16   0:00 /sbin/rpcbind -w
root       2547  0.0  0.0 112680   980 pts/0    S+   22:29   0:00 grep --color=auto rpc
[[email protected] ~]# 

```
- 既然已经启动了rpcbind 就开始启动nfs
- 实际上在启动nfs的时候 它会自动帮你启动rpc
```
[[email protected] ~]# systemctl start nfs
[[email protected] ~]# ps aux | grep nfs
root       2457  0.0  0.0      0     0 ?        S<   22:31   0:00 [nfsd4_callbacks]
root       2463  0.0  0.0      0     0 ?        S    22:31   0:00 [nfsd]
root       2464  0.0  0.0      0     0 ?        S    22:31   0:00 [nfsd]
root       2465  0.0  0.0      0     0 ?        S    22:31   0:00 [nfsd]
root       2466  0.0  0.0      0     0 ?        S    22:31   0:00 [nfsd]
root       2467  0.0  0.0      0     0 ?        S    22:31   0:00 [nfsd]
root       2468  0.0  0.0      0     0 ?        S    22:31   0:00 [nfsd]
root       2469  0.0  0.0      0     0 ?        S    22:31   0:00 [nfsd]
root       2470  0.0  0.0      0     0 ?        S    22:31   0:00 [nfsd]
root       2474  0.0  0.0 112680   980 pts/0    R+   22:31   0:00 grep --color=auto nfs
[[email protected] ~]# 
[[email protected] ~]# ps aux | grep rpc
root        376  0.0  0.0      0     0 ?        S<   22:02   0:00 [rpciod]
rpc        2431  0.0  0.1  64964  1432 ?        Ss   22:30   0:00 /sbin/rpcbind -w
rpcuser    2445  0.0  0.1  42380  1752 ?        Ss   22:31   0:00 /usr/sbin/rpc.statd
root       2446  0.0  0.0  19324   652 ?        Ss   22:31   0:00 /usr/sbin/rpc.idmapd
root       2447  0.0  0.0  42564   948 ?        Ss   22:31   0:00 /usr/sbin/rpc.mountd
root       2476  0.0  0.0 112680   980 pts/0    R+   22:31   0:00 grep --color=auto rpc
[[email protected] ~]# 

```
- 如果想要开机就启动,还需要执行这个命令systemctl enable nfs  systemctl enable rpcbind
```
[[email protected] ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[[email protected] ~]# 

[[email protected] ~]# cat /etc/exports
/home/nfstestdir 192.168.202.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
[[email protected] ~]# 

```

14.3 NFS配置选项

  • rw 读写
  • ro 只读
  • sync 同步模式,内存数据实时写入磁盘
  • async 非同步模式
  • no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大
  • root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户
  • all_squash 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户
  • anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid
  • 客户端挂载
  • yum install -y nfs-utils
  • showmount -e 192.168.133.130 //该ip为NFS服务端ip
  • mount -t nfs 192.168.133.130:/home/nfstestdir /mnt
  • df -h
  • touch /mnt/aminglinux.txt
  • ls -l /mnt/aminglinux.txt //可以看到文件的属主和属组都为1000
  • 先去客户端,shwomount -e 192.168.202.131 该ip为NFS服务端ip
```
[[email protected] ~]# show
showconsolefont  showkey          showmount        
[[email protected] ~]# showmount -e 192.168.202.131
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
[[email protected] ~]# 
```
- 报错了,看下防火墙是否开启,报错找不到指定的主机
之前已经确认过了111端口已经被监听,但是还是访问不了;那就可能是防火墙导致
关闭防火墙,
-  先去服务端把防火墙关掉,还有selinux
```
[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# setenforce 0
[[email protected] ~]# getenforce
Permissive
[[email protected] ~]# 
```
-  在把客户端防火墙,selinux 关掉
-  因为NFS服务比较特殊,虽然rpc可以通信,就算iptables把111端口放行但NFS也不一定能正常通信;因为他们用了一个不固定的端口
```
[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# getenforce
Enforcing
[[email protected] ~]# setenforce 0
[[email protected] ~]# getenforce
Permissive
[[email protected] ~]# showmount -e 192.168.202.131
Export list for 192.168.202.131:
/home/nfstestdir 192.168.202.0/24
[[email protected] ~]# 
```
- 现在就可以去挂载了
```
[[email protected] ~]# mount -t nfs 192.168.202.131:/home/nfstestdir /mnt/
[[email protected] ~]# df -h
文件系统                          容量  已用  可用 已用% 挂载点
/dev/sda3                          28G  4.2G   24G   15% /
devtmpfs                          479M     0  479M    0% /dev
tmpfs                             489M     0  489M    0% /dev/shm
tmpfs                             489M  6.7M  482M    2% /run
tmpfs                             489M     0  489M    0% /sys/fs/cgroup
/dev/sda1                         197M  109M   88M   56% /boot
tmpfs                              98M     0   98M    0% /run/user/0
192.168.202.131:/home/nfstestdir   28G  4.4G   24G   16% /mnt
[[email protected] ~]# 
```
- 这就是远程服务端nfs共享的目录
```
[[email protected] ~]# cd /mnt/
[[email protected] mnt]# ls
[[email protected] mnt]# touch aminglinux.111
[[email protected] mnt]# ls -l
总用量 0
-rw-r--r--. 1 mysql mysql 0 10月 31 23:16 aminglinux.111
[[email protected] mnt]# 
```
  • 先来看下服务端这边有没有更新
[[email protected] ~]# ls -l /home/nfstestdir/总用量 0
-rw-r--r--. 1 mysql mysql 0 10月 31 23:16 aminglinux.111
[[email protected] ~]#
  • 原因是配置 /etc/export 文件时,配置了anonuid=1000,anongid=1000 客户端显示 1000 用户 是因为客户端机器上并没有1000权限的用户 同样,服务端显示mysql,是因为服务端上的机器mysql 就是1000权限的用户
时间: 2024-10-18 10:45:22

14.1 NFS介绍 14.2 NFS服务端安装配置 14.3 NFS配置选项的相关文章

14.1-14.3 NFS介绍,服务端安装,客户端挂载NFS

14.1 NFS介绍 NFS是Network File System的缩写 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本 NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写. NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致 NFS架构 应用场景: A B C为别是三台

五十四、NFS介绍、NFS服务端安装配置、NFS配置选项

一.NFS介绍 NFS是Network File System的缩写. NFS最早由sun公司开发,分2,3,4三个版本,2和3由sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本. NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写. NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别挂载A共享的数据目录,从而B和C访问到的数据和A上的一致. NFS原理: RPC服务是由rpcbind所实

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

14.1 NFS介绍 1. NFS是Network File System的缩写 2. NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本 3. NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写. 4. NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致 NFS原理图: 14

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协议,RPC为Remote Procedure Call的简写. ·NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致 (A/B/C三台主机数据一致,仅仅将

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

笔记内容: 14.1 NFS介绍 14.2 NFS服务端安装配置 14.3 NFS配置选项 笔记日期:2017-11-01 14.1 NFS介绍 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样. NFS可以把A.B.C机器之间的文件数据进行共享,例如用户上传了一个文件到A机器上,用户

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

NFS介绍 NFS是Network File System的缩写,NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本.NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写.NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致,NFS服务需要借助RPC服务去通信. NFS服务端安装配

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

一.NFS介绍NFS是Network File System的缩写NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写.NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致 14.2 NFS服务端安装配置yum install -y

十四周一课 NFS介绍、NFS服务端安装配置、NFS配置选项

NFS介绍 NFS是Network File System的缩写 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本 NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写. NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致 NFS服务端安装配置 首先在服务端安装两个包yum i

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

一.NFS介绍 NFS是Network File System的缩写 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本 NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写. NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致 NFS原理图 二.NFS服务端安装配置 yum i