本地NAS构建
由于阿里云线上有NAS存储,又不能公网访问,所以本地通过软件构建一个NAS以供测试。
NFS的挂载原理
NFS分为客户端与服务器端,一般设置为一个Server端,多个客户端,也可设置为多对多,当服务器端设置好共享目录/data后,客户端通过相应的访问权限,将共享目录挂载到本地系统的某个目录下,就可以透明的看到共享目录里的文件了,依据服务器制定的相应权限做操作
NFS服务器与客户端的通信原理
客户端NFS和服务端NFS通讯过程
1)首先服务器端启动RPC服务,并开启111端口
2)启动NFS服务,并向RPC注册端口信息
3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。
NFS系统守护进程
nfsd:它是基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器;
mountd:它是RPC安装守护进程,主要功能是管理NFS的文件系统。
当客户端顺利通过nfsd登录NFS服务器后,在使用NFS服务所提供的文件前,还必须通过文件使用权限的验证。它会读取NFS的配置文件/etc/exports来对比客户端权限。
portmap:主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,portmap会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务。
环境:
新建一个虚拟机,系统安装使用最小化安装,可参照我前面的文章,有详细介绍。一般情况是系统盘是和数据盘分开。系统盘在线上我一般情况是分配20G,如果是容器等应用系盘我会分配50G,当然如果是有很多镜像的容器环境,那么我会系统将/var/lib/docker等用单独的数据盘来挂载。
安装配置NAS文件共享存储
1、服务端安装
2、关闭防火墙
3、配置nas
配置文件:/etc/exports
共享目录创建:
4. 本地NAS存储目录 192.168.230.0/24(授权访问客户端的地址段)
5. 重新加载NFS配置
参数说明:
rw:可读写的权限
ro:只读的权限 anonuid:可以自行设定这个UID的值,这个UID必需要存在于你的/etc/passwd当中anongid:同anonuid,但是变成groupID就是了 sync:资料同步写入到内存与硬盘当中 async:资料会先暂存于内存当中,而非直接写入硬盘 insecure:允许从这台机器过来的非授权访问
no_root_squash:登入NFS主机,使用该共享目录时相当于该目录的拥有者,如果是root的话,那么对于这个共享的目录来说,他就具有root的权限,这个参数『极不安全』,不建议使用
root_squash:登入NFS主机,使用该共享目录时相当于该目录的拥有者。但是如果是以root身份使用这个共享目录的时候,那么这个使用者(root)的权限将被压缩成为匿名使用者,即通常他的UID与GID都会变成nobody那个身份
all_squash:不论登入NFS的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是nobody
6. 启动服务
7. 设置开机启动
8. 查看端口占用,以便开着防火墙的时候设置,如果闲麻烦,可以通过限制访问IP
Linux nfs客户端安装
vi /ettc/hosts
在末尾加入
开机自动挂载
vi /etc/fstab
##尾行下面新增加一行写入
注:_netdev表示设备需要网络