NAS网络共享

一、NFS入门介绍

1.1 NFS应用场景

NFS最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件;客户端主机将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样进行读写数据;

1.2 NFS通信原理

通信实现流程 :

1)首先服务器端启动RPC服务,并开启111端口
2)然后服务器端启动NFS服务,并向RPC注册端口信息
3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

二、NFS搭建

2.1 节点信息
IP地址 角色
10.0.0.10 客户端
10.0.0.29 服务端
2.2 安装服务
#安装服务
yum install -y  nfs-utils rpcbind

#先启动rpc服务,设置开机启动
systemctl start rpcbind
systemctl start nfs-server
systemctl enable rpcbind
systemctl enable nfs-server
2.3 共享配置
#创建共享目录(下面都是服务端上的配置)
mkdir /data/nfs

#创建用户(指定uid和gid挂载时会用到)
#如果有普通用户,设置id值和权限就行
useradd desh
usermod -u 2001 desh
groupmod -g 2001 desh
chown desh.desh -R /data/nfs
chmod 750 /data/nfs

#配置共享参数(rw--读写,async--异步同步,no_all_squash基于用户id配置权限)
vim /etc/exports
#
/data/nfs 10.0.0.10/32(rw,async,no_all_squash)

#加载配置
systemctl reload nfs
2.4 挂载共享
#创建本地挂载目录(在客户端上操作)
mkdir /data/public
#创建用户,如果本地有就不用了,设置id值就行
useradd tomcat
#
usermod -u 2001 tomcat
groupmod -g 2001 tomcat
#
chmod 750 /data/public
chown tomcat.tomcat -R /data/public
chmod 750 /data/public
#发现nfs共享
showmount -e 10.0.0.29
#挂载到本地目录(需要root执行挂载)
df -Th
mount -t nfs4 10.0.0.29:/data/nfs /data/public
#读写测试
1.此时可以在服务端或客户端上对共享目录进行任意文件创建,删除等操作
2.创建的文件在两个节点上,文件所属用户和用户组会有区别,但权限一致
3.NFS使用no_all_squash参数定义了uid和gid进行授权,这样就可以控制好用户的读写操作了,也无需对共享目录授权777的操作,保证了共享读写的安全性;
2.5 自动挂载
#配置挂载文件,加入挂载参数(客户端)
vim /etc/fstab
#
10.0.0.29:/data/nfs  /data/public       nfs    defaults 0 0
#测试挂载
mount -a;df -Th
2.6 参数汇总
#NFS服务端常用参数
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