讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux 文件系统从磁盘到用户的路径

星杰大大_6273

星杰大大_6273

发布时间:2026-01-28 17:30:01

|

735人浏览过

|

来源于php中文网

原创

Linux通过总线枚举磁盘并按探测顺序生成/dev/sda等节点;mkfs.ext4写入超级块等元数据使分区可识别为ext4;mount加载驱动、验证超级块、构建VFS对象并挂接;路径访问经dentry→inode→块映射→扇区I/O。

linux 文件系统从磁盘到用户的路径

磁盘设备如何被识别为 /dev/sda 这类节点

Linux 启动时,内核通过 PCI/USB/SATA 等总线枚举存储控制器,再扫描其挂载的物理设备。每块磁盘会被分配一个主设备号和次设备号,最终在 /dev 下生成对应节点(如 /dev/sda)。顺序不取决于物理插槽,而取决于内核探测到设备的先后——热插拔或 BIOS 启动顺序变化都可能让 sda 变成 sdb。

实际中别硬编码 /dev/sda,优先用 /dev/disk/by-uuid/ 或 /dev/disk/by-label/ 下的稳定符号链接。

mkfs.ext4 怎么把裸设备变成可挂载的文件系统

执行 mkfs.ext4 /dev/sda1 并非“格式化磁盘”,而是向该分区起始区域写入 ext4 的超级块(superblock)、组描述符、inode 表、块位图等元数据结构。这些数据定义了“哪些扇区存文件内容、哪些存目录项、空闲空间怎么管理”。没有这一步,mount 会报错 Wrong fs type, bad option, bad superblock。

常见疏漏:

  • 忘记先用 fdisk 或 parted 创建分区表和分区(直接对 /dev/sda 格式化虽可行,但破坏 MBR/GPT,且多数工具默认不识别)
  • 误用 mkfs.xfs 后却尝试以 ext4 挂载
  • 在 LVM 逻辑卷上运行 mkfs 前没确认 lvscan 已识别该 LV

mount /dev/sda1 /mnt 发生了什么

内核收到 mount 系统调用后,会:加载 ext4 模块(若未加载)、读取 /dev/sda1 开头的超级块验证文件系统类型、构建内存中的 VFS 层对象(struct super_block, struct dentry, struct inode),最后将该文件系统根目录的 dentry 挂接到 /mnt 对应的 dentry 上。

用于自动切换项目中适合的node 版本
用于自动切换项目中适合的node 版本

根据 package.json 中的 engines 字段自动检测 Node.js 版本需求,未安装 nvm 时自动安装并切换至对应版本。支持 Windows、macOS、Linux。适用于 Node.js 项目开发、版本切换和环境配置。

下载

关键点:

  • 挂载点 /mnt 必须是已存在的空目录;若非空,挂载后原内容不可见(但卸载即恢复)
  • mount -o ro 会让内核拒绝所有写入路径,连 open(O_RDWR) 都会返回 EROFS
  • 使用 bind 挂载(mount --bind /src /dst)不涉及文件系统解析,只是 VFS 层的路径映射

用户访问 /mnt/file.txt 时,内核怎么定位到磁盘扇区

路径解析从 /mnt 的 dentry 开始,逐级查子目录项(dentry)→ 获取对应 inode → 根据 inode 中的 block map(直接/间接块指针)算出文件数据所在逻辑块号 → 通过块设备层映射为物理扇区地址 → 提交 I/O 请求给驱动。

这个过程里容易被忽略的环节:

  • ext4 默认启用 dir_index 特性,用 htree 加速目录查找;禁用后大目录 ls 会明显变慢
  • 如果文件被 chattr +e 设置为 extent 格式,inode 不再用传统间接块,而是直接存 extent 数组,减少元数据跳转
  • SSD 上开启 discard 挂载选项后,rm 文件会立即发 TRIM 命令,但可能拖慢删除速度;多数场景建议用定期 fstrim

磁盘到用户的每一跳都依赖前一跳的正确建立:设备节点错、文件系统未初始化、挂载点失效、路径组件权限不足,任一环断开,cat: /mnt/file.txt: No such file or directory 就不是简单的“文件不存在”。

热门AI工具

更多
PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

相关专题

更多
C++ 智能指针与现代内存管理
C++ 智能指针与现代内存管理

深入讲解 C++ 现代内存管理的核心工具——智能指针,涵盖 unique_ptr 独占所有权语义、shared_ptr 引用计数机制与循环引用问题、weak_ptr 弱引用的应用场景、make_unique/make_shared 工厂函数的性能优势、自定义删除器的编写、RAII 资源管理思想的实践,以及从裸指针迁移到智能指针的重构策略,帮助开发者编写安全无泄漏的现代 C++ 代码。

359

2026.04.23

treenode的用法
treenode的用法

​在计算机编程领域,TreeNode是一种常见的数据结构,通常用于构建树形结构。在不同的编程语言中,TreeNode可能有不同的实现方式和用法,通常用于表示树的节点信息。更多关于treenode相关问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2561

2023.12.01

C++ 高效算法与数据结构
C++ 高效算法与数据结构

本专题讲解 C++ 中常用算法与数据结构的实现与优化,涵盖排序算法(快速排序、归并排序)、查找算法、图算法、动态规划、贪心算法等,并结合实际案例分析如何选择最优算法来提高程序效率。通过深入理解数据结构(链表、树、堆、哈希表等),帮助开发者提升 在复杂应用中的算法设计与性能优化能力。

356

2025.12.22

深入理解算法:高效算法与数据结构专题
深入理解算法:高效算法与数据结构专题

本专题专注于算法与数据结构的核心概念,适合想深入理解并提升编程能力的开发者。专题内容包括常见数据结构的实现与应用,如数组、链表、栈、队列、哈希表、树、图等;以及高效的排序算法、搜索算法、动态规划等经典算法。通过详细的讲解与复杂度分析,帮助开发者不仅能熟练运用这些基础知识,还能在实际编程中优化性能,提高代码的执行效率。本专题适合准备面试的开发者,也适合希望提高算法思维的编程爱好者。

397

2026.01.06

C++ 数据结构与算法实现教程合集
C++ 数据结构与算法实现教程合集

以 C++ 为实现语言,系统讲解核心数据结构与算法,涵盖链表(单链表/双链表/环检测)、栈与队列(单调栈/优先队列)、二叉树(遍历/BST/AVL/红黑树)、哈希表(开地址法/链地址法)、图(邻接表/BFS/DFS/Dijkstra/拓扑排序)、常见排序算法(快排/归并/堆排/计数排序)的实现与复杂度分析,同时分享 LeetCode 刷题技巧、竞赛编程常用模板(二分/前缀和/滑动窗口/动态规划),帮助开发者夯实算法基础。

452

2026.05.09

golang map内存释放
golang map内存释放

本专题整合了golang map内存相关教程,阅读专题下面的文章了解更多相关内容。

590

2025.09.05

golang map相关教程
golang map相关教程

本专题整合了golang map相关教程,阅读专题下面的文章了解更多详细内容。

343

2025.11.16

golang map原理
golang map原理

本专题整合了golang map相关内容,阅读专题下面的文章了解更多详细内容。

513

2025.11.17

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn