OpenHarmony之 LiteOS-M轻量系统内核——NFS(网络文件系统)

227 篇文章 0 订阅
226 篇文章 0 订阅

概述

NFS是Network File System(网络文件系统)的缩写。它最大的功能是可以通过网络,让不同的机器、不同的操作系统彼此分享其他用户的文件。因此,用户可以简单地将它看做是一个文件系统服务,在一定程度上相当于Windows环境下的共享文件夹。

NFS客户端用户,能够将网络远程的NFS服务端分享的目录挂载到本地端的机器中,运行程序和共享文件,但不占用当前的系统资源,所以,在本地端的机器看起来,远程服务端的目录就好像是自己的一个磁盘一样。

注意事项

  • 当前NFS文件不支持权限控制,请在创建NFS目录和文件时使用777权限。

  • 当前NFS文件不支读阻塞和写阻塞。

  • 当前NFS文件不支持信号功能。

  • 当前NFS文件系统mount路径长度(不包含IP的长度)不超过255个字符,超过时返回ENAMETOOLONG错误。

  • 当前NFS文件支持的操作有:open, close, read, write, seek, dup, dup2, sync, opendir, closedir, readdir, readdir_r, rewinddir, scandir, statfs, remove, unlink, mkdir, rmdir, rename, stat, stat64, seek64, mmap, mount, umount。

  • 当前NFS支持TCP和UDP两种传输层协议,默认使用TCP。

  • open打开一个文件,参数有O_TRUNC时,必须同时拥有写的权限,才会将文件中的内容清空。

  • 在文件未关闭的情况下,rename()函数重命名A为B之后,不会改变文件fd。

  • NFS功能目前处于beta测试阶段,可能存在功能不稳定的情况,建议您不要用于正式商用产品当中。

开发指导

搭建NFS服务器

这里以Ubuntu操作系统为例,说明服务器端设置步骤。

安装NFS服务器软件。

设置好Ubuntu系统的下载源,保证网络连接好的情况下执行:

sudo apt-get install nfs-kernel-server

创建用于挂载的目录并设置完全权限

mkdir /home/sqbin/nfs
sudo chmod 777 /home/sqbin/nfs

设置和启动NFS server。

修改NFS配置文件/etc/exports,添加如下一行:

/home/sqbin/nfs *(rw,no_root_squash,async)

其中/home/sqbin/nfs是NFS共享的根目录。

执行以下命令启动NFS server:

sudo /etc/init.d/nfs-kernel-server start

执行以下命令重启NFS server:

sudo /etc/init.d/nfs-kernel-server restart

设置单板为NFS客户端

本指导中的NFS客户端指运行OpenHarmony内核的设备。

  1. 硬件连接设置。

    OpenHarmony内核设备连接到NFS服务器的网络。设置两者IP,使其处于同一网段。比如,设置NFS服务器的IP为10.67.212.178/24,设置OpenHarmony内核设备IP为10.67.212.3/24,注意:此IP为内网私有IP地址,用户使用时有差异,以用户实际IP为准。

    OpenHarmony内核设备上的IP信息可通过ifconfig命令查看。

  2. 启动网络,确保单板到NFS服务器之间的网络通畅。

    启动以太网或者其他类型网络,使用ping命令检查到服务器的网络是否通畅。

    OHOS # ping 10.67.212.178 [0]Reply from 10.67.212.178: time=1ms TTL=63 [1]Reply from 10.67.212.178: time=0ms TTL=63 [2]Reply from 10.67.212.178: time=1ms TTL=63 [3]Reply from 10.67.212.178: time=1ms TTL=63 — 10.67.212.178 ping statistics — 4 packets transmitted, 4 received, 0 loss

    客户端NFS初始化,运行命令:

    OHOS # mkdir /nfs OHOS # mount 10.67.212.178:/home/sqbin/nfs /nfs nfs 1011 1000​

    将从串口得到如下回应信息,表明初始化NFS客户端成功。

    OHOS # mount 10.67.212.178:/home/sqbin/nfs /nfs nfs 1011 1000
    Mount nfs on 10.67.212.178:/home/sqbin/nfs, uid:1011, gid:1000
    Mount nfs finished.
    

该命令将服务器10.67.212.178上的/home/sqbin/nfs目录mount在OpenHarmony内核设备上的/nfs上。

说明: 本例默认nfs server已经配置可用,即示例中服务器10.67.212.178上的/home/sqbin/nfs已配置可访问。

mount命令的格式为:

mount <SERVER_IP:SERVER_PATH> <CLIENT_PATH> nfs

其中“SERVER_IP“表示服务器的IP地址;“SERVER_PATH“表示服务器端NFS共享目录路径;“CLIENT_PATH“表示设备上的NFS路径。

如果不想有NFS访问权限限制,请在Linux命令行将NFS根目录权限设置成777:

chmod -R 777 /home/sqbin/nfs

至此,NFS客户端设置完毕。NFS文件系统已成功挂载。

利用NFS共享文件

在NFS服务器下新建目录dir,并保存。在OpenHarmony内核下运行ls命令:

OHOS # ls /nfs

则可从串口得到如下回应:

OHOS # ls /nfs 
Directory /nfs:                 
drwxr-xr-x 0        u:0     g:0     dir

可见,刚刚在NFS服务器上新建的dir目录已同步到客户端(OpenHarmony内核系统)的/nfs目录,两者保持同步。

同样地,在客户端(OpenHarmony内核系统)上创建文件和目录,在NFS服务器上也可以访问,读者可自行体验。

平台差异性:

目前,NFS客户端仅支持NFS v3部分规范要求,因此对于规范支持不全的服务器,无法完全兼容。在开发测试过程中,建议使用Linux的NFS server,因为其对NFS支持很完善。

写在最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(OpenHarmony)资料用来跟着学习是非常有必要的。

想更深入的学习 OpenHarmony (鸿蒙南向)全栈开发的内容可点击领取一下学习文档,限时开源,先到先得~无套路领取!!

请点击→《鸿蒙南向开发学习路线》

OpenHarmony入门学习视频

image.png

鸿蒙南向开发实战教学视频image.png
获取以上完整鸿蒙HarmonyOS学习文档,请点击→《鸿蒙南向开发学习路线》
《OpenHarmony源码解析》:
  • 搭建开发环境
  • Windows 开发环境的搭建
  • Ubuntu 开发环境搭建
  • Linux 与 Windows 之间的文件共享
  • ……
    image.png
系统架构分析:
  • 构建子系统
  • 启动流程
  • 子系统
  • 分布式任务调度子系统
  • 分布式通信子系统
  • 驱动子系统
  • ……
    image.png
OpenHarmony面试题(内含参考答案)

image.png

获取以上完整鸿蒙HarmonyOS学习文档,请点击→《鸿蒙南向开发学习路线》

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值