NFS是文件共享的分支之一,其他的如:ftp,asmba
概念:NFS(Network File System)网络文件系统,最大功能就是:可以通过网络,让不同的机器、操作系统可以彼此分享文件。

建议:用来存储共享视频,图片等静态数据,最好不要存动态数据,例如脚本啊,数据库文件呀

NFS服务配置

安装NFS服务

安装前关闭防火墙以及selinux
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# getenforce 
Enforcing
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce 
Permissive
1.安装nfs服务程序  如果找不到,配置yum源仓库
[root@localhost ~]# yum install nfs-utils -y

2.启动rpcbind服务
[root@localhost ~]# systemctl start rpcbind

3.我这里利用kvm虚拟机做nfs服务器,宿主机做nfs客户端
	3-1.在nfs服务器上建立共享目录,并设置足够的权限,确保其他人可以写入权限,在目录下建立一个文件用于测试
	[root@vm2 ~]# mkdir /nfsfile
	[root@vm2 ~]# chmod -Rf 777 /nfsfile
	[root@vm2 ~]# echo "hello world" > /nfsfile/nfstest
	[root@vm2 ~]# cat /nfsfile/nfstest 
	hello world
	3-2.编辑nfs配置文件,进行共享目录
	[root@vm2 ~]# vi /etc/exports
		ps:NFS客户端地址与权限之间没有空格
		
		按i,a,o 进入编辑模式 输入以下内容(默认是空文件,如果没有自己创建即可)
	/nfsfile 192.168.122.*(rw,sync,root_squash)
	#共享的目录 共享给主机IP(所有本地主机) 权限参数(可读写 写入硬盘 root用户映射为匿名用户)
	按esc退出编辑模式,按:wq 保存退出
	[root@vm2 ~]# exportfs -a #修改配置文档后,不需要重启NFS,可以直接使用exportfs -a 命令即可
	
	3.3启功和启用NFS服务程序,并在本地查看
	[root@vm2 ~]# systemctl start nfs-server #启动服务
	[root@vm2 ~]# systemctl enable nfs-server #设置开机自启
	Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.

4.在NFS客户端(宿主机)检查服务器共享情况 #如果明明共享了,nfs客户端始终是无法检查到共享情况,有可能是NFS服务器的防火墙拦截了,关闭nfs服务器的防火墙即可,随便selinux也关了
[root@localhost ~]# showmount -e 192.168.122.125
Export list for 192.168.122.125:
/nfsfile (everyone)

5.挂载到客户端的目录上
[root@localhost ~]# mkdir /nfsclient
[root@localhost ~]# mount -t nfs 192.168.122.125:/nfsfile /nfsclient   #挂载需要配合-t参数 指定挂载文件系统类型,服务器ip地址:服务器上共享的目录 要挂载到本机系统(客户端)的目录
[root@localhost ~]# ls /nfsclient/
nfstest

6.可以看到已经挂载成功了
[root@localhost ~]# df -hT
文件系统                 类型      容量  已用  可用 已用% 挂载点
devtmpfs                 devtmpfs  2.4G     0  2.4G    0% /dev
tmpfs                    tmpfs     2.4G     0  2.4G    0% /dev/shm
tmpfs                    tmpfs     2.4G   11M  2.4G    1% /run
tmpfs                    tmpfs     2.4G     0  2.4G    0% /sys/fs/cgroup
/dev/mapper/rhel-root    xfs        76G   22G   55G   28% /
/dev/sr0                 iso9660   6.7G  6.7G     0  100% /mnt/iso
/dev/nvme0n1p1           xfs      1014M  170M  845M   17% /boot
tmpfs                    tmpfs     477M   16K  477M    1% /run/user/42
tmpfs                    tmpfs     477M  3.5M  474M    1% /run/user/0
192.168.122.125:/nfsfile nfs4      6.2G  1.3G  5.0G   21% /nfsclient


###########################
如果希望NFS文件共享服务一直有效,则可以将其写入/etc/fstab文件中
[root@localhost ~]# echo "192.168.122.125:/nfsfile /nfsclient nfs 0 0">>/etc/fstab

nfs-utils(主程序)
recbind(PRC主程序)

NFS服务程序配置文件

路径:/etc/exports
默认情况下是没有任何内容,

NFS服务程序配置文件参数

参数

作用

ro

只读访问

rw

读写访问

root_squash

客户端root用户访问共享文件夹的时候,将root用户映射成为匿名用户(这是默认设置)

no_root_squash

当NFS客户端以root管理员访问时,映射为NFS服务器的root用户

all_squash

无论NFS客户端使用什么账号访问,均映射为NFS服务器的匿名用户

anonuid=

匿名访问用户的本地用户UID,可以指定 默认是nfsnobody(65534)

anongid=

匿名访问用户的本地用户组GID,可以指定 默认是nfsnobody(65534)

sync

所有数据在请求时写入共享

async

将数据先保存在内存缓存中,必要时才写入磁盘

secure

NFS通过1024以下的安全TCP/IP 端口发送(默认)

insecure

NFS通过1024以上端口发送

Hide

在NFS共享目录中不共享其子目录

no_hide

共享NFS目录的子目录

subtree_check 如果共享子目录,nfs服务器强制检查父目录的权限(默认)

wdelay (默认)

检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率,与sync配合使用

no_wdelay

若有写操作则立即执行,与sync配合使用

查看NFS服务器的远程共享信息

showmount 参数 ip地址
输出格式:共享的目录名称 允许使用户端地址

参数

作用

-e

显示NFS服务器的共享列表

-a

显示本机挂载的文件资源情况

-v

显示版本号