NFS网络文件系统
实验环境:VMware Workstation Pro 14(试用版)系统平台:CentOS Linux release 7.4.1708 (Core) 内核 3.10.0-693.el7.x86_64
NFS配置介绍
软件包
nfs-utils
端口
2049(nfsd), 其它端口由rpcbind(111)分配工作过程NFS启动时,会将所使用的端口向rpcbind注册,当有客户端访问的时候,客户端首先通讯的是rpcbind(111),进而rpcbind会告知NFS所使用的端口,客户端就可以通过端口访问NFS服务了。
配置文件:
/etc/exports/etc/exports.d/*.exports
依赖包
rpcbind(必须)tcp_wrappers
日志
/var/lib/nfs/
NFS服务主要进程
rpc.nfsd 最主要的NFS进程,管理客户端是否可登录rpc.mountd 挂载和卸载NFS文件系统,包括权限管理rpc.lockd 非必要,管理文件锁,避免同时写出错rpc.statd 非必要,检查文件一致性,可修复文件
CentOS 7不支持同一目录同时用nfs和samba共享,因为使用锁机制不同
启动NFS
# systemctl start nfs# systemctl start nfs-server在Centos 6上,rpcbind必须先启动,否则NFS无法启动在Centos 7上,NFS服务启动时,会把依赖的服务rpcbind一并启动rpcbind.service可以被rpcbind.socket 激活,rpcbind.socket独立工作报以下错误的时候clnt_create: RPC: Program not registered > 重启NFS服务重新注册到rpcbindclnt_create: RPC: Port mapper failure - Unable to receive: errno 111 (Connection refused) > rpcbind服务未启动,重启rpcbing和nfs服务,注意顺序
查看NFS开启的端口
# rpcinfo -p
如果需要在外部使用NFS服务,需要调整防火墙策略
必须先把NFS配置使用固定端口vim /etc/sysconfig/nfsRQUOTAD_PORT=875LOCKD_TCPPORT=32803LOCKD_UDPPORT=32769MOUNTD_PORT=892STATD_PORT=662STATD_OUTGOING_PORT=2020防火墙除开放上述端口,还需开放TCP和UDP的 111 和 2049 共4个端口
配置NFS
语法格式
目录路径 允许访问的IP地址或FQDN列表(选项1,选项2)/app/nfs * > * 代表所有/app/nfs 192.168.5.10(ro) 192.168.5.13(rw) > 列表以空格分隔/app/nfs 192.168.5.0/24(rw)/app/nfs *.magedu.com默认选项:(ro,sync,root_squash,no_all_squash)· ro,rw 只读和读写· async 异步,数据变化后不立即写磁盘,性能高· sync(1.0.0后为默认)同步,数据在请求时立即写入共享· no_all_squash (默认)保留共享文件的UID和GID· all_squash 所有远程用户(包括root)都变成nfsnobody· root_squash (默认)远程root映射为nfsnobody,UID为65534,早期版本是4294967294 (nfsnobody)· no_root_squash 远程root映射成root用户· anonuid和anongid 指明匿名用户映射为特定用户UID和组GID,而非nfsnobody,可配合all_squash使用
生效与查看共享资源
# exportfs -rexportfs: No options for /app/nfs *: suggest *(sync) to avoid warning# exportfs -v/app/nfs <world>(ro,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)通过远程主机查看# showmount -e 192.168.5.108Export list for 192.168.5.108:/app/nfs *
远程主机挂载NFS共享
Linux主机
# mount -t nfs 192.168.5.108:/app/nfs /tmp/nfs# mount 192.168.5.108:/app/nfs /tmp/nfs#dfFilesystem 1K-blocks Used Available Use% Mounted on192.168.5.108:/app/nfs 8913920 1422112 7491808 16% /tmp/nfs# mount192.168.5.108:/app/nfs on /tmp/nfs type nfs (rw,vers=4,addr=192.168.5.108,clientaddr=192.168.5.107)指定NFS版本号挂载# mount -o vers=3 192.168.5.108:/app/nfs /tmp/nfs192.168.5.108:/app/nfs on /tmp/nfs type nfs (rw,vers=3,addr=192.168.5.108)永久挂载# vim /etc/fstab192.168.5.108:/app/nfs /tmp/nfs nfs vers=3 0 0192.168.5.108:/app/nfs /tmp/nfs nfs defaults 0 0
Wdindows下挂载
c:\>mount 192.168.5.108:/app/nfs Z:Z: 现已成功连接到 192.168.5.108:/app/nfs命令已成功完成。
NFS权限情况
1.NFS共享受文件系统权限影响2.受下以选项影响root_squash (默认)远程root映射为nfsnobody,UID为65534,早期版本是4294967294 (nfsnobody)no_root_squash 远程root映射成root用户anonuid和anongid
NFS工具
rpcinforpcinfo -p hostnamerpcinfo –s hostname 查看RPC注册程序exportfs–v 查看本机所有NFS共享–r 重读配置文件,并共享目录–a 输出本机所有共享–au 停止本机所有共享showmount -e hostnamemount.nfs 挂载工具
NFS相关的挂载选项
fg (默认)前台挂载,bg后台挂载hard(默认)持续请求,soft 非持续请求intr 和hard配合,请求可中断rsize和wsize 一次读和写数据最大字节数,rsize=32768_netdev 无网络不挂载示例:mount -o rw,nosuid,fg,hard,intr 172.16.0.1:/testdir /mnt/nfs/
实现NFS的伪根
/app *(fsid=0,rw,crossmnt) > 指明NFS根的路径,(fsid=0,crossmn)这2个选项需要添加/app/nfs *(rw)/app/home/hunk *(rw)重新加载配置#exportfs -r查看#exportfs -v/app <world>(rw,sync,wdelay,hide,crossmnt,no_subtree_check,fsid=0,sec=sys,secure,root_squash,no_all_squash)/app/nfs <world>(rw,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)/app/home/hunk <world>(rw,sync,wdelay,hide,no_subtree_check,sec=sys,secure,root_squash,no_all_squash)
远程主机挂载NFS伪根
# mount 192.168.5.108:/ /tmp/ > 方法跟之前的是一样的,只是把远程NFS的挂载目录变为/#tree /tmp/tmp├── home│ └── hunk│ └── hunk└──nfs ├── aaa.txt └── nfs1.txt
赞 (0)