NFS介绍
NFS(network file system 网络文件系统),使计算机之间通过tcp/ip网络共享资源。在NFS的应用中,由 NFS 服务器将指定的文件夹共享给客户机,NFS的客户端应用可以透明地读写存放NFS服务器上的文件,像访问本地文件一样。
- NFS服务器:通过NFS协议将文件共享到网络。
- NFS客户端:通过网络挂载NFS共享目录到本地计算机。
服务端配置
关闭防火墙:
systemctl stop firewalld
临时关闭selinux:
setenforce 0
安装部署
yum -y install nfs-utils #安装
systemctl start rpcbind #启动rpcbind服务
systemctl start nfs #启动nfs服务,其实启动nfs服务时rpc相关服务也会启动
systemctl enable rpcbind #设置开机启动rpcbind
systemctl enable nfs #设置开机启动nfs,服务端设置,客户端不需要
NFS共享
/etc/exports共享配置文件
共享格式为:共享目录绝对路径 授权访问的IP或网段(权限1,权限2)
如:/nfs 192.168.1.*(ro)
exportfs -arv ,不用重启nfs服务,配置文件就会生效
showmount -e 192.168.1.10 #检查服务器共享情况,192.168.1.10是服务器ip
括号中列出了访问权限,具体的有:
rw 读写
ro 只读
sync 同步模式,内存数据实时写入磁盘
async 非同步模式
no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大
root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户
all_squash 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户
服务端
服务器IP:192.168.1.10
exportfs命令:管理NFS共享文件系统列表
mkdir /nfs #创建共享目录
chmod +777 /nfs #更多权限
/nfs 192.168.1.0/24(rw,sync,root_squash) #在/etc/exports中加入这行,表示/nfs文件夹,由192.168.1.0这个网段可读写
exportfs -r #该命令重新载入配置,使配置生效
-a 全部挂载或者全部卸载
-r 重新挂载
-u 卸载某一个目录
-v 显示共享目录
客户端
showmount 192.168.1.10 -e #查看共享情况
**临时挂载**
mount -t nfs 192.168.1.10:/nfs /mnt #把共享挂到本地
**永久挂载**
vim /etc/fstab #添加以下一行
192.168.1.10:/nfs /mnt nfs defaults,_netdev 0 0
NFS客户端问题
NFS 4版本会有该问题
客户端挂载共享目录后,不管是root用户还是普通用户,创建新文件时属主、属组为nobody。尤其是在centos6中会出现,解决方法有两个:
一是,客户端挂载时加上 -o nfsvers=3,如果客户端已经挂载,则使用-oremount,nfsvers=3重新挂载即可
二是,客户端和服务端都编辑idmapd.conf文件vim /etc/idmapd.conf,把“#Domain = local.domain.edu” 改为 “Domain = xxx.com” (这里的xxx.com,随意定义吧),然后再重启rpcidmapd服务。centos7上没有rpcidmapd服务,重启rpcbind即可