天天看点

服务器配置Nfs服务

服务器配置Nfs服务

在以前的工作中,要求多服务器之间做数据同步,Rsync实现了服务器间文件的同步复制,Mysql数据库用主从互备,Mssql用数据同步。从功能上基本实现了要求,但在后期维护上面,遇到了很大的困扰,文件同步过程中会产生复制冲突,导致部分数据的丢失。用什么更好的方法来解决上面的问题,让自己网站架构更合理,高效呢?

前两天,一个网上的朋友给我说了一个办法。(NFS) 马上查找资料,进行安装配置。我只做了初级测试,但效果相当明显。现总结下来。

应用环境介绍

用途

操作系统

Ip地址

服务器端

Centos 5 

222.186.**.**

客户端

Nfs服务器的安装

服务端的安装

检查Linux系统中是否安装了Nfs-utils和Portmap两个软件包 (Centos系统默认已经安装了这两个软件包)

[root@chenwd ~]# rpm -qa | grep nfs

nfs-utils-1.0.9-44.el5

nfs-utils-lib-1.0.8-7.6.el5

[root@chenwd ~]# rpm -qa | grep portmap

portmap-4.0-65.2.2.1

Service nfs start

Chkconfig nfs on

Service portmap start

Chkconfig portmap on

新建共享目录,比如:/home/share

Mkdir /home/share

指定Nfs服务器的配置文件

Nfs服务器的配置文件保存在/etc目录中,文件名称是:exports,该文件用于被指Nfs服务器提供目录共享。

[root@chenwd ~]# vi /etc/exports

/home/share/ 222.186.**.**(rw,no_root_squash,no_all_squash,sync)

注:配置文件说明:

/home/share/ 为共享的目录,使用绝对路径。

222.186.**.**(rw,no_root_squash,no_all_squash,sync) 

为客户端的地址及权限,地址可以是一个网段,一个IP地址或者是一个域名,域名支持通配符,如:*.domain.com,地址与权限中间没有空格,权限说明:

rw:read-write,可读写;

ro:read-only,只读;

sync:文件同时写入硬盘和内存;

async:文件暂存于内存,而不是直接写入内存;

no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。

root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;

all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;

anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;

anongid:匿名用户的GID值。

启动Nfs服务器并进行测试

启动Nfs服务器

[root@chenwd ~]# service portmap start

启动 portmap:                                             [确定]

[root@chenwd ~]# service nfs start

启动 NFS 服务:                                            [确定]

关掉 NFS 配额:                                            [确定]

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

启动 NFS mountd:                                          [确定]

在客户端时行测试

创建要挂载的目录

[root@chenwd ~]# mkdir /home/share

执行挂载命令

[root@chenwd ~]# mount -t nfs 222.186.**.**:/home/share /home/share -o proto=tcp -o nolock

在客户端创建测试文件进行检查

[root@chenwd ~]# cd /home/share

[root@chenwd ~]# echo "this is a nfs test" >> /home/share/chenwd

[root@chenwd ~]# ll -h

[root@chenwd share]# ll -h

总计 4.6M

-rw-r--r-- 1 root root 1.2M 11-23 22:34 cacti-0.8.7h.tar.gz

-rw-r--r-- 1 root root   20 11-24 01:33 chenwd

-rw-r--r-- 1 root root 3.4M 2010-03-23 cwRsync_4.0.3_Installer.zip

-rw-r--r-- 1 root root 3.1K 11-24 00:30 retest

-rw-r--r-- 1 root root   19 11-24 00:28 test

在服务端进行检查

配置中遇到的问题

检查Nfsv4服务器成功运行

[root@chenwd ~]# rpcinfo -p

   程序 版本 协议   端口

    100000    2   tcp    111  portmapper

    100000    2   udp    111  portmapper

    100011    1   udp    758  rquotad

    100011    2   udp    758  rquotad

    100011    1   tcp    761  rquotad

    100011    2   tcp    761  rquotad

    100003    2   udp   2049  nfs

100003    3   udp   2049  nfs

....

100005    3   tcp    775  mountd

检查Nfs服务器是否输出我们想共享的目录 /home/share

[root@chenwd ~]# exportfs

/home/share     222.186.43.159

注意Nfs使用Portmap,而且是新版本的Portmap使用Hosts.deny和 Hosts.allow 文件来控制访问源,修改这2个配置文件以便 NFS 客户端能正常连接到服务器       

[root@chenwd ~]# vi /etc/hosts.deny 

Portmap:ALL

[root@chenwd ~]# vi /etc/hosts.allow

Portmap:222.186.11.* 

继续阅读