环境介绍
操作系统:Ubuntu 20.04.2 LTS,CentOS,Windows 10企业版
软件版本:nfs-kernel-server,nfs-common
一、NFS简介
NFS(Network File System)网络文件系统,它主要的功能是通过网络(局域网),让不同的机器、不同的操作系统可以共享彼此的目录或文件,将共享的目录挂载到本地的文件系统,一般用来存储共享视频和图片等静态数据,常用在集群架构后端进行数据共享,NFS依赖负责信息传输的RPC协议。
二、NFS入门
1、NFS服务软件
- 需要开启mountd、nfsd、nlockmgr、portmapper、rquotad这5个服务, 除了nfsd和portmapper服务端口是固定的,其余都是随机分配的
- nfsd:是nfs的守护进程,不负责文件存储(由NFS服务器本地内核负责调度存储),用于理解客户端发起的rpc请求,并将其转交给本地内核,而后存储在指定的文件系统上
- mountd:mountd的服务端口是随机的,由rpc服务(portmapper)提供随机端口号,用于验证客户端是否在允许访问此NFS文件系统的客户端列表中,在则允许访问(发放一个令牌,持令牌去找nfsd),否则拒绝访问
- dmapd:实现用户帐号的集中映射,把所有的帐号都映射为NFSNOBODY,但是在访问时却能以本地用户的身份去访问;
- portmapper:NFS服务器的rpc服务,用于管理远程过程调用(RPC)
- rpcbind:即RPC主程序
2、NFS常用目录或文件
- /etc/exports:NFS主要配置文件
- /usr/sbin/showmount:客户端的查看命令
- /var/lib/nfs/etab:查看服务端配置目录的完整权限
- /usr/sbin/exportfs:维护NFS分享资源的指令
3、端口
固定端口
NFS默认端口 2049 tcp/udp
portmapper默认端口 111 tcp/udp
随机端口
mountd、idmapd、rpcbind三个是随机端口,一般默认mountd为20048(需验证)
status和nlockmgr是随机端口
也可在配置文件中修改绑定固定端口/etc/sysconfig/nfs
参考https://www.cnblogs.com/ruhuanxingyun/p/14852570.html
NFS服务端安装(Ubuntu为例)
1、准备工作
1 | sudo mkdir /home/ayb/文档/NFSFile #创建一个共享文件夹 |
2、安装启动
1 | sudo apt-get install nfs-kernel-server #安装NFS服务端 |
3、配置NFS
1 | sudo vim /etc/exports |
重启服务
1 | sudo systemctl restart nfs-server |
4、权限说明
参数 | 作用 |
---|---|
ro | 只读 |
rw | 读写 |
root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器端的匿名用户 |
no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器端的root用户 |
all_squash | 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 |
sync | 同时将数据写入到内存与硬盘中,保证不丢失数据 |
async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 |
## NFS客户端安装(Windows及Linux) | |
### Windows 10 | |
只有Win10企业版具有此功能。专业版和家庭版需要使用第三方软件实现。 | |
控制面板→程序→启用或关闭Windows功能→NFS服务 | |
Win+R打开命令行中输入 |
1 | mount 172.21.1.1:/home/ayb/文档/NFSFile F: |
Linux
Ubuntu系统
1 | sudo apt-get install nfs-common |
CentOS系统
1 | yum install nfs-utils -y |
创建客户端目录
1 | mkdir ./NFSFile |
挂载
1 | sudo mount -t nfs 172.21.1.1:/home/ayb/文档/NFSFile /mnt |
卸载
1 | sudo umount /mnt |