NFS是Network File System,基于RPC(Remote Procedure Call Protocol远程过程调用协议)实现。NFS是TCP/IP协议集所提供的一种子协议,该协议可以实现LINUX/UNIX主机之间的文件共享,磁盘空间共享。它只用于Linux和Unix内核的操作系统进行共享。使用NFS网络文件系统,可以将服务器的硬盘挂载到本地,就像操作本地计算机的硬盘一样。

这里用的系统是CentOS5.6,假设NFS Server IP为192.168.1.2,NFS Clinet IP为192.168.0.100。

1.服务端安装NFS:

yum install nfs-utils protmap

nfs-utils包提供了NFS服务器程序和相应的管理工具。

protmap是一个管理RPC连接的程序,portmap服务对NFS是必须的,因为它是NFS的动态端口分配守护进程,如果portmap不启动,NFS就是启动不了的。

2.配置NFS服务端,编辑/etc/exports文件:

vim /etc/exports

设置共享文件目录,如加入:

/home/nfsdir *(rw)

/home/share 192.168.0.100(rw,no_root_squash) *(ro)

/home/nfsdir *(rw)

表示共享/home/nfsdir目录,所有用户都有读写权限。

/home/share 192.168.0.100(rw,no_root_squash) *(ro)

表示共享/home/share目录,192.168.0.100有读写权限并且root用户有完全管理访问权限,其他机器仅有只读权限。

配置文件的格式为:

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

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

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

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

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

下面是一些NFS共享的常用参数:

ro  只读访问

rw  读写访问

sync  同步写入资料到内存与硬盘中

async  资料会先暂存于内存中,而非直接写入硬盘

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_squash  root用户具有根目录的完全管理访问权限

anonuid=xxx  指定NFS服务器/etc/passwd文件中匿名用户的UID

anongid=xxx  指定NFS服务器/etc/passwd文件中匿名用户的GID

当exports文件修改后,使用以下命令,不需要重启NFS服务,就可以重新挂载/etc/exports里面的设定:

exportfs -arv

3.先启动portmap服务:

service portmap restart

4.再启动NFS服务:

service nfs restart

如果之前没有先启动portmap服务,那么当启动NFS服务时会停在

Starting NFS daemon:

很长时间。

5.设置nfs、portmap开机自启动:

chkconfig –level 345 nfs on

chkconfig –level 345 portmap on

6.客户端也需要安装nfs-utils、portmap软件包,并启动portmap服务:

yum install nfs-utils portmap

service portmap restart

chkconfig –level 345 on

7.NFS服务端启动成功后,客户端可以利用showmount命令测试是否能连上服务端:

命令格式:showmount -e [hostname|IP],showmount命令需要安装了nfs-utils软件包才有。

showmount -e 192.168.1.2

显示如下:

/home/nfsdir *

/home/share (everyone)

8.客户端建立挂载的文件夹:

cd /mnt

mkdir nfs1

mkdir nfs2

9.客户端使用mount命令挂载NFS共享文件:

mount -t nfs 192.168.1.2:/home/nfsdir /mnt/nfs1

mount -t nfs 192.168.1.2:/home/share /mnt/nfs2

命令格式:mount – t nfs nfs服务器地址:目录共享 本地挂载目录点

10.客户端可使用df命令,mount命令查看挂载情况:

mount

192.168.1.2:/home/share on /mnt/nfs2 type nfs (rw,addr=192.168.1.2)

192.168.1.2:/home/nfsdir on /mnt/nfs1 type nfs (rw,addr=192.168.1.2)

11.客户端卸载NFS文件命令:

umount /mnt/nfs1

umount /mnt/nfs2

12.客户端可以设置系统启动时自动挂载NFS文件:

需要将NFS的共享目录挂载信息写入/etc/fstab/文件,以实现对NFS共享目录的自动挂载。

编辑/etc/fstab文件:

vim /etc/fstab

在最后加入如

192.168.1.2:/home/nfsdir /mnt/nfsdir nfs defaults 0 0

13.查看当前主机RPC状态:

rpcinfo -p localhost