千家信息网

linux I/O栈 预习(下)

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,二、预习下由于我们在上一篇文章中,描述了比较高层的I/O stack的结构,接下来我们来讲讲底层的结构。这一节,可能绝大多数的人在实际的工作中,并不是涉及到开发,但也是linux I/O中非常重要的。
千家信息网最后更新 2025年02月01日linux I/O栈 预习(下)

二、预习下

由于我们在上一篇文章中,描述了比较高层的I/O stack的结构,接下来我们来讲讲底层的结构。

这一节,可能绝大多数的人在实际的工作中,并不是涉及到开发,但也是linux I/O中非常重要的。
那我们就一一列举,来讲讲它们都是什么。
1、Block Layer,在很多年前,我在看SCSI子系统的时候,我那时候就不是太确立Block Layer到底是什么,因为这其中要理解block device、BIO和一系列的request_fn。所以理解block layer应该不是什么简单的事情,因为它是一个很抽象的概念,更不能一言能概括,但是我们能够从图上看出一点,就是经过block layer的多个bio,最终都变成了有序的request,那么我们应该能看出来它可以排序合并bio,并且能够make request from bios。

2、I/O scheduler和blkmq,因为磁盘访问数据寻道和旋转延迟所导致出磁盘访问的一个特性,linux为磁盘设计了特殊的map bios to requests的方式,就叫做I/O scheduler,从这个function的结构来看,一个request从init到build之间的时差是用来map bios的,这个时差对于I/O scheduler是不可控的,linux i/o stack为此提供了一个专属的方法,被叫做blk_plug和blk_unplug,即从上层来派发bios的时候,上层是知道某些bios是需要并且可以做合并和排序的,那么就需要上层来plug这个bios seq,由unplug来触发build request,这个过程通常需要block device之间或和LIO/VFS配合实现。
blkmq:是linux为那些不需要做I/O scheduler的设备所设计的新的队列模型,具有高并发的特性,适用于新型的nvme ssd等具有高hardware queue depth的设备,由于几乎不再依赖blk_plug等增加latency的处理流程,这种I/O队列模型的性能会非常高。

3、scsi mid layer:scsi子系统一直是支持存储协议的big子系统,就连其内部也分为high layer、mid layer和low layer。这三层的特点就好像殖民地时期的殖民地结构,其中high layer扮演者那些殖民者,他们对当地并不熟悉,需要在当地建立傀儡政权,来保证其统治地位,也就是scsi子系统中的high layer用来实现的scsi disk,scsi tape,scsi cdrom,这种scsi高级特性的设备描述,他们是不管当地是什么情况,用同一的方式来发布scsi cmd。为了保证scsi high layer的命令得以执行,那么scsi subsystem中的傀儡政权,也就是scsi结构网络层,scsi mid layer构建了一个等级森严的拓扑方式:host:channel:target:lun,而且必须要所有的low layer都必须遵循这种拓扑方式,虽然说这种方式很残忍,甚至来说在一个host被注册的时候,它直接能和low layer通信的方式也显得很露骨(比如:slave_configure等),但是还有事一批的喜欢当slave的公司做出了无数的scsi low layer的产品,这其中比较著名的是:mpt3sas(lsi),pm8001(pmc),qla2xxx(qlogic)等吧,这些商品一般就是大家比较熟知的sas hba,raid card,fc hba等,所以没有谄媚就没有暴力,他们记住做硬件产品一定要抱个和scsi这样粗的大腿,做出来就不愁卖。但是这些年scsi也没有那么好过了,因为这充满等级森严的scsi mid layer的存储I/O,必须要求所有的scsi deivce去dispatch cmd都必须是一个接口到low layer,导致了单个scsi host没办法发挥新型介质nand flash的所有性能,让新的协议nvme大行其道,好比共产主义给殖民地同志们带来的希望,大家纷纷要突破scsi host的牢笼,那么scsi的命运如何,未来到底会不会被nvme所取代,我们拭目以待。

【本文只在51cto博客作者 "底层存储技术" https://blog.51cto.com/12580077 个人发布,公众号发布:存储之谷】,如需转载,请于本人联系,谢谢。

方式 结构 子系统 时候 存储 殖民 上层 殖民地 特性 磁盘 设备 森严 之间 也就是 产品 傀儡 就是 底层 性能 拓扑 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京crm软件开发代码 徐州发展前景网络安全 网络技术培训学校好吗 网络安全作文30字以下 网络安全和信息办是做什么的 服务器机器怎么改成台式机电源 工业互联网万润科技 数据库怎么设置拒绝重复录入 服务器被入侵了怎么办 数据库删除数据数据表不动了 接口软件开发功能验收方案 网络安全和物流问题 中富金业服务器地址 网络安全课堂图片 为啥云服务器现在用不了 电子网络技术的基础是啥 软通网络安全与隐私保护考试 奥西400服务器管理员账号 机场 加强 网络安全 画质修改服务器 软件开发相关文档模板 软件开发怎么选择商品编码 网络安全需要哪些条件 软件开发公司每天做什么 迈集客网络技术有限公司 录像机日志里提示数据库重建 知网数据库中的字段限制符号 电子网络技术的基础是啥 北京放心软件开发服务有哪些 软件开发经理跳槽
0