【服务器知识】如何在linux系统上搭建一个nfs
文章目录
- NFS网络系统搭建
- **1. 准备工作**
- **2. 服务器端配置**
- **(1) 安装 NFS 服务**
- **(2) 创建共享目录**
- **(3) 配置共享规则**
- **(4) 生效配置并启动服务**
- **(5) 防火墙配置**
- **3. 客户端配置**
- **(1) 安装 NFS 客户端工具**
- **(2) 创建本地挂载点**
- **(3) 挂载 NFS 共享目录**
- **(4) 验证挂载**
- **(5) 设置开机自动挂载**
- **4. 常见问题排查**
- **权限问题**
- **防火墙或网络问题**
- **挂载失败**
- **5. 安全建议**
- NAS挂载
- **一、准备工作**
- **二、手动挂载NAS**
- **方法1:挂载NFS共享**
- **方法2:挂载SMB/CIFS共享**
- **三、自动挂载(开机自动挂载)**
- **NFS自动挂载**
- **SMB/CIFS自动挂载**
- **四、验证挂载**
- **五、卸载NAS**
- **六、常见问题**
NFS网络系统搭建
在 Linux 系统上搭建 NFS(Network File System)的详细步骤如下:
1. 准备工作
- 服务器端:提供共享目录的机器。
- 客户端:访问共享目录的机器。
- 网络互通:确保服务器和客户端在同一个网络,防火墙允许 NFS 相关流量(默认使用 TCP/UDP 2049 端口)。
2. 服务器端配置
(1) 安装 NFS 服务
根据 Linux 发行版选择安装命令:
-
Ubuntu/Debian:
sudo apt update sudo apt install nfs-kernel-server -
CentOS/RHEL:
sudo yum install nfs-utils
(2) 创建共享目录
选择一个目录作为共享存储(例如 /data/nfs_share):
sudo mkdir -p /data/nfs_share
sudo chown nobody:nogroup /data/nfs_share # 设置权限(根据需求调整)
(3) 配置共享规则
编辑 NFS 配置文件 /etc/exports:
sudo nano /etc/exports
添加以下内容(示例允许所有客户端读写):
/data/nfs_share *(rw,sync,no_subtree_check,no_root_squash)
- 参数说明:
rw:允许读写。sync:同步写入,保证数据一致性。no_subtree_check:禁用子目录检查(提高性能)。no_root_squash:允许客户端 root 用户保留权限(谨慎使用)。
(4) 生效配置并启动服务
sudo exportfs -a # 应用所有 exports 配置
sudo systemctl start nfs-server # Ubuntu/Debian
sudo systemctl start nfs # CentOS/RHEL
sudo systemctl enable nfs-server # 设置开机自启
(5) 防火墙配置
开放 NFS 相关端口(以 firewalld 为例):
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --reload
3. 客户端配置
(1) 安装 NFS 客户端工具
-
Ubuntu/Debian:
sudo apt install nfs-common -
CentOS/RHEL:
sudo yum install nfs-utils
(2) 创建本地挂载点
sudo mkdir -p /mnt/nfs_client
(3) 挂载 NFS 共享目录
sudo mount -t nfs 服务器IP:/data/nfs_share /mnt/nfs_client
(4) 验证挂载
检查挂载是否成功:
df -h | grep nfs
或写入测试文件:
echo "NFS Test" > /mnt/nfs_client/test.txt
(5) 设置开机自动挂载
编辑 /etc/fstab 文件:
sudo nano /etc/fstab
添加以下行:
服务器IP:/data/nfs_share /mnt/nfs_client nfs defaults 0 0
4. 常见问题排查
权限问题
- 确保服务器共享目录的权限允许客户端访问(可通过
chmod或chown调整)。 - 若客户端无法写入,检查服务器端
/etc/exports是否设置了rw。
防火墙或网络问题
- 使用
rpcinfo -p 服务器IP检查 NFS 服务是否正常。 - 在服务器端执行
showmount -e查看共享目录是否可见。
挂载失败
- 检查 NFS 服务状态:
systemctl status nfs-server。 - 查看日志:
tail -f /var/log/messages(CentOS)或/var/log/syslog(Ubuntu)。
5. 安全建议
- 限制客户端范围:在
/etc/exports中指定具体 IP 或网段(如192.168.1.0/24)。 - 避免使用
no_root_squash:防止客户端 root 用户拥有服务器 root 权限。 - 启用 NFSv4:在
/etc/nfs.conf中设置vers4.2(性能更好且更安全)。
通过以上步骤,你可以在 Linux 系统上快速搭建并配置 NFS 共享服务。
NAS挂载
在Linux系统中挂载NAS(网络附加存储)通常可以通过NFS(Network File System)或SMB/CIFS(Server Message Block/Common Internet File System)协议实现。以下是详细步骤:
一、准备工作
-
确认NAS信息:
- NAS的IP地址(如
192.168.1.100) - 共享路径(如
/share/data或//nas-server/share) - 访问协议(NFS/SMB)
- 用户名和密码(如果需要认证)
- NAS的IP地址(如
-
安装依赖工具:
- NFS:确保已安装NFS客户端工具:
sudo apt install nfs-common # Debian/Ubuntu sudo dnf install nfs-utils # Fedora/CentOS/RHEL - SMB/CIFS:安装
cifs-utils:sudo apt install cifs-utils # Debian/Ubuntu sudo dnf install cifs-utils # Fedora/CentOS/RHEL
- NFS:确保已安装NFS客户端工具:
-
创建本地挂载点:
sudo mkdir -p /mnt/nas
二、手动挂载NAS
方法1:挂载NFS共享
sudo mount -t nfs <NAS_IP>:/<共享路径> /mnt/nas
示例:
sudo mount -t nfs 192.168.1.100:/share/data /mnt/nas
方法2:挂载SMB/CIFS共享
sudo mount -t cifs -o username=<用户名>,password=<密码> //<NAS_IP>/<共享名> /mnt/nas
示例:
sudo mount -t cifs -o username=user1,password=pass123 //192.168.1.100/myshare /mnt/nas
常用选项:
vers=3.0:指定SMB协议版本(如vers=2.0或vers=3.0)。uid=1000:设置挂载后文件的用户所有者。gid=1000:设置挂载后文件的组所有者。file_mode=0777:设置文件权限。dir_mode=0777:设置目录权限。
三、自动挂载(开机自动挂载)
编辑 /etc/fstab 文件,添加挂载配置:
NFS自动挂载
sudo nano /etc/fstab
添加行:
<NAS_IP>:/<共享路径> /mnt/nas nfs defaults,_netdev 0 0
SMB/CIFS自动挂载
//<NAS_IP>/<共享名> /mnt/nas cifs username=<用户名>,password=<密码>,vers=3.0,_netdev 0 0
说明:
_netdev:确保挂载在网络就绪后进行。- 若需隐藏密码,可将凭据保存到文件(如
/etc/smb.creds),并在fstab中使用credentials=/etc/smb.creds。
四、验证挂载
- 查看已挂载的文件系统:
df -hT - 检查挂载点读写权限:
touch /mnt/nas/testfile && rm /mnt/nas/testfile
五、卸载NAS
sudo umount /mnt/nas
六、常见问题
-
权限不足:
- 检查NAS共享的权限设置。
- 在挂载命令中指定
uid/gid或file_mode/dir_mode。
-
协议版本不匹配:
- 对于SMB,尝试指定
vers=2.0或vers=3.0。
- 对于SMB,尝试指定
-
网络不可达:
- 检查NAS的IP和防火墙设置(确保NFS/SMB端口开放)。
通过上述步骤,您可以轻松在Linux系统中挂载NAS存储,并根据需求选择手动或自动挂载方式。
相关文章:
【服务器知识】如何在linux系统上搭建一个nfs
文章目录 NFS网络系统搭建**1. 准备工作****2. 服务器端配置****(1) 安装 NFS 服务****(2) 创建共享目录****(3) 配置共享规则****(4) 生效配置并启动服务****(5) 防火墙配置** **3. 客户端配置****(1) 安装 NFS 客户端工具****(2) 创建本地挂载点****(3) 挂载 NFS 共享目录***…...
图片画质增强:轻松提升画质
前言: 今天给大家推荐一款非常实用的图片画质增强软件,它无需联网即可使用,完全离线操作,这款软件基于先进的深度学习技术,能够对模糊图片进行强大的高清处理,效果令人惊艳。 图片画质增强:一…...
vscode快速接入deepseek 实践操作
背景说明 在deepseek快速火爆的情况下,也想自己体验一把。看看在vscode中集成进来,方便平时的脚本开发。对于年纪大的人还是非常方便的。 操作过程 安装continue 打开vscode进入扩展市场,搜索安装 安装完成就是上面的样子,会…...
mapbox进阶,添加绘图扩展插件,绘制圆形
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️MapboxDraw 绘图控件二、🍀添加绘图扩…...
Cursor 与多语言开发:全栈开发的利器
引言 全栈开发要求开发者跨越前端、后端、数据库甚至数据科学等多个技术领域,而不同技术栈往往需要切换工具和思维方式。Cursor 作为一款 AI 驱动的智能编程助手,凭借其对 20 编程语言 和主流框架的深度支持,正在成为全栈开发的“瑞士军刀”…...
2025 CCF BDCI|“基于TPU平台的OCR模型性能优化”一等奖作品
2024年12月,中国计算机学会在海南博鳌成功举办了第十二届CCF大数据与计算智能大赛(简称2024 CCF BDCI)。本届比赛的算能赛道吸引了1748名选手报名,经过激烈角逐,北京航空航天大学的“常务副SOTA”团队脱颖而出…...
FPGA的IP核接口引脚含义-快解
疑问 手册繁琐,怎样快速了解IP核各输入输出接口引脚的含义。 答疑 不慌不慌,手册确实比较详细但繁琐,如何快速知晓该部分信息,涛tao道长给你们说,简单得很,一般新入门的道友有所不知,往往后面…...
数据库高安全—审计追踪:传统审计统一审计
书接上文数据库高安全—角色权限:权限管理&权限检查,从权限管理和权限检查方面解读了高斯数据库的角色权限,本篇将从传统审计和统一审计两方面对高斯数据库的审计追踪技术进行解读。 4 审计追踪 4.1 传统审计 审计内容的记录方式通…...
机器学习 - 需要了解的条件概率、高斯分布、似然函数
似然函数是连接数据与参数的桥梁,通过“数据反推参数”的逆向思维,成为统计推断的核心工具。理解它的关键在于区分“参数固定时数据的概率”与“数据固定时参数的合理性”,这种视角转换是掌握现代统计学和机器学习的基础。 一、在学习似然函…...
Spring Boot Web 入门
目录 Spring Boot Web 是 Spring Boot 框架的一个重要模块,它简化了基于 Spring 的 Web 应用程序的开发过程。以下是一个 Spring Boot Web 项目的入门指南,涵盖了项目创建、代码编写、运行等关键步骤。 1. 项目创建 使用 Spring Initializr 使用 IDE …...
神经网络|(八)概率论基础知识-二项分布及python仿真
【1】引言 前序已经学习了古典概型、条件概率、全概率公式和贝叶斯公式,它们作为基础,解释了事件发生及其概率的对应关系,相关文章链接为: 神经网络|(四)概率论基础知识-古典概型-CSDN博客 神经网络|(五)概率论基础知识-条件概…...
【面试场景】MySQL分布式主键选取
文章目录 一. MySQL的自增主键二. UUID三. 雪花ID(推荐) 我的博客地址 一. MySQL的自增主键 适合单表的情况, 在分布式分库分表下可能会有一些问题 主键冲突问题 在分布式系统中,多个数据库节点独立生成自增主键,很容易出现重复的主键值。例如ÿ…...
执行git stash drop stash@{x} 时出现error: unknown switch `e‘ 的解决方式
原因: 在 PowerShell 或某些 Shell 中,{} 是特殊符号,stash{0} 会被解析成 stash 0,而 后的字符可能被误认为选项(如 -e),使 Git 收到意外的 -e 参数,导致报错 unknown switch ‘e’。 解决方…...
链表和 list
一、单链表的模拟实现 1.实现方式 链表的实现方式分为动态实现和静态实现两种。 动态实现是通过 new 申请结点,然后通过 delete 释放结点的形式构造链表。这种实现方式最能体 现链表的特性; 静态实现是利用两个数组配合来模拟链表。一个表示数据域&am…...
windows 蓝牙驱动开发-传输总线驱动程序常见问题
以下是驱动程序开发人员在开发总线驱动程序以支持蓝牙功能时可能会遇到的一些常见问题和方案。 我的串行总线驱动程序遇到了一些错误。 它意味着什么? 代码 10-49:设备管理器生成的错误代码。 代码 51:当串行总线驱动程序具有相关的控制器…...
Qt修仙之路2-1 炼丹初成
widget.cpp #include "widget.h" #include<QDebug> //实现槽函数 void Widget::login1() {QString userusername_input->text();QString passpassword_input->text();//如果不勾选无法登入if(!check->isChecked()){qDebug()<<"xxx"&…...
【含开题报告+文档+PPT+源码】基于SpringBoot+Vue宠物预约上门服务预约平台
开题报告 本研究论文旨在构建并阐述一个基于 SpringBoot 和 Vue 技术栈开发的宠物上门服务预约平台的设计与实现。该平台集成了丰富的功能模块,为用户提供一体化的便捷服务体验。首先,用户能够通过注册并登录系统,享受个性化的服务流程。在平…...
无线AP之详解(Detailed Explanation of Wireless AP)
无线AP是什么? 市场上的AP基本上分为两大类:单纯型AP和扩展型AP。扩展型AP除了基本的AP功能之外,还可能带有若干以太网交换口、路由、NAT、DHCP、打印服务器等功能。 无线AP也就是一个无线交换机 无线路由器就是一个带路由功能的无线AP&am…...
Spring Boot Actuator与JMX集成实战
在微服务架构中,监控和管理应用的运行状态是至关重要的。Spring Boot Actuator 提供了一种便捷的方式来监控和管理 Spring Boot 应用,而 JMX(Java Management Extensions)则是一种用于管理 Java 应用的标准技术。本文将通过一个实…...
mac环境下,ollama+deepseek+cherry studio+chatbox本地部署
春节期间,deepseek迅速火爆全网,然后回来上班,我就浅浅的学习一下,然后这里总结一下,我学习中,总结的一些知识点吧,分享给大家。具体的深度安装部署,这里不做赘述,因为网…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
书籍“之“字形打印矩阵(8)0609
题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...
