数据写入装置及方法_2

文档序号:9910610阅读:来源:国知局
加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0024]请参考图1其示出了本发明一个示例性实施例提供的存储设备100的结构示意图。该存储设备100包括:存储控制器110以及至少一个硬盘120。其中,该存储设备100中运行有键值存储系统,至少一个硬盘120为SMR硬盘。
[0025]可选的,存储设备100的存储控制器110的数量为一个或多个。比如,存储控制器110为两个,其中一个为主存储控制器,另一个为备用存储控制器。当主存储控制器发生故障时,由备用存储控制器代替主存储控制器进行运行。
[0026]存储控制器110包括:处理器112和网络接口 114。
[0027]处理器112包括一个或者一个以上处理核心。处理器112通过运行软件程序以及模块,从而执行各种功能应用以及数据处理。
[0028]网络接口114可以为多个,其中一部分网络接口用于存储设备100与其它主机或者设备进行通信,另一部分网络接口 114用于与至少一个硬盘120通信。
[0029]可选的,存储控制器110还包括存储器116以及总线118等部件。
[0030]其中:存储器116通过总线118与处理器112相连。存储器116可用于存储软件程序以及t旲块。
[0031]存储器116可存储操作系统1162以及至少一个功能所需的应用程序模块1164。操作系统1162可以是实时操作系统(Real Time executive,RTX)、LINUX、UNIX、WINDOWS或OSX之类的操作系统。应用程序模块1164可以是指令接收模块1164a、分区确定模块1164b以及写入模块1164c等。
[0032]指令接收模块1164a用于接收写入指令,所述写入指令用于指示将键值数据对象写入所述SMR硬盘,所述SMR硬盘包含多个硬盘分区;
[0033]分区确定模块1164b用于在所述多个硬盘分区中确定第一目标分区;
[0034]写入模块1164c用于将所述键值数据对象切分成至少一个子数据对象,并将所述至少一个子数据对象顺序写入所述第一目标分区中的相邻磁轨。
[0035]可选的,上述键值数据对象包含的至少一个子数据对象各自对应该键值数据对象的对象标识,应用程序模块1164还可以包括:检测模块1164d以及搬移模块1164e;
[0036]检测模块1164d,用于在对该SMR硬盘中的无效数据进行垃圾回收时,检测对应该对象标识的各个有效的子数据对象是否存储于同一个硬盘分区。
[0037]分区确定单元1164b,还用于若该检测单元1164d的检测结果为该各个有效的子数据对象未存储于同一个硬盘分区,则在该多个硬盘分区中确定第二目标分区。
[0038]搬移单元1164e,用于将该各个有效的子数据对象搬移到该第二目标分区中的相邻磁轨。
[0039]此外,存储器116可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(R0M),磁存储器,快闪存储器,磁盘或光盘。相应地。
[0040]本领域技术人员可以理解,图1中所示出的存储设备100结构并不构成对存储设备100的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0041]图2A是本发明一示例性实施例示出的数据写入方法的方法流程图,该方法可以用于键值存储系统中,由图1所示的存储设备执行。如图2A所示,该数据写入方法可以包括:
[0042]步骤201,接收写入指令,该写入指令用于指示将键值数据对象写入该SMR硬盘,该SMR硬盘包含多个硬盘分区。
[0043]在本示例性实施例中,存储设备可以先在缓存中缓冲一系列的键值数据对象,当满足一定条件,比如距离上次写入的时间达到预设时间阈值,或者,缓存数据的数据量达到一定的数据量阈值时,存储设备生成写入指令,或者,该写入指令也可以由用户通过指定的操作发送;当存储设备接收到该写入指令后,将缓存的键值数据对象在一次顺序的硬盘写操作中全部写入硬盘,从而提升写入的性能。
[0044]该步骤201可由存储设备中存储控制器的处理器执行存储器中的指令接收模块1164a来实现。
[0045]步骤202,在该多个硬盘分区中确定第一目标分区。
[0046]在本示例性实施例中,确定第一目标分区的中心思想是,将该键值数据对象的数据都尽可能的按顺序写入同一个硬盘分区。
[0047]具体的,请参考图2B,其示出了本示例性实施例涉及的第一目标分区确定方法的流程图,如图2B所示,该第一目标分区确定方法可以包括下列步骤202a至202。
[0048]步骤202a,判断该SMR硬盘中是否已存在与该键值数据对象具有相同的对象标识的数据,若是,进入步骤202b,否则,进入步骤202c。
[0049]在键值存储中,每个键值数据对象对应一个对象标识(object-1d),该键值数据对象中每一个子数据对象也都对应该对象标识,对于一个待存储的键值数据对象,在硬盘中可能还存储在其它对应该对象标识的子数据对象,在该待存储的键值数据对象中的各个子数据对象写入硬盘后,可以与硬盘中已有的对应该对象标识的子数据对象组成一个键值数据对象。
[0050]在本示例性实施例中,对键值数据对象进行写入时,可以优先将该键值数据对象写入到其它对应相同的对象标识的子数据对象所在的硬盘分区中,即存储设备首先判断是否已存在与该键值数据对象具有相同的对象标识的其它数据。
[0051]步骤202b,将与该键值数据对象具有相同的对象标识的数据所在的、剩余空间不小于该键值数据对象的数据量的硬盘分区确定为该第一目标分区。
[0052]可选的,在本示例性实施例中,如果SMR硬盘中已存在与该键值数据对象具有相同的对象标识的其它数据,则可以检查存在与该键值数据对象具有相同的对象标识的其它数据所在的硬盘分区,并将其中剩余空间不小于该键值数据对象的数据量的硬盘分区确定该第一目标分区。
[0053]如果该SMR硬盘中,与该键值数据对象具有相同的对象标识的其它数据所在的硬盘分区的剩余空间都小于该键值数据对象的数据量,则可以从其它硬盘分区中确定一个剩余空间不小于该键值数据对象的数据量的硬盘分区。
[0054]步骤202c,将该多个硬盘分区中一个剩余空间不小于该键值数据对象的数据量的硬盘分区确定为该第一目标分区。
[0055]如果SMR硬盘中不存在与该键值数据对象具有相同的对象标识的其它数据,则可以直接将一个剩余空间不小于该键值数据对象的数据量的硬盘分区确定为该第一目标分区。
[0056]或者,在实际应用中,存储设备也可以不关心该SM
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1