zoukankan      html  css  js  c++  java
  • 配置NFS服务器

    NFS简介

    NFS 即网络文件系统(Network File-System),一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。它可以通过网络,让不同机器、不同系统之间可以实现文件共享。通过 NFS,可以访问远程共享目录,就像访问本地磁盘一样。NFS只是一种文件系统,本身并没有传输功能,是基于 RPC(远程过程调用)协议实现的,采用 C/S 架构。
    嵌入式 Linux 开发中,通常需要在主机上配置 NFS 服务器,将某系统特定目录共享给目标系统访问和使用。通过 NFS,目标系统可以直接运行存放于主机上的程序,可以减少对目标系统 FLASH 的烧写,既减少了对 FLASH 损害,同时也节省了烧写 FLASH 所花费的时间。

    NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。

    NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它

    的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现

    PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。

    NFS安装

    NFS的安装是非常简单的,只需要两个软件包即可,而且在通常情况下,是作为系统的默认包安装的。

    • nfs-utils-* :包括基本的NFS命令与监控程序 
    • portmap-* :支持安全NFS RPC服务的连接

    1、查看系统是否已安装NFS

    apt-cache search nfs-*
    apt-cache search portmap*

    2、如果当前系统中没有安装NFS所需的软件包,需要手工进行安装。

    系统默认已安装了nfs-utils portmap 两个软件包。

    apt-get install portmap nfs-kernel-server

    认识NFS

    • nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器;
    • mountd:它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利通过nfsd登录NFS服务器后,在使用NFS服务所提供的文件前,还必须通过文件使用权限的验证。它会读取NFS的配置文件/etc/exports来对比客户端权限。
    • portmap:主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,portmap会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务。

    NFS配置

    NFS的常用目录

    /etc/exports                           NFS服务的主要配置文件
    /usr/sbin/exportfs                   NFS服务的管理命令
    /usr/sbin/showmount              客户端的查看命令
    /var/lib/nfs/etab                      记录NFS分享出来的目录的完整权限设定值
    /var/lib/nfs/xtab                      记录曾经登录过的客户端信息

    NFS中exports的配置规则

    <输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]

    a. 输出目录:

    输出目录是指NFS系统中需要共享给客户机使用的目录;

    b. 客户端:

    客户端是指网络中可以访问这个NFS输出目录的计算机

    客户端常用的指定方式

      • 指定ip地址的主机:192.168.0.200
      • 指定子网中的所有主机:192.168.0.0/24 192.168.0.0/255.255.255.0
      • 指定域名的主机:david.bsmart.cn
      • 指定域中的所有主机:*.bsmart.cn
      • 所有主机:*

    c. 选项:

    选项用来设置输出目录的访问权限、用户映射等。

    NFS主要有3类选项:

    访问权限选项

      • 设置输出目录只读:ro
      • 设置输出目录读写:rw

    用户映射选项

      • all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
      • no_all_squash:与all_squash取反(默认设置);
      • root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
      • no_root_squash:与rootsquash取反;
      • anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
      • anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);

    其它选项

      • secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
      • insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
      • sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
      • async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
      • wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
      • no_wdelay:若有写操作则立即执行,应与sync配合使用;
      • subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
      • no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

    配置过程如下:

    1. 添加NFS目录修改/etc/exports 文件,在其中增加 NFS 目录(需要 root 权限,请使用 sudo 命令)并指定访问主机的 IP 以及访问权限。

    $ sudo vi /etc/exports

    如增加/home/chenxibing/nfs 目录,并允许 IP 为 192.168.1.*的任何系统进行 NFS 访问,

    增加内容如下:

    /home/chenxibing/nfs 192.168.1.*(rw,sync,no_root_squash)

    或者允许任何 IP 访问,则增加内容如下:

    /home/chenxibing/nfs *(rw,sync,no_root_squash)

    启动NFS服务

    启动NFS

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

    在 NFS 服务已经启动的情况下,如果修改/etc/exports 了文件,可以重启 NFS 服务,刷 新 NFS 共享目录,或者输入 exports -rv 命令重新导出 NFS 共享目录。

    $ sudo exportfs -rv 

    测试

    3. 测试NFS服务器

    首先可以在主机上进行自测,将已经设定好的 NFS 共享目录 mount 到另外一个目录下,看能否成功。假定主机 IP 为 192.168.1.138,NFS 共享目录为/home/chenxibing/nfs,可使用如下命令进行测试:

    $ sudo mount -t nfs 192.168.1.138:/home/chenxibing/nfs /mnt

    如果指令运行没有出出错,则 NFS 挂载成功,在/mnt 目录下应该可以看到/home/chenxibing/nfs 目录下的内容。

    启动评估套件并进入 Linux。将目标板接入局域网或者通过交叉网线与主机直接相连,设定目标板的 IP,使之与主机在同一网段,然后进行远程 mount 操作。

    # ifconfig eth0 192.168.1.136
    # ping 192.168.1.138
    # mount -t nfs 192.168.1.138:/home/chenxibing/nfs /mnt -o nolock

    在进行远程挂载之前,最好先用 ping 命令检查网络通信是否正常,只有在能 ping 通的情况下,才能进行正常挂载,否则请检查网络。如果在已经 ping 通的情况下,远程挂载出现错误,请检查主机和目标机的其它设置。

    NFS 基于 RPC 协议,进行 NFS 挂载,客户端需要运行 portmap 服务,如果出现“RPC:Timed out”的错误,则有可能是目标板尚未启动 portmap 服务。解决方法就是在目标板启动portmap 服务:

    # portmap&
  • 相关阅读:
    2.12 使用@DataProvider
    2.11 webdriver中使用 FileUtils ()
    Xcode8 添加PCH文件
    The app icon set "AppIcon" has an unassigned child告警
    Launch Image
    iOS App图标和启动画面尺寸
    iPhone屏幕尺寸、分辨率及适配
    Xcode下载失败 使用已购项目页面再试一次
    could not find developer disk image
    NSDate与 NSString 、long long类型的相互转化
  • 原文地址:https://www.cnblogs.com/yeqluofwupheng/p/7406989.html
Copyright © 2011-2022 走看看