0

0

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

冷炫風刃

冷炫風刃

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

|

675人浏览过

|

来源于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

常见疏漏:

  • 忘记先用 fdiskparted 创建分区表和分区(直接对 /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 上。

‎ Gemini Storybook
‎ Gemini Storybook

Google Gemini推出的AI绘本生成工具

下载

关键点:

  • 挂载点 /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工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
treenode的用法
treenode的用法

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

550

2023.12.01

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

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

30

2025.12.22

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

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

45

2026.01.06

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

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

77

2025.09.05

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

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

41

2025.11.16

golang map原理
golang map原理

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

67

2025.11.17

java判断map相关教程
java判断map相关教程

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

47

2025.11.27

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1564

2023.06.21

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

69

2026.03.13

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.7万人学习

Git 教程
Git 教程

共21课时 | 4.2万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号