0

0

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

冷炫風刃

冷炫風刃

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

|

595人浏览过

|

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

MMM金融互助系统源码
MMM金融互助系统源码

MMM金融互助系统源码是以thinkphp为核心进行开发的3m金融互助平台。程序安装说明:1.恢复数据:将“数据备份”文件夹中的 urkeji.sql 文件请采用phpMyAdmin进行导入; 2.配置Sql数据库信息,文件路径:根目录下 config.php3.后台管理地址:http://域名/admin.php 用户名:100000 密码:admin1

下载

关键点:

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

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

豆包大模型
豆包大模型

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

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
treenode的用法
treenode的用法

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

538

2023.12.01

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

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

17

2025.12.22

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

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

26

2026.01.06

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

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

75

2025.09.05

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

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

36

2025.11.16

golang map原理
golang map原理

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

60

2025.11.17

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

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

41

2025.11.27

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

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

1394

2023.06.21

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

158

2026.01.28

热门下载

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

精品课程

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

共48课时 | 8万人学习

Git 教程
Git 教程

共21课时 | 3.1万人学习

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

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