NFS简介
一,NFS简介
1 2 3 | NFS是Network File System的缩写及网络文件系统。NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。 NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS,ceph |
二,NFS应用
1 2 3 4 5 6 | 1. 用户访问NFS客户端,将请求转化为函数 2.NFS 通过TCP / IP连接服务端 3.NFS 服务端接收请求,会先调用portmap进程进行端口映射 4.Rpc .nfsd进程用于判断NFS客户端能否连接服务端; 5.Rpc .mount进程用于判断客户端对服务端的操作权限 6. 如果通过权限验证,可以对服务端进行操作,修改或读取 |
三,NFS实践
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 服务端 1 ,安装NFS和rpcbind [root@nfs ~] # yum install nfs-utils rpcbind -y 2 ,创建挂载点 [root@nfs ~] # mkdir /web/nfs{1..9} 3 ,配置挂载点 [root@nfs ~] # vim /etc/exports 格式: [挂载点] [可以访问的IP] ([权限]) 4 ,关闭selinux和防火墙 [root@nfs ~] # setenforce 0 [root@nfs ~] # systemctl disable --now firewalld 5 ,启动NFS和rpcbind服务 [root@nfs ~] # systemctl start nfs-server [root@nfs ~] # systemctl start rpcbind 6 ,检查服务端是否正常 [root@nfs ~] # showmount -e Export list for nfs: / web / nfsv1 172.16 . 1.0 / 20 [root@nfs ~] # showmount -e 172.16.1.31 Export list for 172.16 . 1.31 : / web / nfsv1 172.16 . 1.0 / 20 7 ,给挂载点授权 [root@nfs ~] # chown -R nfsnobody.nfsnobody /web |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 客户端 1. 安装nfs [root@web01 opt] # yum install -y nfs-utils 2. 创建目录 [root@web01 opt] # mkdir /opt/nfs/ 3. 挂载NFS [root@web01 opt] # mount -t nfs 172.16.1.31:/web/nfs1 /opt/nfs/ 4. 测试NFS文件同步功能 [root@web01 opt] # touch nfs/{1..9}.txt |
nfs共享参数 | 参数作用 |
---|---|
rw | 读写权限 (常用) |
ro | 只读权限 (不常用) |
root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 (不常用) |
no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 (不常用) |
all_squash | 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 (常用) |
no_all_squash | 无论NFS客户端使用什么账户访问,都不进行压缩 (不常用) |
sync | 同时将数据写入到内存与硬盘中,保证不丢失数据 (常用) |
async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 (不常用) |
anonuid | 配置all_squash使用,指定NFS的用户UID,必须存在系统 (常用) |
anongid | 配置all_squash使用,指定NFS的用户GID,必须存在系统 (常用) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 1 ,控制读写 rw ,ro 2 ,控制文件权限 root_squash no_root_sqash all_squash no_all_squash 3 ,控制写模式 sync async 4 ,控制用户 anonuid anongid |
五,搭建考试系统
1 2 3 4 5 6 7 8 9 10 11 12 | 统一用户: 1. 创建用户(服务端和客户端都需要) [root@nfs nfs1] # groupadd www -g 666 [root@nfs nfs1] # useradd www -u 666 -g 666 -M -r -s /sbin/nologin [root@nfs nfs1] # vim /etc/exports / web / nfs1 172.16 . 1.0 / 20 (rw,sync,all_squash,anonuid = 666 , anongid = 666 ) [root@nfs ~] # systemctl restart nfs-server rpcbind 2. 修改挂载点权限 [root@nfs ~] # chown -R www.www /web/ 3. 使用 |
搭建WEB服务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 1 ,安装web软件 [root@web01 opt] # yum install httpd php php-devel -y 2 ,将代码放置于网站的根目录 [root@web01 opt] # cd /var/www/html # 上传代码 3 ,授权 [root@web01 html] # chown -R www.www /var/www/html 4 、关闭selinux和防火墙 [root@nfs ~] # setenforce 0 [root@nfs ~] # systemctl disable --now firewalld 4.1 ,启动web软件 [root@web01 html] # systemctl start httpd 5 ,修改web软件的用户 [root@web01 html] # vim /etc/httpd/conf/httpd.conf 6 ,启动web软件 [root@web01 html] # systemctl start httpd 7 ,测试 |
配合NFS实现文件共享
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 1 、修改NFS配置文件 [root@nfs nfs1] # vim /etc/exports / web / upload 172.16 . 1.0 / 20 (rw,sync,all_squash,anonuid = 666 ,anongid = 666 ) 2 、创建挂载点 [root@nfs nfs1] # mkdir /web/upload [root@nfs nfs1] # chown www.www /web/upload 3 、重启NFS [root@nfs nfs1] # systemctl restart nfs-server rpcbind 4 、客户端安装NFS软件 [root@web01 html] # yum install nfs-utils -y [root@web02 html] # yum install nfs-utils -y [root@web03 html] # yum install nfs-utils -y 5 、挂载 [root@web01 html] # mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload [root@web02 html] # mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload [root@web03 html] # mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload 6 、测试 用web2上传,web3查看 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构