NFS服务器配置

目录

NFS是什么

NFS工作原理

NFS服务器配置

NFS客户端挂载

NFS端口固定

NFS自动挂载

NFS是什么?

     NFS即网络文件系统,使用户可以像访问本地磁盘一样访问远程服务器上的数据。它可以提供文件搜索、文件列表、目录管理、获取文件属性和文件读写等。其优点是,可以将用户的数据集中存放于服务器,而节省计算机磁盘的使用量。

NFS工作原理

1. 客户端向RPC端口发送请求,要求和NFS程序通信

2. RPC程序将NFS服务端的端口回发给客户端

3. 客户端与NFS服务端建立连接

   在这个过程中,有用到RPC远程过程调用,这是因为NFS提供了很多小程序,这些程序对应不同的功能,每个功能又对应不同的端口,而这些端口都是小于1024的不固定端口,客户端访问服务端的时候无法确定服务端的port,就引进了RPC。

   RPC的作用在于指派NFS的功能对应的端口给客户端。NFS的程序会通知RPC相应的端口号,RPC再通知客户端,而RPC则使用固定port 111

NFS必须具须同时运行下列5个程序才能正常运行

Rpc.nfsd 用于判断客户端是否有登录NFS的服务器的权限

Rpc.mountd 用于装载NFS文件系统,并判断文件的使用权限

Rpc.statd 与rpc.lockd同时启用才生效,当Ser与cli断开时,使cli能重新连接到ser端

Rpc.lockd 当多个用户访问个文件时,用于锁定文件,以免被不同的更改请求覆盖

Portmap 定向RPC的通信流

NFS服务端的安装

1.安装nfs-utils*.rpm 和 portmap*.rpm (略)

 

2.修改主配置文件/etc/exports,其格式如下

   目录名称 ip或hostname(参数) ip或hostname(参数) ...

  可选参数

  Ro 只读

  Rw 读写

  Sync 同步写入磁盘和内存

  Async 先写入内存再写入磁盘

  No_root_squash 使用root登录时,则拥有root权限

  Root_squash 使用root登录时,则将其压缩为匿名用户,即为nobody

  All_squash 使用任何用户登录,则都将被压缩成nobody

  Anonuid 规定其uid值

  Anongid 规定其gid值

     eg1,只希望192.168.1.0/24段用户访问,且有读写权限

         /mnt/cdrom/ 192.168.1.0/24(rw,async,no_root_squash)

     eg2,只希望192.168.1.100用户具有读写权限,其它用户只有读权限

         /mnt/cdrom 192.168.1.100(rw,no_root_squash) *(ro)

3.启动NFS服务,确定portmap服务已经启动

  # service portmap start

  # service nfs start

  # service nfslock start

  # chkconfig --level 2345 portmap on

  # chkconfig --level 2345 nfs on

  # chkconfig --level 2345 nfslock on

4.挂载/etc/export定义的目录

  # exportfs -a 全部挂载或卸载/etc/export定义的目录

  # exportfs -r 重新挂载,用于修改/etc/export文件后

  # exportfs -v 卸载挂载的目录

  # exportfs -v 详细输出共享的目录列表

5.客户端挂载

  挂载前,确保客户端开启了portmap和nfslock服务

  # showmount -e 192.168.1.2 列表NFS服务器共享的目录

  # mount -t nfs 192.168.1.2:/mnt/cdrom /data/ 挂载

NFS端口固定

   虽然NFS主程序使用TCP/UDP 2049端口,portmap使用TCP/UDP 111端口,但NFS提供的小程序使用的端口不固定,所以在防火墙开启的情况下,无法做到有针对性的放行NFS服务端口,下面讲述如何固定NFS服务端口,如下:

修改NFS配置文件/etc/sysconfig/nfs,找到

#LOCKD_TCPPORT=32803

#LOCKD_UDPPORT=32769

#MOUNTD_PORT=892

#STATD_PORT=662

将其注释去掉,重启NFS服务,这样NFS服务端口就由非固定变为固定端口

NFS自动挂载

NFS自动挂载可以通过两种方式实现:

一,通过/etc/fstab添加挂载项

    在/etc/fstab添加如下行

      192.168.1.2:/mnt/pub /mnt -ro,soft,initr,timeout=30 nfs 0 0

由于开机启动时,系统会自动挂载/etc/fstab里的所有设备,如果网络不好或NFS服务器连接失效,那么可能会导致占用太多启动时间

二,通过autofs挂载

   原理:当用户访问一个在autofs文件内定义的目录时(可能实际不存在),autofs会根据/etc/auto.misc这个文件定义的挂载值将NFS对应的数据挂载到这个目录,如果目录不存在,可以自动创建,然后用户就直接访问挂载在这个目录下的NFS资源了,整个过程相当透明,用户感觉不到挂载的过程

1.查看autofs主配置文件/etc/auto.master,会看到如下行,表示挂载目录/misc对应的配置文件是/etc/auto.misc

   /misc /etc/auto.misc

2.编缉/etc/auto.misc,将要挂载的NFS上的内容写入该文件内,其格式为:

   挂载目录 挂载参数 NFS共享目录位置

  例如,/etc/auto.misc内容为

   linuxnfs -ro,soft.intr 192.168.1.2:/pub/nfs

   当用户访问NFS资源时,此时在本地客户端是没有进行挂载的,也就是说没有/misc/linuxnfs这个目录存在,当cd /misc/linuxnfs时,这个时候autofs程序会根据/etc/auto.master的配置内容定位到/etc/auto.misc文件并读取该文件内容,并将文件预先定义的挂载选项进行挂载,此时,NFS目录就被挂载到客户端了。