一种磁盘初始化方法及装置制造方法及图纸

技术编号:18939810 阅读:33 留言:0更新日期:2018-09-15 10:55
本发明专利技术实施例提供了一种磁盘初始化方法及装置。所述方法包括:根据各磁盘输入/输出IO的偏移获取各磁盘IO对应的定长数据块chunk表,在各chunk表中查找或添加各磁盘IO对应的chunk表节点,将各chunk表节点的状态信息记录在位图bitmap中;对各chunk表节点设置对应的自旋锁,根据各自旋锁将所述bitmap中对应的chunk表节点的状态信息锁定为初始化状态;根据各目标chunk表节点,生成对应的磁盘初始化IO,并将各磁盘初始化IO发送给目标设备,以使所述目标设备执行各磁盘初始化IO,以实现磁盘的初始化;其中,所述目标chunk表节点为状态信息是初始化状态的chunk表节点。本发明专利技术实施例实现了初始化磁盘时,能够提前确认磁盘中数据的状态,避免无用的重复操作,加快了磁盘初始化的速度。

A disk initialization method and device

The embodiment of the invention provides a disk initialization method and device. The method includes: acquiring the fixed-length chunk table corresponding to each disk IO according to the offset of input/output IO of each disk, searching or adding the chunk table node corresponding to each disk IO in each chunk table, recording the status information of each chunk table node in bitmap, setting the corresponding spin lock for each chunk table node, and according to each chunk table node. The spin lock locks the status information of the corresponding chunk table node in the bitmap into an initialization state, generates the corresponding disk initialization IO according to the target chunk table node, and sends the disk initialization IO to the target device so that the target device performs the disk initialization IO to realize the disk initialization. The target chunk table node is the chunk table node where the state information is the initialized state. When initializing the disk, the embodiment of the invention can confirm the state of the data in the disk in advance, avoid useless repeated operation, and accelerate the speed of disk initialization.

【技术实现步骤摘要】
一种磁盘初始化方法及装置
本专利技术涉及计算机
,具体涉及一种磁盘初始化方法及装置。
技术介绍
磁盘阵列(RedundantArraysofIndependentDisks,RAID)是独立磁盘构成的具有冗余能力的阵列,RAID5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。RAID5在读取数据时,通过计算各磁盘上的数据校验值来确认数据的正确性。为了确保校验的可用性,RAID5所有磁盘上的数据必须进行初始化,即清零。传统方案有两种:一是在创建RAID5之前,对磁盘上的数据进行预处理。二是在创建RAID5之后,再在RAID级别进行初始化操作,可以是后台操作或者前台操作。方案一,对磁盘进行预处理,则在预处理完成之前,不能使用这些磁盘创建RAID。此方案有以下缺陷:用户需要等待预处理完成才能进行进一步配置,非常影响用户操作配置的便利性;不能在预处理阶段处理其他IO;如果不能保存预处理的状态,一旦发生设备断电等问题,需要重新执行预处理操作;已经初始化过的数据段会被重复初始化。方案二,在创建RAID5之后,再对磁盘进行初始化。初始化信息会被保存在RAID级别。这就要求按照条带进行初始化,因为若是各个条带的初始化进度不一致,也会影响到校验的计算。按照条带对磁盘进行初始化有如下缺陷:磁盘的写入速度可能不稳定,按照条带进行初始化会把初始化速度限制在各个磁盘在某一时刻的最低速度,即在初始化时,先完成数据写入的磁盘会等待后完成的磁盘,结果导致整体的初始化时间要比单盘的初始化时间要长得多;在初始化的过程中,如果并行的处理RAID的IO,将会导致IO性能很差;重复初始化,在磁盘上部分的数据已经是零的情况下(例如,删除已有RAID5,使用同样的磁盘建立一个新的RAID组),RAID5仍会将所有磁盘上的数据清零。这样显然是很没有效率的。因此,如何快速高效地实现磁盘的初始化成为一个亟待解决的问题。
技术实现思路
针对现有技术中的缺陷,本专利技术实施例提供一种磁盘初始化方法及装置。第一方面,本专利技术实施例提供了一种磁盘初始化方法,所述方法包括:根据各磁盘输入/输出IO的偏移获取各磁盘IO对应的定长数据块chunk表,在各chunk表中查找或添加各磁盘IO对应的chunk表节点,将各chunk表节点的状态信息记录在位图bitmap中;对各chunk表节点设置对应的自旋锁,根据各自旋锁将所述bitmap中对应的chunk表节点的状态信息锁定为初始化状态;根据各目标chunk表节点,生成对应的磁盘初始化IO,并将各磁盘初始化IO发送给目标设备,以使所述目标设备执行各磁盘初始化IO,以实现磁盘的初始化;其中,所述目标chunk表节点为状态信息是初始化状态的chunk表节点。可选地,所述根据各目标chunk表节点,生成对应的磁盘初始化IO,并将各磁盘初始化IO发送给目标设备,以使所述目标设备执行各磁盘初始化IO,以实现磁盘的初始化之后,还包括:根据各目标chunk表节点,生成对应的磁盘初始化IO,并将各磁盘初始化IO发送给目标设备,以使所述目标设备异步处理所述磁盘IO,以实现磁盘的初始化。可选地,所述方法还包括:检查各chunk表节点上是否存在等待的磁盘写IO;如果存在,则将所述bitmap中对应的chunk表节点的状态信息设置为写入状态,并启动所述bitmap的同步流程;其中,所述同步流程采用周期性或者立即同步到磁盘。可选地,所述bitmap设置有读写锁;其中,所述读写锁包括写锁和读锁;当所述bitmap启动同步流程时,对所述bitmap设置写锁或读锁。可选地,所述根据各磁盘输入/输出IO的偏移获取各磁盘IO对应的定长数据块chunk表,在各chunk表中查找或添加各磁盘IO对应的chunk表节点,将各chunk表节点的状态信息记录在位图bitmap中,具体包括:根据定时器的预设周期和各磁盘输入/输出IO的偏移获取各磁盘IO对应的定长数据块chunk表,在各chunk表中查找或添加各磁盘IO对应的chunk表节点,将各chunk表节点的状态信息记录在位图bitmap中。可选地,所述根据定时器的预设周期和各磁盘输入/输出IO的偏移获取各磁盘IO对应的定长数据块chunk表,在各chunk表中查找或添加各磁盘IO对应的chunk表节点,将各chunk表节点的状态信息记录在位图bitmap中之前,还包括:根据磁盘IO计数方式确认是否存在磁盘IO;如果存在,则增加所述定时器的预设周期,以限制所述磁盘初始化IO的速度。可选地,所述方法还包括:若判断获知所述chunk表节点的IO等待队列不为空,或所述chunk表节点记录对应的chunk正在执行对应bitmap的读写操作,则将IO加入等待队列;若判断获知所述chunk表节点记录的对应的chunk的状态为正在初始化,则继续检查IO的读写属性;若IO的读写属性为读IO,则立即返回全零数据;若IO的读写属性为写IO,则将IO加入等待队列;若判断获知所述chunk表节点记录的对应的chunk的状态为已写入数据,则将IO直接下发;若判断获知所述chunk表节点记录的对应的chunk的状态为尚未初始化,则将IO加入chunk的等待队列并执行chunk初始化。第二方面,本专利技术实施例提供一种磁盘初始化装置,所述装置包括:获取模块,用于根据各磁盘输入/输出IO的偏移获取各磁盘IO对应的定长数据块chunk表,在各chunk表中查找或添加各磁盘IO对应的chunk表节点,将各chunk表节点的状态信息记录在位图bitmap中;锁定模块,用于对各chunk表节点设置对应的自旋锁,根据各自旋锁将所述bitmap中对应的chunk表节点的状态信息锁定为初始化状态;处理模块,用于根据各目标chunk表节点,生成对应的磁盘初始化IO,并将各磁盘初始化IO发送给目标设备,以使所述目标设备执行各磁盘初始化IO,以实现磁盘的初始化;其中,所述目标chunk表节点为状态信息是初始化状态的chunk表节点。可选的,所述处理模块还用于:根据各目标chunk表节点,生成对应的磁盘初始化IO,并将各磁盘初始化IO发送给目标设备,以使所述目标设备异步处理所述磁盘IO,以实现磁盘的初始化。可选的,所述装置还包括:同步流程模块,用于检查各chunk表节点上是否存在等待的磁盘写IO;如果存在,则将所述bitmap中对应的chunk表节点的状态信息设置为写入状态,并启动所述bitmap的同步流程;其中,所述同步流程采用周期性或者立即同步到磁盘。可选的,所述bitmap设置有读写锁;其中,所述读写锁包括写锁和读锁;当所述bitmap启动同步流程时,对所述bitmap设置写锁或读锁。可选的,所述获取模块还用于:根据定时器的预设周期和各磁盘输入/输出IO的偏移获取各磁盘IO对应的定长数据块chunk表,在各chunk表中查找或添加各磁盘IO对应的chunk表节点,将各chunk表节点的状态信息记录在位图bitmap中。可选的,所述获取模块还用于:根据磁盘IO计数方式确认是否存在磁盘IO;如果存在,则增加所述定时器的预设周期,以限制所述磁盘初始化IO的速度。第三方面,本专利技术实施例提供了一种电子设备,所述电子设备包括:至少一个处理器;以及与所述处理器通信本文档来自技高网
...

【技术保护点】
1.一种磁盘初始化方法,其特征在于,所述方法包括:根据各磁盘输入/输出IO的偏移获取各磁盘IO对应的定长数据块chunk表,在各chunk表中查找或添加各磁盘IO对应的chunk表节点,将各chunk表节点的状态信息记录在位图bitmap中;对各chunk表节点设置对应的自旋锁,根据各自旋锁将所述bitmap中对应的chunk表节点的状态信息锁定为初始化状态;根据各目标chunk表节点,生成对应的磁盘初始化IO,并将各磁盘初始化IO发送给目标设备,以使所述目标设备执行各磁盘初始化IO,以实现磁盘的初始化;其中,所述目标chunk表节点为状态信息是初始化状态的chunk表节点。

【技术特征摘要】
1.一种磁盘初始化方法,其特征在于,所述方法包括:根据各磁盘输入/输出IO的偏移获取各磁盘IO对应的定长数据块chunk表,在各chunk表中查找或添加各磁盘IO对应的chunk表节点,将各chunk表节点的状态信息记录在位图bitmap中;对各chunk表节点设置对应的自旋锁,根据各自旋锁将所述bitmap中对应的chunk表节点的状态信息锁定为初始化状态;根据各目标chunk表节点,生成对应的磁盘初始化IO,并将各磁盘初始化IO发送给目标设备,以使所述目标设备执行各磁盘初始化IO,以实现磁盘的初始化;其中,所述目标chunk表节点为状态信息是初始化状态的chunk表节点。2.根据权利要求1所述的方法,其特征在于,所述根据各目标chunk表节点,生成对应的磁盘初始化IO,并将各磁盘初始化IO发送给目标设备,以使所述目标设备执行各磁盘初始化IO,以实现磁盘的初始化之后,还包括:根据各目标chunk表节点,生成对应的磁盘初始化IO,并将各磁盘初始化IO发送给目标设备,以使所述目标设备异步处理所述磁盘IO,以实现磁盘的初始化。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:检查各chunk表节点上是否存在等待的磁盘写IO;如果存在,则将所述bitmap中对应的chunk表节点的状态信息设置为写入状态,并启动所述bitmap的同步流程;其中,所述同步流程采用周期性或者立即同步到磁盘。4.根据权利要求3所述的方法,其特征在于,所述bitmap设置有读写锁;其中,所述读写锁包括写锁和读锁;当所述bitmap启动同步流程时,对所述bitmap设置写锁或读锁。5.根据权利要求1所述的方法,其特征在于,所述根据各磁盘输入/输出IO的偏移获取各磁盘IO对应的定长数据块chunk表,在各chunk表中查找或添加各磁盘IO对应的chunk表节点,将各chunk表节点的状态信息记录在位图bitmap中,具体包括:根据定时器的预设周期和各磁盘输入/输出IO的偏移获取各磁盘IO对应的定长数据块chunk表,在各chunk表中查找或添加各磁盘IO对应的chunk表节点,将各chunk表节点的状态信息记录在位图bitmap中。6.根据权利要求5所述的方法,其特征在于,所述根据定时器的预设周期和各磁盘输入/输...

【专利技术属性】
技术研发人员:李浩然
申请(专利权)人:深圳神州数码云科数据技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1