1. NFS服务简介
NFS是 Network File System的缩写,即网络文件存储系统,最早是由Sun 公司发展出来的,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。 NFS客户机可以将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,在本地端的系统中来看,那个远程主机的目录就像是自己的一个磁盘分区一样,使用起来非常方便。 一般用来存储共享视频,图片等静态数据。
NFS的挂载原理:如下图示,NFS服务器设置好共享目录/home/nfs后,其他NFS客户端就可以将该目录挂载到自己文件系统的某个挂载点(可自己定义)。 挂载好后在客户端本地就能够看到服务端/home/nfs里的所有数据
NFS是通过网络来进行数据传输,因此有对应的网络端口。 那么客户端是如何知道 NFS服务器端到底使用的是哪个端口呢? 这时就需要通过远程过程调用(Remote Procedure Call, RPC)协议来实现了!
RPC与NFS通讯原理:NFS支持的功能很多,不同的功能启用的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,RPC就是用来统一管理NFS端口的,其对外的端口是111。 RPC会记录NFS端口的信息,并且通知客户端,让客户端可以连接到正常端口上去。
那么RPC是如何知道每个NFS功能的端口呢? 首先当NFS启动后,会随机的使用一些端口,然后NFS会向RPC去注册这些端口,并记录下来,同时RPC会开启111端口,等待客户端RPC的请求。 若客户端有请求,那么服务器端的RPC就会将之前记录的NFS端口信息告知客户端。 如此客户端就会获取NFS服务器端的端口信息,进行数据传输了。
注意:在启动NFS服务器之前,首先要启动RPC服务(即portmap服务)否则NFS服务器就无法向RPC服务区注册。 如果RPC服务重新启动,原来注册好的NFS端口数据会全部丢失,此时RPC服务管理的 NFS程序也要重启以重新向RPC注册。
NFS客户端和服务器通讯过程:
- 首先服务器端启动RPC服务,并开启111端口
- 服务器端启动NFS服务,并向RPC注册端口信息
- 客户端启动RPC,向服务端的RPC服务请求服务端的NFS端口
- 服务端的RPC服务反馈NFS端口信息给客户端
- 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输
2. Linux下部署NFS服务
2.1 安装NFS服务
使用如下命令安装NFS服务和RPC服务
sudo apt-get install nfs-kernel-server rpcbind
安装完成后,创建共享文件夹供nfs服务器使用,此处在用户根目录下创建了linux/nfs文件夹
配置nfs服务器共享目录:打开nfs配置文件/etc/exports,在末尾添加
/home/andyxi/linux/nfs *(rw,sync,no_root_squash)
修改完/etc/exports以后保存退出,重启NFS服务
sudo /etc/init.d/nfs-kernel-server restart
2.2 NFS测试
这里使用 Ubuntu作为 NFS服务器端,Linux开发板作为客户端来进行 NFS测试。 确保网络环境正常,Ubuntu、Windows和开发板能相互ping通
在ubuntu的/home/andyxi/linux/nfs目录下创建test.c文件
vi test.c
在开发板中创建一个目录get,设置虚拟机IP并将NFS共享目录挂载到get目录中。 挂在成功后,即可在get目录中看到test.c文件
mkdir get
mount -t nfs -o nolock,nfsvers=3 192.168.10.100:/home/andyxi/linux/nfs get/
通过df命令可查看挂载的NFS目录,卸载NFS目录使用umount命令
-
Linux
+关注
关注
87文章
11298浏览量
209396 -
服务器
+关注
关注
12文章
9138浏览量
85372 -
操作系统
+关注
关注
37文章
6814浏览量
123313 -
端口
+关注
关注
4文章
964浏览量
32064 -
NFS
+关注
关注
1文章
53浏览量
26107
发布评论请先 登录
相关推荐
评论