【伍哥原创】
当实现了Web服务器的负载均衡以后,我们或多或少会面临文件共享的问题,比如用户上传的图片需要在多个Web服务器之间共享等。
通过NFS可以实现简单的文件共享,虽然NFS存在一些不足,比如性能会受到带宽、并发连接数、NFS文件服务器磁盘IO等的制约,但是对于中小型的访问量不大的站点,也不失为一个实现文件共享简单易行的方案。
下面伍哥在CentOS 6.2环境下搭建一个简单的NFS文件共享服务。服务器环境如下:
NFS 服务器 192.168.1.34
WEB 服务器 192.168.1.27 (相当于NFS client端)
1,NFS服务器端(192.168.1.34)搭建
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# 直接yum安装就可以了
yum -y
install
rpcbind nfs-utils
# 因为NFS是需要向RPC服务注册端口等信息的,所以要先启动rpcbind (CentOS-5为portmap)
/etc/init
.d
/rpcbind
start
# 启动nfs和nfslock
/etc/init
.d
/nfs
start
/etc/init
.d
/nfslock
start
# 加入开机启动
chkconfig rpcbind on
chkconfig nfs on
chkconfig nfslock on
# 查看NFS是否正常启动
rpcinfo -p 192.168.1.34
# 新建共享目录,比如是Web应用里面的图片上传目前
mkdir
-p
/data/nfs_data
# 设置共享目录的权限,比如一般设置给跑nginx,php-fpm的用户
chown
www.www
/data/nfs_data
# 查看www用户的UID,GID
cat
/etc/passwd
|
grep
www
# 配置共享目录访问权限信息
vim
/etc/exports
### 加入下面内容 ###
/data/nfs_data
192.168.1.0
/24
(rw,
sync
,all_squash,anonuid=497,anongid=495)
### 意思是目录/data/nfs_data允许192.168.1.0/24这个网段的所有IP接入,
### 有读写权限(rw),文件同步写入(sync),所有用户写入的文件的owner和group都被更改为www的UID,GID
# 应用一下,使设置生效
exportfs -arv
|
2,客户端(192.168.1.27)搭建
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# 直接yum安装就可以了
yum -y
install
rpcbind nfs-utils
# 因为NFS是需要向RPC服务注册端口等信息的,所以要先启动rpcbind (CentOS-5为portmap)
/etc/init
.d
/rpcbind
start
# 启动nfs和nfslock
/etc/init
.d
/nfs
start
/etc/init
.d
/nfslock
start
# 加入开机启动
chkconfig rpcbind on
chkconfig nfs on
chkconfig nfslock on
# 查看NFS服务器的共享目录
showmount -e 192.168.1.34
# 新建目录
mkdir
-p
/data/xxx
.com
/upload
# 挂载到NFS的共享目录,类型是nfs,版本是3。不写版本会出现nobody及权限错误,因为
# CentOS 6.2默认是装的nfs-v4版本,默认使用nis,没有nis它会自动映射成nobody用户,
# 从而导致不能对共享目录正常读写,比较坑爹。
mount
-t nfs -o vers=3 192.168.1.34:
/data/nfs_data
/data/xxx
.com
/upload
# 测试
cd
/data/xxx
.com
/upload
touch
abc.jpg
# 然后检查NFS服务器是否有abc.jpg文件,如出现,则表示共享目录正常。
|
更多NFS的原理及细节配置,请参考鸟哥的文章 http://linux.vbird.org/linux_server/0330nfs.php 。