NFS网络文件系统
目录
1.nfs基本概述
NFS:Network File System 网络文件系统
通过局域网让不同主机系统之间共享文件或目录
主要实现LINUX系统之间文件共享(早期)
小文件存储系统(Moosefs,FastDFS)
大文件存储系统(glusterfs,HDFS)
文件系统:ext4 xfs
为什么要使用NFS服务进行存储?
1.实现多台服务器之间的数据共享
2.实现多台服务器之间的数据一致性
2.NFS实现原理
NFS守护进程rbcbind
PRC.nfsd
守护进程,管理NFS
PRC.mount
管理NFS的文件系统
本地文件操作方式
1.当用户执行mkdir命令,该命令会通过shell解释器翻译给内核,由内核解析完成后驱动硬件,完成响应操作…
NFS实现原理(需要先了解[程序][进程][线程])
- 用户进程访问NFS客户端,使用不同的函数对数据进行处理
- NFS客户端通过TCP/IP的方式传递给NFS服务端
- NFS服务端接收到请求后,会调用portmap进程进行端口映射
- nfsd进程用于判断NFS客户端是否拥有权限连接NFS服务端
- RPC.mount进程判断客户端是否有对应的权限进行验证.
- portmap进程实现用户映射和压缩
- 最后NFS服务端会将对应请求的函数转为本地能识别的命令,传递至内核,由内核驱动硬件.
rpc是一个远程过程的调用,那么使用nfs必须由rpc服务
pc过程调用
3.共享权限参数
rw 读写权限 ***
ro 只读权限
root_squash 当NFS客户端以root管理员访问时,映射为NFS服务的匿名用户
no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root用户
all_squash 无论NFS客户端使用什么账号访问呢,均映射为NFS服务器的匿名用户***
no_all_squash
sync 同时将数据写入内存与因公安中,保证不丢失数据 ***
async 优先将数据保存到内存,然后再写入硬盘:这样效率提高,但可能会丢失数据
anonuid 配置all_aquash使用,指定NFS的用户UID,必须存在系统 ***
anongid 配置all_squash使用,指定NFS的用户UID,必须存在系统***
参考写法:
/data 192.168.1.0/24(rw,all_squash,sync),*(ro) # 使用* 表示所有ip
/backup 192.168.1.1/32(ro)
echo "/data 192.168.1.0/24(rw,no_root_squash,sync)" > /etc/exports
4.NFS服务实践
1.环境准备
服务器系统 角色 主机名 外网名 内网IP
centos 7.5 NFS服务器 NFS 10.0.0.31 172.16.1.31
centos 7.5 NFS服务器 backup 10.0.0.41 172.16.1.41‘
防火墙、selinux关闭
2.安装nfs
yum -y install nfs-utils rpcbind
3.配置
主被指文件vim /etc/exports,默认空
格式:
共享目录的路径 允许访问的FNS客户端(共享权限参数)
共享目录的路径:服务端本地目录
允许访问的客户端:ip或域名
网段:192.168.1.0/24
主机:192.168.1.1/32
域名:*.oldboedu.com
echo "/data *(rw,no_root_squash,sync)" > /etc/exports
4.创建相关环境
mkdir /data
chown -R nfsnobody:nfsnobody /nfs_data/
5.启动服务
systemctl restart nfs-server rpcbind
6.验证是否生效
showmount -e
5.NFS客户端挂载
1.安装软件包yum -y install rbcbind
2.客户端使用showmount -e 服务端ip地址
3.mount :目录 本地目录
4.永久挂载
echo "172.16.1.31:/nfs /nfs_backup nfs defaults 0 0 " >> /etc/fstab
5.强制卸载 web节点和nfs服务器连接终端会当值web服务器卡断 这是需要强制卸载
umount -lt /nfs_backup