起因: 应用部署在多台服务器上的时候,我们上传文件到一个指定共享目录,这个共享目录要各台服务器都能访问到。程序本地访问到。
经过: 百度一番后,搜索做共享盘用的最多的就是nfs。
结果: 找了个感觉还不错的文档跟着做,试了下,心领神会了。。
1、准备工作,所有需要用到这个目录的服务器,都需要安装nfs服务,然后设置开启启动,并且把所需服务启动起来。
安装所需服务nfs、rpcbin
yum install -y nfs-utils rpcbind
分别设置开启启动
chkconfig nfs on
chkconfig rpcbind on
启动这两个服务
service rpcbind start
service nfs start
重启:[root@VM_15_8_centos server]# service 服务名 restart
停止:[root@VM_15_8_centos server]# service 服务名 stop
开启:[root@VM_15_8_centos server]# service 服务名 start
2、创建共享目录
我这有3台服务器
1**.1**.8*.137 客户端 A
1**.1**.8*.138 客户端 B
1**.1**.8*.139 服务端 S
2.1 在服务端S上创建共享目录,其实所有服务目录都一样比较好。这里是为了区分服务端与客户端
mkdir -p /home/soft/nfs/server
2.2 编辑/etc/exports 文件,添加如下内容
/home/soft/nfs/server *(rw,no_root_squash,no_all_squash,sync)
说明:其中
/home/soft/nfs/server --共享目录位置* --IP限制,若是星号则都可以访问,1**.1**.8*.*,则是IP鄙视是1**.1**.8*段的菜可以访问。(rw,no_root_squash,no_all_squash,sync) --(rw ro 该目录分享的权限是可擦写 (read-write) 或只读 (read-only),但最终能不能读写,还是与文件系统的 rwx 及身份有关。 sync async sync 代表数据会同步写入到内存与硬盘中,async 则代表数据会先暂存于内存当中,而非直接写入硬盘! no_root_squash root_squash 客户端使用 NFS 文件系统的账号若为 root 时,系统该如何判断这个账号的身份?预设的情况下,客户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody, 如此对服务器的系统会较有保障。但如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash 才行! all_squash 不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody) 啦! no_subtree_check 关闭子树检查 anonuid anongid anon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名用户的 UID 设定值,通常为 nobody(nfsnobody),但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中! anonuid 指的是 UID 而 anongid 则是群组的 GID 啰。 其他选项可以通过man exports查阅man文档)2.3 刷新配置,让修改的配置立即生效
cd /etc
exportfs -r
2.4 重启服务service nfs restart
2.5 查看服务注册情况
说明下,如果不设置端口信息,那么nfs会随机启用端口提供服务,不利于服务器之间做安全控制,所以我们设定固定端口,在所有的服务器上都设置相同端口。
vi /etc/sysconfig/nfs
文件末端添加如下内容
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
重启服务service nfs restart
查看RPC注册情况rpcinfo -p localhost
rpcinfo 选项与参数:
-p :针对某 IP (未写则预设为本机) 显示出所有的 port 与 porgram 的信息;
-t :针对某主机的某支程序检查其 TCP 封包所在的软件版本;
-u :针对某主机的某支程序检查其 UDP 封包所在的软件版本;
2.6 查询本机的nfs共享盘信息情况
showmount -e localhost 也可以任意客户机showmount -e 1**.1**.8*.139
3、客户端配置
3.1 挂在盘创建
执行命令:mkdir -p /home/soft/nfs/client
3.2 配置挂载服务端与客户端关系,提供挂载稳定性,使用TCP进行传输
执行命令:
mount -t nfs -o vers=3 服务端IP:服务端目录 当前机器目录 -o proto=指定协议 -o nolock
mount -t nfs -o vers=3 192.168.89.139:/home/soft/nfs/server /home/soft/nfs/client -o proto=tcp -o nolock
3.4 查看挂载目录情况
df -h
3.5 测试
在任意一台服务器的共享目录下,创建或者上传一个文件上去。然后查看目录下的内容,我这里在137上上传了一个index.html文件,然后查看各个服务器之间的目录,可以看到服务端与多客户端之间文件已经同步。再删除。再看。也都同步了。在服务端139上删除index.html那么客户端也都是删除了的。
4、 取消挂载
当我们那个盘符不需要挂载了的时候,客户端执行:umount /home/soft/nfs/client,提示繁忙 。。device is busy
强制执行:umount -lf /home/soft/nfs/client
重启服务后发现,之前挂载的目录内容也不见了service nfs restart
5、设置开机挂载
否则重启服务器后,之前命令配置的挂载信息就丢失了
6、windows挂载
1.开启nfs客户端:打开控制面板》程序》启用或关闭windos功能》选中nfs客户端,点击确定
2.挂载:mount 1**.1**.8*.139:/home/soft/nfs/server X: (此处注意只能定位到nfs目录,否则会报网络错误)
会创建一个网络盘X盘,里面挂载文件
3.取消挂载:右键X盘,点击取消连接或者执行命令:umount X打开后,也能看到我们挂载的共享目录的内容
|