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

一种硬盘柜控制方法、装置、介质

文献发布时间:2024-04-18 19:58:30


一种硬盘柜控制方法、装置、介质

技术领域

本发明涉及数据存储领域,特别是涉及一种硬盘柜控制方法、装置、介质。

背景技术

随着数据存储技术的快速发展,为了提高存储设备的利用率,满足用户数据共享的需求,存算分离的概念被广泛应用在服务器系统中。图1为存算分离服务器的架构图,如图1所示,存算分离后,服务器1中不再设置数据盘,存储有服务器数据的硬盘集中设置在硬盘柜中以便于统一管理。硬盘柜与无盘服务器之间通过网络连接。

图2为硬盘柜的结构图,如图2所示,硬盘柜包括控制器2和硬盘3。控制器2用于响应服务器发送的硬盘操作请求,以对硬盘中的数据进行读写操作。由于通过网络访问硬盘柜中的硬盘可能会由于网络线缆故障、网络接口卡故障、硬盘柜控制器2故障等原因导致访问失败,为了提高系统稳定性,目前大多采用双控制器架构,通过在硬盘柜中设置多个控制器2,各个控制器2均与全部主机连接,当任意服务器1(例如服务器HostA)需要读写硬盘中的数据时,为了保证读写操作成功执行,需要向全部的控制器2发送访问请求,这可能会出现多个控制器2同时访问硬盘3导致硬盘数据错乱的问题。

由此可见,如何提供一种硬盘柜控制方法,以实现服务器对硬盘的有序访问,是本领域技术人员亟需解决的问题。

发明内容

本发明的目的是为了解决现有技术中多个主机同时通过全部控制器访问硬盘柜中的硬盘时,导致硬盘数据错乱的问题,为此,本发明提供了一种硬盘柜控制方法,防止出现不同服务器通过多个控制器同时访问硬盘导致硬盘数据错乱的问题,并降低系统的成本和复杂度。

为了解决上述技术问题,本发明提供了一种硬盘柜控制方法,应用于硬盘柜的控制器侧,所述硬盘柜控制方法包括:

获取服务器发送的当前访问请求并解析,以确定目标硬盘;

判断是否接收到所述目标硬盘发送的用于表征占用状态的占用标识;其中,所述占用标识为所述目标硬盘在响应操作指令的情况下通过厂商自定义异步事件通知发送的标识;

若接收到所述占用标识,则根据所述占用标识确定已访问所述目标硬盘的目标服务器,并判断所述当前访问请求对应的待处理服务器与所述目标服务器是否一致;

若一致,则根据所述当前访问请求生成所述操作指令,并将所述操作指令发送至所述目标硬盘以便于所述目标硬盘响应所述当前访问请求;

若不一致,则拒绝所述当前访问请求。

在一些实施例中,所述占用标识为所述目标服务器的服务器身份信息;

相应的,所述判断当前访问请求对应的待处理服务器与所述目标服务器是否一致包括:

解析所述当前访问请求,以获取所述待处理服务器的服务器身份信息;

判断所述待处理服务器的服务器身份信息与所述目标服务器的服务器身份信息是否相同;

若相同,则确定所述待处理服务器与所述目标服务器一致。

在一些实施例中,在判断出未接收到所述目标硬盘发送的所述占用标识的步骤后,还包括:

根据所述当前访问请求生成操作指令;

将所述操作指令发送至所述目标硬盘。

在一些实施例中,所述根据所述当前访问请求生成操作指令并根据所述操作指令控制所述目标硬盘响应所述当前访问请求包括:

解析所述当前访问请求以生成操作指令;

相应的,所述将所述操作指令发送至所述目标硬盘包括:

若所述操作指令为读指令,则解析所述操作指令,以获取读取地址信息;

根据所述读取地址信息确定待读取数据,并将所述待读取数据复制至缓存区域中;

将所述缓存区域中的所述待读取数据发送至所述服务器;

若所述操作指令为写指令,则解析所述操作指令,以获取待写入数据、写入地址信息,并将所述待写入数据保存至所述缓存区域;

根据所述写入地址信息将所述缓存区域中的所述待写入数据写入所述目标硬盘中,并向与所述当前访问请求对应的服务器发送写入成功消息。

在一些实施例中,还包括:

当获取到所述目标服务器发送的权限释放请求时,根据所述目标服务器的服务器身份信息生成占用标识清除指令,并将所述占用标识清除指令发送至所述目标硬盘,以便于所述目标硬盘根据所述待清理服务器身份信息更新所述占用标识。

在一些实施例中,还包括:

获取所述待处理服务器发送的权限获取请求;

解析所述权限获取请求以获取所述待处理服务器的优先级信息;

根据所述待处理服务器的服务器身份信息和所述优先级信息判断所述待处理服务器是否具有获取权限;

若具有所述获取权限,则根据所述服务器身份信息生成占用标识更新指令,并将所述占用标识更新指令发送至所述目标硬盘,以便于所述硬盘根据所述服务器身份信息更新所述占用标识。

为了解决上述技术问题,本申请还提供了一种硬盘柜控制方法,应用于硬盘柜的硬盘侧,所述硬盘柜控制方法包括:

接收控制器发送的操作指令;其中,所述操作指令为所述控制器首次向目标硬盘发送的指令,或所述控制器在接收到目标硬盘发送的用于表征占用状态的占用标识且当前访问请求对应的待处理服务器与所述目标服务器一致时发送的指令;所述目标服务器为所述控制器根据所述占用标识确定的已访问所述目标硬盘的服务器;

响应于所述控制器的所述操作指令,并向所述控制器发送用于表征占用状态的占位标识;其中,所述占位标识为所述目标硬盘通过厂商自定义异步事件通知发送的标识。

在一些实施例中,还包括:

判断是否获取到占用标识更新指令;其中,所述占用标识更新指令为所述控制器在获取所述待处理服务器发送的权限获取请求,且根据所述待处理服务器的服务器身份信息和优先级信息确定所述待处理服务器具有获取权限时发送的指令;

若获取到所述占用标识更新指令,则解析所述占用标识更新指令以获取所述待处理服务器的服务器身份信息,并根据所述服务器身份信息更新所述占用标识。

为了解决上述技术问题,本申请还提供了一种硬盘柜控制装置,其特征在于,应用于硬盘柜的控制器侧,所述硬盘柜控制装置包括:

获取模块,用于获取服务器发送的当前访问请求并解析,以确定目标硬盘;

第一判断模块,用于判断是否接收到目标硬盘发送的用于表征占用状态的占用标识;其中,所述占用标识为所述目标硬盘在响应操作指令的情况下通过厂商自定义异步事件通知发送的标识;

第二判断模块,用于若接收到所述占用标识,则根据所述占用标识确定已访问所述目标硬盘的目标服务器,并判断当前访问请求对应的待处理服务器与所述目标服务器是否一致;

生成模块,用于若一致,则根据所述当前访问请求生成操作指令并根据所述操作指令控制所述目标硬盘响应所述当前访问请求;

拒绝模块,用于若不一致,则拒绝所述当前访问请求。

为了解决上述技术问题,本申请还提供了一种硬盘柜控制装置,包括存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现所述的硬盘柜控制方法的步骤。

为了解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述的硬盘柜控制方法的步骤。

本发明提供了一种硬盘柜控制方法,应用于硬盘柜的控制器侧,硬盘柜控制方法包括:获取服务器发送的当前访问请求并解析,以确定目标硬盘。判断是否接收到目标硬盘发送的用于表征占用状态的占用标识;其中,占用标识为目标硬盘在响应操作指令的情况下通过厂商自定义异步事件通知发送的标识;若接收到占用标识,则根据占用标识确定已访问目标硬盘的目标服务器,并判断当前访问请求对应的待处理服务器与目标服务器是否一致;若一致,则根据当前访问请求生成操作指令,并将操作指令发送至目标硬盘以便于目标硬盘响应当前访问请求;若不一致,则拒绝当前访问请求。由此可见,本申请所提供的技术方案,通过判断当前访问请求对应的待处理服务器与目标服务器是否一致,并在不一致时拒绝访问请求,防止不同的服务器在同一时刻通过不同的控制器访问同一目标硬盘导致硬盘数据错乱。同时硬盘通过自带的厂商自定义异步事件通知发送访问条件,无需单独设置访问链路,降低系统的成本和复杂度。

此外,本发明还提供了一种硬盘柜控制装置、介质,与上述方法对应,效果同上。

附图说明

为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为存算分离服务器的架构图;

图2为硬盘柜的结构图;

图3为本发明实施例所提供的一种硬盘柜控制方法的流程图;

图4为本发明实施例所提供的另一种硬盘柜控制方法的流程图

图5为本发明实施例所提供的一种硬盘柜控制装置的结构图;

图6为本发明另一实施例提供的硬盘柜控制装置的结构图;

附图标记如下:1为服务器、2为控制器、3为硬盘。

具体实施方式

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

本发明的核心是提供了一种硬盘柜控制方法,防止出现不同服务器通过多个控制器同时访问硬盘导致硬盘数据错乱的问题,并降低系统的成本和复杂度。

随着数据存储技术的快速发展和新应用的加速创新,数据共享的需求越来越紧迫,最近一段时间开始出现了存算分离的概念,存算分离即把传统服务器中的硬盘分离出去。但由于目前的硬盘多为PCIE接口,为了使服务器能够通过网络访问硬盘,需要在硬盘柜中增加一个控制器将提供PCIE接口操作的硬盘转换成提供网络接口操作的硬盘。本专利所描述的硬盘柜管理的硬盘为NVMe SSD盘,使用的网络可选FC网络、以太网络、IB网络,在网络上服务器与硬盘柜之间通过NVMe Over Fabrics协议进行沟通访问。

相比于传统服务器的本地硬盘,通过网络访问远程硬盘柜中的硬盘,其出现故障的概率是增加的,例如网络线缆故障、网络接口卡故障、硬盘柜控制器故障等。实现存储资源的网络共享并不希望牺牲可靠性,所以一般将硬盘柜设计为双控制器架构,服务器与硬盘柜之间有多条链路。那么这种双控制器架构的硬盘柜所使用的硬盘也就要求是双端口硬盘,即每一块硬盘都可以连接到两个硬盘柜的控制器上。硬盘通过网络实现多个服务器共享使用,非常重要的一点是需要保障数据的安全性,防止多个服务器同时写入硬盘时数据错乱。解决这个问题可以让服务器自己解决,即服务器之间相互协调,但是涉及到可能多个服务器同时写入的情况,服务器之间相互协商或采用分布式锁等就变得比较复杂,并且耗时较长。其实更好的办法是共享的硬盘本身提供锁功能,服务器只需要先获得锁权限,然后写数据,完成写之后释放锁权限。未获得锁权限的服务器被拒绝写入数据。

如图1或图2所示,图中的硬盘使用NVMe SSD,访问硬盘的主体在NVMe协议中被称为Host,图中的双端口硬盘分别与硬盘柜的两个控制器连接,即此硬盘支持两个Host,图示中的Host1和Host2,每个Host都有自己的标识号。硬盘的锁功能可以实现同一时间内只允许从Host1写入或者只允许从Host2写入。图中的两个控制器是提高可靠性用的,同一台服务器会通过两条链路分别连接到硬盘柜的两个控制器上来访问硬盘,如果其中的一台服务器(假设对应图中的HostA)从硬盘柜的第一个控制器去获得锁权限,第一个控制器借助NVMe SSD盘的预定功能去向硬盘获得锁权限,那么硬盘将会允许Host1写入,而不允许Host2写入,即硬盘柜的第二个控制器无法写入。然而从服务器的角度看,虽然从硬盘柜的第一个控制器获得了锁权限,但是从硬盘柜的第二个控制器写入时仍然会失败。这就导致服务器只能按照连接链路的角度,从哪条网络链路获得的锁权限就只从对应的这条链路写入。另外还有一个问题,HostA从硬盘柜的第一个控制器获得了锁权限,但从硬盘的角度看是给了Host1锁权限,不论HostB还是HostC,只要从硬盘柜的第一个控制器操作其实都是Host1的权限,所以未达到锁的本意目的。

为了解决这一技术问题,本发明提供了一种硬盘柜控制方法,通过判断当前访问请求对应的待处理服务器与目标服务器是否一致,并在不一致时拒绝访问请求,防止不同的服务器在同一时刻通过不同的控制器访问同一目标硬盘导致硬盘数据错乱。同时硬盘通过自带的厂商自定义异步事件通知发送访问条件,无需单独设置访问链路,降低系统的成本和复杂度。为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

图3为本发明实施例所提供的一种硬盘柜控制方法的流程图,该方法应用于硬盘柜的控制器侧,如图3所示,硬盘柜控制方法包括:

S10:获取服务器发送的当前访问请求并解析,以确定目标硬盘;

S11:判断是否接收到目标硬盘发送的用于表征占用状态的占用标识;其中,占用标识为目标硬盘在响应操作指令的情况下通过厂商自定义异步事件通知发送的标识;

S12:若接收到占用标识,则根据占用标识确定已访问目标硬盘的目标服务器,并判断当前访问请求对应的待处理服务器与目标服务器是否一致;

S120:若一致,则根据当前访问请求生成操作指令,并将操作指令发送至目标硬盘以便于目标硬盘响应当前访问请求;

S121:若不一致,则拒绝当前访问请求。

如图1所示,多台不同的服务器与硬盘柜的控制器连接,以通过控制对硬盘柜中的硬盘进行操作。在本实施例中,待处理服务器为向控制发送硬盘访问请求的服务器,目标服务器为当前正在访问硬盘的服务器。当获取到任意服务器到任意服务器所发送的当前访问请求时,确定当前访问请求所对应的目标硬盘,并判断是否接收到目标硬盘发送的用于表征占用状态的占用标识。例如:当系统中存在服务器HOSTA、HOSTB和HOSTC,控制器host1、host2,硬盘1、硬盘2时,当HOSTA需要访问硬盘1时,HOSTA向控制器host1、host2同时发送硬盘访问请求,若此时硬盘1并未被服务器HOSTB、HOSTC访问,则控制器host1或控制器host2将HOSTA的访问请求生成操作指令,并通过操作指令控制硬盘响应当前访问请求。同时,硬盘1通过硬盘驱动向各控制器(可以包括控制器host1,也可以不包括)发送占用标识。控制器2在接收到占用标识后,当获取到硬盘访问请求后,判断发送访问请求的服务器是否为HOSTA服务器,若为HOSTA服务器,则允许访问,并根据访问请求生成操作指令。若为HOSTB或HOSTC服务器,则拒绝访问请求。

在具体实施中,硬盘柜是集中管理硬盘并通过网络接口对服务器提供存储服务器的设备,此设备内部包括NVMe SSD硬盘,两个控制器,以及网络接口卡。其中,硬盘使用NVMeSSD硬盘,在NVMe协议定义的Set Feature命令中,存在Host Identifier功能设置指令,需要硬盘支持。在NVMe协议定义的异步事件通知功能中,预留了一个厂商自定义事件,本发明中需要在厂商自定义事件中增加一个Host Identifier通知功能。

硬盘柜中的两个控制器内部都有中央处理器(Central Processing Unit,CPU)和内存,用于运行软件系统,软件系统中包括硬盘驱动,网络接口虚拟盘,以及网络接口虚拟盘与硬盘驱动之间映射对接的处理。硬盘柜的网络接口卡负责服务器与硬盘柜之间的网络连接,在网络链路上承载NVM Express over Fabrics协议,用于服务器访问硬盘柜中的网络接口虚拟盘。基于硬盘柜控制器创建的网络接口虚拟盘,用于接收和处理从网络传递过来的请求,内部管理着服务器通过NVM Express over Fabrics建立的连接,以及服务器相关信息。在硬盘柜的每个控制器上,网络接口虚拟盘的数量与硬盘柜中实际硬盘的数量相同,使其一对一映射关系。服务器通过网络读写网络接口虚拟盘时,网络接口虚拟盘通过其映射硬盘的驱动,把服务器的读写请求下发给对应的硬盘,硬盘处理完成后,网络接口虚拟盘将请求处理结果通过网络响应给服务器。网络接口虚拟盘内部实现预订功能,网络接口虚拟盘与实际硬盘都不再划分多个存储分区,即每个盘只有一个命名空间(namespace),命名空间的权限管控等同于盘的权限管控。

在具体实施中,通过硬盘子带的异步通知功能实现授权数据的同步。在设备驱动中使用异步通知可以使得在进行对设备的访问时,由驱动主动通知应用程序进行访问。异步通知的意思是:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,这一点非常类似于硬件上“中断”的概念,比较准确的称谓是“信号驱动的异步I/O”。信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。阻塞I/O意味着一直等待设备可访问后再访问,非阻塞I/O中使用poll()函数查询设备是否可访问,而异步通知则意味着设备通知用户自身可访问,之后用户再进行I/O处理,即由驱动发起、主动通知应用程序。几种I/O方式可以相互补充。

在硬盘驱动开发厂商自定义异步事件处理功能,硬盘驱动获得Host Identifier信息后需要告知对应的网络接口虚拟盘,网络接口虚拟盘通过Host Identifier信息判断,如果是非0值,则表示此主机正在通过另一端控制器申请锁权限,网络接口虚拟盘记录当前获得锁权限的Host Identifier;如果是全0值,则表示另一端控制器的网络接口虚拟盘在通知释放锁权限,因为同一时间内只有一个Host能获得锁权限,所以网络接口虚拟盘根据锁权限记录,释放掉此Host的锁权限即可。

在具体实施中,硬盘发送的占位标识可以为目标服务器的服务器身份信息,相应的,硬盘柜的控制器获取到与硬盘柜连接的服务器发送的访问请求后,解析硬盘访问请求,以获取服务器身份信息;并根据占位标识判断服务器身份信息对应的服务器是否具有访问权限。其中,占位标识为硬盘通过厂商自定义异步事件通知发送的信息。若具有访问权限,则根据硬盘访问请求和服务器身份信息生成操作指令,并将操作指令发送至硬盘。

本发明提供了一种硬盘柜控制方法,应用于硬盘柜的控制器侧,硬盘柜控制方法包括:获取服务器发送的当前访问请求并解析,以确定目标硬盘。判断是否接收到目标硬盘发送的用于表征占用状态的占用标识;其中,占用标识为目标硬盘在响应操作指令的情况下通过厂商自定义异步事件通知发送的标识,则根据占用标识确定已访问目标硬盘的目标服务器,并判断当前访问请求对应的待处理服务器与目标服务器是否一致;若一致,则根据当前访问请求生成操作指令,并将操作指令发送至目标硬盘以便于目标硬盘响应当前访问请求;若不一致,则拒绝当前访问请求。由此可见,本申请所提供的技术方案,通过判断当前访问请求对应的待处理服务器与目标服务器是否一致,并在不一致时拒绝访问请求,防止不同的服务器在同一时刻通过不同的控制器访问同一目标硬盘导致硬盘数据错乱。同时硬盘通过自带的厂商自定义异步事件通知发送访问条件,无需单独设置访问链路,降低系统的成本和复杂度。

在具体实施中,占用标识可以为目标服务器的服务器身份信息(例如:服务器ID等),也可以为预先定义的其他信息,例如:登录服务器的用户名信息等。

为了保证占用标识的可靠性,在本实施例中,选用目标服务器的服务器身份信息作为占用标识。

相应的,判断当前访问请求对应的待处理服务器与目标服务器是否一致包括:解析当前访问请求,以获取待处理服务器的服务器身份信息;判断待处理服务器的服务器身份信息与目标服务器的服务器身份信息是否相同;若相同,则确定待处理服务器与目标服务器一致。

在具体实施中,硬盘所发送的占位标识可以为仅包括单个的允许访问服务器的身份信息,也可以包括多个服务器的身份信息的运行访问列表,此处不做限定。可以理解的是,当硬盘无服务器访问时,硬盘并未给予任意服务器访问权限,因此,此时控制器并不会收到占位标识。

在上述实施例的基础上,在判断出未接收到目标硬盘发送的占用标识的步骤后,还包括:根据当前访问请求生成操作指令;将操作指令发送至目标硬盘。

在具体实施中,当控制器未接收到检测占位标识时,表明当前硬盘并未被其他服务器读写,因此,当前服务器可以直接获取相应硬盘的锁权限。

进一步的,根据当前访问请求生成操作指令并根据操作指令控制目标硬盘响应当前访问请求包括:解析当前访问请求以生成操作指令;相应的,将操作指令发送至目标硬盘包括:若操作指令为读指令,则解析操作指令,以获取读取地址信息;根据读取地址信息确定待读取数据,并将待读取数据复制至缓存区域中;将缓存区域中的待读取数据发送至服务器;若操作指令为写指令,则解析操作指令,以获取待写入数据、写入地址信息,并将待写入数据保存至缓存区域;根据写入地址信息将缓存区域中的待写入数据写入目标硬盘中,并向与当前访问请求对应的服务器发送写入成功消息。

硬盘控制器在硬盘的磁道上进行读、写操作,当主机向硬盘写入数据时,硬盘控制器先将数据传输到缓冲区,然后根据磁道地址,将数据依次传输到相应的磁道。当主机从硬盘读取数据时,硬盘控制器会根据磁道地址将相应的磁道上的数据传输到缓冲区,然后根据主机指令将数据传输到内存。

服务器向硬盘柜中的硬盘发起读写请求,对应的网络接口虚拟盘发现已经有锁定记录,那么网络接口虚拟盘判断发起请求的服务器Host Identifier,如果与记录中获得锁权限的Host Identifier一致,则允许本次请求操作;如果与记录中获得锁权限的HostIdentifier不一致,则拒绝本次请求操作。

进一步的,当获取到目标服务器发送的权限释放请求时,根据目标服务器的服务器身份信息生成占用标识清除指令,并将占用标识清除指令发送至目标硬盘,以便于目标硬盘根据待清理服务器身份信息更新占用标识。

在具体实施中,硬盘驱动获得Host Identifier信息后需要告知对应的网络接口虚拟盘,网络接口虚拟盘通过Host Identifier信息判断,如果是非0值,则表示此主机正在通过另一端控制器申请锁权限,网络接口虚拟盘记录当前获得锁权限的Host Identifier;如果是全0值,则表示另一端控制器的网络接口虚拟盘在通知释放锁权限,因为同一时间内只有一个服务器主机能获得锁权限,所以网络接口虚拟盘根据锁权限记录,释放掉此服务器主机的锁权限即可。

可以理解的是,即使在同一系统中,不同服务器中运行的进程也不相同,因此,不同服务器所具有的优先级也不相同。为了保证服务器系统的正常工作,当存在高优先级的服务器需要访问硬盘时,即使当前硬盘处于被占用状态,也需要停止当前访问进程以便于优先级较高的服务器对硬盘进行读写。

在上述实施例的基础上,还包括:获取待处理服务器发送的权限获取请求;解析权限获取请求以获取待处理服务器的优先级信息;根据待处理服务器的服务器身份信息和优先级信息判断待处理服务器是否具有获取权限;若具有获取权限,则根据服务器身份信息生成占用标识更新指令,并将占用标识更新指令发送至目标硬盘,以便于硬盘根据服务器身份信息更新占用标识。

在本实施例中,当获取服务器发送的权限获取请求后,若服务器具有获取权限,则将根据该服务器的身份信息生成列表更新指令,以使硬盘立即为当前服务器提供访问权限,从而保证高优先级的服务器能够优先对硬盘进行访问,提高系统的稳定性和可靠性。

在具体实施中,多个服务器与同一个硬盘柜连接,以实现共享存储。这些服务器中所运行的任务进程可能存在不同的优先级,当多个优先级不同的服务器需要使用同一硬盘柜或硬盘时,可能会导致高优先的任务无法优先获取硬盘访问权限的问题,因此,还可以按照服务器的优先级顺序设置访问服务器队列,以便于优先为高优先级的服务器提供服务。

图4为本发明实施例所提供的另一种硬盘柜控制方法的流程图,应用于硬盘柜的硬盘侧,如图4所示,硬盘柜控制方法包括:

S20:接收控制器发送的操作指令;其中,操作指令为控制器首次向目标硬盘发送的指令,或控制器在接收到目标硬盘发送的用于表征占用状态的占用标识且当前访问请求对应的待处理服务器与目标服务器一致时发送的指令;目标服务器为控制器根据占用标识确定的已访问目标硬盘的服务器;

S21:响应于控制器的操作指令,并向控制器发送用于表征占用状态的占位标识;其中,占位标识为目标硬盘通过厂商自定义异步事件通知发送的标识。

其中,厂商自定义异步事件通知为硬盘生产商所提供的事件通知功能,使用厂商自定义异步事件通知传输数据时,用户无需自行开发通信链路,只需要对现有的事件定义进行修改即可,从而降低系统的成本和复杂度。

在具体实施中,服务器使用预订功能向硬盘柜中的盘发起获得锁请求。对应的网络接口虚拟盘接收到请求后检查此服务器是否可以获得锁,如果在网络接口虚拟盘的锁记录中标明已经被其他服务器锁定则返回获得锁失败;如果当前还未被锁定则网络接口虚拟盘通过硬盘驱动向硬盘下发设置Host Identifier的请求,硬盘通过另一端口成功通知硬盘柜的另一个控制器后,回应设置Host Identifier成功,网络接口虚拟盘启动锁功能记录获得锁权限的Host Identifier,并通过网络回应服务器告知获得锁权限成功。此时硬盘柜中两个控制器上对应的网络接口虚拟盘都启动了锁功能。

本发明提供了一种硬盘柜控制方法,包括:接收控制器发送的操作指令;其中,操作指令为控制器首次向目标硬盘发送的指令,或控制器在接收到目标硬盘发送的用于表征占用状态的占用标识且当前访问请求对应的待处理服务器与目标服务器一致时发送的指令;目标服务器为控制器根据占用标识确定的已访问目标硬盘的服务器;响应于控制器的操作指令,并向控制器发送用于表征占用状态的占位标识;其中,占位标识为目标硬盘通过厂商自定义异步事件通知发送的标识。由此可见,本申请所提供的技术方案,通过判断当前访问请求对应的待处理服务器与目标服务器是否一致,并在不一致时拒绝访问请求,防止不同的服务器在同一时刻通过不同的控制器访问同一目标硬盘导致硬盘数据错乱。同时硬盘通过自带的厂商自定义异步事件通知发送访问条件,无需单独设置访问链路,降低系统的成本和复杂度。

作为优选的实施例,获取各控制器发送的操作指令的步骤前,还包括:启动硬盘拓展主机标识符,并初始化厂商自定义异步事件通知。在具体实施中,首先选择支持双端口的硬盘,并在硬盘的Set Feature功能中设置Enable Extended Host Identifier(EXHID)字段为1,以使硬盘能够支持128比特(16字节)长度的Host Identifier。并在硬盘中开发厂商自定义异步事件通知功能,当硬盘柜中的其中一个控制器向硬盘下发了设置HostIdentifier的请求后,硬盘在另一个端口上向硬盘柜的另一个控制器通知厂商自定义异步事件,硬盘柜的另一个控制器接收到通知并获取到新设置的Host Identifier之后,硬盘的本端口向本控制器回应设置成功。

此外,还需要对硬盘柜进行初始化,网络接口虚拟盘开启了预订功能,硬盘驱动向硬盘发起了厂商自定义异步事件等待功能。服务器按照传统方式通过NVMe over Fabrics协议与硬盘柜中的网络接口虚拟盘建立网络连接。网络接口虚拟盘中的连接管理记录着每个已通过NVMe over Fabrics协议建立连接的服务器Host Identifier信息。此信息是协议中约定通过网络建立连接时必须携带的。

进一步的,本发明方案所提供的硬盘柜控制方法还包括:当检测到控制器发送的列表清空指令后,清空占位标识;通过厂商自定义异步事件通知将占位标识发送至各控制器,以便于服务器释放锁权限。并使系统能够及时为高优先级的服务器提供访问服务。

在具体实施中,网络接口虚拟盘接收到释放锁权限请求后,网络接口虚拟盘清除锁权限记录,并通过硬盘驱动发起设置Host Identifier请求,但这次设置时传入的HostIdentifier为全0值。硬盘通过另一端口通知硬盘柜中另一个控制器厂商自定义异步事件,硬盘柜中另一个控制器上硬盘驱动将全0的Host Identifier信息告知网络接口虚拟盘后,硬盘柜中另一个控制器上对应网络接口虚拟盘也就清除锁权限记录,释放了锁权限。需要注意的是,硬盘柜中的网络接口虚拟盘在释放锁权限时不再检查发起请求者是否与申请锁权限者一致,此目的时防止出现成功申请锁权限的服务器故障而导致被锁定的盘数据永远无法被访问。

作为优选的实施例,本发明方案所提供的硬盘柜控制方法,还包括:当检测到控制器发送的列表更新指令后,解析列表更新指令以获取服务器身份信息;根据服务器身份信息更新占位标识;通过厂商自定义异步事件通知将占位标识发送至各控制器。

在上述实施例中,对于硬盘柜控制方法进行了详细描述,本发明还提供硬盘柜控制装置对应的实施例。需要说明的是,本发明从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。

图5为本发明实施例所提供的一种硬盘柜控制装置的结构图,如图5所示,该装置应用于硬盘柜的控制器侧,该硬盘柜控制装置包括:

获取模块10,用于获取服务器发送的当前访问请求并解析,以确定目标硬盘;

第一判断模块11,用于判断是否接收到目标硬盘发送的用于表征占用状态的占用标识;其中,占用标识为目标硬盘在响应操作指令的情况下通过厂商自定义异步事件通知发送的标识;

第二判断模块12,用于若接收到占用标识,则根据占用标识确定已访问目标硬盘的目标服务器,并判断当前访问请求对应的待处理服务器与目标服务器是否一致;

生成模块13,用于若一致,则根据当前访问请求生成操作指令并根据操作指令控制目标硬盘响应当前访问请求;

拒绝模块14,用于若不一致,则拒绝当前访问请求。

此外,本发明所提供的硬盘柜控制状态还包括第二生成模块、解析模块、权限释放模块、权限更新模块。

其中,第二生成模块用于在判断出未接收到目标硬盘发送的占用标识的步骤后,根据当前访问请求生成操作指令;将操作指令发送至目标硬盘。

解析模块,用于解析当前访问请求以生成操作指令;

操作指令发送模块,用于若操作指令为读指令,则解析操作指令,以获取读取地址信息;根据读取地址信息确定待读取数据,并将待读取数据复制至缓存区域中;将缓存区域中的待读取数据发送至服务器;若操作指令为写指令,则解析操作指令,以获取待写入数据、写入地址信息,并将待写入数据保存至缓存区域;根据写入地址信息将缓存区域中的待写入数据写入目标硬盘中,并向与当前访问请求对应的服务器发送写入成功消息。

权限释放模块用于当获取到目标服务器发送的权限释放请求时,根据目标服务器的服务器身份信息生成占用标识清除指令,并将占用标识清除指令发送至目标硬盘,以便于目标硬盘根据待清理服务器身份信息更新占用标识。

权限更新模块用于获取待处理服务器发送的权限获取请求;解析权限获取请求以获取待处理服务器的优先级信息;根据待处理服务器的服务器身份信息和优先级信息判断待处理服务器是否具有获取权限;若具有获取权限,则根据服务器身份信息生成占用标识更新指令,并将占用标识更新指令发送至目标硬盘,以便于硬盘根据服务器身份信息更新占用标识。

由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

本发明提供了一种硬盘柜控制装置,应用于硬盘柜的控制器侧,硬盘柜控制方法包括:获取服务器发送的当前访问请求并解析,以确定目标硬盘。判断是否接收到目标硬盘发送的用于表征占用状态的占用标识;其中,占用标识为目标硬盘在响应操作指令的情况下通过厂商自定义异步事件通知发送的标识,则根据占用标识确定已访问目标硬盘的目标服务器,并判断当前访问请求对应的待处理服务器与目标服务器是否一致;若一致,则根据当前访问请求生成操作指令,并将操作指令发送至目标硬盘以便于目标硬盘响应当前访问请求;若不一致,则拒绝当前访问请求。由此可见,本申请所提供的技术方案,通过判断当前访问请求对应的待处理服务器与目标服务器是否一致,并在不一致时拒绝访问请求,防止不同的服务器在同一时刻通过不同的控制器访问同一目标硬盘导致硬盘数据错乱。同时硬盘通过自带的厂商自定义异步事件通知发送访问条件,无需单独设置访问链路,降低系统的成本和复杂度。

图6为本发明另一实施例提供的硬盘柜控制装置的结构图,如图6所示,硬盘柜控制装置包括:存储器20,用于存储计算机程序;

处理器21,用于执行计算机程序时实现如上述实施例硬盘柜控制方法的步骤。

本实施例提供的硬盘柜控制装置可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。

其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。

存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的硬盘柜控制方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于服务器身份信息、占位标识等。

在一些实施例中,硬盘柜控制装置还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。

本领域技术人员可以理解,图6中示出的结构并不构成对硬盘柜控制装置的限定,可以包括比图示更多或更少的组件。

本发明实施例提供的硬盘柜控制装置,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:判断是否接收到目标硬盘发送的用于表征占用状态的占用标识;其中,占用标识为目标硬盘在响应操作指令的情况下通过厂商自定义异步事件通知发送的标识;若接收到占用标识,则根据占用标识确定已访问目标硬盘的目标服务器,并判断当前访问请求对应的待处理服务器与目标服务器是否一致;若一致,则根据当前访问请求生成操作指令并根据操作指令控制目标硬盘响应当前访问请求;若不一致,则拒绝当前访问请求。

最后,本发明还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例(可以是控制器侧对应的方法、也可以是硬盘侧对应的方法,还可以是控制器侧和硬盘侧对应的方法)中记载的步骤。

可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上对本发明所提供的硬盘柜控制方法、装置、介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

相关技术
  • 一种快递柜整理方法、装置、快递柜及存储介质
  • 一种固态硬盘性能测试方法、系统、装置及可读存储介质
  • 一种硬盘测试方法、装置、设备以及计算机可读存储介质
  • 一种硬盘的固件安全测试方法、装置及存储介质
  • 一种固态硬盘中的坏块的标记方法、装置、设备及介质
  • 一种硬盘背板、硬盘点灯控制系统、方法、装置及介质
  • 硬盘存储装置、运输装置、销毁装置及其控制方法和系统、电子设备和计算机可读存储介质
技术分类

06120116503038