NFS网络文件系统
NFS(Network File System)是一种网络文件系统协议,允许不同系统之间共享文件和目录。它主要用于 Linux 和 UNIX 系统,但也可以在其它类型的系统上使用。通过 NFS,用户和应用程序可以跨网络访问存储在远程计算机上的文件,就像访问本地文件一样。
1. 准备环境
同时准备两台服务器,一台服务端nfs-server(192.168.234.22),一台客户端nfs-client(192.168.234.23)
两台服务器都要关闭selinux和防火墙
yum -y install nfs-utils rpcbind
安装nfs-utils和rpcbind,因为NFS有很多功能,不同的功能需要使用不同的端口。因此NFS无法固定端口。而RPC会记录NFS端口的信息,这样就能够通过RPC实现服务端和客户端的RPC来沟通端口信息。
当NFS启动后,就会随机的使用一些端口,然后NFS就会向RPC去注册这些端口。RPC就会记录下这些端口。并且RPC会开启111端口,等待客户端RPC的请求,如果客户端有请求,那服务端的RPC就会将记录的NFS端口信息告知客户端。
2. 服务端nfs-server
systemctl start nfs #启动nfs
systemctl start rpcbind #启动rpcbind
mkdir /nfs-server #创建共享目录,可以将磁盘挂载在该目录,确保充足的存储空间
vim /etc/exports #编辑共享文件
/nfs-server 192.168.234.23(rw,no_root_squash,sync) #共享给单个IP
/nfs-server 192.168.234.0/24(rw,no_root_squash,sync) #共享给整个网段
/nfs-server *(rw,no_root_squash,sync) #共享给所有人
参数注释:
ro:只读
rw:读写
sync:所有数据在请求时写入共享
root_squash: NFS 服务器将来自客户端的 root 用户的请求转换为一个普通用户。这样,root 用户在访问 NFS 共享时将不会具有超级用户权限。
no_root_squash:NFS 服务器允许来自客户端的 root 用户以其原始身份进行访问。意味着root 用户能够在服务器上执行任何操作。
systemctl restart nfs-server #重启服务
systemctl enable nfs-server #开机自启
3. 客户端nfs-client
showmount -e 192.168.234.22(nfs-server的IP) #列出指定 NFS 服务器上可用的共享目录
mkdir /mnt/nfs-client #创建挂载点
mount -t nfs 192.168.234.22:/nfs-server /mnt/nfs-client #挂载,-t指定文件系统类型
可以df -Th命令检查是否成功挂载,此时服务器重启后会取消挂载,所以需要制作开机挂载
vim /etc/fstab
192.168.234.23:/nfs-server /mnt/nfs-client nfs defaults 0 0
# 服务端 挂载点 文件系统 文件系统属性 不备份 不检查
mount -a #自动挂载(读取/etc/fstab文件)
制作开机挂载后,当服务端未启动时,会导致客户端服务器启动非常慢,所以将文件系统属性defaults改为rw,nofail,bg可以后台挂载,不影响客户端的服务器启动。