NFS(Network File System)

NFS允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序可以象访问本地文件一样访问远

端系统上的文件。
优点:
    本地工作站使用更少的磁盘空间,因为通常的数据可以存放在一台机器上而且可以通过网络访问到。
     用户不必在每个网络上机器里头都有一个home目录。Home目录 可以被放在NFS服务器上并且在网络上处处

可用。
     诸如软驱,CDROM,和 Zip? 之类的存储设备可以在网络上面被别的机器使用。这可以减少整个网络上的

可移动介质设备的数量。

配置:(依然建议在selinux关闭下做实验。)
软件包:nfs-utils  portmap
安装:yum install -y  nfs-utils portmap
守护进程: rpc.nfsd 、rpc.lockd、rpciod、rpc.mountd、rpc.rquotad、rpc.startd
rpc.nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器
rpc.mountd:它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利通过rpc.nfsd登录NFS服务

后,在使用NFS服务所提供的文凭前,还必须通过文件使用权限的验证。它会读取NFS的配置文件/etc/exports

来对比客户端权限。
portmap:portmap的主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服

务)时,portmap会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务


(这三个服务进程是运行NFS服务器所必须的服务。)
脚本:/etc/init.d/nfs 、/etc/init.d/nfslock(这个文件是NFS的主要配置文件,不过系统并没有默认值,所

以这个文件不一定会存在,可能要使用vim手动建立,然后在文件里面写入配置内容。)
端口:2049(nfsd) ,其他端口portmap(111)分配
配置文件:/etc/exports  、/etc/sysconfig/nfs
校验服务是否运行:
    rpcinfo -p
    service portmap  status
    service nfs    status
启动服务  
    service nfs  start
停止服务
    service  nfs  stop
重启服务
    service nfs   restart

当修改了/etc/exports文件后,
exportfs -r 命令会刷新服务器的共享列表
exportfs -v 命令会显示服务器上的共享目录和选项列表
exportfs -a 命令会导出/etc/exports中列出的所有共享或者以参数命名的共享
exportfs -u 命令会取消导出以参数命名的共享;
显示主机的NFS服务器信息:showmouont [NFS服务器主机地址]
显示NFS服务器的输出列表:showmount –e [NFS服务器主机地址]
显示NFS服务器中被挂载的共享目录:showmount –d [NFS服务器主机地址]
显示NFS服务器的客户机与被挂载的目录:showmount –a [NFS服务器主机地址]


NFS服务器
在/etc/exports文件中定义导出目录
每个条目都指定文件系统被导出到的主机,以及相关的权限和选项
例如:
/var/ftp/pub                    *.example(ro,sync) bigserver.redhat.com(rw,sync)
/root/presentations             server2.example.com(rw,sync)
/data                           192.168.10.0/255.255.255.0(sync)
   每个条目指定一个导出的目录和他的访问权限。可以指定一对或多对主机/权限,但是不能将条目分成若干

行。主机名可以包含通配符,如上所示。也可用通配符来匹配主机名或域名:station1*将与station1、

station2、station11等等匹配;*.example.com将与station1.example.com等等匹配。
   主机的IP地址可以被单独指定,也可以是网络/子网掩码格式。默认情况下,/etc/exports中的条目以只读

形式导出。
    选项和主机之间必须不能使用空格间隔。
指定的选项有以下几种:
ro:只读访问
rw:读写访问
sync:所有数据在请求时写入共享
async:NFS在写入数据前可以相应请求
all_squash:共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash:保留共享文件的UID和GID(默认)
root_squash:root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas:root用户具有根目录的完全管理访问权限

用于防火墙的端口选项
   要在NFS中使用防火墙,必须使用通常有portmap分配的端口的服务器使用静态端口。这些服务包括:mountd

、statd和lockd守护进程。
   nfs脚本在/etc/sysconfig/nfs文件中查找在启动守护进程是使用的选项。MOUNTD_PORT、STATD_PORT、

RQUOTAD_PORT、STATD_OUTING_PORT、LOCKD_TCPPORT和LOCKD_UDPPORT变量都可以使用强制这些选项守护进程在

指定的端口启动。该文件默认安装中可能不存在,可以自行创建即可。
客户端NFS
   用/etc/fstab文件指定网络挂载目录
   或者直接用mount 命令 挂载即可
   如:mount -t nfs -o -w=1024 192.168.0.170:/sharedfs /project
客户端NFS自动挂载
  方法一,/etc/fstab

netfs服务会使用文件/etc/fstab作为参考, 所以像NFS共享的会被自动执行。

如下是一个/etc/fstab中的挂载NFS的一条记录。

        server1.example.com:/share/directory /mnt/share nfs defaults 0 0
方法二, autofs 服务:

使用/etc/fstab的一个缺点是:不管用户访问NFS的次数和时间,系统总是会使用资源来维护这个NFS挂载。虽

然对于一两个NFS挂载的时候这不是问题,但是如果系统在维护很多NFS挂载的时候,系统性能会受到影响,一

个替代方法就是使用基于kernel的自动挂载工具:他可以在需要的时候自动的挂载NFS。

autofs 服务会根据/etc/auto.master文件来控制自动挂载命令:automount的命令可以更加方便的指定挂载点

,主机名, 输出目录等等。

autofs的配置文件以父-子关系来组织,主配置文件(/etc/auto.master) 列出了所有的挂载点,然后他会连接

到一个特定的映射类型, 这个类型可以是配置文件,程序, NIS映射或者其他挂载方式,auto.master文件包含

了如下内容。

    用于指定本地挂载点,指定如何挂载,最通常的NFS

挂载做法是使用一个文件,这个文件通常命名成auto., 是在auto.master指定的

挂载点,一个NFS类型的auto.的内容如下:

    - : 使用本地挂载点替换

,该目录必须手动创建。

可以使用nfs的选项替换 ,多个选项之间使用“,”分开,如果需要更多的信息查看man fstab. 确

定在options列表前使用了符号"-"。

使用你的NFS服务器替换如上的

使用NFS服务器的输出路径替换如上的 .

可以使用nfs的选项替换

autofs配置文件可以用于很多中挂载方式和不同的文件系统上,特使是在NFS的挂载上特别有用,举例来说,有

些单位把所有的/home目录集中于一台NFS服务器上, 然后在每个节点上配置auto.master指向auto.home,使得

每个节点都可以通过autofs挂载/home目录。所有的用户都可以在任何一台工作站上访问自己/home/下的的数

据和配置文件,该案中的auto.master看起来会像如下所示。

    /home /etc/auto.home 这个文件设置了/home/挂载点被配置到了/etc/auto.home文件上,auto.home看起

来应该如下:

    * -fstype=nfs,soft,intr,rsize=8192,wsize=8192,nosuid,tcp server.example.com
例如操作步骤:
     1、vim /etc/auto.master
        /mnt   /etc/zuto.shared
     2、vim /etc/auto.shared
        shared     -soft,intr,rw    192.168.0.170:/shared
        *          -soft,intr,rw    192.168.0.170:/shared/&
  重启服务即可。