一、环境准备
1、关闭防火墙 systemctl stop firewalld 2、永久关闭 systemctl disable firewalld
3、关闭SELINUX
sed -i 's/SELINUX=disabled/SELINUX=disabled/g' /etc/sysconfig/selinux
4、查询是否关闭
[root@localhost mysql]# getenforce
Disabled
二、服务搭建准备
搭建NFS服务准备虚拟机,我这里准备的是centos7 四台虚拟机,可以准备两台效果是一样的。 nfs 服务器 128.196.126.142 nfs 客户端 128.196.126.143 nfs 客户端 128.196.126.144 nfs 客户端 128.196.126.145
依赖关系nfs 四台都需要操作
yum install -y nfs-utils
2.1 修改共享目录用户ID
我这里挂载目录是nas_a目录,大家可以创建任意目录,前提是创建的目录路径需要一致,如果是使用普通用户,需要保证用户ID统一。
修改用户ID和用户组ID参考连接:https://www.cnblogs.com/pythonx/p/12074613.html
2.2 创建共享目录
创建共享目录,四台都操作
mkdir -p /home/ap/nas_a
2.4 编辑NFS配置文件
/etc/exports NFS主要配置文件,系统没有默认值,需要手动编辑 vi /etc/exports /usr/sbin/exportfs NFS管理命令 /usr/sbin/showmount 客户端的查看命令 /var/lib/nfs/etab 记录NFS分享出来的目录的完整权限设定值 /var/lib/nfs/xtab 记录测井登陆过的客户端信息
2.5 NFS配置文件格式说明
/etc/exports 文件格式 [共享目录] [设置访问的主机] [访问权限,其他,用户映射] eg: /home/ap/nas_a *(rw,sync,all_squash) [共享目录] 是指:给客户端和服务的使用的同一个目录 [设置访问的主机] 指定IP地址主机: 1.1.1.1 指定子网中的所有主机: 1.1.0.0/24或1.1.0.0/24/255.255.255.0 指定域名主机: json.chao.com 指定所有域主机: *.chao.com 所有主机: * 注意: 主机和权限中间没有空格 [访问权限] 只读: ro 读写: rw [用户映射] all_squash: 将远程的所有普通用户及所有属组映射为匿名用户或用户组(nfsnobody) no_all_squash: 与all_squash 取反(默认设置) root_squash: 将root用户集所属组都映射为匿名用户或用户组(默认值) no_root_squash: 与root_squash取反 anonuid=xxx : 将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx) anondig=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定改匿名用户组账户为本地用户组账户(GID=xxx) [其他] secure:限制客户端只能小于1024的tcp/udp端口连接nfs服务器(默认值) insecure: 与secure取反,大于1024的tcp/udp端口连接nfs服务器(默认值) sync: 将数据同步写入内存缓冲区与磁盘中,效率低,但是可以保证数据的一致性。 async: 将数据先保证在内存缓冲区中,必要时才写入磁盘 wdelay:检查是否有相关操作,如果有则将这些写操作一起执行,这样可以提高效率(默认值) no_wdelay:内有写操作则立即执行,应与sync配合使用 subtree:若输出目录的是一个子目录,则NFS服务将检查其父母了的权限(默认值) no_subtrr: 及时输出目录是一个子目录,NFS服务器也不检查其父目录权限,这样可以提高效率。
三、服务启动停止
为了使NFS服务正常工作,需要启动rpcbind和nfs两个服务,并且rpcbind 一定要先于nfs启动
3.1 启动rpcbind 和 nfs服务
systemctl start rpcbind.service systemctl start nfs.service
3.2 设置开机自启动
systemctl enable rpcbind.service systemctl enable nfs.service
3.3 查询状态
systemctl status rpcbind.service systemctl status nfs.service
3.3 停止服务
systemctl stop rpcbind.service systemctl stop nfs.service
四、客户端挂载共享目录
mount 挂载命令
格式: nfs服务ip:共享目录 挂载目标目录
eg:
mount -t nfs 128.196.126.142:/home/ap/nas_a /home/ap/nas_a
五、设置开机自动挂载
vi /etc/fstab
# /etc/fstab # Created by anaconda on Wed Nov 6 17:42:41 2019 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/ol-root / xfs defaults 0 0 UUID=55aa95cc-bedd-4549-8479-59dafbc409c7 /boot xfs defaults 0 0 /dev/mapper/ol-swap swap swap defaults 0 0 128.196.126.142:/home/ap/nas_a /home/ap/nas_a nfs sync 0 0
如果需要验证;保存退出,重启系统 df -h 验证即可。
六、相关命令
1、exportfs [-aruv]
-a 重新启动/etc/exportfs 中的内容
-r: 重新读取/etc/exportfs 中的信息,并同步更新/etc/exportfs 、/var/lib/nfs/xtab
-u :卸载单一目录(和 -a 使用 就是卸载说有的/etc/exportfs 文件中的目录)
-v:显示详细信息
这里的举例
exportfs -au : 卸载所有共享目录,在NFS 服务器上使用,客户端没有作用。
服务端执行后,客户端会卸载共享目录,代表umount
先查询客户端挂载情况 [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 477M 0 477M 0% /dev tmpfs 496M 0 496M 0% /dev/shm tmpfs 496M 14M 483M 3% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/mapper/ol-root 47G 6.1G 41G 13% / /dev/sda1 1014M 156M 859M 16% /boot tmpfs 100M 0 100M 0% /run/user/0 128.196.126.142:/home/ap/nas_a 47G 7.2G 40G 16% /home/ap/nas_a
服务端执行exportfs -au
[root@localhost ap]# exportfs -au [root@localhost ap]# 客户端在检查挂载情况 [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 477M 0 477M 0% /dev tmpfs 496M 0 496M 0% /dev/shm tmpfs 496M 14M 483M 3% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/mapper/ol-root 47G 6.1G 41G 13% / /dev/sda1 1014M 156M 859M 16% /boot tmpfs 100M 0 100M 0% /run/user/0
exportfs -rv:重新共享所有的目录并输出详细信息,NFS服务端使用重新挂载。
服务端执行后,客户端会重新挂载共享目录。
服务端执行 [root@localhost ap]# exportfs -rv exporting *:/home/ap/nas_a [root@localhost ap]# 客户端查询挂载情况 [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 477M 0 477M 0% /dev tmpfs 496M 0 496M 0% /dev/shm tmpfs 496M 14M 483M 3% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/mapper/ol-root 47G 6.1G 41G 13% / /dev/sda1 1014M 156M 859M 16% /boot tmpfs 100M 0 100M 0% /run/user/0 128.196.126.142:/home/ap/nas_a 47G 7.2G 40G 16% /home/ap/nas_a
2、showmount:[-ae]
-a 显示已经于客户端连接的目录信息
[root@localhost ap]# showmount -a All mount points on localhost.localdomain:
-e:ip或者Hostname 显示此IP地址分享出来的目录
[root@localhost ap]# showmount -e Export list for localhost.localdomain:
3、rpcinfo
查看rpm执行信息,可以用于检查rpm运行情况的工具,利用rpcinfo -p可以查看出rpc开启端口所提供的程序有哪些。
[root@localhost ap]# rpcinfo -p program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 43206 status 100024 1 tcp 54467 status 100005 1 udp 20048 mountd 100005 1 tcp 20048 mountd 100005 2 udp 20048 mountd 100005 2 tcp 20048 mountd 100005 3 udp 20048 mountd 100005 3 tcp 20048 mountd 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100227 3 tcp 2049 nfs_acl 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100227 3 udp 2049 nfs_acl 100021 1 udp 41563 nlockmgr 100021 3 udp 41563 nlockmgr 100021 4 udp 41563 nlockmgr 100021 1 tcp 58204 nlockmgr 100021 3 tcp 58204 nlockmgr 100021 4 tcp 58204 nlockmgr
总结;如果想设置开机自启或者开机自动挂载,参考上述。
1、安装 NFS服务(四台都操作)
yum install -y nfs-utils
2、编译nfs配置文件(四台都操作)
vi /etc/exports /home/ap/nas_a *(rw,sync,all_squash)
3、创建共享目录(四台都操作)
mkdir -p /home/ap/nas_a
4、启动NFS服务,先启动rpcbind 在启动nfs服务(服务端操作)
systemctl start rpcbind.service systemctl start nfs.service
5、挂载(客户端操作)
mount -t nfs 128.196.126.142:/home/ap/nas_a /home/ap/nas_a