1、NFS基础知识
- NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
- 网络文件系统(NFS)是Unix系统和网络附加存储文件管理器常用的网络文件系统,允许多个客户端通过网络共享文件访问。它可用于提供对共享二进制目录的访问,也可用于允许用户在同一工作组中从不同客户端访问其文件。默认情况下,该协议并不安全,但是更新的版本(如NFSv4)提供了对更安全的身份验证的支持,甚至可以通过kerberos进行加密。
- 以下是NFS最显而易见的好处:
(1) 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
(2) 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
(3) 一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。
2、NFS的服务配置
- 服务端配置:
(1)安装并开启nfs
(2)编辑/etc/exports此文件内容如下
sync表示服务端更改数据后,客户端可以看到 /westos表示共享的目录,(*)表示所有人 ,ro表示只读。
(3)exportfs -rv 重新读取/etc/exports,让配置文件生效。
- 客户端配置:
(1)安装nfs软件包 :yum install nfs-utils -y
(2)查看172.25.254.160下的共享目录
(3)将172.25.254.160下的/westos挂载到/mnt
- 自动挂载
(1)在客户端安装自动挂载服务: yum install autofs.x86_64 -y
(2)安装此文件后重启服务:systemctl start autofs,会生成/net目录,此目录下没有任何文件,但是可以cd 172.25.254.160 这就表示进入了服务端,ls就可以看到共享目录了,cd westos/就表示将westos目录挂载到/net/172.25.254.116/westos/下
(3)当成功挂载后,系统默认:当对挂载目录不做操作超过300秒后自动卸载
如果想要更改时间,可以编辑/etc/sysconfig/autofs文件里的TIMEOUT数值,单位是秒。
(4)systemctl restart autofs.service 重启服务后5秒后再查看就会发现解除挂载了。
3、 自定义挂载点
-
在客户端:
(1)编辑/etc/auto.master这个文件/pub /etc/auto.pub ##/pub表示最终挂载点的上层目录 /etc/auto.pub 这个文件是自己指定的
(2)编辑 /etc/auto.pub文件westos -ro 172.25.254.106:/westos 最终挂载点的目录 挂载参数(只读) 挂载设备
(3)重启服务 ##systemctl restart autofs.service
(4)查看是否挂载成功
(5)通过mount可以查看挂载的信息
4、修改客户端的权限
在客户端对共享目录读写挂载,客户端编辑文件后重启服务,但仅仅对客户端做此操作是不够的并不能使客户端可写,服务端也要设置共享目录为可读可写才行。
-
有的客户端都可读写
(1)在服务端: *(sync,rw) ## 所有的客户端都可读写
编辑/etc/exports/westos *(sync,rw) ## 所有的客户端都可读写
exportfs -rv ## 让改配置生效
(2)客户端测试:
重启服务后:systemctl restart autofs.service
-
以root用户存储共享:root_squash
(1)在服务端:
编辑/etc/exports/westos *(sync,rw,anon_root_squash) ## 所有的客户端都可读写,是以root用户存储共享
(2)测试:在客户端
-
特定gid和uid
(1)服务端:编辑/etc/exports/westos *(sync,rw,anonuid=1001,anongid=1001) ## 所有的客户端都可读写,是以id为1001的用户组id为1001的存储共享
(2)测试:
-
指定gid和uid指定客户端
(1)服务端:编辑/etc/exports/westos 172.25.254.206(sync,rw,anonuid=1001,anongid=1001) *(ro) 172.25.254.206的客户端都可读写,是以id为1001的用户组id为1001的存储共享,其他的客户端只读
(2)测试: