32.Linux NFS 服务

文章目录

Linux NFS 服务

NFS 介绍

存储连接方式:

  1. 直连,笔记本、台式机
  2. 通过网络共享,共享文件夹
  3. 通过网络共享,共享块设备,客户端识别之后,本地会多一块硬盘出来。

linux或unix存储连接: samba(window和linux) NFS(linux之间)

NFS是什么

可以把它想象成计算机界的"网络邻居"或"共享文件夹",但它是为 Linux/Unix 环境量身定做的,非常高效和稳定。

NFS 是 网络文件系统 的缩写,它是 Linux 和 Unix 系统中最核心、最常用的文件共享服务之一。

NFS核心功能

让一台服务器上的目录,能被网络上的其他计算机直接挂载到本地,像使用本地硬盘一样使用它。

  • 服务器端:提供文件目录的那台电脑。
  • 客户端:访问并使用那个共享目录的电脑。

NFS工作原理(简单版)

  1. 共享(服务器端):在服务器上,管理员设定好哪个目录可以被共享,并设置哪些客户端IP地址有权限访问。
  2. 挂载(客户端) :在客户端上,使用一个简单的命令(mount),将服务器的共享目录"挂载"到本地的一个空文件夹里。
  3. 使用:之后,客户端用户就可以通过进入这个本地文件夹,无缝地读写服务器上的文件了,所有操作都在网络上透明进行。

NFS 服务配置

流程

  1. 安装软件包
  2. 准备服务用到的各种材料,例如用户、目录等
  3. 配置服务器(修改配置文件)
  4. 启用并启动服务
  5. 配置防火墙
  6. 客户端测试

配置服务端

准备工作

服务端和客户端安装软件包

服务端server安装NFS

客户端web安装Nginx

bash 复制代码
[root@server ~ 10:30:11]# yum install -y nfs-utils
bash 复制代码
[root@web ~ 10:30:23]# yum install -y nginx

准备服务用到的各种材料,例如用户、目录等

bash 复制代码
[root@server ~ 10:32:24]# mkdir -p /shares/webapp
[root@server ~ 10:32:59]# echo Hello World From Nginx > /shares/webapp/index.html

查看客户端nginx用户的UID,设置权限,客户端nginx用户可以读写该目录

bash 复制代码
[root@web ~ 10:33:17]# id nginx
uid=997(nginx) gid=995(nginx) 组=995(nginx)

客户端nginx用户的UID为997,修改权限

bash 复制代码
[root@server ~ 10:33:36]# chown 997 /shares/webapp
[root@server ~ 10:35:00]# ll -d /shares/webapp/
drwxr-xr-x 2 997 root 24 9月  26 10:33 /shares/webapp/
配置服务器

修改配置文件,配置文件位置 /etc/exports /etc/exports.d/*.exports

配置共享格式:

共享目录 客户端1(共享选项1) 客户端2(共享选项2)

  • 共享目录:需要共享的目录

  • 客户端:可以是单个主机,例如10.1.8.11,也可以是网段10.1.8.0/24,还可以是主机名*.hxl.cloud

  • 共享选项:控制共享方式,例如,rw读写共享,ro只读共享

bash 复制代码
[root@server ~ 10:36:31]# vim /etc/exports.d/webapp.exports 

# 修改内容为
/shares/webapp 10.1.8.0/24(rw)

启用并启动服务

bash 复制代码
[root@server ~ 10:38:13]# 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@server ~ 10:38:28]# systemctl is-active nfs-server.service  
active
配置防火墙

设置防火墙未关闭状态,我们这里已经是关闭状态

bash 复制代码
[root@server ~ 10:38:50]# systemctl is-active firewalld.service 
unknown
# 若未关闭,可是已使用这条命令
# systemctl stop firewalld.service 

配置客户端

准备工作

安装NFS

bash 复制代码
[root@web ~ 10:44:46]# yum install -y nfs-utils
连接共享目录

查看共享并挂载

showmount:专门用于查询NFS服务器状态的工具

-e:显示服务器导出的目录列表

bash 复制代码
[root@web ~ 10:46:11]# showmount -e 10.1.8.10
Export list for 10.1.8.10:
/shares/webapp 10.1.8.0/24

[root@web ~ 10:46:26]# mount 10.1.8.10:/shares/webapp /usr/share/nginx/html

[root@web ~ 10:47:22]# df -h /usr/share/nginx/html
文件系统                  容量  已用  可用 已用% 挂载点
10.1.8.10:/shares/webapp   50G  1.6G   49G    4% /usr/share/nginx/html
持久化挂载
bash 复制代码
[root@web ~ 11:06:47]# vim /etc/fstab
# 最后添加记录
10.1.8.10:/shares/webapp /usr/share/nginx/html nfs defaults        0 0

注意这里的文件系统类型为nfs

测试

测试web服务器页面

bash 复制代码
[root@server ~ 10:48:01]# curl 10.1.8.11
Hello World From Nginx

重启web服务器并验证

bash 复制代码
[root@server ~ 10:48:11]# reboot

挂载选项补充说明:

客户端的root对于服务器端来说 啥也不是。

默认情况,服务端共享的目录,客户端的root是只具备other用户的权限。

默认共享选项包含root_squash,压缩root权限为nobody。

可以使用选项no_root_squash

相关推荐
律宏阔5 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows
律宏阔5 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴5 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
乱码三千5 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei375 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei375 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei375 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
judezh5 小时前
api 容器一直 unhealthy?我把一个 Agent 运行时的健康检查逐条拆了,查出四个问题
运维·docker
GeW5 小时前
制造业高端化,为什么必须重估Linux和数据库?
linux
百万蹄蹄向前冲5 小时前
双端同步!云服务器装最新Node.js v26.10全过程追踪
服务器·人工智能·node.js