NFS(Network File System)网络文件系统。它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
¶一、centos
¶1. 服务端安装并配置
¶1.1 安装
1 | 关闭防火墙 |
¶1.2 配置
1 | 创建共享目录,由于客户端挂载的用户是nfsnobody用户,如果要让客户端可读可写,需要这里是使用root用户建立的目录,所以要给其他用户 7 rwx 的权限 |
exports文件配置介绍:
1 | /home/nfs :共享的目录 |
exportfs命令工具:
exportfs用于管理NFS文件系统的命令工具,可在不直接编辑/etc/exports
文件的情况下方便的管理NFS。这命令还没研究透,后面有时间再好好补齐。
-a 打开或者取消所有目录的共享
-i<文件>
指定配置文件
-r 更新配置,重新读取/etc/exports
-u 卸载指定目录
-o 使用指定参数
-v 显示共享详细情况
更多:exportfs命令维护NFS服务端当前导出表。其中导出主表存放在
/var/lib/nfs/etab
文件中(这个文件有最详细的配置,比如有的参数用户没有指定,那么nfs会自动生成对应的默认参数)。当客户端
发送一个NFS MOUNT请求时,rpc.mountd进程会读取该文件。
¶2. 客户端安装并挂载
¶2.1 安装
1 | 关闭防火墙 |
¶2.2 挂载
1 | 查看服务端的共享目录 showmount -e + nfs服务主机IP |
¶3. NFS权限
服务端要共享目录,必定存在权限问题,该目录是否要公开,是否可读可写可执行,是否每个人都能看…等等这些都是重点考虑的事情。比如共享目录被设置成777,那么任意用户就都可读可写可执行。下面将设置为750权限,那么就只能是指定用户可读可写可执行,用户组可读可写,而其他用户都没权限读写和执行。
¶3.1 服务端操作
1 | 修改nfs配置文件(1、共享目录可读可写;2、将来访的root用户不保留root性质而是映射为nfsnobody匿名用户或用户组;3、将数据先保存在内存缓冲区中,必要时才写入磁盘) |
💁♂提示:
1 | 如果需要刪除用戶组,可执行如下命令 |
¶3.2 客户端操作
1 | 客户端也要要创建同样的tomcat用户才能使用服务端中共享目录tomcat的所有权限 |
💁♂提示:
卸载掉挂载的目录
1 | 根据挂载点卸载 |
💁♂ 拓展:如果共享目录有777权限且不保留客户端root用户性质权限的话,那么在客户端使用不存在于服务端的用户(比如test2)在共享目录中创建的文件或者目录时的,则改文件或目录的文件创建者将会被nfs设置为nfsnobody匿名用户。
¶4. windows客户端挂载
可直接使用windows10 自带的nfs客户端服务功能,打开控制面板>>程序>>程序和功能>>启动或关闭Windows功能
1 | mount 192.168.1.161:/mnt/nfs k: |
卸载挂载
1 | umount k: #卸载挂载点k盘 |
¶5. 端口配置
NFS 用到的服务有 portmapper nfs rquotad nlockmgr mountd 5个服务。通过命令 rpcinfo -p 可查看nfs使用的端口
1 | [root@0003 ~]# rpcinfo -p |
其中 portmapper nfs 服务端口是固定的分别是 111 2049
另外 rquotad nlockmgr mountd 服务端口是随机的。由于端口是随机的,这导致防火墙无法设置。
这时需要配置/etc/sysconfig/nfs
使 rquotad nlockmgr(这个服务包含两个端口) mountd 的端口固定。
1 | vim /etc/sysconfig/nfs |
重启nfs即可生效
1 | service nfs restart |
最后将5个服务固定的6个端口配置到防火墙即可,端口包括:111、875、892、2049、32769、32803
1 | firewall-cmd --permanent --add-port=111/tcp |
参考:
http://www.blogjava.net/envoydada/archive/2012/03/14/371875.html
¶二、ubuntu
1 | 1. 安装 |