NFS 是Network File System的缩写,中文意思是网络文件系统。它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。NFS客户端(一般为应用服务器,例如web)可以通过挂载(mount)的方式将NFS服务器端共享的数据目录挂载到NFS客户端本地系统中(就是某一个挂载点下)。从客户端本地看,NFS服务器端共享的目录就好像是客户端自己的磁盘分区或者目录一样,而实际上却是远端的NFS服务器的目录。
一、服务端
1、检查nfs服务
1 | rpm -qa|grep nfs |
2、安装nfs
yum -y install nfs-utils rpcbind
3、设置开机自动启动服务
chkconfig nfs on
chkconfig rpcbind on
或者
systemctl enable nfs
systemctl enable rpcbind
4、启动服务
service rpcbind start
service nfs start
或者
systemctl start rpcbind
systemctl start nfs
5、创建共享目录
mkdir /work/test
6、配置exports文件
vi /etc/exports
加入:
/work/test *(rw,sync,no_root_squash,no_subtree_check)
7、刷新配置立即生效
exportfs -a
8、查看mount目录
#此时可用showmount -e 服务端ip来查看可mount目录
showmount -e
二、客户端
1、创建共享目录
mkdir /work/test
2、挂载目录
mount mnode02:/work/test /work/test
#若挂载失败,错误提示如下:
mount: wrong fs type, bad option, bad superblock on xxxx:/xxx/xxx,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount.
In some cases useful info is found in syslog - try
dmesg | tail or so
#安装 nfs-utils 即可
yum install nfs-utils
3、卸载已挂载目录
umount /work/test
4、NFS挂载时出现”access denied by server while mounting”的解决方法
1、使用了非法端口,也就是使用了大于1024的端口。
这个错误,可以通过查看日志确认:
[root@local~ /]# cat /var/log/messages | grep mount
解决办法:
修改配置文件/etc/exports,加入 insecure 选项,重启nfs服务,再尝试挂载。
/work/test *(insecure,rw,async,no_root_squash)
2、NFS版本问题
编辑/etc/sysconfig/nfs文件,找到下面:
#Turn off v2 and v3 protocol support
#RPCNFSDARGS=”-N 2 -N 3”
#Turn off v4 protocol support
#RPCNFSDARGS=”-N 4” /把这句前面的#号去掉/
最后保存,重启nfs服务,再尝试挂载;如果挂载不上,可尝试在后面加-o nolock参数。
3、查看客户端挂载的目录是否具备读写权限,添加相应权限即可。
4、nfs服务器上的/etc/hosts中设置了客户端机器IP对应域名,去掉即可。
复制代码
注:如果需要设置开机挂载,在/etc/fstab添加一行配置即可:
mnode02:/work/test /work/test nfs rw,tcp,intr 0 1
然后服务端和客户端都要用enable设置nfs和rpcbind服务开机启动,然后才可以正常挂载
结果
1 | [rectangle setX: 10 y: 10 width: 20 height: 20]; |
1 | [root@mnode02 test]# pwd |
4444p
1 | [root@mnode01 work]# df -h |
补充:
配置文件解释:
/etc/exports
/opt/nfs 192.168.5.*(rw,sync,no_root_squash)
下面解释一下,总共需要写三部分的东西,第一部分就是/opt/nfs,也就是待共享的目录。第二部分192.168.5.*是指在这个IP地址段内可以共享,第三部分就是括号里的内容,就是参数,也是配置的重点地方,下面重点说一下:
第一个参数: rw: 可擦写的权限 ;ro: 只读的权限。
第二个参数: sync: 资料同步写入到内存与硬盘当中;async: 资料会先暂存于内存当中,而非直接写入硬盘。
第三个参数: 1、no_root_squash: 登入 NFS 主机使用分享目录的使用者,如果是 root的话,那么对于这个分享的目录来说,他就具有root的权限!这个项目极不安全,不建议使用!
2、root_squash:在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用 者,通常他的 UID 与 GID 都会变成 nobody 那个身份。
3、all_squash: 不论登入 NFS 的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是nobody 啦!
4、anonuid: 前面关于 *_squash 提到的匿名使用者的 UID 设定值,通常为 nobody,但是你可以自行设定这个 UID 的 值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中!
5、anongid: 同 anonuid ,但是变成 group ID 就是了。