1、介绍:
Network File System,
由Sun公司在1984年开发,目前NFS被普遍使用。
NFS4.0以前的版本在性能上存在瓶颈,NFS4.1已经是pNFS了,即并行NFS???
目的是在安装UNIX计算机之间实现磁盘文件共享,构建于IP协议之上,是标准的C/S架构,NFS服务器输出(export)让别人共享的目录,多个客户端挂载(mount)各自感兴趣的目录,并加载到本地文件空间当中,为于VFS(虚拟文件系统)之下,这样就像访问本地硬盘上的文件那样方便简单了。如下图:
2、搭建
centos7默认nfs服务器已经安装,只需配置nfs服务器就好。若没有可以yum groupinstall "NFS file server",设置自起和启动服务。
配置:
红帽和Ubuntu对nfs服务器的配置都一样,把输出export的目录加到文件/etc/exports中,一行表示一个export dir,格式如下:
被输出目录 客户主机1(参数1,参数2,...) 客户主机2(参数1, 参数2,...) .....
客户主机可以为具体ip,可以为域名且域名中可以使用通配符* eg *.moodisk.com, IP网络,指明网段 eg 192.168.10.0/24 或者 192.168.10.0/255.255.255.0
参数为权限,可以不加,默认为ro(只读),sync(到硬盘反馈),subtree_check(强制检查父目录的权限),no_all_squash(保留共享文件的UID和GID)
rw读写,async数据到nfs内存就反馈客户端写成功,no_subtree_check不检查父目录权限,root_squash把客户端root账号的uid/gid映射成服务器上的匿名账号,no_root_squash, all_squash, anoomuid=150 anongid=100
ro 只读访问 rw 读写访问 sync 所有数据在请求时写入共享 async NFS在写入数据前可以相应请求 secure NFS通过1024以下的安全TCP/IP端口发送 insecure NFS通过1024以上的端口发送 wdelay 如果多个用户要写入NFS目录,则归组写入(默认) no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。 hide 在NFS共享目录中不共享其子目录 no_hide 共享NFS目录的子目录 subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认) no_subtree_check 和上面相对,不检查父目录权限 all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。 no_all_squash 保留共享文件的UID和GID(默认) root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认) no_root_squas root用户具有根目录的完全管理访问权限 anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID
nfs和mount详细说明见:http://www.cnblogs.com/wspblog/p/5673924.html#_label0
systemctl reload nfs 每次修改配置文件都要重载,配置不对会报错!!
3、连接挂载
systemctl start nfs
showmount -e 172.30.0.133在客户端查看nfs服务器共享的目录
showmount -a 172.30.0.133不知道在show啥???
mount -t nfs <NFS服务器目录>:<被输出目录> <本地空目录> 或者 mount.nfs 还可以加 -o v4.1
4、报错解释:
[lixn@bogon ~]$ showmount -e 172.30.0.133
1) clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)服务器端口问题,关掉firewall,开放哪几个端口就可以呀?怎么设置端口???
2) mount.nfs: access denied by server while mounting 172.30.0.133:/dev/nfs/share1被服务器拒绝
3)[root@bogon mnt]# mount.nfs -o v4.1 172.30.0.133:/dev/nfs/share1 /mnt/nfs/
mount.nfs: mounting 172.30.0.133:/dev/nfs/share1 failed, reason given by server: No such file or directory一般是命令中的目录不对
3)写配置文件时exports 写/dev/nfs/share reload报错,改为/opt/share就正常,这是为什么????
4)对配置了rw权限的nfs目录: mkdir: cannot create directory ‘a’: Permission denied???不能写???为什么
对配置为默认(or)权限的nfs目录:touch: cannot touch '111': Read-only file system