NFS

    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测试阶段,可能存在功能不稳定的情况,建议您不要用于正式商用产品当中。

    1. 搭建NFS服务器

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

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

        1. sudo chmod 777 /home/sqbin/nfs
      2. 设置和启动NFS server。

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

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

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

        执行以下命令启动NFS server:

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

        执行以下命令重启NFS server:

    1. 设置单板为NFS客户端

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

      1. 硬件连接设置。

        OpenHarmony内核设备连接到NFS服务器的网络。设置两者IP,使其处于同一网段。比如,设置NFS服务器的IP为10.67.212.178/24,设OpenHarmony内核设备IP为10.67.212.3/24。

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

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

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

        1. OHOS # ping 10.67.212.178
        2. [0]Reply from 10.67.212.178: time=1ms TTL=63
        3. [1]Reply from 10.67.212.178: time=0ms TTL=63
        4. --- 10.67.212.178 ping statistics ---
        5. 4 packets transmitted, 4 received, 0 loss
        1. OHOS # mkdir /nfs
        2. OHOS # mount 10.67.212.178:/home/sqbin/nfs /nfs nfs 1011 1000

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

        1. OHOS # mount 10.67.212.178:/home/sqbin/nfs /nfs nfs 1011 1000
        2. Mount nfs finished.

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

        mount命令的格式为:

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

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

        1. chmod -R 777 /home/sqbin/nfs

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

    1. 利用NFS共享文件

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

      1. OHOS # ls /nfs

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

      1. OHOS # ls /nfs
      2. Directory /nfs:
      3. drwxr-xr-x 0 u:0 g:0 dir

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

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

      平台差异性