NFS服务简介

NFS是Network File System的缩写,即网络文件系统。NFS是由Sun开发并发展起来的一项用于在不同机器,不同操作系统之间通过网络互相分享各自的文件。NFS server也可以看作是一个FILE SERVER,用于在UNIX类系统之间共享文件,可以轻松的挂载(mount)到一个目录上,操作起来就像本地文件一样的方便。

一、nfs-server(192.168.2.1)

1、检查是否安装

[root@host ~]# rpm -qa |grep nfs     //查看是否安装了nfs

nfs-utils-lib-1.0.8-7.6.el5

nfs-utils-1.0.9-42.el5              //nfs主程序,已安装

2、NFS配置文件设置

若要共享目录或文件,需要在共享清单中指明该文件/etc/exports  (语法参照 man  exports)

#vim   /etc/exports

/home/nfs 192.168.2.0/24(rw,sync)    (192.168.2.0网段的用户对/home/nfs NFS卷具有读写)

/media/cdrom 192.168.2.*(ro)        (192.168.2.0网段的用户对/media/cdromNFS卷具有读)

注:/etc/exports,配置文件有三部分: 输出目录,客户端,参数选项

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

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

b、客户端常用的指定方式

指定ip地址的主机 192.168.0.200

指定子网中的所有主机 192.168.0.0/24

指定域名的主机 a.liusuping.com

指定域中的所有主机 *.liusuping.com

所有主机 *

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服务器也不检查其父目录的权限,这样可以提高效率

3、启动nfs服务

# service nfs start

启动 NFS 服务:                                            [确定]

关掉 NFS 配额:                                            [确定]

启动 NFS 守护进程:                                        [确定]

启动 NFS mountd:                                          [确定]

4、查看自己的rpc进程,与NFS相关的是否正常开启,如下表明已经正常开启:

  #rpcinfo -p  192.168.2.1 (本机ip,)

100011    1   udp    821  rquotad

.........

100003    2   udp   2049  nfs

........

   100021    1   tcp  34647  nlockmgr

  .......

   100005    1   udp    852  mountd

    ........

5、导出共享清单

[root@host ~]# exportfs -rv

exporting 192.168.2.0/24:/home/nfs

exporting 192.168.2.*:/media/cdrom

二、nfs客户端(192.168.2.20/24)

1、查看自己的rpc进程是否开启

[root@client ~]# rpcinfo -p

  程序 版本 协议   端口

   100000    2   tcp    111  portmapper

........

   100024    1   udp    794  status

........

100021    1   udp  58859  nlockmgr

........

2、查看nsf-server的exports文件是否可以访问:

[root@client ~]# showmount -e 192.168.2.1

Export list for 192.168.2.1:

/media/cdrom 192.168.2.*

/home/nfs    192.168.2.0/24

3、创建挂载点,手动挂载

#mkdir  /tmp/abc

#mkdir  /tmp/cdrom

# mount 192.168.2.1:/home/nfs  /tmp/abc

# mount 192.168.2.1:/media/cdrom  /tmp/cdrom

4、设置开机自动挂载

#vim /etc/fstab

192.168.2.1:/home/nfs   /tmp/abc                nfs     defaults,soft,intr      0 0

192.168.2.1:/media/cdrom   /tmp/cdrom           nfs     defaults,soft,intr      0 0

注:(soft、intr等参数可查看man nfs)

-ro,soft,intr:  -ro:挂载时的权限,soft:如果有I/O错误时,会告知系统,中继挂载;intr:挂载时有大量超时时,中继挂载,并告知系统。

#umount /tmp/cdrom    /tmp/abc

#mount -a

5、这种方式的挂载需要消耗大量的资源来维持连接,可以使用自动挂载当切换到该目录时进行挂载,退出时,取消挂载

a、安装autofs软件包

[root@client tmp]# rpm -qa|grep autofs

autofs-5.0.1-0.rc2.131.el5

b、编辑autofs的配置文件/etc/auto.master

#vim /etc/auto.master

/tmp /etc/nfs.misc   --timeout=08

/tmp /etc/nfs.misc   --timeout=08

:wq

c、编辑要求的产生/etc/nfs.misc

#vim /etc/nfs.misc

abc     -fstype=nfs   192.168.2.1:/home/nfs

cdrom   -fstype=nfs   192.168.2.1:/media/cdrom

:wq

d、启动autofs服务

#service autofs  start

#rm -rf /tmp/abc

#rm -rf /tmp/cdrom

e、测试

注:abc、cdrom : 本地目录,我们不需要创建它,用于挂载远程共享文件192.168.2.1:/home/nfs,在我们想要使用远程共享文件/home/nfs时,只要在本地目录/tmp下键入cd abc 系统就会自动挂载到远程共享目录:192.168.2.10:/home/nfs,我们就可以正常使用里面的共享文件了 ,在到达超时时间时就会自动卸载。

f、以rw自动挂载/home/nfs/ NFS卷到/tmp/abc目录下,却发现无法创建目录,因为nfs-server的本地目录还没有写权限,

[root@client abc]# touch nfs.txt

touch: 无法触碰 “nfs.txt”: 权限不够

g、nfs-server服务端修改/home/nfs的本地权限

[root@host home]# chmod o+wt nfs/

就可以正常创建了,

[root@client abc]# touch nfs.txt

[root@client abc]# dir

hello-word.txtnfs.txt  nft-test

实验结束。

注:NFS客户端与NFS服务器在连接上之后,为了保证其正常的连接,NFS客户端与NFS服务器之间要不断的发送数据包,来宣告自己还在与NFS服务器进行着连接,但是,如果一个NFS服务器上有许多的客户端一直连接的话,NFS服务器会承受很大的带宽压力,这对NFS服务器的正常使用会造成很大的影响,因此,为了避免这种情况的发生,人们就想到了一种方法,让NFS客户端在获取数据时与NFS服务器进行连接,而在没有获取数据的时间内,自动的断开与NFS服务器之间的连接,但只要客户端发送获取数据的请求进,客户端就与服务器自动连接上,自动挂载的方法对客户端主机与服务器主机都有很大的好处。配置方法是在NFS客户端方面进行配置的

本文出自 “” 博客,请务必保留此出处