首页 理论教育 Linux内核设备映射器:深入剖析与安全

Linux内核设备映射器:深入剖析与安全

时间:2023-11-22 理论教育 版权反馈
【摘要】:dm-verity是内核子系统Device Mapper的一个子模块,所以在介绍dm-verity之前先要介绍一下Device Mapper的基础知识。Device Mapper为Linux内核提供了一个从逻辑设备到物理设备的映射框架,通过它,用户可以定制存储资源的管理策略。Device Mapper架构如图13-1所示。图13-2 Device Mapper例子Device Mapper是一个灵活的架构,映射设备映射一个或多个目标设备,每个目标设备属于一个类型,类型不同,对I/O的处理不同,构造目标设备的方法也不同。

Linux内核设备映射器:深入剖析与安全

dm-verity是内核子系统Device Mapper的一个子模块,所以在介绍dm-verity之前先要介绍一下Device Mapper的基础知识。

Device Mapper为Linux内核提供了一个从逻辑设备到物理设备的映射框架,通过它,用户可以定制存储资源的管理策略。当前Linux中逻辑卷管理器如LVM2(Linux Volume Manager 2)EVMS(Enterprise Volume Management System)、dmraid等都是基于该机制实现的。

Device Mapper架构如图13-1所示。其中有三个重要概念:映射设备(Mapped Device)、映射表、目标设备(Target Device)。映射设备是一个逻辑块设备,用户可以像使用其他块设备那样使用映射设备。映射设备通过映射表所描述的映射关系和目标设备建立映射。对映射设备的读写操作最终要映射成对目标设备的操作。而目标设备本身不一定是一个实际的物理设备,它可以是另一个映射设备,如此循环往复,理论上可以无限迭代下去。映射关系本质上就是表明映射设备中的地址对应到哪个目标设备的哪个地址。

978-7-111-54905-5-Part03-18.jpg

图13-1 Device Mapper架构

下面看一个例子:(www.xing528.com)

978-7-111-54905-5-Part03-19.jpg

产生的设备架构如图13-2所示。映射设备名为“test-linear”,映射到4个目标设备,映射关系是第0个block到第1023个block映射到第一个目标设备,第1024个block到第2047个block映射到第二个目标设备,第2048个block到第3071个block映射到第3个目标设备,第3072个block到第4095个block映射到第4个目标设备。映射设备中的块读写要由具体的目标设备实现,如何实现又依赖于目标设备的类型。这个例子中目标设备的类型都是“linear”。linear需要额外两个参数,设备名和块(block)起始地址,在这个例子中所有目标设备的块起始地址都是0。linear是一种比较简单的类型,就是简单的线性对应。这个例子中,针对每个目标设备都是从0起始的1024个block被分配给了名为“test-linear”的映射设备。

978-7-111-54905-5-Part03-20.jpg

图13-2 Device Mapper例子

Device Mapper是一个灵活的架构,映射设备映射一个或多个目标设备,每个目标设备属于一个类型,类型不同,对I/O的处理不同,构造目标设备的方法也不同。虽然上面的例子中所有的目标设备都是一个类型--linear,但这并不是硬性要求,映射设备可以映射为多个不同类型的目标设备。有的类型有额外要求,比如本章讲述的dm-verity规定只能有两个目标设备,一个是数据设备(Data Device),另一个是哈希设备(Hash Device)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈