理解块层、块设备和数据结构
1. 块层概述
块层整合了多个复杂结构以提供通用服务,其中最重要的或许是 bio 结构。文件系统层创建 bio 结构来表示 I/O 请求,并将其传递给块层。 bio 结构负责将所有 I/O 请求传输到驱动程序。映射层负责提供将物理块设备映射到逻辑设备的基础设施,可通过内核中的设备映射器框架实现。设备映射器为内核中的多种技术奠定了基础,包括卷管理、多路径、精简配置、加密和软件 RAID 等,其中最著名的是逻辑卷管理(LVM)。设备映射器将每个逻辑卷创建为映射设备,LVM 为存储管理员提供了极大的灵活性并简化了存储管理。
blk-mq 框架已成为块层的重要组成部分,它通过为每个 CPU 核心隔离请求队列解决了性能限制问题。该框架负责将块 I/O 请求引导到多个调度队列。
块层还包含多个用于处理 I/O 请求的调度器,这些调度器是可插拔的,可针对单个块设备进行设置。非多队列调度器已被弃用,现代内核不再支持。此外,块层还实现了诸如错误处理和收集块设备 I/O 统计信息等功能。
2. 块设备的定义
内核与外部设备交换数据主要有两种方式:
- 字符设备 :一次与设备交换一个字符,使用顺序数据流进行寻址,程序可一次进行一个字符的输入和输出操作。由于缺乏随机访问方法,内核管理字符设备更为简单,如键盘、基于文本的控制台和串口等都是字符设备的示例。
- 块设备 :当传输大量数据时,一次处理一个字符的方式变得不可行。内
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



