NFS通常用于网络中的多台计算机实现共享存储。

由于测试环境没有购买阿里云的NFS,所以自己搭建一个NFS文件系统,实现一些比如上传图片,静态资源等同享功能。

下面的测试是在CentOS release 6.8 (Final)中进行的。其他的系统略有不同。

网络环境 :
nfs服务器IP: 192.168.18.183
nfs客户端IP: 192.168.18.182

服务器安装

yum install nfs-utils rpcbind
配置需要共享的目录

more /etc/exports

/home/www *(rw,async,no_root_squash,no_subtree_check)

关于配置文件exports的一些参数说明

rw:read-write,可读写;
ro:read-only,只读;
sync:同步写入(文件同时写入硬盘和内存),适用在通信比较频繁且实时性比较高的场合
async:异步写入(文件先写入内存,稍候再写入硬盘),性能较好(速度快),适合超大或者超多文件的写入,但有数据丢失的风险,比如突然断电等情况;
root_squash(默认):将来访的root用户映射为匿名用户或用户组;
no_root_squash:来访的root用户保持root帐号权限(可能会不安全);
no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
all_squash:将来访的所有用户映射为匿名用户或用户组;
secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器;
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;
anongid:匿名用户的GID值;
no_subtree_check:如果NFS输出的是一个子目录,则无需检查其父目录的权限(可以提高效率)

启动nfs服务器
service rpcbind start
service nfs start

查看是否启动成功,能看到前面在/etc/exports文件中设置的共享目录 则可以认为启动成功了。

showmount -e localhost
Export list for localhost:
/home/www *

客户端安装

客户端也是需要安装这两个软件 区别是安装好之后不需要启动。

yum install nfs-utils rpcbind
挂载NFS目录

挂载的时候需要注意的是 如果挂载的目录当前已经存在 挂载后默认会覆盖掉。

mount -t nfs 192.168.18.183:/home/www /home/www

这个时候就挂载成功了,尝试修改客户端/home/www的文件 会立即同步到服务端的/home/www下面。同时服务端更新了文件也会立即同步到客户端。
如果文件很大的话 会有一个网络延时,所以这个需要权衡 当然内网传输还是很快的。