当前位置: 首页 > news >正文

【运维进阶】NFS 服务器

NFS 服务器

NFS 服务介绍

NFS 是Network File System的缩写,即网络文件系统,最早由Sun公司开发,**用来在UNIX&Linux系统间实现磁盘文件共享的一种方法。**它的主要功能是通过网络让不同的主机系统之间可以共享文件或目录。NFS客户端(一般为应用服务器,例如web)可以通过挂载(mount)的方式将NFS服务端共享的数据目录挂载到NFS客户端本地系统中(就是某一个挂载点下)。从NFS客户端的机器本地看,NFS服务端共享的目录就好像是客户自己的磁盘分区或者目录一样,而实际上确是远端的NFS服务端的目录。

NFS 支持的功能相当的多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此,NFS的功能所对应的端口没有固定住,而是随机取用一些未被使用的小于1024的端口提供服务。但如此一来客户端如何获得服务器端的相关端口呢?

此时我们就得需要远程过程调用(RPC)的服务!RPC最主要的功能是注册每个NFS功能所对应的端口,并且汇报给客户端,让客户端可以连结到正确的端口。RPC定义了一种进程间通过网络进行交互通信的机制,它允许客户端进程通过网络向远程服务进程请求服务,而不需要了解服务器底层的通信协议详细信息。

在这里插入图片描述

  • NFS 服务器:导出文件系统目录及其内容。
  • NFS 客户端:挂载服务器导出的文件系统到本地。

NFS 的作用和特点

作用描述
文件共享多台主机共享访问一套文件目录
网络透明用户访问远程文件就像本地一样
多用户访问支持多个客户端同时读写
灵活控制支持基于 IP 地址和权限的访问控制
Unix/Linux 原生支持不需额外软件,轻松配置

部署服务

NFS服务由nfs-utils软件包提供,RHEL8默认安装了该软件包。

# 安装软件包,服务端和客户端都要安装
[root@server ~ 18:30:59]# yum install -y nfs-utils
[root@client ~ 19:00:07]# yum install -y nfs-utils# 准备用户
# 确保客户端和服务端操作文件的“用户”一致
[root@server ~ 19:08:53]# id lth
uid=1000(lth) gid=1000(lth)=1000(lth),10(wheel)# server 端准备共享目录
[root@server ~ 19:08:59]# mkdir -p /shares/webapp
# 权限设置的和apache一样,确保网页访问权限
[root@client ~ 19:09:18]# id apache
uid=48(apache) gid=48(apache)=48(apache)
[root@server ~ 19:10:38]# chown 48:48 /shares/webapp
[root@server ~ 19:12:16]# ll -d /shares/webapp/
drwxr-xr-x 2 apache apache 38 87 10:55 /shares/webapp/# 配置服务器
# rw 表示可读写,10.1.8.0/24 表示允许整个网段的主机来访问。
[root@server ~ 19:14:41]# vim /etc/exports
[root@server ~ 19:15:57]# cat /etc/exports
/shares/webapp 10.1.8.0/24(rw) *(ro)# 启用并启动服务
# 启动服务后,客户端用 showmount 就能看到“共享文件柜列表”
[root@server ~ 19:16:02]# systemctl enable nfs-server.service --now
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.[root@client ~ 19:09:38]# showmount -e server
Export list for server:
/shares/webapp (everyone)
# 这里会发现后面是everyone,*是全网共享,带有只读权限
# 去掉*后表示只允许 10.1.8.0/24 网段的主机 读写访问,更合理安全。# 修改下配置
[root@server ~ 19:18:55]# vim /etc/exports
[root@server ~ 19:20:53]# cat /etc/exports
/shares/webapp 10.1.8.0/24(rw)
[root@server ~ 19:20:57]# systemctl restart nfs-server
[root@client ~ 19:31:01]# showmount -e server
Export list for server:
/shares/webapp 10.1.8.0/24# 挂载和写入
[root@client ~ 19:31:08]# mount server:/shares/webapp /var/www/html
[root@server ~ 19:34:28]# echo Welcome to hahahahaha website. > /shares/webapp/index.html
[root@client ~ 19:34:30]# systemctl enable httpd --now
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.# 查看防火墙状态(如果没关先关闭)
[root@server ~ 19:34:44]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (dead)Docs: man:firewalld(1)
[root@client ~ 19:34:52]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)Active: inactive (dead)Docs: man:firewalld(1)# 验证客户端
[root@client ~ 19:35:09]# ls /var/www/html
index.html  
# 浏览器输入10.1.8.11,可看到网页内容,说明挂载成功、服务可访问。

结果:

在这里插入图片描述

配置 NFS 挂载并测试

# 写内容测试
[root@client ~ 19:35:20]# cd /var/www/html/
[root@client html 19:47:50]# ls
index.html
[root@client html 19:47:53]# echo oioi > lth-f1
-bash: web1.html: 权限不够[root@client ~ 19:48:31]# grep apache /etc/passwd
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin# 切换成 Apache 身份来写文件
[root@client ~ 19:48:33]# su -l -s /bin/bash apache
-bash-4.2$ touch /var/www/html/lth-f1
-bash-4.2$ echo oioi > /var/www/html/lth-f1
-bash-4.2$ 登出[root@client ~ 19:53:17]# df
文件系统                   1K-块    已用     可用 已用% 挂载点
devtmpfs                  485728       0   485728    0% /dev
tmpfs                     497816       0   497816    0% /dev/shm
tmpfs                     497816    7856   489960    2% /run
tmpfs                     497816       0   497816    0% /sys/fs/cgroup
/dev/mapper/centos-root 52403200 1674020 50729180    4% /
/dev/sda1                1038336  142308   896028   14% /boot
tmpfs                      99564       0    99564    0% /run/user/1000
server:/shares/webapp   52403200 3799040 48604160    8% /var/www/html# 持久化挂载
# 修改 /etc/fstab,最后添加如下记录:
[root@client ~ 19:53:27]# vim /etc/fstab 
server:/shares/webapp /var/www/html nfs defaults 0 0[root@client ~ 19:55:24]# umount /var/www/html/
[root@client ~ 19:56:39]# mount /var/www/html/
# reboot重启后直接浏览器输入10.1.8.11测试
# 10.1.8.11/lth-f1可以成功
[root@client ~ 19:56:45]# mount -a
[root@client ~ 19:56:54]# ls /var/www/html
index.html  lth-f1

结果:

在这里插入图片描述

http://www.xdnf.cn/news/1258417.html

相关文章:

  • [激光原理与应用-172]:测量仪器 - 能量(焦耳)与功率(瓦)的图示比较
  • RabbitMQ面试精讲 Day 14:Federation插件与数据同步
  • DBeaver 25.1.0 转储数据库失败解决方案(适配最新版界面)
  • Android 之 面试八股文
  • 在NVIDIA Orin上用TensorRT对YOLO12进行多路加速并行推理时内存泄漏 (中)
  • Qwen系列模型
  • 【洛谷题单】--分支结构(一)
  • Python day37
  • 如何在NVIDIA H100 GPU上用Ollama以最高性能运行大语言模型
  • 【MySQL基础篇】:MySQL事务并发控制原理-MVCC机制解析
  • 跨境电商增长突围:多维变局下的战略重构与技术赋能
  • P1690 贪婪的 Copy
  • Elcomsoft Wireless Security Auditor 安装教程-安全检测工具使用指南
  • 鸿蒙 - 分享功能
  • 【unity实战】使用Unity程序化生成3D随机地牢(附项目源码)
  • Redis 分布式Session
  • RAGAS:检索增强生成系统的无参考评估框架与技术解析
  • 知识随记-----Qt 实用技巧:自定义倒计时按钮防止用户频繁点击
  • Springboot2+vue2+uniapp 小程序端实现搜索联想自动补全功能
  • 数据结构----栈和队列认识
  • 为何毫米波需要采用不同的DPD方法?如何量化其值?
  • Java集合的遍历方式(全解析)
  • Mac/Windows跨平台PDF与AI高效解决方案
  • 数据分析——Pandas库
  • 解决React白板应用中的画布内容丢失问题
  • 哈希表——指针数组与单向链表的结合
  • (附源码)基于Web的物流信息管理系统
  • 【插件式微服务架构系统分享】之 解耦至上:gateway 网关与APISIX 网关的不同分工
  • 深入理解String类:揭秘Java字符串常量池的优化机制
  • 美图复现|Science:添加显著性的GO富集分析美图