【nfsd】通过nfsd搭建nfs server
通过nfsd搭建nfs server
NFS(Network File System)是Linux系统之间(类Unix系统之间)使用最为广泛的文件共享协议,不同于ftp或http,需要将文件下载后使用,NFS方式的共享是可以直接使用而不需要下载的。
mout过程:
原理:
NFS本身的服务并没有提供数据传递的协议,而是通过使用RPC(远程过程调用 Remote Procedure Call)来实现。当NFS启动后,会随机的使用一些端口,NFS就会向RPC去注册这些端口。RPC就会记录下这些端口,RPC会开启111端口。通过client端和sever端端口的连接来进行数据的传输。在启动nfs之前,首先要确保rpc服务启动。
-
本地用户要访问nfs服务器中文件,先向内核发起请求,内核处理调用nfs模块及rpc client
-
rpc client向rpc server发起连接
-
在连接之前,NFS服务除了启动nfsd本身监听的端口2049/tcp和2049/udp,还会启动其它进程(如mountd,statd,rquotad等)以完成文件共享,这些进程的端口是不固定的;是每次NFS服务启动时向RPC服务注册的,RPC服务会随机分配未使用的端口
-
完成连接,接受访问请求
-
nfs应用程序向内核发起请求
-
内核调用文件系统
然后client端通过获取的NFS端口来建立和server端的NFS连接并进行数据的传输。
参数 | 说明 |
ro | 只读访问(默认) |
rw | 读写访问 |
async | 将数据先保存在内存缓冲区,必要时才写入磁盘 |
secure | 客户端只能使用小于1024的端口连接(默认) |
insecure | 允许客户端使用大于1024的端口连接 |
wdelay | 如果NFS服务器怀疑有另一个相关的写请求正在处理或马上就要达到,NFS服务器将延迟提交写请求到磁盘,这就允许使用一个操作提交多个写请求到磁盘,可以改善性能,缺省选项 |
no_wdelay | 若有写操作立即执行,应与sync配合使用 |
hide | 在NFS共享目录中不共享其子目录(默认) |
no_hide | 共享NFS目录的子目录 |
subtree_check | 如果共享目录是子目录,强制NFS检查父目录的权限(默认) |
no_subtree_check | 和上面相对,不检查目录权限 |
all_squash | 龚爱那个文件 |
no_all_squash | 将所有用户映射为目标计算机(NFS服务器)的匿名用户,NFS缺省选项 |
root_squash | 当源计算机(NFS客户端)当前用户是root时,将被映射为目标计算机(NFS服务器)的匿名用户 |
no_root_squash | 当源计算机(NFS客户端)当前用户是root时,将被映射为目标计算机(NFS服务器)的root用户 |
anonuid=xxx | 指定NFS服务器/etc/passwd文件匿名用户的uid |
anongid=xxx | 指定NFS服务器/etc/passwd文件匿名用户的gid |
nfsd配置文件
/etc/sysconfig/nfs
查看服务状态:
[root@centos7 ~]# systemctl status nfs-server
● nfs-server.service - NFS server and services
Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; vendor preset: disabled)
Active: inactive (dead)
缺省没有启动,所以要先启动服务:
# systemctl enable rpcbind && \
systemctl enable nfs-server && \
systemctl enable nfs-lock && \
systemctl enable nfs-idmap && \
systemctl start rpcbind && \
systemctl start nfs-server && \
systemctl start nfs-lock && \
systemctl start nfs-idmap
重启所有服务命令
# systemctl enable rpcbind && systemctl enable nfs-server && systemctl enable nfs-lock && systemctl enable nfs-idmap && systemctl restart rpcbind && systemctl restart nfs-server && systemctl restart nfs-lock && systemctl restart nfs-idmap
无需重启NFS服务,使exports文件生效
# exportfs -ra
参考资料
5. Linux中NFS服务器的配置(/etc/export)
https://cshihong.github.io/2018/10/16/NFS%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%90%AD%E5%BB%BA%E4%B8%8E%E9%85%8D%E7%BD%AE/