linux 通过nfs下提供目录共享给其他服务器,就是做了个共享盘
起因:应用部署在多台服务器上的时候,我们上传文件到一个指定共享目录,这个共享目录要各台服务器都能访问到。程序本地访问到。
经过:百度一番后,搜索做共享盘用的最多的就是nfs。
结果:找了个感觉还不错的文档跟着做,试了下,心领神会了。。
1、准备工作,所有需要用到这个目录的服务器,都需要安装nfs服务,然后设置开启启动,并且把所需服务启动起来。
安装所需服务nfs、rpcbin
yum install -y nfs-utils rpcbind
分别设置开启启动
chkconfig nfs on
chkconfig rpcbind on
启动这两个服务
service rpcbind start
service nfs start
备注:所有linux的服务启动都是
重启:[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台服务器
192.168.89.137 客户端 A
192.168.89.138 客户端 B
192.168.89.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限制,若是星号则都可以访问,192.168.89.*,则是IP鄙视是192.168.89段的菜可以访问。
(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 192.168.89.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那么客户端也都是删除了的。
至此测试nfs成功共享文件目录。
4、 取消挂载
当我们那个盘符不需要挂载了的时候,客户端
执行: umount /home/soft/nfs/client 提示繁忙 。。device is busy 强制执行: umount -lf /home/soft/nfs/client
执行结果如下:
[root@localhost client]# umount /home/soft/nfs/client
umount.nfs: /home/soft/nfs/client: device is busy
[root@localhost client]# umount -lf /home/soft/nfs/client
[root@localhost client]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 27G 6.5G 21G 24% /
/dev/sda1 1014M 163M 852M 16% /boot
tmpfs 98M 0 98M 0% /run/user/0
重启服务后发现,
之前挂载的目录内容也不见了
service nfs restart
5、设置开机挂载
否则重启服务器后,之前命令配置的挂载信息就丢失了
6、windows挂载
1.开启nfs客户端:打开控制面板》程序》启用或关闭windos功能》选中nfs客户端,点击确定
.2.挂载:mount 192.168.89.139:/home/soft/nfs/server X: (此处注意只能定位到nfs目录,否则会报网络错误)
会创建一个网络盘X盘,里面挂载文件
3.取消挂载:右键X盘,点击取消连接或者执行命令:umount X:
打开后,也能看到我们挂载的共享目录的内容
ok,完成。。
参考文档:
https://www.cnblogs.com/xujingyang/p/9209549.html