12、理解块层、多队列和设备映射器

理解块层、多队列和设备映射器

1. 技术要求

在深入探讨块层、多队列和设备映射器相关内容之前,除了需要具备之前了解的 Linux 操作系统概念外,还需对现代处理器和存储技术有基本的认识。有 Linux 存储管理的实践经验,将极大地提升对某些方面的理解。

本文中的命令和示例适用于任何 Linux 操作系统,如 Debian、Ubuntu、Red Hat、Fedora 等。文中会多次引用内核源代码,若想下载内核源码,可从 https://www.kernel.org 下载,代码片段基于内核 5.19.9。

2. 单请求队列的问题

操作系统需充分发挥块设备的性能。应用程序可能要在块设备的任意位置执行 I/O 操作,这就需要在多个磁盘位置进行寻道,从而延长操作时间。对于旋转的机械硬盘,频繁的随机访问不仅会降低性能,还会产生明显噪音。

虽然 Serial Advanced Technology Attachment (SATA) 等接口在现代仍有使用,但它们是机械硬盘的首选协议。内核块层的原始设计是针对机械硬盘作为主要存储介质的时代,这些传统硬盘只能处理几百个 I/O 操作每秒(IOPs)。多核处理器的兴起和硬盘技术的进步改变了这一状况,存储栈的瓶颈从物理硬件转移到了内核的软件层。

在传统设计中,内核块层处理 I/O 请求的方式有以下两种:
- 块层维护一个单请求队列(链表结构)来处理 I/O 请求,新请求插入队列尾部。在将请求交给驱动程序之前,块层会对这些请求执行合并等技术处理。
- 某些情况下,I/O 请求需绕过请求队列,直接到达设备驱动程序,这意味着请求队列中的所有处理工作都由驱动程序完成,通常会对性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值