块设备层bdev编程简介

本文档介绍了SPDK块设备层的编程接口,包括基本原语、初始化、设备发现、I/O处理和设备重置。它详细阐述了如何与bdev进行交互,如打开、关闭设备,以及异步发送读写请求。此外,还讨论了bdev层提供的功能,如自动I/O队列管理、热插拔支持和I/O统计。
摘要由CSDN通过智能技术生成

更多DPDK相关源码、虚拟化等技术学习资料、开源项目、招聘信息欢迎点击 DPDK开发中文网

介绍

块设备是支持以固定大小的块读取和写入数据的存储设备。这些块通常为512或4096字节。设备可以是软件中的逻辑构造,或者对应于诸如NVMe SSD的物理设备。

块设备层包含单个通用库lib/bdev,以及实现各种类型的块设备的许多可选模块(作为单独的库)。通用库的公共头文件是bdev.h,它是与任何类型的块设备交互所需的全部API。

下面将介绍如何使用该API与bdev进行交互。有关实现bdev模块的指南,请参阅编写自定义块设备模块

除了为所有块设备提供通用抽象之外,bdev层还提供了许多有用的功能:

响应队列满或内存不足的情况自动排队I / O请求

支持热移除,即使在I / O流量发生时也是如此。

I / O统计信息,如带宽和延迟

设备重置支持,和I / O超时跟踪

基本原语

bdev API的用户与许多基本对象进行交互。

struct spdk_bdev,本指南将其称为bdev,表示通用块设备。struct spdk_bdev_desc,此前称为描述符,表示给定块设备的句柄。描述符用于建立和跟踪使用底层块设备的权限,非常类似于UNIX系统上的文件描述符。对块设备的请求是异步的,由spdk_bdev_io对象表示。请求必须在关联的I / O channel上提交。消息传递和并发中描述了I / O channel的动机和设计。

Bdev可以是分层的,这样一些bdev通过将请求路由到其他bdev来服务I / O. 这可用于实现缓存,RAID,逻辑卷管理等。的BDEV该路线I / O到其他的BDEV通常被称为虚拟的BDEV,或vbdevs的简称。

初始化库

bdev层依赖于头文件include/spdk/thread.h抽象的通用消息传递基础结构。有关完整说明,请参阅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值