如何管理 Linux 块设备驱动:深入理解 sysfs 存储信息

酷辰姑娘_6623

酷辰姑娘_6623

2026-06-28

581人浏览

原创

linux块设备驱动通过/sys/block实时映射内核设备模型:每个设备对应gendisk实例,含device/、queue/、holders/等子目录;queue/支持调度器切换与i/o调优;分区为独立目录且动态更新。

如何管理 linux 块设备驱动:深入理解 sysfs 存储信息

Linux 块设备驱动的管理,核心在于理解 sysfs 如何将内核中抽象的设备模型映射为用户空间可读写的文件结构。它不是简单地“查看设备”,而是通过 /sys/block 下的层级关系、属性文件和符号链接,把驱动注册、设备拓扑、队列参数、分区状态等关键信息实时暴露出来。

/sys/block 是块设备的统一视图入口

所有已识别的块设备(如 mmcblk0、sda、nvme0n1)都会在 /sys/block/ 下生成同名子目录。这个目录本身不存储设备数据,而是内核对 block_device 结构体的 sysfs 表达——每个子目录对应一个 gendisk 实例。

  • 目录名即设备主节点名,例如 ls /sys/block 可见 mmcblk0、loop0 等;
  • 每个子目录下包含 device/(指向 /sys/devices 中的真实设备路径)、queue/(I/O 队列参数)、holders/(挂载该设备的逻辑卷或 DM 设备)、slaves/(底层物理设备,如 RAID 成员盘)等关键子目录;
  • 直接位于设备目录下的文件(如 size、ro、range)是只读属性,反映当前设备状态;
  • 部分文件(如 queue/scheduler、queue/iostats)支持写入,用于动态调整调度策略或启用统计功能。

通过 device/ 和 devices/ 关联驱动与硬件拓扑

/sys/block/*/device 是一个符号链接,指向 /sys/devices/ 下对应的实际设备路径。这个跳转揭示了驱动与总线、平台控制器之间的绑定关系。

Linux installer
Linux installer

先解析安全源,运行本地CLI安装、启动、卸载Linux桌面应用。用户请求时使用。

下载
  • 例如:readlink /sys/block/mmcblk0/device 可能返回 ../../devices/platform/soc/7824000.sdhci/mmc_host/mmc0/mmc0:0001,说明该 eMMC 设备由 SDHCI 控制器驱动,挂载在 soc 平台总线上;
  • 顺着这个路径进入 /sys/devices/,能看到完整的设备树结构:从 platform → sdhci → mmc_host → mmc0 → mmc0:0001,每一级都对应一个 kobject,也对应一个驱动模块或平台设备;
  • 在 device 目录下还能看到 driver 符号链接,指向实际加载的驱动(如 /sys/bus/platform/drivers/sdhci_pltfm),确认驱动是否已成功 probe。

利用 queue/ 子目录调优 I/O 行为

/sys/block/*/queue/ 是块设备驱动最关键的配置接口之一,它暴露的是 request_queue 的运行时参数,直接影响性能与功耗。

  • rotational:值为 0 表示 SSD 或 eMMC(非旋转介质),影响 I/O 调度器选择逻辑;
  • scheduler:显示当前启用的 I/O 调度器(如 mq-deadline、kyber、none),可通过 echo kyber > scheduler 切换(需驱动支持多队列);
  • nr_requests:单次请求队列最大请求数,调大可提升吞吐,但增加延迟;
  • iosched/(若存在):特定调度器的细粒度参数,如 deadline 的 fifo_batch、read_expire 等;
  • add_random:控制是否将设备 I/O 时间戳贡献给内核熵池,对嵌入式系统熵源有实际意义。

分区信息与动态变更感知

块设备的分区(如 mmcblk0p1、sda1)同样出现在 /sys/block/ 下,但它们是独立的子目录,且不包含 device/ 链接——因为分区本身没有独立的硬件实体,只是主设备上的逻辑切片。

  • 分区目录下有 start 和 size 文件,单位为扇区(通常是 512 字节),可用于计算偏移与容量;
  • partition 文件内容为 1,标识其为分区而非主设备;
  • 当执行 fdisk、partprobe 或内核检测到分区表变更时,/sys/block/ 下会自动增删分区目录,无需重启;
  • 注意:某些精简内核可能禁用 CONFIG_SYSFS_DEPRECATED_V2,导致旧版分区命名(如 sda1)不再出现,需依赖 udev 规则或 /proc/partitions 辅助识别。

sysfs 对块设备的呈现不是静态快照,而是内核设备模型的实时镜像。掌握它,等于掌握了从驱动加载、硬件绑定、I/O 配置到分区变更的全链路可观测能力。不复杂但容易忽略

相关文章

驱动精灵
驱动精灵

驱动精灵基于驱动之家十余年的专业数据积累,驱动支持度高,已经为数亿用户解决了各种电脑驱动问题、系统故障,是目前有效的驱动软件,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

900

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2812

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

936

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

849

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

434

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2556

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4732

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

767

5

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

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

共0课时 | 0人学习