NFS是Network File System的简写,即网络文件系统。
网络文件系统是许多操作系统都支持的文件系统中的一种,也被成为NFS。NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户可以像访问本地文件一样访问远端系统上的文件。
NFS所提供的共享文件服务是建议在高度信任的基础上的,所以,向其他用户释放共享资源之前,一定要确保对方的可靠性。
NFS的应用:在我们嵌入式开发过程中,NFS是一个重要环节,我们常常·把“根文件”系统放在主机上,然后在开发板启动的时候通过NFS来挂载主机上的根文件系统。这样省去了每次都要把文件系统烧写到存储设备上的步骤,可以说比tftp更方便。
下面我们将以Ubuntu为例,讲解一下NFS的配置过程:
Server: PC
CLient : ARM(这里博主是用同一台机器模拟的,主要是安装过程)
一、配置服务器端
使用sudo apt-get install nfs-kernel-server命令,安装NFS服务器程序软件包。
fs@ubuntu:~$ sudo apt-get install nfs-kernel-server [sudo] password for fs: Reading package lists... Done Building dependency tree Reading state information... Done nfs-kernel-server is already the newest version. 0 upgraded, 0 newly installed, 0 to remove and 120 not upgraded. fs@ubuntu:~$
博主这里以前安装好了NFS
二、配置NFS资源
NFS允许挂载的目录和权限在文件/etc/exports 中记性了定义。配置NFS服务器的关键也就是配置这些文件。
fs@ubuntu:~$ cat /etc/exports # /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check) # /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check) # /home/fs/qiang 192.168.3.51(rw) /home/fs/qiang *(insecure,rw,async,root_squash) fs@ubuntu:~$
其中/home/fs/qiang 是要共享的目录,这里必须用绝对路径;
* 代表允许所有的网络段访问;当然这里也可以/home/fs/qiang 192.168.3.51(rw) 设置允许访问的IP地址;
insecure:NFS通过1024以上的端口发送;
rw是可读可写权限;
async是NFS在写入数据前可以相应请求;
root_squash 是 root 用户具有根目录的完全管理访问权限;
当然,这里参数还有好多,大家可以查阅下资料;
三、手动启停NFS服务
1、启动NFS服务
fs@ubuntu:~$ sudo /etc/init.d/nfs-kernel-server start * Exporting directories for NFS kernel daemon... exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.3.51:/home/fs/qiang". Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.x exportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/home/fs/qiang". Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.x [ OK ] * Starting NFS kernel daemon [ OK ] fs@ubuntu:~$ sudo /etc/init.d/nfs-kernel-server start
2、停止NFS服务
fs@ubuntu:~$ sudo /etc/init.d/nfs-kernel-server stop * Stopping NFS kernel daemon [ OK ] * Unexporting directories for NFS kernel daemon... [ OK ] fs@ubuntu:~$
3、重新启动NFS服务
fs@ubuntu:~$ sudo /etc/init.d/nfs-kernel-server restart * Stopping NFS kernel daemon [ OK ] * Unexporting directories for NFS kernel daemon... [ OK ] * Exporting directories for NFS kernel daemon... exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.3.51:/home/fs/qiang". Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.x exportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/home/fs/qiang". Assuming default behaviour ('no_subtree_check'). NOTE: this default has changed since nfs-utils version 1.0.x [ OK ] * Starting NFS kernel daemon [ OK ] fs@ubuntu:~$
4、查看NFS服务当前状态
fs@ubuntu:~$ sudo /etc/init.d/nfs-kernel-server status nfsd running fs@ubuntu:~$
四、查看NFS服务器的共享资源
fs@ubuntu:~$ showmount -e 192.168.3.51 Export list for 192.168.3.51: /home/fs/qiang (everyone) fs@ubuntu:~$
五、挂载共享资源
这里应该在客户端那儿执行,使用mount命令
fs@ubuntu:~$ sudo mount -t nfs 192.168.3.51:/home/fs/qiang /mnt/nfs fs@ubuntu:~$
-t 指类型,这里是NFS;
192.168.3.51是服务端的IP地址;
/home/fs/qiang 是服务端的共享目录;
/mnt/nfs是挂载点,是客户端的目录;
当客户端使用mount命令讲NFS服务器上的到处文件系统挂载到本地后,接下来对挂载的文件系统的操作与使用本地文件系统没有任何区别。
六、卸载共享资源
fs@ubuntu:~$ sudo umount /mnt/nfs
需要说明的是,当有用户正在使用某个已加载的共享目录上的文件时,则不能卸载该文件系统,如果用户确认无误,可以使用“umount -f”命令强行卸载共享的目录。