当前位置:首页>Linux>Linux 必学目录:/sys/block

Linux 必学目录:/sys/block

  • 2026-08-26 20:40:45
Linux 必学目录:/sys/block
大家好!我是大虫子🐛!
继续 /sys 目录,这次分享的是 /sys/block 目录~
/sys/block 目录是 Linux 系统专门用于提供块设备(block devices)的信息和接口。块设备是可以随机访问的设备,通常用于存储数据,如硬盘、固态硬盘(SSD)、USB 驱动器等。
1. 结构
在 /sys/block 目录下,每个块设备都有一个以设备名称命名的子目录。例如,常见的块设备可能包括:
  • sda:第一个 SATA 硬盘
  • sdb:第二个 SATA 硬盘
  • nvme0n1:第一个 NVMe SSD
每个设备目录中包含了一组文件和子目录,用于描述和管理该块设备。
2. 关键内容和功能
在 /sys/block 中,块设备的每个子目录通常会包含以下几个重要的文件和信息:
2.1 设备属性
  • size:设备的总大小,以 512 字节块为单位。用户可以通过读取这个文件来获取块设备的总容量。
  • ro:表示设备是否为只读,若为 1,则设备为只读;若为 0,则设备可读写。
  • device:指向实际设备的链接,通常指向 /sys/devices 中的相应设备目录。
  • uevent:用于描述设备事件的文件,当设备状态改变时,可以通过这个文件通知用户空间的程序。
  • queue:包含与设备 I/O 队列相关的设置和参数,例如调度策略和队列长度。
2.2 I/O 调度
在每个块设备的 /sys/block/<device>/queue 目录下,可以找到与 I/O 调度相关的文件,这些文件允许用户控制和优化设备的 I/O 行为。关键文件包括:
  • scheduler:当前使用的 I/O 调度器,可以通过写入不同的调度器名称来更改。例如,常见的调度器包括 cfq、deadline、noop。
  • max_sectors_kb:指定每次 I/O 操作的最大扇区数,通常用于优化性能。
  • discard_max_bytes:支持 TRIM 操作的块设备的最大字节数,用于 SSD 的垃圾回收。
3. 动态性
/sys/block 目录是动态更新的,块设备的添加和删除会实时反映在该目录中。当新设备被连接到系统时,相应的块设备目录会被创建,而当设备被移除时,该目录会被删除。这使得系统能够实时反映设备的状态变化。
4. 使用示例
以下是一些常见的使用场景和命令示例:
  • 查看块设备信息:
ls /sys/block/
这将列出所有块设备,例如 sda、sdb 等。
  • 获取设备大小:
cat /sys/block/sda/size
这将显示 sda 设备的总大小(以 512 字节块为单位)。
  • 检查设备只读状态:
cat /sys/block/sda/ro
这将返回 0 或 1,指示 sda 是否为只读。
  • 更改 I/O 调度器:
echo deadline > /sys/block/sda/queue/scheduler
这将把 sda 设备的 I/O 调度器更改为 deadline。
 5. 应用场景
  • 设备监控:系统管理员可以通过 /sys/block 获取块设备的状态和属性信息,以进行监控和管理。
  • 性能优化:开发人员可以调整 I/O 调度器和其他参数,以优化块设备的性能。
  • 故障排查:在调试块设备问题时,可以参考 /sys/block 中的信息,以帮助定位问题。
注意事项:/sys/block 目录只包含块设备的逻辑视图,实际设备信息仍然存储在 /sys/devices 中。
总结:/sys/block 目录为 Linux 系统中的块设备管理提供了一个清晰而统一的接口,使用户能够方便地访问和控制各种块设备。理解 /sys/block 的结构和功能对于系统开发、设备管理和故障排查等方面都是十分重要的。

最新文章

随机文章