1. 什么是NFS?
- 定义:NFS(Network File System,网络文件系统)是一种分布式文件系统协议
- 作用:在生产环境中常被用作存储资源共享的手段。一台作为存储服务器的机器通过网络设备与其他应用类服务器建立连接,并将共享的存储空间映射给它们。
- 特点:NFS常用于存储静态数据,如视频、图片等,并且更侧重于写入权限的灵活管理和分配
- 注意 :NFS有并行写入异常
- 场景:NAS产品会使用NFS来实现网络共享存储空间的技术。支持数据同步
- 网络存储
- NAS:网络存储服务器
- Linux的文件系统有:nfs 、cifs
- 初级: 本机,本地存储:磁盘管理,文件系统,逻辑卷,磁盘阵列
- 中级: 网络文件系统:nfs、samba
2. NFS挂载原理
- 端口管理:NFS服务器随机选择端口进行数据传输,而这些端口由RPC(Remote Procedure Call,远程过程调用)服务管理。
- 注意 :RPC 比 NFS先启动 ,NFS在启动后会在RPC注册三个固定的端口(20048、2049、39961)
- 通信流程:
- 服务器端启动RPC服务,监听111端口。
- 启动NFS服务并向RPC注册端口信息。
- 客户端启动RPC服务,向服务器端请求NFS端口信息。
- 服务器端RPC返回NFS端口信息给客户端。
- 客户端通过获取的NFS端口建立与服务器的连接并进行数据传输。
![[Pasted image 20241009183522.png]]
3. NFS相关协议及软件安装管理
- 协议:RPC(远程过程调用协议)
- 软件:
nfs-utils
:包含NFS命令与监控程序。rpcbind
:支持安全NFS RPC服务的连接,在CentOS 6.*之前称为portmap
,C7不用安装
- 默认用户:nfsnobody uid 65534
4. NFS系统守护进程
- nfs:基本的NFS守护进程,端口是2049 负责管理客户端是否能够登录服务器。
- rpcbind:负责端口映射工作,当客户端尝试连接NFS服务时,
rpcbind
会提供服务对应的端口信息。C7整合到systemd下,端口是111
5. NFS服务器的配置(如何对权限的灵活管理)
-
配置文件:
/etc/exports
(共享配置文件),用于定义共享目录及其访问权限。 -
配置格式:
共享目录 客户端1(访问权限,用户映射,其他) 客户端2(访问权限,用户映射,其他) /www 192.168.4.0/24(rw,all_squash,anonuid=10086,anongid=10086)
-
访问权限:
ro
:只读访问。rw
:读写访问。
-
用户映射:
- 客户端使用root创建文件:
root_squash
:将root用户映射为匿名用户(默认)。生产环境不用no_root_squash
:保留root用户权限。生产环境不用
- 客户端不区分用户类型创建文件:
all_squash
:将所有用户映射为匿名用户。anonuid=xxx
:指定匿名用户的UID。anongid=xxx
:指定匿名用户的GID。
- 使用2的原因:因为1会根据客户端的不同而改变文件所属的组或用户ID,导致后续管理混乱。
- 客户端使用root创建文件:
-
数据同步方式:
sync
:同步写入数据,保证数据一致性,但效率较低。async
:异步写入数据,提高效率,但可能导致数据不一致。
-
客户端常用的指定方式:
- 指定ip地址的主机:192.168.0.200
- 指定子网中的所有主机:192.168.88.0/24
- 指定域名的主机:www.kernel.com
- 指定域中的所有主机:*.kernel.com
- 所有主机:*
-
命令扩展:
- find 目录 -nouser #查询没有所有者的文件 可以用来找nfs查找没有用户的文件
- exportfs -au 卸载所有共享目录
- exportfs -ra 重新共享所有目录
- 服务器端查看nfs共享状态 showmount -e 本机ip
- 客户端查看nfs共享状态 showmount -e NFS服务器IP
- 客户端挂载nfs服务器共享目录命令格式:mount NFS服务器IP:共享目录 本地挂载点目录mount 192.168.4.100:/www /var/www/
-
实验实现nfs服务器的共享:
服务器
yum -y install nfs-utils
mkdir /www
vim /etc/exports
/www 192.168.90.103(rw,all_squash,anonuid=10086,anongid=10086)
useradd -u 10086 www
#两种给目录权限的方法一更改文件所有者(更通用) 二设置ACL权限
#设置文件系统权限
chown -R www.www /www
setfacl -m u:www:rwx /www
systemctl start nfs
#用来查看挂载这个服务器的客户端
showmount -e
客户端
#安装nfs客户端 并让客户端可以识别nfs系统
yum -y install nfs-utils
mkdir /www
#挂载nfs文件系统 注意不要在挂载目录下挂载 如www 在生产环境中挂载目录最好和服务器的共享目录同名
mount 192.168.90.102:/www /www
cd /www
touch 111
6. 备份的了解
-
备份:没有技术含量,是意识问题:也就是在生产环境中,备份完了数据,还需要验证数据是否可行
-
哪些数据需要备份
no.1 数据库
其他:网页,日志,系统配置 -
有哪些备份策略
完全备份: 差异备份: 增量备份:
完全+增量(生产环境使用的策略) :比如在周一到周五做增量备份,在周末做完全备份 -
策略中的细节备份方法
冷备:不再变化的数据备份 热备(生产环境大部分的数据):正在变化的数据备份 -
备份工具:
cp、dd、xfsdump、scp、tar、diff、rsync -
备份的地理位置:
本地: 异地:灾备-异地容灾备份 -
备份的设计:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?