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

Linux 再入门整理:详解 /etc/fstab 文件

目录

  • 1. 什么是 /etc/fstab
  • 2. /etc/fstab 文件的格式
    • 2.1 设备文件 (Device)
    • 2.2 挂载点 (Mount Point)
    • 2.3 文件系统类型 (File System Type)
    • 2.4 挂载选项 (Mount Options)
    • 2.5 Backup Operation(dump 参数)
    • 2.6 Pass Order (fsck 参数)
      • 2.6.1 参数设置
      • 2.6.2 不同发行版默认参数
      • 2.6.3 设置为 0 的原因
  • 3. 常见示例
    • 3.1 常见的本地磁盘配置
    • 3.2 NFS 挂载
    • 3.3 U 盘自动挂载配置
    • 3.4 更多...

参考文章:

  • https://www.redhat.com/sysadmin/etc-fstab
  • https://wiki.archlinux.org/title/Fstab

1. 什么是 /etc/fstab

/etc/fstab 文件是 Linux 系统中用于定义和管理文件系统的挂载信息的配置文件。它的作用是告诉系统在启动时,应该如何自动挂载各种文件系统。挂载是 Linux 操作系统中一种将存储设备与目录树关联的操作。通过挂载,存储设备中的文件可以通过目录访问。

2. /etc/fstab 文件的格式

/etc/fstab 文件的每一行描述了一个文件系统或设备的挂载信息,通常由 6 个字段组成,每个字段通过空格或制表符分隔。字段的顺序非常重要,具体如下:

<设备文件>  <挂载点>  <文件系统类型>  <挂载选项>  <dump>  <fsck>

2.1 设备文件 (Device)

这是指需要挂载的设备或分区。可以通过多种方式指定设备,常见的几种方式包括:

  • 设备名:直接使用物理设备名或分区名,如 /dev/sda1,表示第一个硬盘的第一个分区。
  • UUID:每个分区都有一个唯一标识符 (UUID),使用 UUID=xxxx-xxxx-xxxx 格式可以更加稳定地标识设备,因为设备名在不同的启动过程中可能会改变。
  • LABEL:如果为分区设置了标签 (Label),可以通过 LABEL=MyData 的方式引用设备。
/dev/sda1        /boot           ext4    defaults        0  2
UUID=550e8400-e29b-41d4-a716-446655440000  /home  ext4  defaults 0 2

2.2 挂载点 (Mount Point)

这是文件系统挂载的位置,即它在目录树中的路径。挂载点可以是任何一个空目录。例如:

  • / 表示根文件系统。
  • /home 表示用户目录挂载点。
  • /mnt/data 是一个常用的手动挂载位置。
  • /media/data 是一个常用的手动挂载位置。
  • none 表示文件系统不挂载到特定的路径,通常用于 swap 分区。

2.3 文件系统类型 (File System Type)

这是指定文件系统类型的字段,它告诉内核如何处理该分区。常见的文件系统类型包括:

  • ext4:目前大多数 Linux 系统的默认文件系统,支持日志记录和大文件。
  • xfs:高性能文件系统,特别适合大数据和企业级存储环境。
  • vfat:FAT32 文件系统,用于 U 盘和移动设备兼容 Windows 系统的情况。
  • ntfs:Windows NT 文件系统,适用于从 Linux 访问 Windows 分区。
  • swap:交换分区,用于虚拟内存扩展。
  • nfs:网络文件系统,允许从远程服务器挂载文件系统。
# 示例
/dev/sda1        /boot           ext4    defaults        0  2
/dev/sda5        none            swap    sw              0  0
192.168.1.100:/shared /mnt/nfs  nfs   defaults  0 0

2.4 挂载选项 (Mount Options)

挂载选项控制文件系统的行为。这些选项以逗号分隔,组合使用时不要有空格。不同的文件系统类型所对应的挂载选项会有所不同,根据实际文件系统类型设置相应的参数。


例如 NFS 类型的就有好多特有的参数:

192.168.1.100:/data  /mnt/nfs  nfs  defaults,rw,hard,intr,rsize=8192,wsize=8192,timeo=14  0  0

常见的挂载选项有:

  • defaults:这是一组默认的选项,包括 rw(读写)、suid(允许 setuid 位)、dev(解释字符和块设备)、exec(允许可执行文件)、auto(自动挂载)、nouser(用户无法挂载)、async(异步 I/O 操作)。
  • ro/rw:以只读 (ro) 或读写 (rw) 模式挂载。
  • noatime:不更新文件访问时间,提升性能,特别适合 SSD 和高性能服务器。
  • nodiratime:不更新目录访问时间,进一步优化性能。
  • user/nouseruser 允许普通用户挂载和卸载该文件系统,nouser 则仅允许 root 挂载。
  • sync/asyncsync 选项意味着所有文件系统操作是同步的,async 则是异步的,async 是默认值。
  • noexec:禁止在文件系统上执行可执行文件。
  • nofail:即使设备在启动时不可用,系统仍会继续正常启动,不会中断或进入应急模式。此时,系统只会记录设备挂载失败的错误信息,但不会影响整体启动过程。
  • noauto:文件系统不会在系统启动时自动挂载,用户需要手动执行 mount 命令来挂载它。这个选项适用于不常用的设备或网络文件系统,防止因设备不可用导致的错误。
  • x-systemd.automount:文件系统在首次访问时(例如用户尝试访问 /mnt/usb 目录时)才会自动挂载。此选项避免了系统启动时挂载失败的问题,因为它只在需要时挂载。
# 示例
/dev/sda2   /media/usb   vfat    noauto,user,exec,rw  0  0

这行代码表示挂载一个 U 盘,使用 vfat 文件系统,指定普通用户可以挂载且文件系统可以读写,挂载时还允许执行文件,但不会自动挂载。

2.5 Backup Operation(dump 参数)

这是一个很少使用的字段,指定是否启用 dump 备份程序。通常为 01

  • 0:不备份该分区。
  • 1:允许 dump 备份。

2.6 Pass Order (fsck 参数)

准确来说,/etc/fstab 中的最后一列是 pass order,但是这个数字值是用来决定系统在启动时使用 fsck 工具检查文件系统的顺序。不同的发行版根分区/)与 /boot 分区默认的数字值是不同的

fsck 工具= File System Consistency Check (文件系统一致性检查) 工具

2.6.1 参数设置

该字段指定系统启动时是否检查文件系统的完整性以及检查的顺序:

  • 0:不检查该文件系统。通常对 swap 分区或远程挂载(如 NFS)使用。
  • 1:通常用于根分区( / ),表示启动时首先检查这个分区。
  • 2:一般用于对其他分区进行检查( /home/var 等),检查顺序可以根据需要设置。
  • 如果数字相同,则会按照文件中的出现顺序来进行检查。

例如:

# 示例
/dev/sda1   /boot           ext4    defaults        0  2

fsck 在系统启动时会检查 /boot 分区,但优先级低于根文件系统(/,其优先级为 1

2.6.2 不同发行版默认参数

不同发行版的版本以及不同的安装配置都会影响该参数。

发行版根分区 //boot/boot/efi是否默认启用 fsck 检查
CentOS/RHEL000否(不会自动检查)
Ubuntu/Debian121是(自动检查)
Arch Linux121是(自动检查)
Fedora120是(自动检查)
openSUSE120是(自动检查)
Gentoo120是(自动检查)

Ubuntu 为例,当系统启动时,fsck 会根据 fstab 中定义的 pass order 来决定哪些文件系统需要检查。系统会首先检查那些 pass order1 的分区,通常是根分区 /,然后再检查 pass order2 的其他分区。如果某个文件系统的 pass order 设置为 0,则它不会被检查。


/boot/boot/efi 区别:

  • /boot/efi 是专门为 UEFI 启动系统设计的目录,用于挂载 EFI 系统分区(ESP)。UEFI 是 BIOS 的继任者,提供了更现代的启动机制;通过 GPT(GUID 分区表) 启动,通常格式化为 vfat 文件系统。
  • /boot 用于传统较老的(BIOS、Legacy BIOS)启动系统设计的目录;通过 MBR(主引导记录) 引导。

2.6.3 设置为 0 的原因

  1. 启动时间优化:很多服务器或高可用系统要求尽量减少启动时间,fsck 在大分区或多个分区时检查时间较长,故一些发行版(如 CentOS/RHEL)会选择关闭自动检查。
  2. 管理员手动控制:某些场景下,系统管理员希望通过手动方式定期检查文件系统,而不是每次启动时依赖自动检查。因此选择将 pass order 设置为 0
  3. 现代文件系统的可靠性:现代文件系统(如 ext4xfs 等)已经非常稳定,不像早期的文件系统那样容易出错,因此有时并不需要频繁运行 fsck
  4. 大规模部署环境:在一些大规模服务器部署环境中(如使用 CentOS/RHEL 的数据中心),自动检查文件系统可能会导致系统不可预测的启动时间波动,因此关闭启动时的检查以避免系统长时间不可用。
  5. more…

3. 常见示例

接下来,通过一些常见的 /etc/fstab 配置示例,进一步展示如何为不同的分区或设备配置文件系统挂载。

3.1 常见的本地磁盘配置

UUID=2b4e9d04-29e9-xxx  /        ext4    defaults       0  1
UUID=550e8400-e29b-xxx  /home    ext4    defaults       0  2
/dev/sda5               none     swap    sw             0  0

这段配置代表了以下内容:

  • 根文件系统 / 挂载在 ext4 文件系统上,并设置为在系统启动时首先进行文件系统检查。
  • /home 挂载在单独的分区上,使用 ext4 文件系统。
  • 交换分区 swap 被定义但没有挂载点。

3.2 NFS 挂载

192.168.1.100:/shared /mnt/nfs  nfs  defaults  0 0

这是一个挂载网络文件系统的示例。它将远程服务器 192.168.1.100 上的 /shared 目录挂载到本地 /mnt/nfs

3.3 U 盘自动挂载配置

/dev/sdb1  /mnt/usb  vfat  noauto,user,exec,rw  0  0

这段配置表示将 U 盘挂载到 /mnt/usb,使用 vfat 文件系统,并且允许普通用户手动挂载、读写 U 盘,并执行其中的文件。

3.4 更多…

More And More ....

/etc/fstab 是一个重要的配置文件,它决定了系统的存储设备如何挂载以及如何管理文件系统。在实际使用中,正确配置 /etc/fstab 能够提升系统性能、简化存储管理,并确保系统启动时自动挂载关键分区。

凑个图,图文并茂,哈哈哈哈!

在这里插入图片描述

相关文章:

Linux 再入门整理:详解 /etc/fstab 文件

目录 1. 什么是 /etc/fstab2. /etc/fstab 文件的格式2.1 设备文件 (Device)2.2 挂载点 (Mount Point)2.3 文件系统类型 (File System Type)2.4 挂载选项 (Mount Options)2.5 Backup Operation&#xff08;dump 参数&#xff09;2.6 Pass Order (fsck 参数)2.6.1 参数设置2.6.2 …...

2.8 双绞线、同轴电缆、光纤与无线传输介质

传输介质及分类 传输介质也称为传输媒体&#xff0c;它是发送设备和接收设备之间的物理通路。 传输介质可分为导向传输介质和非导向传输介质。在导向传输介质中&#xff0c;电磁波被导向沿着固体媒介&#xff08;铜线或光纤&#xff09;传播&#xff0c;而非导向传输介质可以…...

OBOO鸥柏:布局于为无人机展厅行产业提供LCD液晶显示终端

新华网快讯&#xff0c;于10月9日消息&#xff0c;有投资者在互动平台向OBOO鸥柏公司提问&#xff1a;您好&#xff01;目前有哪些工业/商用显示产品应用于无人机展厅展馆场景&#xff1f;能否着重介绍下贵司屏幕主要应用哪些品牌无人机数字化展厅展馆做保障&#xff1f; 鸥柏…...

win10状态栏中 “音量” 符号丢失,而在“打开或关闭系统图标”中音量开关无法调节的解决方法

最近在使用电脑需要调节音量时&#xff0c;突然发现电脑右下角的音量图标不见了&#xff0c;在网上搜索了&#xff0c;测试了许多种方法&#xff0c;都没有解决这个问题。 后面想想&#xff0c;使用其他途径&#xff0c;或许可以解决了我的这个问题&#xff0c;终于功夫不负有心…...

Mysql 学习——项目实战

MySQL 学习——项目实战 项目出处 博主&#xff1a;Asmywishi Linux-Ubuntu启动Mysql sudo mysqlData preparation Create Database and Table Create database : create database mysql_example1;Start database : use mysql_example1;Create Student table : # 学生表…...

Springboot 整合 logback 日志框架

文章目录 整合 Logback 日志框架第一步&#xff1a;导入依赖第二步&#xff1a;导入配置&#xff08;logback.xml&#xff09;详解 使用&#xff08;记录日志&#xff09; 遇到问题一解决方案 整合 Logback 日志框架 第一步&#xff1a;导入依赖 &#xff08;Springboot 会自己…...

Hugging face简要介绍

1.注册使用huggingface 2.在Datasets下可以查看数据集 3.在Models下可以查看模型&#xff0c;左侧是对模型的分类 4.官方文档查看https://huggingface.co/docs 5.主要模型&#xff1a; 自回归&#xff1a;GPT、Transformer-XL、XLNet 自编码&#xff1a;BERT、ALBERT、RoBERT…...

A股知识答题pk小程序怎么做?

A股知识答题pk小程序怎么做&#xff1f;以下是制作A股知识答题PK小程序的一般步骤&#xff1a; 一、 需求分析与规划&#xff1a; 明确目标&#xff1a;确定小程序的主要目标&#xff0c;比如是为了帮助用户学习A股知识、进行趣味竞赛&#xff0c;还是作为金融教育工具等。 …...

单细胞转录组 —— kb-python 原始数据处理

单细胞转录组 —— kb-python 原始数据处理 前言 kallisto|bustools 是一种用于预处理 scRNA-seq 数据的工作流程。 数据预处理步骤包括&#xff1a; 将 reads 与其来源细胞关联起来&#xff1b;根据唯一分子标识符&#xff08;UMI&#xff09;对 reads 进行去重&#xff1…...

全同态加密算法概览

我们前面有谈到《Paillier半同态加密算法》&#xff0c;半同态加密算法除了支持密文加法运算的 Paillier 算法&#xff0c;还有支持密文乘法计算的 RSA 算法&#xff0c;早期的PSI(隐私求交)和PIR(匿踪查询)都有使用基于RSA盲签名技术来实现。今天我们来谈谈能够有效支持任意函…...

leetcode 刷题day38动态规划Part07 打家劫舍(198.打家劫舍、213.打家劫舍II、337.打家劫舍III)

198.打家劫舍 思路&#xff1a; 1、dp[i]为到第i家偷到的最高金额。 2、如果偷第i家&#xff0c;那么dp[i]dp[i-2]nums[i],如果不偷&#xff0c;则dp[i]dp[i-1]&#xff0c;所以递推公式dp[i]max(dp[i-2]nums[i],dp[i-1])。 3、初始值&#xff0c;根据递推公式&#xff0c;我们…...

C0010.Qt5.15.2下载及安装方法

1. 下载及安装 Qt 添加链接描述下载地址&#xff1a;http://download.qt.io/ 选择 archive 目录 安装Qt **注意&#xff1a;**本人使用的是Qt5.15.2版本&#xff0c;可以按如下方法找到该版本&#xff1b;...

制造企业MES管理系统的应用策略与实施路径

在智能制造浪潮的席卷之下&#xff0c;MES管理系统作为连接生产计划与车间操作的核心桥梁&#xff0c;其战略地位愈发显著。本文旨在深入剖析MES管理系统在智能制造转型中的核心价值、实施策略及实践路径&#xff0c;为制造企业探索智能化生产之路提供实践指导与灵感启发。 MES…...

Halcon 3D应用 - 胶路提取

1. 需求 本文基于某手环&#xff08;拆机打磨处理&#xff09;做的验证性工作&#xff0c;为了项目保密性&#xff0c;只截取部分数据进行测试。 这里使用的是海康3D线激光轮廓相机直线电机的方式进行的高度数据采集&#xff0c;我们拿到的是高度图亮度图数据。 提取手环上的胶…...

【Redis】Redis线程模型

目录 1. Redis 是单线程的&#xff0c;还是多线程的&#xff1f;2. Redis单线程模式是怎么样的&#xff1f;Redis 单线程模式的优势Redis 单线程的局限性Redis 单线程的优化策略 3. Redis采用单线程为什么还这么快4. Redis 6.0 之前为什么使用单线程&#xff1f;5. Redis 6.0 之…...

Electron构建桌面应用程序,服务于项目的自主学习记录(持续更新...

无所畏惧地面对未知&#xff0c;并将其视为成长的机会 大纲官网快速入门1.安装node.js -- 这里推荐用nvm管理2.脚手架创建3.electron 包安装到应用的开发依赖4.创建主进程(main.js)并启动项目1.创建页面2.配置main.js3.启动项目 -- 效果 进阶 -- 基于项目场景功能使用场景一&am…...

linux Load Average 计算

在内核代码 kernel/sched/loadavg.c 中有一个公式: a1 a0 * e a * (1 - e) 此算法是指数加权移动平均法&#xff08;Exponential Weighted Moving Average&#xff0c;EMWA&#xff09;&#xff0c;是一种特殊的加权移动平均法&#xff0c;它考虑当前和历史的所有数据&#…...

pandas常用数据格式IO性能对比

前言 本文对pandas支持的一些数据格式进行IO&#xff08;读写&#xff09;的性能测试&#xff0c;大数据时代以数据为基础&#xff0c;经常会遇到操作大量数据的情景&#xff0c;数据的IO性能尤为重要&#xff0c;本文对常见的数据格式csv、feather、hdf5、jay、parquet、pick…...

【D3.js in Action 3 精译_031】3.5.2 DIY实战:在 Observable 平台实现带数据标签的 D3 条形图并改造单元测试模块

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可…...

华为OD机试真题-字符串分割

题目描述&#xff1a; 给定非空字符串s&#xff0c;将该字符串分割成一些子串&#xff0c;使每个子串的ASCII码值的和均为水仙花数。 1、若分割不成功&#xff0c;则返回0。 2、若分割成功且分割结果不唯一&#xff0c;则返回-1。 3、若分割成功且分割结果唯一&#xff0c;则返…...

编程技巧:提高代码健壮性与可维护性的关键方法(以 Shell 为例)

在脚本编写和自动化工作中,良好的编程技巧对于确保代码的健壮性和可维护性至关重要。以下是一些关键的编程技巧,包括模块化设计、单元测试、版本控制、处理边界条件、错误处理、中间值保存和创建 Flag。本文将通过 Shell 脚本示例来阐述这些技巧的应用。 1. 模块化设计 **定…...

【无标题】ReadableStream is not defined

升级 node 版本到 18 及以上即可解决...

【JVM】高级篇

1 GraalVM 1.1 什么是GraalVM GraalVM是Oracle官方推出的一款高性能JDK&#xff0c;使用它享受比OpenJDK或者OracleJDK更好的性能。 GraalVM的官方网址&#xff1a;https://www.graalvm.org/ 官方标语&#xff1a;Build faster, smaller, leaner applications。 更低的CPU…...

nacos1.4源码-服务发现、心跳机制

nacos的服务发现主要采用服务端主动推送客户端定时拉取&#xff1b;心跳机制通过每5s向服务端发送心跳任务来保活&#xff0c;当超过15s服务端未接收到心跳任务时&#xff0c;将该实例设置为非健康状态&#xff1b;当超过30s时&#xff0c;删除该实例。 1.服务发现 nacos主要采…...

C++ 2D平台游戏开发案例

关于2D平台游戏的C开发案例&#xff0c;包括游戏设计、实现细节、图形渲染和音效处理等内容。虽然无法一次性提供3000字&#xff0c;但我会尽量详细描述各个部分&#xff0c;并确保有足够的深度和广度。 2D平台游戏开发案例 一、游戏设计 游戏概述 游戏名称&#xff1a;“冒险…...

【Webpack--019】TreeShaking

&#x1f913;&#x1f60d;Sam9029的CSDN博客主页:Sam9029的博客_CSDN博客-前端领域博主 &#x1f431;‍&#x1f409;若此文你认为写的不错&#xff0c;不要吝啬你的赞扬&#xff0c;求收藏&#xff0c;求评论&#xff0c;求一个大大的赞&#xff01;&#x1f44d;* &#x…...

Docker基本操作命令

Docker 是一个开源的应用容器引擎&#xff0c;允许开发者打包应用以及其依赖包到一个可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间不会有任何接口。主要功能是为开发者提供一个简单…...

开源计算器应用的全面测试计划:确保功能性和可靠性

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

uni.requestPayment 支付成功之后会走 wx.onAppRoute

uni.requestPayment 是用于发起微信支付的统一接口&#xff0c;而 wx.onAppRoute 是用于监听小程序的路由变化。当 uni.requestPayment 支付成功后&#xff0c;如果发生了页面跳转或者其他路由变化&#xff0c;wx.onAppRoute 会被触发。这个行为是正常的&#xff0c;因为支付成…...

统⼀服务入口 - Gateway

网关介绍 问题 在 spring cloud 体系中我们通过 Eureka,Nacos 解决了服务注册,服务发现的问题,使⽤Spring Cloud LoadBalance解决了负载均衡的问题,使⽤ OpenFeign 解决了远程调⽤的问题. 但是当前所有微服务的接⼝都是直接对外暴露的,可以直接通过外部访问.为了保证对外服务的…...