一、环境准备

NFS的全称是Network File System,即“网络文件系统”,一般其作用就是在两台Linux/Unix服务器之间共享目录。今天我们要做的就是在两台装有CentOS 5.6的服务器之间共享目录。

操作系统:CentOS 5.6 (64位)

服务端IP地址:192.168.1.1

客户端IP地址:192.168.0.2


二、安装NFS服务

1. 在服务端检查所需的软件portmap(在CentOS 6之后称为rpcbind)和nfs-utils是否已安装:

[root@server ~]# rpm -qa | egrep 'nfs|portmap'
portmap-4.0-65.2.2.1
nfs-utils-1.0.9-50.el5
nfs-utils-lib-1.0.8-7.6.el5

若未安装可使用安装光盘或yum安装相应的软件。


2. 在客户端只需检查portmap是否已安装,命令如上,不再赘述。


三、服务端配置

NFS的配置文件位于/etc/exports,该文件记录了NFS服务共享的目录、给予共享的对象及权限分配等内容,基本的格式如下:

<共享目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]

每一行第一个字段为所要共享的目录;后面的字段是客户端地址,可以是:

  • 指定IP地址的主机:192.168.1.2

  • 指定子网内的所有主机:192.168.10.0/24

  • 主机名:plutonji.wordpress.com

  • 通配符主机名:*.plutonji.cn

  • 所有主机:*


紧接着的选项有三种类型,分别是:

a. 访问权限选项:
(ro) 只读
(rw) 读+写
b. 用户映射选项:
all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
no_all_squash:与all_squash取反(默认设置);
root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
no_root_squash:与rootsquash取反;
anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
c. 其他选项:
secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

现在,我们需要共享/home/plutonji这个目录给192.168.1.2,访问权限为只读,就可以使用vi编辑(第一次使用时可能会创建)此文件:

[root@server ~]# vi /etc/exports
/home/plutonji [192.168.1.2/32(ro)]


四、启动NFS服务

完成服务端NFS的配置后,就可以启动NFS服务了!

1. 启动portmap和nfs服务(注意顺序不能错):

[root@server ~]# /etc/init.d/portmap start
启动 portmap:                                             [确定]
[root@server ~]# /etc/init.d/nfs start
启动 NFS 服务:                                            [确定]
关掉 NFS 配额:                                            [确定]
启动 NFS 守护进程:                                        [确定]
启动 NFS mountd:                                          [确定]

2. 设置开机自动启动:

[root@server ~]# chkconfig --level 35 portmap on
[root@server ~]# chkconfig --level 35 nfs on


五、客户端挂载

1. 启动portmap服务并设置开机自动启动,同上操作;

2. 挂载服务端的/home/plutonji到本地的/tmp/plutonji

[root@client]# mkdir /tmp/plutonji
[root@client]# mount 192.168.1.1:/home/plutonji /tmp/plutonji

3. 验证是否已挂载成功:

[root@client ~]# mount | grep nfs
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
192.168.1.1:/home/plutonji on /tmp/plutonji type nfs (rw,addr=192.168.1.1)sh

说明已经挂载成功了。

4. 设置开机自动挂载(在/etc/fstab最后增加第二行内容):

[root@client ~]vi /etc/fstab
192.168.1.1:/home/plutonji  /tmp/plutonji  nfs  defaults  0  0


这样,一个基本的NFS服务就配置完成了。