通过NFS实现简单的文件共享

【伍哥原创】

当实现了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 。

你可能感兴趣的:(通过NFS实现简单的文件共享)