Linux下部署NFS服务

描述

1. NFS服务简介

NFS是 Network File System的缩写,即网络文件存储系统,最早是由Sun 公司发展出来的,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。 NFS客户机可以将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,在本地端的系统中来看,那个远程主机的目录就像是自己的一个磁盘分区一样,使用起来非常方便。 一般用来存储共享视频,图片等静态数据。

NFS的挂载原理:如下图示,NFS服务器设置好共享目录/home/nfs后,其他NFS客户端就可以将该目录挂载到自己文件系统的某个挂载点(可自己定义)。 挂载好后在客户端本地就能够看到服务端/home/nfs里的所有数据

Linux

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客户端和服务器通讯过程:

Linux

  • 首先服务器端启动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文件夹

Linux

配置nfs服务器共享目录:打开nfs配置文件/etc/exports,在末尾添加

/home/andyxi/linux/nfs *(rw,sync,no_root_squash)

Linux

修改完/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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分