目录
NFS服务环境准备
服务器角色列表
NFS server:192.168.1.5
NFS clent01:192.168.1.4
NFS clent01:192.168.1.3
系统及内核版本
[root@nfs-server ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@nfs-server ~]# uname -r
3.10.0-693.el7.x86_64
注:防火墙和selinux都关闭
软件列表
nfs-utils
rpcbind
NFS服务企业案例部署
将NFS server的/data目录共享给192.168.1.0网段,要求可读写
NFS服务端部署
服务安装
[root@nfs-server ~]# yum -y install nfs-utils rpcbind
[root@nfs-server ~]# rpm -qa nfs* rpcbind
nfs-utils-1.3.0-0.66.el7_8.x86_64
rpcbind-0.2.0-49.el7.x86_64
[root@nfs-server ~]# systemctl start rpcbind.service
[root@nfs-server ~]# systemctl enable rpcbind
[root@nfs-server ~]# lsof -i :111
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 16202 rpc 6u IPv4 64534 0t0 UDP *:sunrpc
rpcbind 16202 rpc 8u IPv4 64536 0t0 TCP *:sunrpc (LISTEN)
rpcbind 16202 rpc 9u IPv6 64537 0t0 UDP *:sunrpc
rpcbind 16202 rpc 11u IPv6 64539 0t0 TCP *:sunrpc (LISTEN)
[root@nfs-server ~]# systemctl start nfs.service
[root@nfs-server ~]# systemctl enable nfs.service
创建共享目录及授权
[root@nfs-server ~]# mkdir -p /data
[root@nfs-server ~]# chown -R nfsnobody.nfsnobody /data
[root@nfs-server ~]# ll -d /data/
drwxr-xr-x 2 nfsnobody nfsnobody 6 10月 23 15:20 /data/
配置NFS配置文件
[root@nfs-server ~]# vim /etc/exports
[root@nfs-server ~]# cat /etc/exports
/data 192.168.1.0/24(rw,sync)
[root@nfs-server ~]# exportfs -rv
exporting 192.168.1.0/24:/data
[root@nfs-server ~]# showmount -e localhost
Export list for localhost:
/data 192.168.1.0/24
[root@nfs-server ~]# cat /var/lib/nfs/etab
/data 192.168.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)
本地挂载测试
[root@nfs-server ~]# mount -t nfs 192.168.1.5:/data /mnt/
[root@nfs-server ~]# df -h
192.168.1.5:/data 18G 1.6G 17G 9% /mnt
客户端配置(所有)
[root@nfs-clent01 ~]# yum -y install rpcbind nfs-utils
[root@nfs-clent01 ~]# systemctl start rpcbind.service
[root@nfs-clent01 ~]# systemctl enable rpcbind.service
注:nfs服务不用启动
[root@nfs-clent01 ~]# showmount -e 192.168.1.5
Export list for 192.168.1.5:
/data 192.168.1.0/24
[root@nfs-clent01 ~]# mount -t nfs 192.168.1.5:/data /mnt
[root@nfs-clent01 ~]# df -h
192.168.1.5:/data 18G 1.6G 17G 9% /mnt
[root@nfs-clent01 ~]# echo "/bin/mount -t nfs 192.168.1.5:/data /mnt" >>/etc/rc.local
测试:在clent01的/mnt目录下创建测试文件,clent02和nfs-server都能收到共享文件
[root@nfs-clent01 ~]# cd /mnt/
[root@nfs-clent01 mnt]# ls
[root@nfs-clent01 mnt]# touch test.txt
clent02查看
[root@nfs-clent02 ~]# ll /mnt/
总用量 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 10月 23 15:41 test.txt
nfs-server查看
[root@nfs-server ~]# ll /mnt/
总用量 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 10月 23 15:41 test.txt
NFS服务常用配置参数权限
即为括号内参数
rw:表示可读写
ro:表示只读
sync:写数据时同步写入NFS server磁盘(有点安全,缺点性能会稍降低)
async:写数据会先写入缓冲区,硬盘有空档在写入硬盘
no_root_squash:访问NFS server共享目录的如果是root的话,它对该目录具有root权限
root_squash:访问NFS server共享目录的如果是root的话,权限将会压缩为匿名用户
all_squash:所有用户的权限都会压缩为匿名用户
anonuid:匿名用户,uid通常为nfsnobody用户的值
anongid:匿名用户组,uid通常为nfsnobody用户组的值
企业生产NFS exports配置实例
配置例一:
/data 192.168.1.0/24(rw,sync)
注:允许客户端读写,并且数据同步到服务器端的磁盘里
配置例二:
/data/blog 192.168.1.0/24(rw,sync,all_squash,anonuid=2000,anongid=2000)
注:允许客户端读写,并且数据同步写入服务端磁盘,指定客户端用户的UID和GID
配置例三:
/data/log 192.168.1.0/24(ro)
注:只读,例如有特定用户需要查看共享目录文件的需求,又不希望用户有修改的权限
重点NFS服务文件或命令说明
/etc/exports:主配置文件,默认为空
/usr/sbin/exportfs:管理命令,加载配置生效:exportfs -rv
/usr/sbin/showmount:查看配置及挂在结果:showmount -e 192.168.1.5
/var/lib/nfs/etab:配置文件的完整设定参数
/proc/mounts:客户端挂载参数:grep mnt /proc/mounts
/var/lib/nfs/rmtab:客户端访问服务器exports的信息列表