服务器配置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.*