【nfs-ganesha】通过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 |
设置共享为读写 |
root_squash |
当源计算机(NFS客户端)当前用户是root时,将被映射为目标计算机(NFS服务器)的匿名用户 |
no_root_squash |
当源计算机(NFS客户端)当前用户是root时,将被映射为目标计算机(NFS服务器)的root用户 |
all_squash |
将所有用户映射为目标计算机(NFS服务器)的匿名用户,NFS缺省选项 |
anonuid |
设置匿名用户的UID |
anongid |
设置匿名用户的GID |
sync |
保持数据同步,同时将数据写入内存和硬盘,缺省选项 |
async |
先将数据保存在内存,然后写入硬盘,效率更高,但可能造成数据丢失 |
secure |
NFS客户端必须使用NFS保留端口(1024以下的端口),缺省选项 |
insecure |
允许NFS客户端不使用保留端口(1024以下的端口) |
wdelay |
如果NFS服务器怀疑有另一个相关的写请求正在处理或马上就要达到,NFS服务器将延迟提交写请求到磁盘,这就允许使用一个操作提交多个写请求到磁盘,可以改善性能,缺省选项 |
nowdelay |
设置了async时该选项无效,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