NFS概念

NFS(网络文件系统)是Unix系统和网络附加存储文件管理器常用的网络文件系统。允许多个客户端通过网络共享文件访问。
它和CIFS的作用和功能基本一致,区别在于CIFS支持linux和windows之间的共享,但是NFS是linux和linux或者unix和unix之间的文件共享,不支持与windows系统的共享。

NFS文件系统的搭建

在服务端
1.

yum install nfs-utils   ##安装所要搭建该服务所需要的软件
systemctl start nfs
systemctl status nfs

NFS和DFS的区别_服务端


NFS和DFS的区别_服务端_02


2.

firewll-cmd --permanent  --add-service=nfs    ##主服务,nfs决定了谁能共享、共享的方式,共享的目录
firewll-cmd --permanent  --add-service=rpc-bind  ##分配端口
firewll-cmd --permanent  --add-service=mountd   ##mountd:指引共享,告知共享位置

NFS和DFS的区别_客户端_03


三者之间的关系如图所示:

3.设置NFS服务器配置

mkdir /westos_nfs ##建立共享目录
touch file{1..10}  ##在共享目录里建立文件,为了后续实验效果的直观

NFS和DFS的区别_客户端_04

vim /etc/exports
在文件中写入
/westos_nfs  *(sync)    ##共享的目录为/westos_nfs  以磁盘和硬盘的方式共享
exportfs -rv    ##刷新

NFS和DFS的区别_NFS和DFS的区别_05


NFS和DFS的区别_客户端_06


sync和async的区别

sync:内核中的数据和硬盘完成目的之后再做更新,效率高但是稳定性较差

async:实时同步更新,效率低,但稳定性好

4.

在客户端

测试

showmount -e 172.25.254.104(服务端IP)  ##登录
mount 172.25.254.104:/westos_nfs /mnt
cd /mnt   ##在共享目录下查看是否共享成功,查看到在服务端的的共享目录下的文件,即共享成功

NFS和DFS的区别_客户端_07


NFS和DFS的区别_客户端_08

NFS的自动挂载

在文件系统挂载时,一旦挂载即使没有在被使用也会一直处于挂载状态直到卸载,这样就会造成资源空间的浪费,而nfs提供的共享方式能实现:用即挂载不用即卸载的目的,减少资源的浪费
默认挂载点的自动挂载
在客户端

yum install autofs -y   ##下载自动挂载所需的软件

NFS和DFS的区别_客户端_09


NFS和DFS的区别_vim_10


默认挂载点/net/172.25.254.204(服务端IP)

cd /net/172.25.254.104/westo_nfs   ##ls 能查看到文件
cd    ##退出挂载点,达到卸载时间,即卸载

NFS和DFS的区别_服务端_11


设置文件系统3秒空闲,则卸载

NFS和DFS的区别_vim_12

卸载时间点的设置

vim /etc/autofs.conf   ##对于7.0及以上版本,在该文件中设置卸载时间
vim /etc/sysconfig/autofs   ##对于7.0版本,更改卸载时间(默认300s)

NFS和DFS的区别_服务端_13


更改挂载点

上述实现了自动的挂载和卸载,但是挂载点只能是默认挂载点,那么当需要将系统文件挂载到指定的挂载点,比如/mnt/westos需要进行如下操作

vim /etc/auto.master  ##主策略文件
在文件中写入
/mnt  /etc/auto.nfs    ##最终挂载点的上层目录     子策略文件(文件名称可自定义)

NFS和DFS的区别_客户端_14

vim /etc/auto.nfs     ##子策略文件   
在子策略文件中写入
westos ro(rw)  172.25.254.104:/westos_nfs    ##最终挂载点挂载参数   挂载的文件系统
systemctl restart autofs.service   ##重启自动挂载服务

NFS和DFS的区别_NFS和DFS的区别_15

测试

cd /mnt/westos   ##ls能查看到/westos_nfs中的文件

NFS和DFS的区别_NFS和DFS的区别_16


NFS和DFS的区别_客户端_17


NFS和DFS的区别_vim_18


可以查看但是没有写权限

NFS和DFS的区别_客户端_19


在子策略文件中写挂载参数为rw后还是不可写,原因是:客户端能不能对共享文件做一系列操作是取决于服务端的许可,在子策略文件中写入的rw参数,只是对于挂载形式的参数,可以使用mount查看

在服务端

vim /etc/exports    ##在nfs服务的配置中写入可写权限
/westos_nfs *(rw,sync)

NFS和DFS的区别_NFS和DFS的区别_20


客户端测试

cd /mnt/westos 
touch file

NFS和DFS的区别_vim_21


还是无法写入:原因是在服务端的/etc/exports中写入读写权限针对于服务端的超级用户而言,客户端的超级用户和服务端的超级用户是独立分开的,并不是同一个超级用户,也就是客户端的超级用户并没有读写的权限,所以还是客户端还是无法对共享目录写入,

进行下列操作:

服务端

vim /etc/exports
在文件中写入:
/westos_nfs  *(sync)  172.25.254.204(rw)   ##对客户端主机给予写权限
exportfs -rv     ##刷新

NFS和DFS的区别_客户端_22


在客户端重新测试

cd /mnt/westos 
touch file

这时的报错为:permission denied,是因为目录本身不允许写入

NFS和DFS的区别_vim_21


服务端

chmod 777 /westos_nfs   ##满权限

客户端再次测试

cd /mnt/westos 
touch file  
可以成功建立,并用ll 查看当前建立文件所使用的用户,因为777满权限不安全,可以使用acl权限列表对该用户给权限即可,既不影响文件写入也保证了安全性

NFS和DFS的区别_vim_24

NFS服务相关参数的设定(rw,ro,sync,async,匿名用户(组)身份转换,超级用户身份继承

对于ro,rw 共享文件写权限上述操作已经实现

sync和async的区别
sync:内核中的数据和硬盘完成目的之后再做更新,效率高但是稳定性较差
async:实时同步更新,效率低,但稳定性好

匿名用户(组)身份转换(将匿名用户转换为本地用户身份)
客户端此时登录创建的文件的身份是匿名用户身份
服务端

查看系统中存在的本地用户的uid

NFS和DFS的区别_NFS和DFS的区别_25


在没有加任何参数设定的情况下

NFS和DFS的区别_NFS和DFS的区别_26


用户身份

vim /etc/exports
文件中写入
/westos_nfs *(sync) 172.25.254.204(rw,anonuid=1001)

NFS和DFS的区别_NFS和DFS的区别_27


客户端

cd /mnt/westos 
touch file
ll       ##查看此时的用户身份是否转换成功

NFS和DFS的区别_服务端_28


用户组

vim /etc/exports
文件中写入
/westos_nfs *(sync) 172.25.254.204(rw,anonuid=1001,anongid=1001)

NFS和DFS的区别_客户端_29


客户端

cd /mnt/westos 
touch file
ll       ##查看此时的用户身份是否转换成功

NFS和DFS的区别_客户端_30


如果客户端是普通用户时,此时在服务端

vim /etc/exports 
/westos_nfs *(sync) 172.25.254.204(rw,anonuid=1001,anongid=1001,all_squash)

NFS和DFS的区别_vim_31


在客户端用普通用户的身份进行测试

NFS和DFS的区别_NFS和DFS的区别_32

超级用户的身份的继承
当客户端身份是超级用户时,在文件中增加no_root_squash,刷新生效后,客户端不进行超级用户的身份转换,直接继承服务端超级用户的身份。

vim /etc/exports
/westos_nfs *(sync) 172.25.254.204 (rw,no_root_squash)

NFS和DFS的区别_服务端_33


客户端

cd /mnt/westos 
touch file
ll       ##查看此时的用户身份是否是root

NFS和DFS的区别_服务端_34


注意:当客户端使用普通用户的身份进行操作时,该操作不会生效,创建文件的用户时客户端的普通用户。