美文网首页
Ubuntu 12.04下NFS安装配置图解

Ubuntu 12.04下NFS安装配置图解

作者: oliverabc | 来源:发表于2017-11-07 09:21 被阅读62次

    姓名:张猛

    【嵌牛导读】:NFS是一种分布式的文件系统,用于共享文件和打印机。它允许用户调用挂载远端的文件系统或设备来实现共享,使用方式与挂载本机的文件系统一样。NFS使用“客户-服务器”模型。在这种模型中,服务器输出需要共享的目录,客户可通过网络挂载这些目录并访问其中的文件。以前只是听别人说,现在终于用到了,感觉还不错,总结一些自己在Ubuntu下安装配置的过程。

    【嵌牛鼻子】:NFS   挂载  mount    

    【嵌牛提问】:如何在自己的linux上安装配置nfs服务

    【嵌牛正文】:首先看一张图,说明我们日常在嵌入式领域中nfs扮演的角色


    下面我是昨天晚上的具体安装步骤:

    1、执行命令:sudo apt-get install nfs-kernel-server


    2.执行命令:mkdir /home/song/nfs建立一个nfs服务的专有的文件夹,这里路径依自己喜好而定!不过要记得这个路径


    3.3、建立好文件夹后,接着执行命令:sudo vim /etc/exports配置nfs,并在里面添加下面一句代码



    /home/wooya/nfs *(rw,sync,no_root_squash,no_subtree_check)这一行的含义是:

    /home/wooya/nfs:与nfs服务客户端共享的目录,这个路径必须和你前面设置的文件的路径一致!

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

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

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

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

    no_subtree_check:不检查父目录的权限。

    5、修改完上述配置文件保存退出。

    6、执行命令:sudo /etc/init.d/portmap restart重启portmap服务。nfs是一个RPC程序,使用它前,需要映射好端口,通过portmap设定。


    7、执行命令:sudo /etc/init.d/nfs-kernel-server restart重启nfs服务。


    8.接下来就可以进行目标板子的挂载了

    目标机上电,目标板上的Linux操作系统起来以后,在PC机上Ubuntu操作系统上打开minicom,通过串口向目       标板发送shell命令。

    像主机操作一样,首先检查目标板(宿主机)的IP是否与宿主机的IP再同一个地址段上,否则用上面用过的命令         进行检查和设置本地IP。

    设置完IP之后可以ping一下检查网卡、网线是否连接正确。

    既在minicom中输入# ping 192.168.1.101 (宿主机IP地址)连接成功会不断的打印信息。

    接下来就是在开发板上进行挂载mount

    # mount  -onolock192.168.1.101:/opt/nfsroot    /mnt

    其中:/opt/nfsroot是 宿主机的共享目录;  /mnt是开发板的挂载目录

    如果你想取消挂在可以使用命令# umount  /mnt就可以了

    PS 一下引用自:http://www.cnblogs.com/jingzhishen/p/3163742.html

    其它nfs常用的参数有:

    ro

    只读访问

    rw 读写访问sync 所有数据在请求时写入共享

    async

    nfs在写入数据前可以响应请求

    secure

    nfs通过1024以下的安全TCP/IP端口发送

    insecure

    nfs通过1024以上的端口发送

    wdelay

    如果多个用户要写入nfs目录,则归组写入(默认)

    no_wdelay

    如果多个用户要写入nfs目录,则立即写入,当使用async时,无需此设置。

    hide 在nfs共享目录中不共享其子目录

    no_hide

    共享nfs目录的子目录

    subtree_check

    如果共享/usr/bin之类的子目录时,强制nfs检查父目录的权限(默认)

    no_subtree_check

    和上面相对,不检查父目录权限

    all_squash

    共享文件的UID和GID映射匿名用户anonymous,适合公用目录。

    no_all_squash

    保留共享文件的UID和GID(默认)

    root_squash

    root用户的所有请求映射成如anonymous用户一样的权限(默认)

    no_root_squas

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

    anonuid=xxx

    指定nfs服务器/etc/passwd文件中匿名用户的UID

    anongid=xxx

    指定nfs服务器/etc/passwd文件中匿名用户的GID

    3、重启服务

    $sudo /etc/init.d/portmap restart

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

    4、测试nfs

    此时可以运行以下命令来显示一下共享出来的目录:

    $showmount -e

    关于NFS配置错误

    ubuntu测试本机nfs出错:mount.nfs:access denied by server while mounting...

    相信出现这种错误的应该有一些人吧,没关系,一会就帮你搞定。

    首先运行:sudo vim /etc/exports

    在其文本后添加

    /home/work 192.168.1.*(rw,sync,no_root_squash)

    然后保存退出。

    注意,上面的主机IP可能不能使用*来通配,否则在客户机上会出现访问拒绝,但是如果我们要设置局域网访问呢?怎么办,使用子网掩码例如:10.1.60.0/255.255.254.0即可让10.1.60.*和10.1.61.*都可以访问,还可以使用10.1.60/23这种方式类确定子网。

    上面设置了只要在192.168.1.*这个网段的所有IP地址用户都可以访问共享目录,但我只想让一个IP地址访问,比如 192.168.1.101(把刚才192.168.1.*直接换成192.168.1.101不行么?应该可以吧,没试过),那么就可以这样设置了。

    可以通过设定/etc/hosts.deny和/etc/hosts.allow文件来限制网络服务的存取权限。

    ***/etc/hosts.deny***

    portmap:ALL

    lockd:ALL

    mountd:ALL

    rquotad:ALL

    statd:ALL

    ***/etc/hosts.allow***

    portmap:192.168.1.101

    lockd:192.168.1.101

    mountd:192.168.1.101

    rquotad:192.168.1.101

    statd:192.168.1.101

    同时使用这两个文件就会使得只有ip为192.168.1.101的机器使用NFS服务。你的target

    board的ip地址设定为192.168.1.101,这样就可以了。

    启用新的配置

    exportfs 指令主要的三个作用:

    1. exportfs -rv 重新读取共享配置文件,马上生效

    2. exportfs -auv 马上停止所有本机上的NFS共享,并不改变 /etc/exports 文件的内容,只是当前停止共享

    3. exportfs -av 显示所有当前机器上的NFS共享目录信息

    我的/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/yingc/work *(rw,async,no_root_squash)

    /home/yingc/work/durian/solution/output *(rw,async,no_root_squash)

    /home/yingc/work/durian1/solution/output *(rw,async,no_root_squash)

    /home/yingc/work/durian/buildroot/package/netscript/sbin1 *(rw,async,no_root_squash)

    #

    开发板中自启动脚本挂载文件:

    ############################################################

    # mount host dir

    ############################################################

    mount -t nfs -o rw,nolock,udp 192.168.110.10:/home/yingc/work/durian/solution/ob

    mount -t nfs -o rw,nolock,udp 192.168.110.10:/home/yingc/work/durian/buildroot/t

    ubuntu14.10的相关配置:

    1 .yingc@yingc:~$ sudo apt-getinstall portmap

    2 .正在读取软件包列表... 完成

    3 .正在分析软件包的依赖关系树

    4 .正在读取状态信息... 完成

    5 .注意,选取 rpcbind 而非 portmap

    yingc@yingc:~$ sudo apt-getinstall portmap

    正在读取软件包列表... 完成

    正在分析软件包的依赖关系树

    正在读取状态信息... 完成

    注意,选取 rpcbind 而非 portmap

    1.sudo apt-getinstall nfs-kernel-server

    2.sudo vim /etc/exports

    添加:

    /opt/nfs  *(rw,sync,all_squash,no_subtree_check)

    注意:使用上面这个,碰到了权限问题,开发板上不能创建文件等,

    但是在pc的对应目录上可以直接创建(不需要sudo权限)

    此时可以使用:

    /opt/nfs *(rw,async,no_root_squash)

    再restart即可:

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

    相关文章

      网友评论

          本文标题:Ubuntu 12.04下NFS安装配置图解

          本文链接:https://www.haomeiwen.com/subject/uijdmxtx.html