一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

RAID存储设备、主机及RAID系统的制作方法

2022-02-20 05:53:32 来源:中国专利 TAG:

raid存储设备、主机及raid系统
技术领域
1.本发明构思总体上涉及独立硬盘冗余阵列(raid,redundant array of independent disk)存储设备、与raid存储设备一起操作的主机以及raid系统。


背景技术:

2.raid系统和raid方法通常用于诸如存储重要数据的服务器的存储介质中。各种配置都是可能的,例如,在数据的输入/输出或数据的复制/存储期间在存储介质上简单地分布数据的方法。除了有效载荷数据之外,raid系统和raid方法还可以将奇偶校验信息(以下称为“奇偶校验数据(parity)”)存储在存储数据的一个或更多个存储介质中。因此,如果在所存储的数据(无论是存储在该存储介质上的数据还是存储在其他存储介质中的数据)中发生错误,则可以适当地恢复数据。结果,raid可以通过防止数据丢失并平衡输入/输出(i/o)操作来提高数据稳定性,从而提高整体服务器性能。
3.如本领域技术人员将理解的,许多raid配置被广泛使用。例如,在所谓的5级raid或6级raid系统中,在存储介质上分布和存储数据并在系统中使用奇偶校验位来确保数据完整性。即,在5级raid中,每个数据块(chunk)分布并存储有一个奇偶校验位;在6级raid中,每个数据块分布并存储有两个奇偶校验位。然而,当使用5级raid或6级raid系统时,由于它包括一个或两个备用存储区域,因此当发生数据故障时,必须对相应的备用存储区域执行重建过程。
4.这里,重建过程可以通过访问整个raid系统上包括的奇偶校验位和数据来生成丢失的数据。因此,重建过程需要大量时间,并且由于重建过程中系统资源的使用,会严重影响raid系统的整体i/o性能。


技术实现要素:

5.本发明构思的实施例提供了能够减少重建过程的执行时间并通过仅在实际使用的区域中访问和重建数据来减少重建操作所需的输入/输出(i/o)的总数的独立硬盘冗余阵列(raid)存储设备、主机设备和raid系统。
6.然而,本发明构思不仅仅受限于这些效果,在考虑以下详细描述和附图时,本发明构思的其他方面对于本领域技术人员将变得更加明显。
7.根据本发明构思的一方面,提供了一种独立硬盘冗余阵列(raid)存储设备,包括:存储装置,所述存储装置包括第一存储器件和第二存储器件,所述第一存储器件被配置为存储数据块和相应的奇偶校验数据中的至少一者(数据块/奇偶校验数据),所述第二存储器件被配置为用作备用存储器区域;以及raid控制器,所述raid控制器包括被配置为存储计数表的raid内部存储器,并且被配置为响应于从主机接收到的命令来控制重建操作的执行,其中,一旦识别出故障的第一存储器件,所述raid控制器就基于所述计数表访问非故障的第一存储器件的已用区域,并使用所述第二存储器件重建所述故障的第一存储器件的数据。
8.根据本发明构思的一方面,提供了一种主机设备,所述主机设备连接到包括第一存储器件和第二存储器件的非易失性存储装置,所述第一存储器件被配置为存储数据块和相应的奇偶校验数据中的至少一者(数据块/奇偶校验数据),所述第二存储器件被配置为用作备用存储器区域。所述主机设备包括:主机内部存储器,所述主机内部存储器被配置为存储指示每个所述第一存储器件的已用区域的计数表;以及主机处理单元,所述主机处理单元被配置为控制对所述第一存储器件的独立硬盘冗余阵列(raid)操作,并响应于所述raid操作更新计数表,并且还被配置为控制使用所述第二存储器件对所述第一存储器件当中的故障的第一存储器件的重建操作。
9.根据本发明构思的一方面,提供了一种独立硬盘冗余阵列(raid)系统,包括:主机和固态硬盘(ssd),所述ssd连接到所述主机。每个所述ssd包括:第一存储器件、第二存储器件以及存储器控制器,所述第一存储器件被配置为raid,并且还被配置为存储数据和相应的奇偶校验数据中的至少一者(数据/奇偶校验数据),所述第二存储器件被配置为用作备用存储器件,所述存储器控制器被配置为对所述第一存储器件和所述第二存储器件执行数据访问操作。所述raid系统存储计数表,所述计数表指示每个所述第一存储器件的已用区域,以及一旦识别出故障的第一存储器件,所述raid系统就通过参考所述计数表仅访问非故障的第一存储器件的已用区域中的数据/奇偶校验数据,以使用所述第二存储器件对所述故障的第一存储器件执行重建操作。
10.根据本发明构思的一方面,提供了一种独立硬盘冗余阵列(raid)控制模块,所述raid控制模块连接到根据5级raid或6级raid进行操作的多个ssd,其中,当因为ssd当中的至少任何一个第一ssd发生故障而对至少一个第二ssd执行重建操作时,所述raid控制模块仅访问其他第一ssd的已用区域,并对第二ssd执行重建操作。
附图说明
11.在附图中的全部或相关部分中示出了本发明构思的某些实施例。
12.图1是根据本发明构思的实施例的raid系统20的框图。
13.图2是在一个示例中进一步示出了图1的raid控制器200的框图。
14.图3是示出根据本发明构思的实施例的raid系统的框图。
15.图4是在一个示例中进一步示出了图1的主机设备100的框图。
16.图5是示出根据本发明构思的实施例的可以由raid控制模块执行的重建操作的概念图。
17.图6是在一个示例中概述了可以由根据本发明构思的实施例的raid系统执行的重建操作的流程图。
18.图7是列出了可以由根据本发明构思的实施例的raid系统执行的示例性哈希调制的表。
19.图8是在一个示例中概述了根据本发明构思的实施例的当将数据写入raid系统时更新计数表的方法的流程图。
20.图9是示出了在图8的方法期间使用计数表的概念图。
21.图10是示出了反映图8的哈希调制的结果的示例性计数表的概念图。
22.图11是在另一个示例中概述了根据本发明构思的实施例的当从raid系统丢弃数
据时更新计数表的方法的流程图。
23.图12是示出了在图10的方法期间使用计数表的概念图。
24.图13和图14是概述根据本发明构思的实施例的操作raid系统的方法的各个流程图。
25.图15是示出根据本发明构思的实施例的可以包括raid存储设备的数据中心1000的框图。
具体实施方式
26.在随后的书面描述中,诸如“单元”或“模块”的术语表示一个或更多个功能块,其中一些功能块可以在附图中示出,一个或更多个功能块可以以硬件、软件或硬件/软件的组合来实现,并且可以被各种配置以执行一个或更多个功能。
27.现在将参照图1至图15描述根据本发明构思的实施例的示例性的独立硬盘冗余阵列(raid)系统。
28.图1是示出根据本发明构思的实施例的raid系统20的框图,图2是在一个示例中进一步示出了图1的raid控制器200的框图。
29.参照图1和图2,raid系统20通常可以包括经由连接网络30连接到一个或更多个主机(例如,主机100和10)的存储装置300和raid控制器200。在下文中,术语“主机”和“主机设备”可以混用。
30.这里,存储装置300可以包括非易失性存储装置,其中,各个非易失性存储装置通过多个通道中的至少一个通道与raid控制器200通信。在一些实施例中,存储装置300可以包括非易失性半导体存储器件(例如,nand闪存器件)和/或一个或更多个固态硬盘(ssd)。
31.在一些实施例中,存储装置300可以包括:存储数据块和与数据块相对应的至少一个奇偶校验数据的第一存储器件、以及提供备用存储器区域的第二存储器件。
32.raid控制器200可以被实现为单独的硬件卡以将存储装置300作为硬件来管理,和/或被实现为芯片组以将存储装置300作为固件来管理。
33.在图1所示的示例中,raid控制器200连接在第一主机100和第二主机10与存储装置300之间。raid控制器200可以被配置为响应于来自主机100和10的请求访问存储装置300。例如,raid控制器200可以被配置为控制由存储装置300执行的各种数据访问操作(例如,数据读取、数据写入和数据丢弃操作)。就此而言,一个或更多个数据访问操作可以称为raid操作,其中,存储装置300可以是用于在前台和/或后台操作模式期间执行各种raid操作的控制器。因此,在一些实施例中,重建操作可以被执行为前台操作或后台操作。
34.尽管在图1中进行了具体示出,raid控制器200还可以被配置为提供存储装置300与第一主机100之间的接口。另外,raid控制器200可以被配置为驱动用于控制存储装置300的固件。
35.参照图2,raid控制器200在相关部分中还可以包括主机接口210、raid处理单元220、随机存取存储器(ram)230、内部存储器240和存储器接口250。
36.主机接口210可以有助于使用一个或更多个协议在第一主机100与raid控制器200之间进行数据交换。例如,raid控制器200可以被配置为通过诸如以下各种接口协议中的至少一种与主机通信:通用串行总线(usb)协议、多媒体卡(mmc)协议、外围组件互连(pci)协
议、快速pci(pci-e)协议、高级技术附件(ata)协议、串行ata协议、并行ata协议、小型计算机系统接口(scsi)协议、串行连接的scsi(sas)协议、增强型小型磁盘接口(esdi)协议和集成驱动电子设备(ide)协议。
37.raid处理单元220可以用于控制raid控制器200的整体操作。在一些实施例中,raid处理单元220可以对存储装置300执行raid操作或后台操作。
38.ram 230可以用作raid控制器200的工作存储器,并且可以使用各种类型的易失性和/或非易失性存储器来实现。例如,可以使用动态ram(dram)、静态ram(sram)、相变ram(pram)、磁ram(mram)、电阻ram(rram)和闪存中的至少一种来实现ram 230。
39.内部存储器240可以用作缓冲存储器。在一些实施例中,内部存储器240可以包括只读存储器(rom)、可编程只读存储器(prom)、可擦除prom(eprom)、电可擦除可编程只读存储器(eeprom)、pram、闪存、sram或dram。存储器240可以存储与raid控制器200的操作或状态有关的预设信息、程序或命令。
40.内部存储器240还可以包括与本发明构思的某些实施例相关联的计数表500,下文关于图5来描述其一个示例。
41.raid控制器200可以用于控制对存储装置300的raid重建操作的执行(或运行)。例如,raid控制器200可以以条带为基础(stripe-by-stripe basis)对存储装置300执行raid重建操作。在下文中将在一些附加细节中描述由raid控制器200对存储装置300执行的可能的重建操作的示例。
42.存储器接口250可以包括用于在存储装置300与raid控制器200之间进行数据交换的协议。
43.在一些实施例中,raid控制器200和存储装置300可以被集成到单个半导体器件中,诸如(例如)用作ssd的存储卡。当raid控制器200和存储装置300被集成到用作ssd的单个半导体器件中时,可以显著提高连接到raid系统20的主机的操作速度。然而,本发明构思不限于此,并且raid控制器200和存储装置300可以选择性地实现为物理上分隔开的(例如,机械可连接/可拆卸的)组件。
44.这里,在raid控制器200和存储装置300集成到存储卡中的实施例中,存储卡可以被配置为用作个人计算机(pc)卡(个人计算机存储卡国际协会(pcmcia))、紧凑型闪存(cf)卡、智能媒体卡(sm或smc)、记忆棒、多媒体卡(mmc、rs-mmc或mmcmicro)、sd卡(sd、minisd、microsd或sdhc)、或通用闪存(ufs)。
45.应进一步注意的是,可以使用诸如以下一种或更多种技术来对存储装置300进行各种封装:层叠封装(pop)、球栅阵列(bga)、芯片级封装(csp)、塑料引线芯片载体(plcc)、塑料双列直插式封装(pdip)、waffle pack封装裸片、晶片(wafer)形式裸片、板上芯片(cob)、陶瓷双列直插式封装(cerdip)、塑料公制四方扁平封装(mqfp)、薄四方扁平封装(tqfp)、小外形集成电路(soic)、收缩小外形封装(ssop)、薄小外形封装(tsop)、系统级封装(sip)、多芯片封装(mcp)、晶片级制造封装(wfp)和晶片级加工堆叠封装(wsp)。
46.图3是示出根据本发明构思的实施例的另一raid系统的框图,图4是在一个示例中进一步示出了图1和图3的主机设备100的框图。
47.在此,图3的raid系统不包括raid控制器(如图1和图2的raid控制器200)。代替地,图3的raid系统包括经由连接网络30连接到存储装置300的第一主机100和第二主机10,其
中,非易失性存储装置300中的至少一个非易失性存储器件存储raid软件。即,主机设备100可以通过运行由操作系统启动的软件(例如,在raid系统上电时)来将非易失性存储装置300中的至少一个非易失性存储器件构建为raid。
48.例如,参照图4,第一主机设备100可以包括主机处理单元110、ram 120、内部存储器130和raid接口140。
49.主机处理单元110可以用于控制主机100的整体操作。例如,第一主机100可以对存储装置300执行raid操作或重建操作。
50.ram 120可以用作第一主机设备100的工作存储器,并且可以使用如前所述的易失性存储器和/或非易失性存储器不同地实现ram 120。
51.内部存储器130可以用作缓冲存储器,并且可以使用高速缓存、rom、prom、eprom、eeprom、pram、闪存、sram和/或dram来不同地实现内部存储器130。在一些实施例中,存储器130可以存储与第一主机设备100的操作或操作状态有关的预设信息、程序、命令等。
52.在一些实施例中,内部存储器130可以包括根据本发明构思的实施例的计数表400。(参见例如图5)。
53.raid接口140可以启用有助于存储装置300与第一主机100之间的数据交换的协议。
54.在下面的书面描述中,将描述raid控制模块。raid控制模块可以是关于图1和图2描述的raid控制器200,或者它可以是关于图3和图4描述的第一主机设备100。
55.图5是示出根据本发明构思的实施例的可以由raid控制模块执行的重建操作的概念图。
56.在说明性示例中,假设存储装置300包括:第一存储器件disk 0、第二存储器件disk 1、第三存储器件disk 2和第四存储器件disk 3(统称为“disk0至disk 3”)、以及备用存储器件spare disk,disk 0至disk 3中的每一者被配置为存储数据块和奇偶校验数据的第一存储器件,spare disk被配置为提供备用存储器空间的第二存储器件。进一步假设对第二存储器件disk 1(第一存储器件)的数据访问操作发生故障。因此,根据本发明构思的实施例的raid系统将使用spare disk来重建存储在故障的存储器件(即,disk 1)上的数据。
57.然而,本领域技术人员将认识到,存储数据和/或奇偶校验数据的第一存储器件的数目以及提供备用存储器空间的第二存储器件的数目可以因raid系统设计而改变。
58.在一些实施例中,可以存储关于在第一存储器件中存储的数据的p奇偶校验数据,并且还可以存储关于在第一存储器件中存储的数据的q奇偶校验数据(除p奇偶校验数据之外)。然而,q奇偶校验数据可以是以与p奇偶校验数据不同的方式生成的奇偶校验数据。
59.在一些实施例中,raid系统中包括的第一存储器件(disk 0至disk 3)可以包括分别被区分为行的所谓的“条带(stripe)”。每个条带可以包括多个数据块以及与所存储的属于同一条带的数据块相对应的一个或两个奇偶校验数据。奇偶校验数据可以是例如通过对属于同一条带的数据块执行异或(xor)运算而生成的奇偶校验数据。
60.在图5所示的实施例中,出于说明性目的,假设存在三(3)个数据块和一个奇偶校验数据,其中,数据块和奇偶校验数据无差别地分别由a至d指示。
61.如上所述,在执行重建操作之前,先前已经为第二存储器件(spare disk)分配了
备用区域。因此,在重建操作之前,spare disk全部或部分可以为空数据区域。
62.在一些实施例中,其中,如上所述将存储装置300集成到单个半导体器件中,可以使用由半导体封装件提供的存储单元来实现第一存储器件和第二存储器件。
63.一旦识别出故障的第一存储器件(disk 1),就可以执行重建操作,其中,该重建操作由图1的raid控制器200或图3的主机设备100执行。
64.在一些更具体的实施例中,可以对非故障的第一存储器件(例如,disk 0、disk 2和disk 3)以条带为基础执行xor运算,并且xor运算的结果可以存储在第二存储器件(spare disk)中。因此,在重建操作期间,可以对非故障的第一存储器件(disk 0、disk 2和disk 3)的各个第一行中存储的a0、a2和a3执行xor运算,并且通过执行xor运算获得的值as可以存储在第二存储器件(spare disk)的第一行中。类似地,执行xor运算获得的相应结果bs、cs和ds可以存储在在第二存储器件(spare disk)的相应行中。
65.然而,当数据块仅存储在每个第一存储器件的部分(图5所示示例中的disk 0至disk 3,包括第一行至第四行)中时,图1的raid控制器200或图3的主机设备100会难以识别(或区分)每个第一存储器件(disk 0至disk3)的“已用区域”与“未用区域”。
66.就此而言,计数表400或500可以用于存储与第一存储器件的已用区域相关联的信息。例如,在一些实施例中,可以使用布隆过滤(bloom filter)方法来实现计数表400或500,其中,使用数据结构来检查存储器件中是否存在数据块。如果根据布隆过滤方法确定在存储器件的特定区域中存在数据块,则可能会出现实际上不存在该数据块的假阳性,但是相反,不会发生尽管存储器件的特定区域中存在数据块但确定出不存在数据块的假阴性。即,在检查存储器件的已用区域时,没有丢失数据块的风险。
67.相应地,图1的raid控制器200或图3的主机设备100可以用于通过检查对应的计数表400或500来识别第一存储器件的已用区域,并且可以仅访问识别出的已用区域,从而与在重建操作期间需要访问整个第一存储器件的方法相比,减少了执行重建操作所需的时间。除了减少重建时间之外,还可以减少在重建操作期间必须执行的i/o操作的次数,从而提高raid系统的整体性能。
68.在一些实施例中,计数表400或500可以包括“储存区(bucket)”,其中,储存区可以被实现为一行的阵列,并且储存区的每一行可以是与第一存储器件的已用区域相对应的位置。
69.因此,raid控制模块可以通过基于数据块或至少一个奇偶校验数据存储在第一存储器件disk 0至disk 3中的每一者中的逻辑块地址(lba)执行至少一次哈希调制,来生成哈希值,并且可以将计数存储在与计数表400或500中的哈希值相对应的储存区中。将针对图8在一些其他细节上描述该示例性方法。
70.图6是在一个示例中概述了可以由根据本发明构思的实施例的raid系统执行的重建操作的流程图。(这里,出于描述的目的,假设与图5相同的示例性raid系统)。
71.因此,raid控制模块可以在第二存储器件(spare disk)中重建故障的第一存储器件(disk 1)的数据(s30)。
72.为了重建数据,raid控制模块可以基于非故障的第一存储器件(disk 0、disk 2和disk 3)的已用区域的lba来执行哈希调制(s31)。在一些实施例中,可以使用不同类型的哈希函数多次执行哈希调制。在一些实施例中,可以进一步增加执行哈希调制的次数以生成
非冗余的不同哈希值。将针对图7就一些附加细节描述示例性方法。
73.因此,当第一存储器件之一故障时,raid控制模块可以使用基于与每个第一存储器件相关联的lba执行的哈希调制来开始重建过程(s30)。然后,如果与lba相对应的所有储存区的值为零(s32=是),则由于是先前从未向其写入数据的lba,所以将该lba从xor运算中排除(s34)。然而,如果由于在操作s31中基于lba执行哈希调制而与lba相对应的储存区的值在计数表400或500中不全部为零(s32=否),则可以确定数据先前已写入该lba。因此,在第二存储器件中重建的故障的第一存储器件的数据可以分配给备用区域(s33)。即,当在第二存储器件中重建数据时,raid控制模块可以使用第二存储器件(spare disk)针对每个非故障的第一存储器件(disk0、disk 2和disk 3)的lba计算哈希值,并且还可以通过增大或减小与哈希值相对应的储存区中的计数来更新计数表(s35)。
74.图7是列出根据本发明构思的实施例的可以由raid系统执行的哈希调制的示例的表。
75.这里,进一步假设根据八(8)个组成条带将数据存储在第一存储器件(例如,disk 0)中。例如,假设在图5的disk 0中,数据块的行的lba分别为11、34、242、167、24、47、96和100。
76.还任意假设对每行的lba执行四(4x)次哈希调制。如表中所示,可以使用不同的哈希函数f1(x)至f4(x)来执行哈希调制。在一些实施例中,f1(x)可以生成lba除以10的余数作为第一哈希值,f2(x)可以生成通过将lba除以3的余数与第一哈希值相加而获得的值作为第二哈希值,f3(x)可以生成通过将lba除以7的余数与第二哈希值相加而获得的值作为第三哈希值,f4(x)可以生成将2与第三哈希值相加而获得的值作为第四哈希值。
77.因此,在第一行的情况下,因为f1(x)=11%10=1,所以第一哈希值是1;因为f2(x)=1 11%3=1 2=3,所以第二哈希值是3;因为f3(x)=3 11%7=3 4=7,所以第三哈希值是7;因为f4(x)=7 2=9,所以第四哈希值是9;在第二行的情况下,因为f1(x)=34%10=4,所以第一哈希值是4;因为f2(x)=4 34%3=4 1=5,所以第二哈希值是5;因为f3(x)=5 34%7=5 6=11,所以第三哈希值是11;因为f4(x)=11 2=13,所以第四哈希值是13。
78.同样地,可以为每一行计算f1(x)至f4(x)的值,以生成第一哈希值至第四哈希值,如图7的每一行所示。
79.对于每列的每个哈希值,第一哈希值是1、4、2、7、4、7、6和0,其中,4和7(即,两个哈希值)是冗余的。然而,第四哈希值是9、13、10、17、9、16、13和5,其中13(即,仅一个哈希值)是冗余的。如果如所示示例中连续应用不同的哈希函数,则可以逐渐减少同一列中(相同时间)的冗余哈希值的数目。
80.图8是在一个示例中概述了根据本发明构思的实施例的当数据写入raid系统时更新计数表的方法的流程图,图9是进一步示出图8的方法的概念图,图10是反映图8的哈希调制的结果的示例性计数表。
81.参照图8,当数据块(data)被写入至少一个第一存储器件(s10)时,与第一存储器件的已经被写入数据块的已用区域相对应的lba具有特定数据。raid控制模块对lba执行至少一次哈希调制(s11),并且通过哈希调制计算出的所得哈希值将计数表中对应储存区位置处的计数加一(例如,adds 1)(s12)。并且当执行多次哈希调制时,可以重复使与哈希值
相对应的储存区位置处的计数增大的步骤,以适当地更新计数表(s13)。
82.参照图7、图8和图9,当lba为11时,第一哈希值至第四哈希值是1、3、7和9,并且当lba为34时,第一哈希值至第四哈希值是4、5、11和13。
83.因此,每个哈希值可以对应于计数表中的储存区的位置信息。即,每当将数据写入第一存储器件或从第一存储器件丢弃数据时,raid控制模块可以重新计算相应的哈希值,并适当地改变(增大或减小)与该哈希值相对应的储存区中的计数。
84.在这方面扩展工作示例,当将数据块或奇偶校验数据写入第一存储器件(disk 0)的第一行时,第一行的lba具有特定值。如果lba为11,则第一哈希值至第四哈希值可以分别计算为1、3、7和9,并且计数表400或500可以将与第一哈希值至第四哈希值相对应的储存区位置[1]、[3]、[7]和[9]处的计数增大1。
[0085]
同样,当将数据块或奇偶校验数据写入第一存储器件(disk 0)的第二行时,如果第二行的lba为34,则第一哈希值至第四哈希值可以计算为4、5、11和13。在这种情况下,计数表400或500将与第一哈希值至第四哈希值相对应的储存区位置[4]、[5]、[11]和[13]处的计数增大1。
[0086]
类似地,当将数据块或奇偶校验数据写入第一存储器件(disk 0)的其他行(例如,第三行至第八行)时,可以为每行的lba(242、167、24、47、96或100)计算第一哈希值至第四哈希值,如图7所示。当在与计算出的每行的第一哈希值至第四哈希值(f1(x)至f4(x))相对应的储存区位置处计数表400或500中的计数增大1时,计数表可以更新为如图10所示。
[0087]
在一些实施例中,计数表的数目可以等于第一存储器件的数目。另外,可以为第一存储器件disk 1至disk 3中的每一者创建用于已写入数据的已用区域的计数表。或者,在一些其他实施例中,由于与多个第一存储器件相关联的数据可以在根据raid配置以相同的比率进行负载均衡后被划分成数据块和被使用,所以计数表的数目可以少于第一存储器件的数目。
[0088]
上面的图7、图8、图9和图10的示例用于说明对多个存储器件中的任何一个第一存储器件(例如,disk 0)的哈希调制,在该多个存储器件中以多个(例如,8个)条带使用数据块和/或奇偶校验数据。然而,这仅是示例,并且已用区域中的条带的数目、第一存储器件的数目以及计数表的数目可以根据设计而变化。
[0089]
图11是在一个示例中概述了根据本发明构思的实施例的当从raid系统丢弃数据时更新计数表的方法的流程图,图12是示出在图11的方法期间的计数表的概念图。
[0090]
参照图11,当从至少一个第一存储器件丢弃数据块(s20)时,结果可以改变第一存储器件的已用区域。因此,主机设备100或raid控制器200可以对改变的已用区域的lba执行哈希调制(s21)。如果与执行了哈希调制的第一存储器件的所有lba相对应的储存区的计数为零(s23=是),则可以将该第一存储器件识别为以前从未使用过的第一存储器件,并且该方法可以跳到计数表的更新(s25)。然而,如果与执行了哈希调制的第一存储器件的lba相对应的储存区中的至少一个储存区的计数不为零(s23=否),则可以通过确定存在已用区域来改变(增大或减小)计数表的计数。即,可以通过针对数据状态已经改变的lba的哈希调制来计算哈希值,并且使与计数表中的哈希值相对应的位置处的储存区中的计数减小1(s24)。根据一些实施例,当多次执行哈希调制时,raid控制模块可以每次都计算哈希值,并通过每次都重复以下操作来更新计数表:将与每个哈希值相对应的储存区位置处的计数增
大或减小1(s25)。
[0091]
参照图8、图9和图12,当在所示实施例中lba为11时,第一哈希值至第四哈希值是1、3、7和9。当lba为34时,第一哈希值至第四哈希值是4、5、11和13。
[0092]
在图9所示的示例中,当对第一存储器件(例如,disk 0)的第一行和第二行的lba执行哈希调制时,计数表400或500中的储存区[0]至[17]的计数为010111010101010000。
[0093]
如果丢弃存储在第一存储器件(例如,disk 0)的第二行中的数据块,则应从先前的计数表中减去第二行的lba34的第一哈希值至第四哈希值。即,当lba为34时,从与第一哈希值至第四哈希值4、5、11和13相对应的储存区[4]、[5]、[11]、[13]减去1,如图12所示。
[0094]
以这种方式,每当从第一存储器件丢弃数据时,主机100或raid控制器200可以通过基于已经从其丢弃数据的位置的lba更新计数表,来检查(或验证)第一存储器件的已用区域。
[0095]
图13是概述根据本发明构思的实施例的操作raid系统的方法的流程图。
[0096]
这里,主机设备可以向raid系统发送用于raid操作的命令(s100)。raid系统可以对至少一个第一存储器件执行作为前台或后台操作的raid操作(例如,数据读取、数据写入或数据丢弃操作)(s200),并且主机设备可以通过反映raid操作的结果来更新用于至少一个第一存储器件的计数表(s101)。
[0097]
如果在raid操作期间至少一个第一存储器件故障(s201),则raid系统向主机设备指出第一存储器件的故障状态。然后,主机设备基于最后更新的计数表检查第一存储器件的已用区域(s102),并基于检查到的已用区域向raid系统发送重建命令(s103)。
[0098]
raid系统根据主机设备的重建命令通过仅访问至少两个第一存储器件的已用区域来读取数据块或奇偶校验数据,并向主机设备发送读取到的数据块或奇偶校验数据(s202);以及主机设备对读取到的数据块或奇偶校验数据执行重建操作(s104)。例如,重建操作可以使用xor运算进行。
[0099]
当主机设备向raid系统中的第二存储器件发送操作结果时,第二存储器件可以将接收到的各行的xor运算值存储(写入)在对应行中(s203)。
[0100]
由于已经根据xor运算的结果改变了第二存储器件的数据存储状态,因此主机设备通过基于改变后的已用区域对lba进行哈希调制来更新计数表(s105)。计数表可以实时反映除了故障的第一存储器件的第一存储器件的已用区域和第二存储器件的已用区域的变化。当完成了对全部已用区域的xor运算时,主机设备结束重建操作(s106)。
[0101]
图14是概括示出了根据本发明构思的实施例的操作raid系统的方法的流程图。
[0102]
参照图14,主机设备可以向raid系统发送用于raid操作的命令(s110)。raid系统可以对至少一个第一存储器件执行作为前台或后台操作的raid操作(例如,数据读取、数据写入或数据丢弃操作)(s210),并更新至少一个第一存储器件的计数表(s211)。
[0103]
在一些实施例中,主机设备可以根据系统设置或用户的指令来请求raid系统发送计数表(s111)。raid系统可以根据该请求向主机设备发送最后更新的计数表(s212)。
[0104]
主机设备可以通过参考在操作s212中接收到的计数表向raid系统发送用于raid操作的命令(s112)。例如,主机设备可以通过参考计数表来发送读取命令。raid系统可以根据接收到的命令执行raid操作(s213),并且主机设备可以基于raid系统的操作结果连续更新计数表(s113)。如果在raid操作期间至少一个第一存储器件发生故障(s215),则raid系
统通知主机设备第一存储器件的故障状态。主机设备基于最后更新的计数表检查第一存储器件的已用区域(s114),并基于检查到的已用区域向raid系统发送重建命令(s115)。
[0105]
raid系统根据先前接收到的重建命令(s115)通过仅访问至少两个第一存储器件的已用区域来读取数据块或奇偶校验数据(s216),并向主机设备发送读取到的数据块或奇偶校验数据,并且主机设备对读取到的数据块或奇偶校验数据执行重建操作(s116)。例如,重建操作可以使用xor运算进行。
[0106]
当主机设备向raid系统中的第二存储器件发送操作结果时,第二存储器件可以将接收到的各行的xor运算值存储(写入)在对应行中(s217)。
[0107]
根据一些实施例,在xor运算的结果之后,raid系统可以通过对第二存储器件的已用区域执行哈希调制来更新计数表(s218)。或者,根据一些实施例,raid系统可以通过实时地或在xor运算之后接收被更新并被存储在主机设备中的计数表(s113)来更新计数表。因此,计数表可以反映除了故障的第一存储器件之外的第一存储器件的已用区域和第二存储器件的已用区域的变化。当完成了对全部已用区域的xor运算时,主机设备终止重建操作(s117)。
[0108]
或者,主机设备可以仅在必要时请求计数表,而不是连续更新计数表。因此,主机设备可以低成本运行。
[0109]
图15是示出根据本发明构思的实施例的可以包括raid存储器件的数据中心1000的框图。
[0110]
参照图15,数据中心1000可以是收集各种数据并提供服务的设施,并且也可以称为数据存储中心。数据中心1000可以是用于操作搜索引擎和数据库的系统,并且可以是由诸如银行或政府机构的公司使用的计算系统。数据中心1000可以包括应用服务器1100至1100n以及存储服务器1200至1200m。可以依据实施例来不同地选择应用服务器1100至1100n的数目和存储服务器1200至1200m的数目。应用服务器1100至1100n的数目可以不同于存储服务器1200至1200m的数目。
[0111]
应用服务器1100可以包括处理器1110和存储器1120,或存储服务器1200可以包括处理器1210和存储器1220。例如,在存储服务器1200的情况下,处理器1210可以控制存储服务器1200的整体操作并访问存储器1220以执行加载在存储器1220中的命令和/或数据。根据一些实施例,存储器1220可以包括计数表。存储器1220可以是双倍数据速率同步dram(ddr sdram)、高带宽存储器(hbm)、混合存储器立方体(hmc)、双列直插式存储器模块(dimm)、optane dimm或非易失性dimm(nv[m]dimm)。
[0112]
依据实施例,存储服务器1200中包括的处理器1210的数目和存储器1220的数目可以被不同地选择。在实施例中,处理器1210和存储器1220可以提供处理器-存储器对。在实施例中,处理器1210的数目可以不同于存储器1220的数目。处理器1210可以包括单核处理器或多核处理器。存储服务器1200的以上描述可以类似地应用于应用服务器1100。
[0113]
依据实施例,应用服务器1100可以不包括存储设备1150。存储服务器1200可以包括一个或更多个存储设备1250。可以依据实施例不同地选择存储服务器1200中包括的存储设备1250的数目。
[0114]
应用服务器1100至1100n和存储服务器1200至1200m可以通过网络1300相互通信。网络1300可以使用光纤通道(fc)或以太网来实现。在此,fc可以是用于相对高速的数据传
输的介质,并且可以使用提供高性能/高可用性的光交换机(switch)。根据网络1300的访问方法,可以将存储服务器1200至1200m提供为文件存储、块存储或对象存储。
[0115]
在实施例中,网络1300可以是诸如存储区域网络(san)的存储专用网络。例如,san可以是使用fc网络并根据fc协议(fcp)实现的fc-san。对于另一个示例,san可以是使用tcp/ip网络并根据tcp/ip上的scsi或互联网scsi(iscsi)协议实现的ip-san。在另一个实施例中,网络1300可以是诸如tcp/ip网络的通用网络。例如,可以根据诸如以太网上的fc(fc over ethernet,fcoe)、网络附接存储(nas)或fabrics上的nvme(nvme over fabrics,nvme-of)的协议来实现网络1300。
[0116]
以下将主要描述应用服务器1100和存储服务器1200。应用服务器1100的描述还可以应用于另一应用服务器1100n,并且存储服务器1200的描述也可以应用于另一存储服务器1200m。
[0117]
应用服务器1100可以通过网络1300将用户或客户端请求存储的数据存储在存储服务器1200至1200m之一中。另外,应用服务器1100可以通过网络1300获取用户或客户端请求从存储服务器1200至1200m之一读取的数据。例如,应用服务器1100可以实现为网页(web)服务器或数据库管理系统(dbms)。根据一些实施例,应用服务器1100可以是图3的主机。
[0118]
应用服务器1100可以通过网络1300访问另一应用服务器1100n中包括的存储器1120n或存储设备1150n,或者可以通过网络1300访问存储服务器1200至1200m中包括的存储器1220至1220m或存储设备1250至1250m。因此,应用服务器1100可以对存储在应用服务器1100至1100n和/或存储服务器1200至1200m中的数据执行各种操作。
[0119]
例如,应用服务器1100可以执行用于在应用服务器1100至1100n和/或存储服务器1200至1200m之间传输或复制数据的命令。这里,可以经由存储服务器1200至1200m的存储器1220至1220m或直接地,从存储服务器1200至1200m的存储设备1250至1250m向应用服务器1100至1100n的存储器1120至1120n传输数据。通过网络1300传输的数据可以是为了安全或私密而加密的数据。
[0120]
例如,应用服务器1100可以将应用服务器1100至1100n和/或存储服务器1200至1200m配置为raid。因此,当任何一个服务器发生故障时,应用服务器1100可以执行用于在其他应用服务器1100至1100n和/或存储服务器1200至1200m之间重建数据的命令。在这种情况下,在示例中,应用服务器1100可以将计数表作为元数据包括在存储器1120中,或者可以从raid中配置的其他应用服务器1100至1100n和/或存储服务器1200至1200m请求计数表,以执行重建操作。
[0121]
例如,在存储服务器1200中,接口(i/f)1254可以提供处理器1210与控制器(ctrl)1251之间的物理连接以及nic 1240与控制器1251之间的物理连接。例如,接口1254可以被实现为将存储设备1250直接连接到专用电缆的直接连接存储(das)接口。另外,例如,接口1254可以被实现为诸如以下各种接口:高级技术附件(ata)、串行ata(sata)、外部sata(e-sata)、小型计算机系统接口(scsi)、串行附接的scsi(sas)、外围组件互连(pci)、快速pci(pcie)、快速nvm(nvme)、ieee 1394、通用串行总线(usb)、安全数字(sd)卡、多媒体卡(mmc)、嵌入式多媒体卡(emmc)、通用闪存(ufs)、嵌入式通用闪存(eufs)、紧凑型闪存(cf)和卡接口。
[0122]
存储服务器1200还可以包括开关1230和nic 1240。在处理器1210的控制下,开关1230可以选择性地连接处理器1210和存储设备1250,或者可以选择性地连接nic 1240和存储设备1250。
[0123]
在实施例中,nic 1240可以包括网络接口卡、网络适配器等。nic 1240可以通过有线接口、无线接口、蓝牙接口、光学接口等连接到网络1300。nic1240可以包括内部存储器、数字信号处理器(dsp)、主机总线接口等,并且可以通过主机总线接口连接到处理器1210和/或开关1230。主机总线接口可以被实现为接口1254的上述示例之一。在实施例中,nic 1240可以与处理器1210、开关1230和存储设备1250中的至少一者集成在一起。
[0124]
在一些实施例中,处理器1210、存储器1220、开关1230和nic 1240可被包括在图1和图2中描述的raid控制器200中或者被包括在图3和图4中描述的主机100中。
[0125]
在存储服务器(1200-1200m)或应用服务器(1100-1100n)中,处理器可以向存储设备(1150-1150n、1250-1250m)或存储器(1120-1120n、1220-1220m)发送命令以编程或读取数据。在此,数据可以是已经通过纠错码(ecc)引擎进行纠错的数据。数据可以是通过数据总线反相(dbi)或数据屏蔽(dm)处理的数据,并且可以包括循环冗余码(crc)信息。数据可以是为了安全或隐私而加密的数据。
[0126]
存储设备(1150-1150n、1250-1250m)可以响应于从处理器接收到的读取命令,向nand闪存器件(1252-1252m)发送控制信号和命令/地址信号。因此,当从nand闪存器件(1252-1252m)读取数据时,可以输入读取使能(re)信号作为数据输出控制信号,从而使数据输出到dq总线。可以使用re信号来生成数据选通(dqs)。可以根据写入使能(we)信号的上升沿或下降沿将命令和地址信号锁存在页面缓冲器中。
[0127]
控制器1251可以控制存储设备1250的整体操作。在实施例中,控制器1251可以包括sram。控制器1251可以响应于写入命令将数据写入nand闪存器件1252,或者可以响应于读取命令从nand闪存器件1252读取数据。例如,可以从存储服务器1200中的处理器1210、另一存储服务器1200m中的处理器1210m或应用服务器1100和1100n中的处理器1110和1110n提供写入命令和/或读取命令。dram 1253可以临时存储(缓冲)要写入nand闪存器件1252的数据或从nand闪存器件1252读取的数据。另外,dram1253可以存储元数据。在此,元数据是用户数据或由控制器1251生成的数据,以管理nand闪存器件1252。存储设备1250可以包括用于安全或隐私的安全元件(se)。根据一些实施例,元数据可以包括计数表。
[0128]
尽管已经参考本发明构思的实施例具体示出和描述了本发明构思,但是将理解,在不脱离所附权利要求的精神和范围的情况下,可以在形式和细节上进行各种改变。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献