当前位置: 首页 > 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.lryc.cn/news/613121.html

相关文章:

  • 智慧园区系统:打造未来城市生活新体验
  • 第一性原理科学计算服务器如何选择配置-内存选择篇
  • 软考中级【网络工程师】第6版教材 第2章 数据通信基础(下)
  • Windows下Rust编码实现MP4点播服务器
  • 【算法训练营Day22】回溯算法part4
  • Pytest项目_day07(pytest)
  • npm 与 npx 区别详解。以及mcp中npx加载原理。
  • 《深入理解Java字符串:从基础到高级特性》
  • 贪心+矩阵算法
  • 与页面共舞 —— Content Scripts 的魔法
  • 面向对象之类、继承和多态
  • leafletMap封装使用
  • 动手学深度学习13.11. 全卷积网络 -笔记练习(PyTorch)
  • Linux 中断系统全览解析:从硬件到软件的全路线理解
  • 外部排序总结(考研向)
  • MongoDB数据存储界的瑞士军刀:cpolar内网穿透实验室第513号挑战
  • 数据结构:双向链表(Doubly Linked List)
  • 生成对抗网络(GAN)实战 - 创建逼真人脸图像
  • 电路相量法
  • (易视宝)易视TV is-E4-G-全志A20芯片-安卓4-烧写卡刷工具及教程
  • C++的“模板”
  • day069-Jenkins基础使用与参数化构建
  • golang的面向对象编程,struct的使用
  • 急危重症专科智能体”构建新一代急诊、手术与重症中心的AI医疗方向探析
  • 【深度学习机器学习】构建情绪对话模型:从数据到部署的完整实践
  • 小鸡模拟器安卓版:经典街机游戏的移动体验
  • Elcomsoft Wireless Security Auditor 安装教程-安全检测工具使用指南
  • 数据结构----栈和队列认识
  • 深度学习-卷积神经网络CNN-1×1卷积层
  • 仓库管理系统-21-前端之入库和出库管理