掌桥专利:专业的专利平台
掌桥专利
首页

一种通过识别数据内容来定位存储设备端口的方法

文献发布时间:2023-06-19 11:57:35


一种通过识别数据内容来定位存储设备端口的方法

技术领域

本发明涉及计算机技术领域,具体为一种通过识别数据内容来定位存储设备端口的方法。

背景技术

在多存储设备系统中,往往存在主引导存储设备,从引导存储设备,扩充存储设备等,在整机系统的装配过程中,各种存储设备有指定的安装端口,安装错误会导致整个系统无法正常运转,如主引导存储设备安装错误,系统无法加载,安装调试需要指定的端口规则,后期维护管理非常繁琐,大大增加了工作时间。

发明内容

本发明就是针对现有技术存在的上述不足,提供一种通过识别数据内容来定位存储设备端口的方法,利用该技术,硬盘位随意插拔,安装方便,不易错误,后期维护也更为方便。

为实现上述目的,本发明提供如下技术方案:

一种通过识别数据内容来定位存储设备端口的方法,包括以下步骤:

步骤一,遍历出所有含Block IO协议的设备;

步骤二,获取该设备的Device Path Node数据并找出父设备;

步骤三,获取父设备的Device Path Node数据;

步骤四,分析父设备的Node数据,结合硬件线路设计,定位物理上的端口位置。

优选的:步骤二具体包括:利用每个设备的Block IO协议抓取分区的数据信息;比对识别分区数据;利用数据比对成功的设备的Device Path协议获取该设备的Device PathNode数据。

优选的:所述步骤二中,具体利用Device Path Node数据回溯查找出父设备。

优选的:所述比对数据不匹配时,则继续读取下一个设备的分区数据进行比对。

优选的:所述步骤四中,利用父设备Information协议获取设备名称信息、序列号识别码。

优选的:利用设备的Block IO协议中的ReadBlocks函数来抓取数据信息。

优选的:所述步骤三中,利用父设备的Device Path协议来获取Device Path Node数据。

与现有技术相比,本发明的有益效果是:

1、本发明利用UEFI规范提供的丰富接口资源与协议获取存储设备数据信息,容量空间信息,设备名称序列号,物理路径信息,设置标记数据等,在多存储设备系统中通过分析获取的信息数据定位出特定的存储设备的端口位置,从而管理该存储设备,在多个存储设备系统中,识别出含特定的数据内容存储设备所在的端口位置,管理该存储设备;确定不同端口上的存储设备的辨识信息,序列号,设备名等,提供数据做好资产管理。

2、本发明应用该技术之后,可以在UEFI固件启动阶段,可以根据存储设备上的数据资料,物理路径定位出那个端口是主引导设备,让UEFI固件从此端口的存储设备加载系统,这样在结构设计上也简单很多,不用设计出主,从设备的固定端口,安装调试也不需要指定的端口规则,也利于后期的维护管理。

3、本发明在常见的多硬盘设备系统中,可以利用该技术,硬盘位随意插拔,安装方便,不易错误,后期维护也更为方便。

附图说明

图1为本发明的流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,一种通过识别数据内容来定位存储设备端口的方法,其特征在于:包括以下步骤:

步骤一,遍历出所有含Block IO协议的设备;

步骤二,利用每个设备的Block IO协议中的ReadBlocks函数抓取分区的数据信息;

步骤三;比对识别分区数据;若比对数据不匹配时,则继续读取下一个设备的分区数据进行比对;

步骤四,利用数据比对成功的设备的Device Path协议获取该设备的Device PathNode数据;

步骤五,利用Device Path Node数据回溯查找出父设备;

步骤六,利用父设备的Device Path协议来获取Device Path Node数据;利用父设备Information协议获取设备名称信息、序列号识别码;

步骤七,分析父设备的Node数据,结合硬件线路设计,定位物理上的端口位置。

在本实施例中,硬盘存储设备为例分析下,存储设备的数据存储结构

硬盘可以划分为多个分区,每个分区上存储着不同的资料文件,

在UEFI Block IO的协议中可知,每一个分区都有自己的Block IO协议,

Block IO协议将块存储设备抽象化,便于块设备的数据读取与写入,

Block IO协议含如下功能:

typedef struct_EFI_BLOCK_IO_PROTOCOL{

UINT64 Revision;

EFI_BLOCK_IO_MEDIA*Media;

EFI_BLOCK_RESET Reset;

EFI_BLOCK_READ ReadBlocks;

EFI_BLOCK_WRITE WriteBlocks;

EFI_BLOCK_FLUSH FlushBlocks;

}EFI_BLOCK_IO_PROTOCOL;

例如以某硬盘为例分析,该硬盘含有四个分区,即四个Child Device,每一个Child Device都是一个分区,都含有自己的Block IO协议,我们可以通过 Block IO协议去读取分区上的存储的数据,例如读取第一个分区上前256个字节的数据;

我们通过分区的数据信息即可是识别出拥有该分区的硬盘的属性,

根据UEFI规范我们可以知道任何Device都是含有Device Path协议//******************************************************

//EFI_DEVICE_PATH_PROTOCOL

//*******************************************************

typedef struct_EFI_DEVICE_PATH_PROTOCOL{

UINT8 Type;

UINT8 SubType;

UINT8 Length[2];

}EFI_DEVICE_PATH_PROTOCOL;

Device Path是将设备的物理路径抽象化,通过分析Device Path可以获取设备的物理连接路径信息,硬盘分区也属于一个Device,必定含有Device Path的协议,分析该Child Device(分区)Path Node数据,回溯追踪Parent Device(父设备)即硬盘主体。

利用,父设备-子设备关系,回溯到父设备之后,我们进一步分析父设备的DevicePath协议,根据Device Path node数据,分析提取硬盘与主机之间的连接信息,结合硬件的电路设计,即可从整机系统中定位出硬盘在机器上的实际物理位置。

通过UEFI PI规范中可知,存储设备都有自己的Information的相关协议,例如硬盘有DiskInfo Protocol可以获取到硬盘的名称,序列号等信息;

USB存储设备有USB IO protocol可以获取到USB存储设备的名称,序列号等信息

根据上面定位出来的存储设备主体之后,我们可以调用存储设备的 information相关协议获取更多存储设备的信息,以DiskInfo Protocol为例

typedef struct_EFI_DISK_INFO_PROTOCOL{

EFI_GUID Interface;

EFI_DISK_INFO_INQUIRY Inquiry;

EFI_DISK_INFO_IDENTIFY Identify;

EFI_DISK_INFO_SENSE_DATA SenseData;

EFI_DISK_INFO_WHICH_IDE WhichIde;

}EFI_DISK_INFO_PROTOCOL;

我们通过协议中的Indentify功能,获取到设备名称,序列号,这样我们不但定位出了存储设备的端口位置,也同时获取了该硬盘的名称,序列号信息等,也有助于做存储设备的控制与资产管理工作。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

相关技术
  • 一种通过识别数据内容来定位存储设备端口的方法
  • 一种内存存储设备端口状态数据的方法
技术分类

06120113117654