NFS(Network File System,网络文件系统)是FreeBSD支持的文件系统中的一种,它允许网络中的计算机(不同的计算机、不同的操作系统)之间通过TCP/IP网络共享资源,主要在unix系列操作系统上使用。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中看来,那个远程主机的目录就好像是自己的一个磁盘分区一样。
由于NFS支持的功能比较多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能所对应的端口并不固定,而是随机取用一些未被使用的小于1024的端口用于传输。但如此一来就会产生客户端连接服务器的问题,因为客户端需要知道服务器端的相关端口才能够连接。
此时就需要RPC(Remote Procedure Call,远程过程调用)的服务。由于当服务器在启动NFS时会随机选取数个端口号,并主动向RPC注册,所以RPC知道每个NFS功能所对应的端口号,RPC将端口号通知给客户端,让客户端可以连接到正确的端口上去。RPC采用固定端口号port 111来监听客户端的需求并向客户端响应正确的端口号。
注:在启动NFS之前,要先启动RPC,否则NFS会无法向RPC注册。另外,RPC若重新启动,原来注册的数据会消失不见,因此RPC重启后,它管理的所有服务都需要重新启动以重新向RPC注册。
需要两个虚拟机:一个作为服务器,一个作为客户端 架设一台NFS服务器,并按照以下要求配置 1、开放/nfs/shared目录,供所有用户查询资料; 2、开放/nfs/upload目录,该目录为172.24.8.0/24网段的主机的数据上传目录,并将所有该网段主机上传文件的所属者和所属组映射为nfs-upload,其UID和GID为2001; 3、将/home/tom(该目录为uid=1111,gid=1111的tom用户的家目录)目录仅共享给172.24.8.129这台主机上的jerry用户,jerry对该目录具有访问、新建和删除文件的权限
NFS使用
关闭防火墙,selinux,网络通畅
RPC主程序:rpcbind
NFS主程序:nfs-utils
安装程序
yum install rpcbind
yum install nfs-utils
/etc/exports主配置文件(文件不一定存在) //用于配置共享的路径,在服务端
配置格式:共享目录 主机名/掩码(权限)
参数值 | 说明 |
rw/ro | 该目录共享的权限是可读写还是只读,但最终能否读写,还是与文件系统的rwx有关 |
sync/async | sync代表数据会同步写入到内存与硬盘中,async则代表数据会先暂存于内存当中,而非直接写入硬盘 |
no_root_squash/root_squash | 若客户端在共享目录里创建的文件的所属者和所属组是root用户和root组,那么显示文件的属主和属组时有以下两种情况:norootsquash表示,文件的所属者和所属组是root用户和root组;root_squash表示将root用户和组映射为匿名用户和组(默认设置)。 |
all_squash/no_all_squash | allsquash:客户端所有用户创建文件时,客户端会将文件的用户和组映射为匿名用户和组noall_squash:客户端普通用户创建的文件的UID和GID是多少,服务端就显示为多少(默认设置) |
anonuid=anongid= | 将文件的用户和组映射为指定的UID和GID,若不指定默认为65534(nfsnobody) |
手动挂载
nfs实例:
需要两个虚拟机:一个作为服务器,一个作为客户端 架设一台NFS服务器,并按照以下要求配置
1、开放/nfsdata目录,供所有用户查询资料;
2、开放/nfs/shared目录,该目录为192.168.31.0网段的主机的数据上传目录,并将所有该网段主机上传文件的所属者和所属组映射为nfs-upload,其UID和GID为2001;
1.
服务端:
新建一个共享的目录
[root@xiezhehui ~]# mkdir /nfsdata
在该目录下建立一个测试文件
配置共享路径(只读权限参数为ro)
开启服务
[root@xiezhehui ~]# systemctl restart nfs-server.service
客户端:
新建挂载目录
[root@xiezhehuiIS ~]# mkdir /mountdata
挂载
[root@xiezhehuiIS ~]# mount 192.168.31.139:/nfsdata /mountdata
测试
2.
服务端:
新建共享目录
[root@xiezhehui shared]# mkdir /nfs/shared
新建nfs-server uid和gid都为2001
useradd -u 2001 nfs-shared
在/nfs/shared目录下新建ISxzh.txt文件
修改/shared目录权限
给ISxzh.txt文件指定所属者和所属组
chown nfs-shared:nfs-shared ISxzh.txt
客户端:
新建挂在目录并将给定的目录挂载
mount 192.168.31.139:/nfs/shared /allro
查看服务端
查看客户端
自动挂载(客户端操作)
yum install autofs -y //安装软件
autofs.conf-> 针对服务autofs的配置
auto.master -> 是针对目录对应的挂载配置文件
auto.nfs(文件名可自定义) -> 对应的是:具体挂载信息
操作:
vim /etc/auto.master 打开配置
添加:/nfsclient /etc/auto.nfs 其中nfsclient系统会自动创建
vim /etc/auto.nfs 打开配置
添加:nfsdir 192.168.233.154:/nfsdata 挂载到服务端下的/nfsdata nfsdir可能会被隐藏,但仍可以cd进去
启动服务
[root@node1 /]# systemctl restart autofs
触发自动挂载操作
对第2题进行自动挂载
结果:
挂载的死亡时间为5分钟在,在autofs.conf文件中可修改时间
dismount_interval = 300 //默认