一、NFS的认识

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本 地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
目前NFS主要有两个版本(NFSv2,NFSv3)两个版本,而NFSv2和NFSv3除了3版本支持更多的新特性以外,最主要的区别应该就是 NFSv2是使用UDP协议进行传输的,所以NFSv2的连接在复杂网络环境下可能没有那么可靠,而NFSv3同时支持UDP和TCP协议。

刚才看了一下,Centos7已经支持NFSv4协议了,这里就不贴NFSv4了,有时间了再去看v4吧。

当client端要挂载NFS共享卷的时候,会发送RPC请求给服务端,而NFS服务端会在用户验证后将一个随机的cookie传送至客户端,以便客户端使用这个cookie来认证那些要访问的共享卷。

NFS的验证支持内置的IP/主机权限分配,同时也被tcp wrappers所限制。

Redhat上的NFS服务 (于linux和linux之间的传输文件)

Redhat内核中默认就开启了NFS支持,并且通过NFS的Daemon来控制NFS服务端的启动,而负责将网络套接字和RPC调用绑定起来,还 需要一个rpcbind服务(在redhat5中名为portmap),如果你在系统中找不到nfs服务,是因为没有安装nfs-utils这个包,这个 包提供了一些工具和服务脚本等。

整个NFS服务大概包含以下几个(抄自红帽官方文档,但是有点老了好像):

  • nfs — 启动响应的RPC进程来响应NFS
  • nfslock — 这是一个可选的服务,用来响应客户端对文件加锁的请求。
  • rpcbind(portmap) — 这个是rpc服务的守护进程,用来建立连接并且响应rpc请求。

二、NFS的安装

1.挂载使用:

[root@localhost ~]# yum install nfs-utils -y  //下载安装nfs服务
[root@localhost ~]# mkdir /westos
[root@localhost ~]# vim /etc/exports  //打开主配置文件

/westos         *(sync,rw)
(共享文件的目录)   (*  代表所有,sync 为共享的方式,rw为可读、可写)
[root@localhost ~]# exportfs -rv  //刷新服务
[root@localhost ~]# firewall-cmd --permanent --add-service=nfs
success
[root@localhost ~]# firewall-cmd --permanent --add-service=rpc-bind 
success
[root@localhost ~]# firewall-cmd --permanent --add-service=mountd 
success
[root@localhost ~]# firewall-cmd --reload 
success
[root@localhost ~]# chmod 777 /mnt   //给/mnt满权限 (根据实际需要添加acl的方式来管理权限)
[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl enable nfs-server.service

nfs 协议 验证 nfs协议版本_nfs 协议 验证

客户机测试:

[root@localhost ~]# yum  install nfs-utils -y  //下载安装软件nfs-utils
[root@localhost ~]# showmount -e 172.25.254.110  //-e  显示NFS服务器上的输出清单
Export list for 172.25.254.110:
/westos *
[root@localhost ~]# mount 172.25.254.110:/westos /mnt/  
[root@localhost ~]# cd /mnt
[root@localhost ~]# ls

file2

nfs 协议 验证 nfs协议版本_nfs 协议 验证_02

2.以普通用户的身份共享文件

[root@localhost ~]# vim /etc/exports
/westos    *(sync,rw,anonuid=1000,anongid=1000) 
[root@localhost ~]#  exportfs -rv
exporting *:/westos

客户机测试:

[root@localhost ~]# touch file
[root@localhost ~]#  ll
-rw-r--r-- 1 student   student   0 Jun  2 04:45 file

 3.以root用户的身份共享文件

[root@localhost ~]# vim /etc/exports
/westos    *(sync,rw,no_root_squash) 
[root@localhost ~]#  exportfs -rv
exporting *:/westos
[root@localhost ~]# touch file
[root@localhost ~]#  ll
-rw-r--r-- 1 root  root  0 Jun  2 04:45 file1

 

 

nfs 协议 验证 nfs协议版本_nfs 协议 验证_03

 

nfs 协议 验证 nfs协议版本_nfs 协议 验证_04

4.对不同ip的设定

[root@localhost ~]# vim /etc/exports     //打开主配置文件
/westos 172.25.254.0/24(sync) 172.25.254.77(sync,rw)  //同域的ip只可以读,不能写,只有指定的ip才具有可读、可写权限
[root@localhost ~]# exportfs -rv 
exporting 172.25.254.77:/westos 
exporting 172.25.254.0/24:/westos

用ip为172.25.254.123的主机测试:

[root@localhost ~]# mount 172.25.254.110:/westos /mnt/ 
[root@localhost ~]# cd /mnt/ 
[root@localhost ~]# rm -rf file1   
rm: cannot remove ‘file1’: Read-only file system   //报错,只读文件,无法删除。

 

nfs 协议 验证 nfs协议版本_服务端_05

用ip为172.25.254.77的主机测试:

[root@localhost ~]# mount 172.25.254.110:/westos /mnt/ 
[root@localhost ~]# [root@foundation77 mnt]# rm -fr file1
rm: cannot remove ‘file1’: Permission denied  //此时无法删除该文件,需要在服务机上修改/westos的权限为777,才能进行以下操作。
[root@localhost ~]# rm -rf file1 ##删除成功

nfs 协议 验证 nfs协议版本_服务端_06

nfs 协议 验证 nfs协议版本_nfs 协议 验证_07

三、文件系统的自动挂载和自动取消挂载

服务端的NFS必须开启,客户端的autofs服务开启

[root@localhost ~]# yum install autofs -y
[root@localhost ~]# systemctl start autofs
[root@localhost ~]# cd /net/
[root@localhost net]# ls
[root@localhost net]# cd 172.25.254.110
[root@localhost 172.25.254.110]# ls
westos
[root@localhost 172.25.254.110]# cd westos/
[root@localhost westos]# ls
file2
[root@localhost westos]# df
Filesystem             1K-blocks    Used Available Use% Mounted on
/dev/vda3                7660544 1055752   6604792  14% /
devtmpfs                  503384       0    503384   0% /dev
tmpfs                     508996       0    508996   0% /dev/shm
tmpfs                     508996    6712    502284   2% /run
tmpfs                     508996       0    508996   0% /sys/fs/cgroup
/dev/vda1                 201388   81612    119776  41% /boot
172.25.254.110:/westos  10473984 3151232   7322752  31% /net/172.25.254.110/westos

nfs 协议 验证 nfs协议版本_vim_08

取消挂载:

[root@localhost westos]# vim /etc/sysconfig/autofs ##修改取消挂载的时间为5s
13 TIMEOUT=5    ##自动取消挂载时间为 5 秒

[root@localhost westos]# systemctl restart autofs.service 
[root@localhost westos]# cd
[root@localhost ~]# df     ##5秒后自动取消挂载
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda3        7660544 1055776   6604768  14% /
devtmpfs          503384       0    503384   0% /dev
tmpfs             508996       0    508996   0% /dev/shm
tmpfs             508996    6712    502284   2% /run
tmpfs             508996       0    508996   0% /sys/fs/cgroup
/dev/vda1         201388   81612    119776  41% /boot
[root@localhost ~]#

 

nfs 协议 验证 nfs协议版本_nfs 协议 验证_09

nfs 协议 验证 nfs协议版本_nfs 协议 验证_10

四、自定义目录自动挂载

[root@station ~]# vim /etc/auto.master
/nfsdir /etc/auto.westos    //指定挂载目录
#
#
[root@station ~]# vim /etc/auto.westos

westos     -ro     172.25.254.110:/westos

[root@station ~]# systemctl restart autofs.service 
[root@station ~]# cd /nfsdir
[root@station nfsdir]# cd  westos
[root@station westos]# ls
file2

 

nfs 协议 验证 nfs协议版本_客户端_11

nfs 协议 验证 nfs协议版本_客户端_12