Linux内核编程之内核及文件系统制作第二部分:NFS文件系统搭建

本文介绍了NFS文件系统的基本概念、工作原理以及如何在Linux上搭建NFS服务器。通过NFS,嵌入式设备可以扩展存储空间,并通过网络与主机无缝传输文件。详细步骤包括安装NFS服务、配置exports文件、重启服务,以及测试NFS挂载和卸载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二、NFS文件系统概念及其原理 

     NFS文件系统是可以用在不同操作系统之间通过网络传输文件,在嵌入式开发中,NFS主要是用作主机与嵌入式设备之间无缝传输文件,这样做的原因主要是因为设备的存储空间有限,所以使用此文件系统扩展嵌入式设备的存储空间,简单来说就是NFS服务器(也就相当于PC端)给NFS客户端(嵌入式设备)通过网络提供了存储空间,使得NFS客户端能够访问到服务器的文件并进行相应操作,当然这也和之后所说的Linux系统编程之文件系统的搭建有关系,之后会写到。

   NFS文件系统服务主要是基于客户机/服务器模式(C/S),NFS服务器就是提供输出文件(也是共享文件)的计算机(就是上面所说的PC端),NFS客户端(嵌入式设备)则是访问输出文件的计算机,它可以将输出目录挂载到自己系统中的目录中,然后像访问本地文件一样访问NFS服务器中的输出文件。

   当用户进程通过NFS客户端向NFS服务端存取文件时,其请求数据流程如下几点:

    1、首先用户访问网站程序,由程序在NFS客户端上发出NFS文件存取功能的询问请求,这时NFS客户端(即执行程序的服务器)RPC服务(portmap 或rpcbind服务)就会通过网络向NFS服务端的RPC服务(即portmap或rpcbind服务)的111端口发出NFS文件存取功能的询问请求。

    2、NFS服务端的RPC服务(即portmap或rpcbind服务)找到对应的已注册的NFSdaemon端口后,通知NFS客户端的RPC服务(即portmap或rpcbind服务)。

    3、此时NFS客户端就可获取到正确的端口,然后就直接与NFS daemon联机存取数据了。

    4、NFS客户端把数据存取成功后,返回给前端程序,告诉用户存取结果,作为网站用户,我们就完成了一次存取操作。

由于NFS的每一个服务功能会对应一个端口,这些端口可能不固定,由于程序间通信必须借助端口(tcp/udp为端到端通信),那么客户端就无法与服务器进行通信。因此需要一个中间的桥接机制,RPC进程即充当这样一个角色,RPC的端口固定为111,当NFS启动时,会向RPC进行注册, 那么客户端PRC就能与服务器RPC进行通信,从而进行文件的传输。

二、NFS服务的搭建

     1、安装nfs服务

       $ sudo apt-get install nfs-kernel-server nfs-common

     2、修改配置文件

        $ sudo vim /etc/exports

          注意事项:“exports”文件用于配置NFS服务器中输出的共享目录

          修改内容如下:

           /driver/rootfs  *(rw,sync,no_root_squash,no_subtree_check)

          注意事项:/root/rootfs为nfs服务客户端共享的目录,可自行创建,这个路径必须为绝对路径。

         “*”代表:允许所有的网段访问,也可以使用具体的IP

           192.168.1.* 指定网段,在该网段中的用户可以挂载

           ro : 只读

           rw:挂接此目录的客户端对该共享目录具有读写权限

           sync:资料同步写入内存和硬盘

           no_root_squash:root用户具有对根目录的完全管理访问权限。

           no_subtree_check:不检查父目录的权限

         3、重启nfs服务和rpcbind 服务

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

           $ sudo /etc/init.d/rpcbind  restart

    三、NFS服务测试 

        1、检查客户端和服务端的网络是否连通(ping命令)

            ping  服务主机IP

        2、查看服务端的共享目录

            showmount  -e  服务主机IP

        3、将与nfs服务客户端共享的目录挂载到本地

            mount -t nfs -o nolock 服务主机IP:目标机的共享目留  /mnt 

           注意事项:/mnt 指定将共享目录挂载的路径, -t nfs 指定挂在协议是那台ip地址的主机,mount nfs时,默认选项包括文件锁,依赖于portmap提供的动态端口分配功能,因此需要解锁,因此一般直接在指令中直接加上-o nolock。

        4、通过访问/mnt即可访问共享目录的内容

        5、取消挂载

            umount  /mnt

           注意事项:/mnt 指定将共享目录挂载的路径,要和挂载时的路径相同。

    

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值