Linux 下部署 NFS 服务

一、NFS服务简介

NFS 是 Network File System 的缩写,即网络文件存储系统,最早是由 Sun 公司发展出来的,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。NFS服务器可以让PC将网络中的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客户端和NFS服务器通讯过程如下图所示:
在这里插入图片描述

  • 首先服务器端启动RPC服务,并开启111端口
  • 服务器端启动NFS服务,并向RPC注册端口信息
  • 客户端启动RPC,向服务端的RPC服务请求服务端的NFS端口
  • 服务端的RPC服务反馈NFS端口信息给客户端
  • 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输

二、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)

在这里插入图片描述

重启 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目录中

mkdir get
mount -t nfs -o nolock,nfsvers=3 192.168.10.100:/home/andyxi/linux/nfs get/

通过 df命令可查看挂载的NFS目录,卸载NFS目录使用umount命令

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安迪西嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值