一、NFS概述
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
二、NFS的组成
一台NFS服务器和若干台客户机,客户机通过TCP/IP网络远程访问存放在NFS服务器上的数据。在NFS服务器正式启用前,需要根据实际环境和需求,配置一些NFS参数。
NFS是运行在应用层的协议。随着NFS多年的发展和改进,NFS既可以用于局域网也可以用于广域网,且与操作系统和硬件无关,可以在不同的计算机或系统上运行。
三、NFS 应用
- 多个机器共享一台CDROM或者其他设备。这对于在多台机器中安装软件来说更加便宜跟方便。
- 在大型网络中,配置一台中心 NFS 服务器用来放置所有用户的home目录可能会带来便利。这些目录能被输出到网络以便用户不管在哪台工作站上登录,总能得到相同的home目录。
- 不同客户端可在NFS上观看影视文件,节省本地空间。
- 在客户端完成的工作数据,可以备份保存到NFS服务器上用户自己的路径下。
四、搭建实验环境
搭建实验的步骤:
1. 配置两个虚拟机的ip和yum源并且更改主机名,一个名字改为client.westos.com,一个改为server.westos.com
2. 然后在各自的虚拟机里作解析vim /etc/hosts
客户端是:172.25.254.112 client.westos.com
服务端是:172.25.254.212 server.westos.com
搭建虚拟机Desktop环境:
为了实验的纯净,配置环境之前首先将Desktop进行重置
1. 配置虚拟机Desktop的网络
2. 更改虚拟机desktop的主机名
3. 在虚拟机desktop上对文件进行本地解析
4. 配置虚拟机desktop的yum源
搭建虚拟机Server的环境:
为了实验的纯净,配置环境之前首先将Server进行重置
1. 配置虚拟机Server的网络
2. 重启网络,并更改虚拟机Server的主机名
3. 对虚拟机Server进行本地解析
4. 配置虚拟机Server的yum源
实验的环境搭建好以后,在一个shell中用ssh连接,如下所示:
五、配置NFS服务器
实验步骤:
在服务端配置如下:
1.安装可以使用网络文件系统的软件
2.关闭火墙,进入服务的配置文件
3.编辑服务的配置文件
4.开启服务,并查看服务的状态,最后将共享的目录显示在屏幕上
在客户端的测试如下:
1.安装服务软件
2.显示导出目录的列表,挂载目录并查看
3.进入挂载目录,建立文件,发现不能建立,如下图所示:
4.卸载挂载并查看,发现卸载成功,如下所示:
注意:
- exportfs若果修改了/etc/exports文件后不需要重新激活NFS,只需要重新扫描一次/etc/exports文件,并重新将设定加载即可
- 当挂载成功后,本地/mnt下如果有数据,则原有的数据都不可见,用户看到的是远程主机172.25.254.212上面的/mnt目录文件列表
- exportfs命令常用参数说明:
-a | 全部挂载/etc/exports文件中的设置 |
-r | 重新挂载/etc/exports中的设置 |
-u | 卸载某一目录 |
-v | 在export时将共享的目录显示在屏幕上 |
- showmount命令常用参数说明:
-a | 列出NFS服务共享的完整目录信息 |
-d | 仅列出客户机远程安装的目录 |
-e | 显示导出目录的列表 |
- sync和async的区别:
<1> sync:将数据同步写入内存缓冲区和磁盘中,效率低,但可以保证数据的一致性
<2>async:将数据先保存到内存缓冲区中,必要时写入磁盘
六、NFS服务器管理
1. 使nfs服务器可写,如下所示:
1.编辑服务端的配置文件,将只读挂载更改为读写挂载,如下所示:
2.将共享的目录显示在屏幕上,如下所示:
3.在客户端测试,发现还是不能建立文件,如下图所示:
当以读写方式挂载后,还是不能建立文件,此时原因是本地的目录/mnt并没有可写的权力,还需要我们去给一个权限,如下图所示4.在服务端给用户一个满权限,如下图所示:
5.再次去客户端建立文件测试,发现能建立成功,如下所示:
6.查看文件的属性,发现用户和用户组都为匿名用户,如下所示:
2. 在本地对nfs服务器文件所有人、所有组的修改,如下所示:
NFS常用选项说明如下:
all_squash | 将远程访问的所有普通用户及所属组都映射为匿名用户或用户组,相当于使用nobody用户访问该共享目录 |
no_all_squash | 与all_squash取反,该选项为默认设置 |
root_squash | 将root用户及所属组映射为匿名用户或用户组,为默认设置 |
no_root_squash | 与root_squash取反 |
anonuid | 将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户 |
anongid | 将远程访问的所有用户都映射为匿名用户组账户,并指定该匿名用户组账户为本地本地用户组账户 |
实验步骤如下:
1.在服务端创建用户,并查看用户的id,如下图所示:
2.编辑配置文件,如下所示:
3.刷新,并将共享目录显示在屏幕上,如下所示:
4.在客户端进入挂载的目录下,创建一个文件并查看文件的属性,发现文件的用户和用户组都为1001,如下图所示:
5.再次进入服务端的配置文件,编辑配置文件,如下所示:
6.再次刷新,并将共享目录显示在屏幕上,如下所示:
7.再次在客户上建立文件测试,发现文件的所有人所有组为root用户,给本地用户满权限并且切换到student用户下建立文件,发现文件的所属人和所属组都为student,如下图所示:
8.测试:
在服务端进入/mnt下查看文件,文件file1的用户和用户组都为feng,如下图所示:
在客户端进入挂载的目录下查看,发现文件file1的用户和用户组为1001,如下所示:
9.卸载挂载,并查看发现卸载成功,如下所示:
七、NFS服务器在本地的自动挂载与卸载
此实验在客户端进行,操作步骤如下:
1.安装自动挂载的服务,如下所示:
2.开启服务并使服务开机自启动,如下所示:
3.查看服务的版本与配置文件,如下图所示:
4.设置自动挂载等待时间,如下所示:
5.测试,当使用时进入/net/172.25.254.212/mnt/查看发现有刚建立的文件,df查看有挂载,当不用时相当于退出,此时再去查看发现没有挂载,如下所示:
注意:
- 不要df一直查看,因为查看一次就会被读取一次
- 正因为目录能被自动挂载的原因是因为,autofs在开启的时候会有/net这个目录,当关闭的时候就不存在,如下所示:
八、更改共享目录的挂载点
实验需求:
1. 将服务端172.25.254.212:/mnt目录挂载到客户端的/mnt/westos目录下
2. /mnt/westos是不存在的
此实验在客户端进行,操作步骤如下:
1.进入/etc/auto.master目录,挂载/mnt到/etc/auto.nfs,如下图所示:
2.编辑自动挂载文件,挂载的子目录为westos,如下所示:
3.重启服务,如下所示:
4.进入到挂载目录下,查看发现挂载成功,退出目录再次查看发现自动卸载成功,如下图所示:
5.也可以指定挂载类型和版本,如下所示:
6.在客户端测试,发现挂载成功,并且用mount查看,发现挂载的类型为只读,版本为3,如下图所示:
7.进入挂载目录建立文件,发现不能建立,因为只读挂载,如下所示:
8.退出挂载目录,查看发现再次自动卸载成功,如下所示:
九、设置NFS服务器在客户端自动挂载目录和服务端目录相对应
1.首先在服务端建立目录并查看,如下所示:
2.在客户端编辑文件,如下所示:
3.重启自动挂载服务,并测试,发现进入/mnt/haha1目录下查看挂载,挂载即为/mnt/haha1,进入/mnt/haha2目录下查看挂载,挂载即为/mnt/haha2,如下所示: