一.NFS概述
NFS(Network File System)网络文件系统,是由SUN公司研制的UNIX表示层协议,能使使用者访问网络上别处的文件就像在使用自己的计算机一样。主要用于Linux系统上实现文件共享的一种协议,其客户端主要是Linux。
samba实现的是windows和windows,windows和linux,linux和linux之间的共享。
nfs实现的是linux和linux,linux和unix,unix和unix之间的共享。
特点:
-
NFS没有用户认证机制,且数据在网络上传送的时候是明文传送,一般只能在局域网中使用
-
支持多节点同时挂载及并发写入
-
容易扩充新的资源或软件,不需要改变现有的工作环境
-
企业应用:为集群中的web server提供后端存储(做静态资源服务器)
NFS组成
rpcbind : 负责NFS的数据传输,远程过程调用 tcp/udp协议 端口111
nfs-utils :控制共享哪些文件,权限管理
RPC(Remote Procedure Call Protocol):
远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,不需要了解底层网络技术的协议。
二.搭建NFS服务
0.实验环境
client:172.25.254.10
server:172.25.254.20
1.基本信息
- 服务端软件:nfs-utils.x86.64 (一般CentOS7和8系统默认已经安装)
- 服务脚本:nfs-server
- 共享配置文件:/etc/exports
2.NFS的安装和启用
# 在server端:
systemctl start nfs-server
firewall-cmd --add-service=rpc-bind
firewall-cmd --add-service=mountd
firewall-cmd --add-service=nfs
firewall-cmd --reload
vim /etc/exports
#共享目录 共享给谁(参数)
/share *(ro)
# 刷新/etc/exports文件。
exportfs -rv
# 在client端:
showmount -e 172.25.254.20 #显示NFS服务器上所有的共享目录
mount 172.25.254.20:/share /mnt/ # 挂载使用
3.NFS的配置文件
vim /etc/exports
# 共享目录 (共享主机)共享选项
/share *(ro,sync)
/public *(ro,sync)
共享主机 | 说明 |
---|---|
* | 代表所有主机 |
192.168.0.0/24 | 代表共享给某个网段192.168.0.1 ~ 192.168.0.254 |
192.168.0.0/24(rw) 192.168.1.0/24(ro) | 代表共享给不同网段 |
192.168.0.254 | 共享给某个IP |
共享选项 | 说明 |
---|---|
ro | 只读 |
rw | 读写 |
sync | 实时同步,直接写入磁盘(安全性最高) |
async | 异步,先缓存数据在内存然后再同步磁盘(效率最高,但是有丢失文件风险) |
anonuid | 设置访问nfs服务的用户的uid,uid需要在/etc/passwd中存在 |
anongid | 设置访问nfs服务的用户的gid |
root_squash | 默认选项 root用户创建的文件的属主和属组都变成nfsnobody,其他人nfs-server端是它自己,client端是nobody。(访问NFS服务器时,映射为匿名账号) |
no_root_squash | root用户创建的文件属主和属组还是root,其他人server端是它自己uid,client端是nobody。(访问NFS服务器时,映射为root管理员账号) |
all_squash | 不管是root还是其他普通用户创建的文件的属主和属组都是nfsnobody |
说明:
anonuid和anongid参数和all_squash一起使用。
all_squash表示不管是root还是其他普通用户从客户端所创建的文件在服务器端的拥有者和所属组都是nfsnobody;服务端为了对文件做相应管理,可以设置anonuid和anongid进而指定文件的拥有者和所属组
三.autofs + NFS
# 在client:
yum install autofs -y
# 可以在/etc/autofs.conf文件中设置更新时间
vim /etc/auto.master #编辑主策略文件,设置挂载点
/mnt /etc/auto.nfs
vim /etc/auto.nfs #将172.25.254.20:/share以读写方式挂载到nfs上
nfs -rw 172.25.254.20:/share
systemctl restart autofs.service