Linux 下 NFS服务的搭建

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服务器程序软件包。

[cpp] view plaincopy
  1. fs@ubuntu:~$ sudo apt-get install nfs-kernel-server   
  2. [sudo] password for fs:   
  3. Reading package lists... Done  
  4. Building dependency tree         
  5. Reading state information... Done  
  6. nfs-kernel-server is already the newest version.  
  7. 0 upgraded, 0 newly installed, 0 to remove and 120 not upgraded.  
  8. fs@ubuntu:~$   

博主这里以前安装好了NFS

二、配置NFS资源
       NFS允许挂载的目录和权限在文件/etc/exports 中记性了定义。配置NFS服务器的关键也就是配置这些文件。

[cpp] view plaincopy
  1. fs@ubuntu:~$ cat /etc/exports  
  2. # /etc/exports: the access control list for filesystems which may be exported  
  3. #       to NFS clients.  See exports(5).  
  4. #  
  5. # Example for NFSv2 and NFSv3:  
  6. # /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)  
  7. #  
  8. # Example for NFSv4:  
  9. # /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)  
  10. # /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)  
  11. #  
  12. /home/fs/qiang  192.168.3.51(rw)  
  13. /home/fs/qiang  *(insecure,rw,async,root_squash)  
  14. 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服务

[cpp] view plaincopy
  1. fs@ubuntu:~$ sudo /etc/init.d/nfs-kernel-server  start  
  2.  * 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".  
  3.   Assuming default behaviour ('no_subtree_check').  
  4.   NOTE: this default has changed since nfs-utils version 1.0.x  
  5.   
  6. exportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/home/fs/qiang".  
  7.   Assuming default behaviour ('no_subtree_check').  
  8.   NOTE: this default has changed since nfs-utils version 1.0.x  
  9.   
  10.                                                                   [ OK ]  
  11.  * Starting NFS kernel daemon                                     [ OK ]   
  12. fs@ubuntu:~$ sudo /etc/init.d/nfs-kernel-server  start  

2、停止NFS服务

[cpp] view plaincopy
  1. fs@ubuntu:~$ sudo /etc/init.d/nfs-kernel-server  stop  
  2.  * Stopping NFS kernel daemon                                     [ OK ]   
  3.  * Unexporting directories for NFS kernel daemon...               [ OK ]   
  4. fs@ubuntu:~$   

3、重新启动NFS服务

[cpp] view plaincopy
  1. fs@ubuntu:~$ sudo /etc/init.d/nfs-kernel-server  restart  
  2.  * Stopping NFS kernel daemon                                     [ OK ]   
  3.  * Unexporting directories for NFS kernel daemon...               [ OK ]   
  4.  * 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".  
  5.   Assuming default behaviour ('no_subtree_check').  
  6.   NOTE: this default has changed since nfs-utils version 1.0.x  
  7.   
  8. exportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/home/fs/qiang".  
  9.   Assuming default behaviour ('no_subtree_check').  
  10.   NOTE: this default has changed since nfs-utils version 1.0.x  
  11.   
  12.                                                                   [ OK ]  
  13.  * Starting NFS kernel daemon                                     [ OK ]   
  14. fs@ubuntu:~$   

4、查看NFS服务当前状态

[cpp] view plaincopy
  1. fs@ubuntu:~$ sudo /etc/init.d/nfs-kernel-server  status  
  2. nfsd running  
  3. fs@ubuntu:~$   


四、查看NFS服务器的共享资源

[cpp] view plaincopy
  1. fs@ubuntu:~$ showmount -e 192.168.3.51  
  2. Export list for 192.168.3.51:  
  3. /home/fs/qiang (everyone)  
  4. fs@ubuntu:~$   

 

五、挂载共享资源

这里应该在客户端那儿执行,使用mount命令

[cpp] view plaincopy
  1. fs@ubuntu:~$ sudo mount -t nfs 192.168.3.51:/home/fs/qiang /mnt/nfs  
  2. fs@ubuntu:~$  

-t 指类型,这里是NFS;

192.168.3.51是服务端的IP地址;

/home/fs/qiang 是服务端的共享目录;

/mnt/nfs是挂载点,是客户端的目录;

 当客户端使用mount命令讲NFS服务器上的到处文件系统挂载到本地后,接下来对挂载的文件系统的操作与使用本地文件系统没有任何区别。

 

六、卸载共享资源

[cpp] view plaincopy
  1. fs@ubuntu:~$ sudo umount /mnt/nfs  

需要说明的是,当有用户正在使用某个已加载的共享目录上的文件时,则不能卸载该文件系统,如果用户确认无误,可以使用“umount -f”命令强行卸载共享的目录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GCC 参数详解

From: http://www.cppblog.com/SEMAN/archive/2005/11/30/1440.html 先附上三篇相关文章: LINUX下的C编译器GCC简介 linux上的C/C编译器gcc/egcs详解 gcc和g的区别(很详细的描述) [介绍] gcc and g分别是gnu的c & c编译器 gcc/g在执行编译工作的时候&#…

电子客票状态整理

1.OPEN FOR USE:客票有效 2.VOID:已作废 3.REFUND:已退票 4.CHECK IN:正在办理登机 5.USED/FLOWN:客票已使用 6.SUSPENDED:系统处理,或人为挂起禁止使用该票 7.PRINT/EXCH:电子客票已…

Linux 系统应用编程——线程基础

传送门:Linux多线程编程实例解析 . linux多线程编程——同步与互斥 . 传统多任务操作系统中一个可以独立调度的任务(或称之为顺序执行流)是一个进程。每个程序加载到内存后只可以唯一地对应创建一个顺序执行流,即传统意义的进程。…

利用indent格式化源文件的脚本

脚本一&#xff1a;格式化指定目录下的源文件(*.h, *.cpp...) #!/bin/sh# 格式化某目录下所有*.h, *.c, *.cpp, *.hh文件, 并将文件换行符转换成Linux下的格式if [ $# -lt 1 ]; thenecho "Usage: $0 <dir>"exit 1elsedir$1fi# format a source file(*.c, *.h,…

apple mach-o linker (id) error

在网上查了下&#xff0c;有网友说是因为有变量重名&#xff0c;仔细检查了下代码&#xff0c;UIGraphicsEndImageContext()写成uigraphicsendimagecontext()了&#xff0c;改过来就编译通过了。转载于:https://www.cnblogs.com/cc-Cheng/p/3341242.html

Struts入门(三)深入Struts用法讲解

访问Servlet APIAction搜索顺序动态方法调用指定多个配置文件默认ActionStruts 后缀接收参数处理结果类型1.访问Servlet API 首先我们了解什么是Servlet API httpRequest、httpResponse、servletContext  3个api对应jsp面向对象&#xff1a;request、response、application …

linux errno定义

以下内容来自于Ubuntu系统&#xff0c;请看执行情况&#xff1a; [zcmasm-generic #6]$pwd /usr/include/asm-generic [zcmasm-generic #7]$ls errno* -lh -rw-r--r-- 1 root root 1.6K Jun 19 2013 errno-base.h -rw-r--r-- 1 root root 5.2K Jun 19 2013 errno.h [zcmasm-g…

linux多线程编程——同步与互斥

一、 为什么要用多线程技术&#xff1f; 1、避免阻塞&#xff0c;大家知道&#xff0c;单个进程只有一个主线程&#xff0c;当主线程阻塞的时候&#xff0c;整个进程也就阻塞了&#xff0c;无法再去做其它的一些功能了。 2、避免CPU空转&#xff0c;应用程序经常会涉及到RPC&am…

黑马程序员_泛型

--------------------ASP.NetAndroidIOS开发、.Net培训、期待与您交流&#xff01; -------------------- 1. 泛型 1.概述 泛型是为了解决了集合中存储对象安全问题&#xff0c;如果集合中存数了不同类型的对象&#xff0c;那么读取出来后&#xff0c;操作取出的对象以为不…

菜鸟成长记(十一)----- 操蛋的2016与未知的2017

现在已经2017.1.16号了&#xff0c;早就说着要写篇总结&#xff0c;骂骂特么操蛋的自己&#xff0c;当然这两三年来在这里骂的真特么不在少数了&#xff0c;但是都是特么一拖再拖&#xff0c;刚刚明明是在看TPO阅读的&#xff0c;但是特么实在是无法集中精神的看&#xff0c;作…

VS.NET版本与VC版本对应关系

vc6 -> vc6vs2003 -> vc7vs2005 -> vc8vs2008 -> vc9vs2010 -> vc10vs2012 -> vc11vs2013 -> vc12仅供参考&#xff01;

sql2008 获取表结构说明

SELECT 表名 case when a.colorder1 then d.name else end, 表说明 case when a.colorder1 then isnull(f.value,) else end, 字段序号 a.colorder, 字段名 a.name, 标识 case when COLUMNPROPERTY( a.id,a.name,IsIdentity)1 th…

Linux ALSA声卡驱动之四:Control设备的创建

声明&#xff1a;本博内容均由http://blog.csdn.net/droidphone原创&#xff0c;转载请注明出处&#xff0c;谢谢&#xff01; Control接口 Control接口主要让用户空间的应用程序&#xff08;alsa-lib&#xff09;可以访问和控制音频codec芯片中的多路开关&#xff0c;滑动控件…

【linux】信号量的值定义

参见文件&#xff1a;/usr/include/bits/signum.h /* Signal number definitions. Linux version.Copyright (C) 1995-2013 Free Software Foundation, Inc.This file is part of the GNU C Library.The GNU C Library is free software; you can redistribute it and/ormodi…

汇编学习笔记-序章

最近突然对汇编语言开始感兴趣&#xff0c;于是说干就干了。 之前也自学过一点汇编&#xff0c;是跟着王爽老师的《汇编语言(第3版) 》这本书学习的&#xff0c;已经是有5 6前年的样子了。当时觉得这本书写的非常通俗易懂是一本非常好的启蒙书籍&#xff0c;但是最近在翻阅的时…

jQuery 入门教程(5): 显示/隐藏内容

2019独角兽企业重金招聘Python工程师标准>>> jQuery的hide()和show()可以用来显示和隐藏内容。比如下面的例子&#xff1a;jQuery的hide()和show() 可以用来显示和隐藏内容。比如下面的例子&#xff1a; [html] view plain copy print ? <!doctype html> …

键盘键值表

键盘键值表 值 描述 0x1 鼠标左键 0x2 鼠标右键 0x3 CANCEL 键 0x4 鼠标中键 0x8 BACKSPACE 键 0x9 TAB 键 0xC CLEAR 键 0xD ENTER 键 0x10 SHIFT 键 0x11 CTRL 键 0x12 MENU 键 0x13 PAUSE 键 0x14 CAPS LOCK 键 0x1B ESC 键 0x20 SPACEBAR 键 0x21 PAGE UP 键 0x22 PAGE DOW…

Django QuerySet API文档

在查询时发生了什么(When QuerySets are evaluated) QuerySet 可以被构造&#xff0c;过滤&#xff0c;切片&#xff0c;做为参数传递&#xff0c;这些行为都不会对数据库进行操作。只要你查询的时候才真正的操作数据库。 下面的 QuerySet 行为会导致执行查询的操作&#xff1a…

Spring自动扫描配置及使用方法

2019独角兽企业重金招聘Python工程师标准>>> 首先&#xff0c;检查一下你lib下有没有 common-annotations.jar 这个jar包 没有的话要导入工程。 下一步配置spring的配置文件applicationContex.xml&#xff0c;加入命名空间 红色为需要添加的内容 <beans xmlns…