【服务器知识】如何在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存储,并根据需求选择手动或自动挂载方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/70405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P3654 First Step (ファーストステップ)(贪心算法)

#include<bits/stdc.h> using namespace std;int main() {int r,c,k;cin>>r>>c>>k;char a[105][105];int ans0;for(int i0;i<r;i){for(int j0;j<c;j){cin>>a[i][j];}}for(int i0;i<r;i){int cnt0; // 用来记录连续空地的数量for(int j…

ASP.NET Core对JWT的封装

目录 JWT封装 [Authorize]的注意事项 JWT封装 NuGet 库 |Microsoft.AspNetCore.Authentication.JwtBearer 9.0.1https://www.nuget.org/packages/Microsoft.AspNetCore.Authentication.JwtBearerhttps://www.nuget.org/packages/Microsoft.AspNetCore.Authentication.JwtBea…

Windows Docker笔记-在容器中运行项目

在文章《Windows Docker笔记-Docker容器操作》中&#xff0c;已经成功创建了容器&#xff0c;也就是建好了工厂&#xff0c;接下来就应该要安装流水线设备&#xff0c;即运行项目达到生产的目的。 在Ubuntu容器中新建项目 这里要新建一个简单的C项目&#xff0c;步骤如下&…

unity报错不存在类型或者命名空间

导入资源或者打开项目时&#xff0c;突然发现多了一堆报错&#xff0c;如 Assets\2DGamekit\Utilities\DefaultPlayables\ScreenFader\ScreenFaderBehaviour.cs(5,19): error CS0234: The type or namespace name UI does not exist in the namespace UnityEngine (are you mi…

【热点文章-定时计算】分布式任务调度框架xxl-job

分布式任务调度 在分布式架构下&#xff0c;一个服务会部署多个实例来运行业务&#xff1b;如果在这种分布式系统环境下运行任务调度&#xff0c;称为分布式任务调度。 分布式任务调度框架&#xff1a;xxl-job xxl-job环境搭建 本机 仓库源码&#xff1a;xxl-job 初始化…

嵌入式面试题 C/C++常见面试题整理_7

一.什么函数不能声明为虚函数? 常见的不能声明为虚函数的有:普通函数(非成员函数):静态成员函数;内联成员函数;构造函数;友元函数。 1.为什么C不支持普通函数为虚函数?普通函数(非成员函数)只能被overload&#xff0c;不能被override&#xff0c;声明为虚函数也没有什么意思…

【MySQL】深入了解索引背后的内部结构

目录 索引的认识&#xff1a; 作用&#xff1a; 索引的使用&#xff1a; 索引底层的数据结构&#xff1a; 哈希表 AVL树 红黑树 B树&#xff1a; B树&#xff1a; B树搜索&#xff1a; 索引的认识&#xff1a; 索引是数据库中的一个数据结构&#xff0c;用于加速查询…

数据库基础练习4(有关索引,视图完整解答)

建立需要的表 学生表 mysql> create table studnet(sno int primary key auto_increment,sname varchar(30) not null unique,ssex varchar(2) check (ssex男 or ssex女) not null ,sage int not null,sdept varchar(10) default 计算机 not null); Query OK, 0 rows affe…

最新版Node.js下载安装指定版本图文版教程(非常详细)

文字目录 1、什么是Node.js&#xff1f;2、什么是 npm&#xff1f;3、下载Node.js安装包4、详细安装步骤 1、什么是Node.js&#xff1f; Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;它使 JavaScript 可以在服务器端运行。在 Node.js 出现之前&#…

Spring Boot Web 入门

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

深度解读 Docker Swarm

一、引言 随着业务规模的不断扩大和应用复杂度的增加,容器集群管理的需求应运而生。如何有效地管理和调度大量的容器,确保应用的高可用性、弹性伸缩和资源的合理分配,成为了亟待解决的问题。Docker Swarm 作为 Docker 官方推出的容器集群管理工具,正是在这样的背景下崭露头…

eggnog后kegg结果提取和注释

首先进入KEGG BRITE: KEGG Orthology (KO) 下载json文件 用python处理一下 import json import re import osos.chdir("C:/Users/fordata/Downloads/") with open("ko00001.json","r") as f:fj f.read()kojson json.loads(fj)with open(&qu…

qt6.8安装mysql8.0驱动

qt6.8安装mysql8.0驱动 qt6.8本身是不带mysql驱动。想要在qt里面使用mysql,还是比较麻烦的。需要自己编译驱动 首先下载qt源码&#xff0c;链接Index of /archive/qt/6.8/6.8.1/single 下载mysql对于驱动文件&#xff0c;链接是MySQL :: Download MySQL Connector/C (Archiv…

学习threejs,使用Lensflare模拟镜头眩光

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.Lensflare 二、&…

结构化表达(一):观点

目录 观点 一、观点明确 二、观点先行 三、观点先行适用范围 观点 一、观点明确 观点是指具有中心思想的一句话&#xff0c;或者称之为有灵魂的表达。 二、观点先行 如果有了明确的观点&#xff0c;并且说在前面&#xff0c;对方就会很容易记住你想表达的内容。 三、观…

Cortex-M异常处理深度解析:从HardFault到调试实战

文章目录 引言一、Cortex-M异常类型全景图二、关键寄存器:故障分析的“密码本”1. HardFault状态寄存器(HFSR, 0xE000ED2C)2. 可配置故障状态寄存器(CFSR, 0xE000ED28)3. 地址寄存器(BFAR/MMFAR)三、调试实战:从寄存器到代码定位四、自定义HardFault处理程序五、Keil与…

Retrieval-Augmented Generation,检索增强生成流程

RAG流程 用户输入接收 系统接收用户输入的查询问题或文本内容&#xff0c;例如“李白有哪些著名的作品&#xff1f;”用户输入可以通过自然语言处理&#xff08;NLP&#xff09;模型的输入端口或用户交互界面&#xff08;如聊天应用、搜索引擎输入框等&#xff09;接收。 查询…

【大模型】DeepSeek与chatGPT的区别以及自身的优势

目录 一、前言二、核心技术对比2.1 模型架构设计2.1.1 ChatGPT的Transformer架构2.1.2 DeepSeek的混合架构 2.2 训练数据体系2.2.1 ChatGPT的数据特征2.2.2 DeepSeek的数据策略 三、应用场景对比3.1 通用场景表现3.1.1 ChatGPT的强项领域3.2.2 DeepSeek的专项突破 3.3 响应效率…

RabbitMQ 从入门到精通:从工作模式到集群部署实战(二)

接上篇&#xff1a;《RabbitMQ 从入门到精通&#xff1a;从工作模式到集群部署实战&#xff08;一&#xff09;》 链接 文章目录 4.安装RabbitMQ Messaging Topology Operator 裸金属环境部署RabbitMQ部署单实例部署集群 4.安装RabbitMQ Messaging Topology Operator 使用 cer…

低至3折,百度智能云千帆宣布全面支持DeepSeek-R1/V3调用

DeepSeek-R1和 DeepSeek-V3模型已在百度智能云千帆平台上架 。 出品|产业家 新年伊始&#xff0c;百度智能云又传来新动作 。 2月3日百度智能云宣布&#xff0c; DeepSeek-R1和 DeepSeek-V3模型已在百度智能云千帆平台上架&#xff0c;同步推出超低价格方案&#xff0c;并…