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

【服务器知识】如何在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. 常见问题排查

权限问题
  • 确保服务器共享目录的权限允许客户端访问(可通过 chmodchown 调整)。
  • 若客户端无法写入,检查服务器端 /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)协议实现。以下是详细步骤:

一、准备工作

  1. 确认NAS信息

    • NAS的IP地址(如 192.168.1.100
    • 共享路径(如 /share/data//nas-server/share
    • 访问协议(NFS/SMB)
    • 用户名和密码(如果需要认证)
  2. 安装依赖工具

    • 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
      
  3. 创建本地挂载点

    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.0vers=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

四、验证挂载

  1. 查看已挂载的文件系统:
    df -hT
    
  2. 检查挂载点读写权限:
    touch /mnt/nas/testfile && rm /mnt/nas/testfile
    

五、卸载NAS

sudo umount /mnt/nas

六、常见问题

  1. 权限不足

    • 检查NAS共享的权限设置。
    • 在挂载命令中指定uid/gidfile_mode/dir_mode
  2. 协议版本不匹配

    • 对于SMB,尝试指定vers=2.0vers=3.0
  3. 网络不可达

    • 检查NAS的IP和防火墙设置(确保NFS/SMB端口开放)。

通过上述步骤,您可以轻松在Linux系统中挂载NAS存储,并根据需求选择手动或自动挂载方式。

相关文章:

【服务器知识】如何在linux系统上搭建一个nfs

文章目录 NFS网络系统搭建**1. 准备工作****2. 服务器端配置****(1) 安装 NFS 服务****(2) 创建共享目录****(3) 配置共享规则****(4) 生效配置并启动服务****(5) 防火墙配置** **3. 客户端配置****(1) 安装 NFS 客户端工具****(2) 创建本地挂载点****(3) 挂载 NFS 共享目录***…...

图片画质增强:轻松提升画质

前言&#xff1a; 今天给大家推荐一款非常实用的图片画质增强软件&#xff0c;它无需联网即可使用&#xff0c;完全离线操作&#xff0c;这款软件基于先进的深度学习技术&#xff0c;能够对模糊图片进行强大的高清处理&#xff0c;效果令人惊艳。 图片画质增强&#xff1a;一…...

vscode快速接入deepseek 实践操作

背景说明 在deepseek快速火爆的情况下&#xff0c;也想自己体验一把。看看在vscode中集成进来&#xff0c;方便平时的脚本开发。对于年纪大的人还是非常方便的。 操作过程 安装continue 打开vscode进入扩展市场&#xff0c;搜索安装 安装完成就是上面的样子&#xff0c;会…...

mapbox进阶,添加绘图扩展插件,绘制圆形

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️MapboxDraw 绘图控件二、🍀添加绘图扩…...

Cursor 与多语言开发:全栈开发的利器

引言 全栈开发要求开发者跨越前端、后端、数据库甚至数据科学等多个技术领域&#xff0c;而不同技术栈往往需要切换工具和思维方式。Cursor 作为一款 AI 驱动的智能编程助手&#xff0c;凭借其对 20 编程语言 和主流框架的深度支持&#xff0c;正在成为全栈开发的“瑞士军刀”…...

2025 CCF BDCI|“基于TPU平台的OCR模型性能优化”一等奖作品

2024年12月&#xff0c;中国计算机学会在海南博鳌成功举办了第十二届CCF大数据与计算智能大赛&#xff08;简称2024 CCF BDCI&#xff09;。本届比赛的算能赛道吸引了1748名选手报名&#xff0c;经过激烈角逐&#xff0c;北京航空航天大学的“常务副SOTA”团队脱颖而出&#xf…...

FPGA的IP核接口引脚含义-快解

疑问 手册繁琐&#xff0c;怎样快速了解IP核各输入输出接口引脚的含义。 答疑 不慌不慌&#xff0c;手册确实比较详细但繁琐&#xff0c;如何快速知晓该部分信息&#xff0c;涛tao道长给你们说&#xff0c;简单得很&#xff0c;一般新入门的道友有所不知&#xff0c;往往后面…...

数据库高安全—审计追踪:传统审计统一审计

书接上文数据库高安全—角色权限&#xff1a;权限管理&权限检查&#xff0c;从权限管理和权限检查方面解读了高斯数据库的角色权限&#xff0c;本篇将从传统审计和统一审计两方面对高斯数据库的审计追踪技术进行解读。 4 审计追踪 4.1 传统审计 审计内容的记录方式通…...

机器学习 - 需要了解的条件概率、高斯分布、似然函数

似然函数是连接数据与参数的桥梁&#xff0c;通过“数据反推参数”的逆向思维&#xff0c;成为统计推断的核心工具。理解它的关键在于区分“参数固定时数据的概率”与“数据固定时参数的合理性”&#xff0c;这种视角转换是掌握现代统计学和机器学习的基础。 一、在学习似然函…...

Spring Boot Web 入门

目录 Spring Boot Web 是 Spring Boot 框架的一个重要模块&#xff0c;它简化了基于 Spring 的 Web 应用程序的开发过程。以下是一个 Spring Boot Web 项目的入门指南&#xff0c;涵盖了项目创建、代码编写、运行等关键步骤。 1. 项目创建 使用 Spring Initializr 使用 IDE …...

神经网络|(八)概率论基础知识-二项分布及python仿真

【1】引言 前序已经学习了古典概型、条件概率、全概率公式和贝叶斯公式&#xff0c;它们作为基础&#xff0c;解释了事件发生及其概率的对应关系&#xff0c;相关文章链接为&#xff1a; 神经网络|(四)概率论基础知识-古典概型-CSDN博客 神经网络|(五)概率论基础知识-条件概…...

【面试场景】MySQL分布式主键选取

文章目录 一. MySQL的自增主键二. UUID三. 雪花ID(推荐) 我的博客地址 一. MySQL的自增主键 适合单表的情况, 在分布式分库分表下可能会有一些问题 主键冲突问题 在分布式系统中&#xff0c;多个数据库节点独立生成自增主键&#xff0c;很容易出现重复的主键值。例如&#xff…...

执行git stash drop stash@{x} 时出现error: unknown switch `e‘ 的解决方式

原因: 在 PowerShell 或某些 Shell 中&#xff0c;{} 是特殊符号&#xff0c;stash{0} 会被解析成 stash 0&#xff0c;而 后的字符可能被误认为选项&#xff08;如 -e&#xff09;&#xff0c;使 Git 收到意外的 -e 参数&#xff0c;导致报错 unknown switch ‘e’。 解决方…...

链表和 list

一、单链表的模拟实现 1.实现方式 链表的实现方式分为动态实现和静态实现两种。 动态实现是通过 new 申请结点&#xff0c;然后通过 delete 释放结点的形式构造链表。这种实现方式最能体 现链表的特性&#xff1b; 静态实现是利用两个数组配合来模拟链表。一个表示数据域&am…...

windows 蓝牙驱动开发-传输总线驱动程序常见问题

以下是驱动程序开发人员在开发总线驱动程序以支持蓝牙功能时可能会遇到的一些常见问题和方案。 我的串行总线驱动程序遇到了一些错误。 它意味着什么&#xff1f; 代码 10-49&#xff1a;设备管理器生成的错误代码。 代码 51&#xff1a;当串行总线驱动程序具有相关的控制器…...

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 技术栈开发的宠物上门服务预约平台的设计与实现。该平台集成了丰富的功能模块&#xff0c;为用户提供一体化的便捷服务体验。首先&#xff0c;用户能够通过注册并登录系统&#xff0c;享受个性化的服务流程。在平…...

无线AP之详解(Detailed Explanation of Wireless AP)

无线AP是什么&#xff1f; 市场上的AP基本上分为两大类&#xff1a;单纯型AP和扩展型AP。扩展型AP除了基本的AP功能之外&#xff0c;还可能带有若干以太网交换口、路由、NAT、DHCP、打印服务器等功能。 无线AP也就是一个无线交换机 无线路由器就是一个带路由功能的无线AP&am…...

Spring Boot Actuator与JMX集成实战

在微服务架构中&#xff0c;监控和管理应用的运行状态是至关重要的。Spring Boot Actuator 提供了一种便捷的方式来监控和管理 Spring Boot 应用&#xff0c;而 JMX&#xff08;Java Management Extensions&#xff09;则是一种用于管理 Java 应用的标准技术。本文将通过一个实…...

mac环境下,ollama+deepseek+cherry studio+chatbox本地部署

春节期间&#xff0c;deepseek迅速火爆全网&#xff0c;然后回来上班&#xff0c;我就浅浅的学习一下&#xff0c;然后这里总结一下&#xff0c;我学习中&#xff0c;总结的一些知识点吧&#xff0c;分享给大家。具体的深度安装部署&#xff0c;这里不做赘述&#xff0c;因为网…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中&#xff0c;其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下&#xff1a; 初始判断与哈希计算&#xff1a; 首先&#xff0c;putVal 方法会检查当前的 table&#xff08;也就…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...