天天看点

Ubuntu NFS配置

1、 开启portmap和nfs服务

apt-get install nfs-kernel-server

/etc/init.d/portmap start

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

2、 将要共享的目录写到exports文件中 假设共享的目录为 /sharedisk/

vim /etc/exports

这个文件的内容非常简单,每一行由抛出路径,客户名列表以及每个客户名后紧跟的访问选项构成:

            [共享的目录] [主机名或IP(参数,参数)] 

其中参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是 sync,ro,root_squash,no_delay。

当主机名或IP地址为空时,则代表共享给任意客户机提供服务。

当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:

            [共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]

/home/share 192.168.102.15(rw,sync) *(ro)

#对192.168.102.15赋予读写权限,其他机器仅有只读权限。

括号中的参数设置意义为:

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、重启nfs 或者使用exportfs命令使设置生效

   重启nfs:/etc/init.d/nfs-kernel-server restart

   用exportfs: 

   exportfs -rv

-a :全部mount或者unmount /etc/exports中的内容 

-r :重新mount /etc/exports中分享出来的目录 

-u :umount 目录 

-v :将详细的信息输出到屏幕上

exportfs可以根据/etc/exports配置生成一个 /var/lib/nfs/etab文件,此文件是共享目录的最终权限的设置。

4、在客户端挂载该目录:

在本地创建挂载的目录 

mkdir /sharedisk

mount -t nfs 192.168.0.10:/sharedisk  /sharedisk

#将服务器192.168.0.10上的/sharedisk/ 路径挂载到本地

5、NFS 防火墙设置

由于nfs服务需要开启 nfs,portmapper,mountd,nlockmgr,rquotad这5个服务,需要将这5个服务的端口加到iptables里面

而nfs 和 portmapper两个服务是固定端口的,nfs为2049,portmapper为111。其他的3个服务是用的随机端口,那就需要

先把这3个服务的端口设置成固定的。

查看当前这5个服务的端口并记录下来 用rpcinfo -p

root@server:~# rpcinfo -p

    program vers proto   port  service

    100000    4   tcp    111  portmapper

    100000    3   tcp    111  portmapper

    100000    2   tcp    111  portmapper

    100000    4   udp    111  portmapper

    100000    3   udp    111  portmapper

    100000    2   udp    111  portmapper

    100024    1   udp  32802  status

    100024    1   tcp  54040  status

    100003    2   tcp   2049  nfs

    100003    3   tcp   2049  nfs

    100003    4   tcp   2049  nfs

    100227    2   tcp   2049

    100227    3   tcp   2049

    100003    2   udp   2049  nfs

    100003    3   udp   2049  nfs

    100003    4   udp   2049  nfs

    100227    2   udp   2049

    100227    3   udp   2049

    100021    1   udp  54770  nlockmgr

    100021    3   udp  54770  nlockmgr

    100021    4   udp  54770  nlockmgr

    100021    1   tcp  44903  nlockmgr

    100021    3   tcp  44903  nlockmgr

    100021    4   tcp  44903  nlockmgr

    100005    1   udp  44541  mountd

    100005    1   tcp  54030  mountd

    100005    2   udp  47762  mountd

    100005    2   tcp  57530  mountd

    100005    3   udp  35485  mountd

    100005    3   tcp  56965  mountd

将这3个服务的端口设置为固定端口:

vim  /etc/services

在文件的最后一行添加:

mountd  54030/tcp

mountd  35485/udp

rquotad  966/tcp

nlockmgr  44903/tcp

nlockmgr  54770/udp

把相关的端口添加到iptables

6、启动时自动挂栽

修改客户机的 /etc/fstab文件,加入类似如下行:

            192.168.102.47:/home/share      /mnt    nfs     rsize=8192,wsize=8192,timeo=14,intr

重启客户机,即可实现系统启动时自动挂栽共享资源

7、使用 autofs 实现资源挂栽

autofs 使用 automount 守护进程来管理你的挂载点,它只在文件系统被访问时才动态地挂载它们。

autofs 查询主配置文件 /etc/auto.master 来决定要定义哪些挂载点。然后它使用适用于各个挂载点的参数来启动 automount 进程。

主配置中的每一行都定义一个挂载点,然后用单独的配置文件定义在该挂载点下要挂载的文件系统。

安装 autofs

             # aptitude  install autofs

修改/etc/auto.master文件, 加入如下内容:

            /mnt      /etc/auto.nfs

创建 /etc/auto.nfs 文件内容如下:

            nfs -rw,soft,intr,rsize=8192,wsize=8192 192.168.102.47:/home/share

这样,每当您进入 /mnt/nfs 目录时,系统都会尝试将服务器的共享资源挂栽到该目录上。

应当注意nfs目录是由 automount 动态地创建的,它不应该在客户机器上实际存在。

===============================================================================================

centos系统的iptables设置

配置针对NFS Server的防火墙

[root@mes-bk backup]# vi /etc/sysconfig/nfs

# Port rquotad should listen on.

RQUOTAD_PORT=875

# TCP port rpc.lockd should listen on.

LOCKD_TCPPORT=32803

# UDP port rpc.lockd should listen on.

LOCKD_UDPPORT=32769

# Port rpc.mountd should listen on.

MOUNTD_PORT=892

其中 portmapper nfs 服务端口是固定的分别是 111 2049

另外 rquotad nlockmgr mountd 服务端口是随机的。由于端口是随机的,这导致防火墙无法设置。

这时需要配置/etc/sysconfig/nfs 使 rquotad nlockmgr mountd 的端口固定。

找到以下几项,将前面的#号去掉。

[root@mes-bk backup]# rpcinfo -p localhost

   程序采用的协议连接阜

100000    2   tcp    111  portmapper

100000    2   udp    111  portmapper

100024    1   udp    907  status

100024    1   tcp    910  status

100011    1   udp    897  rquotad

100011    2   udp    897  rquotad

100011    1   tcp    900  rquotad

100011    2   tcp    900  rquotad

100003    2   udp   2049  nfs

100003    3   udp   2049  nfs

100003    4   udp   2049  nfs

100021    1   udp  47851  nlockmgr

100021    3   udp  47851  nlockmgr

100021    4   udp  47851  nlockmgr

100003    2   tcp   2049  nfs

100003    3   tcp   2049  nfs

100003    4   tcp   2049  nfs

100021    1   tcp  56501  nlockmgr

100021    3   tcp  56501  nlockmgr

100021    4   tcp  56501  nlockmgr

100005    1   udp    911  mountd

100005    1   tcp    914  mountd

100005    2   udp    911  mountd

100005    2   tcp    914  mountd

100005    3   udp    911  mountd

100005    3   tcp    914  mountd

-A RH-Firewall-1-INPUT -s 0.0.0.0/24 -m state --state NEW -p tcp --dport 33993 -j ACCEPT

-A RH-Firewall-1-INPUT -s 0.0.0.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT

挂接nfs server的client端执行nfsstat -m命令,可以得出nfs server端nfs版本

本文转自 freeterman 51CTO博客,原文链接:http://blog.51cto.com/myunix/1433510,如需转载请自行联系原作者

继续阅读