储存丛集化系统与提供对丛集式储存的存取的方法
【技术领域】
[0001]本发明涉及储存丛集化,特别涉及丛集式储存中的效能考量与数据去重复(de-duplicat1n)。
【背景技术】
[0002]传统储存架构一般只能垂直延伸(scale up)而无法水平延伸(scale out)。换句话说,架构中主机数量与规格不变,需要更多储存空间时只有安装或替换更多硬盘一途,因此垂直延伸不能无限制地扩张,也对效能无益。垂直延伸时将数据由早先较小的硬盘迁移到新购置较大的硬盘非常耗时,遑论硬盘的容量与要价并不成正比。
[0003]将储存丛集化、以节点为单位管理可局部解决上述问题。然而在小型电脑系统介面(Small Computer System Interface,简称SCSI)储存丛集的一例中,丛集化与存取权的赋予发生在SCSI目标(target)之后的逻辑卷管理层(logical volume management,简称LVM),用户端本身需具备识别目标的能力,每一目标只能控制八到十六个SCSI装置,而若对诸目标也用上分散式存取权管理(distributed lock management,简称DLM)则效能的低落不堪设想。
【发明内容】
[0004]鉴于上述,本发明旨在揭露用户端指示读取和写入时储存丛集化系统分别的样态,以及提供对丛集式储存的存取的方法。
[0005]本发明揭露一种储存丛集化系统,其包含多个储存前端和多个丛集化模块。丛集化模块其中至少一用以自用户端接收指示读取数据项的存取指令。丛集化模块其中之一用以检阅元数据(metadata),以选择储存前端其中之一。丛集化模块其中之一用以透过被选择的储存前端读取数据项。当被选择的储存前端回传数据项时,用以读取数据项的丛集化模块回传数据项予用户端;当被选择的储存前端回传数据项的第一衍生值时,用以读取数据项的丛集化模块依据第一衍生值检阅一份索引,以合成数据项予用户端。上述用以检阅元数据的丛集化模块可为用以接收存取指令者,用以读取数据项的丛集化模块也可为用以检阅元数据者。
[0006]本发明揭露一种提供对丛集式储存的存取的方法,其包含:自用户端接收指示读取数据项的存取指令;检阅元数据,以选择对应数据项的一个储存前端;以及透过该储存前端读取数据项。读取数据项包含:当储存前端回传数据项的第一衍生值时,依据第一衍生值检阅索引,以合成数据项予用户端;以及当储存前端回传数据项时,回传数据项予用户端。
[0007]本发明揭露另一种储存丛集化系统,其包含多个储存前端、多个丛集化模块以及多个运算模块。丛集化模块其中至少一用以自用户端接收指示写入数据项的存取指令。丛集化模块其中之一用以调用(invoke)至少一个运算模块运算数据项的至少一衍生值。丛集化模块其中至少一用以透过储存前端其中之一写入数据项,并对应更新元数据。当衍生值不存在于某索引时,用以写入数据项的丛集化模块写入至少部分的数据项;当衍生值存在于该索引时,用以写入数据项的丛集化模块写入衍生值。上述用以调用运算模块的丛集化模块可为用以接收存取指令者,用以写入数据项的丛集化模块也可为用以调用运算模块者。
[0008]本发明揭露另一种提供对丛集式储存的存取的方法,其包含:接收指示写入数据项的存取指令;运算数据项的至少一衍生值;以及透过一储存前端写入数据项,并对应更新元数据。写入数据项包含:当衍生值存在于某索引时,写入衍生值;以及当衍生值不存在于该索引时,写入至少部分的数据项。
[0009]以上关于本
【发明内容】
及以下关于实施方式的说明是用以示范与阐明本发明的精神与原理,并提供对本发明的权利要求更进一步的解释。
【附图说明】
[0010]图1是依据本发明一实施例储存丛集化系统的方框图。
[0011]图2是依据本发明一实施例提供对丛集式储存的存取的方法的流程图。
[0012]图3是依据本发明另一实施例提供对丛集式储存的存取的方法的流程图。
[0013]其中,附图标记说明书如下:
[0014]I储存丛集化系统
[0015]112、114、116 丛集化模块
[0016]132、134、136 储存前端
[0017]152、154、156 运算模块
【具体实施方式】
[0018]以下在实施方式中叙述本发明的详细特征,其内容足以使本领域的技术人员了解本发明的技术内容并据以实施,且依据本说明书所揭露的内容、权利要求及附图,任何本领域的技术人员可轻易地理解本发明相关的目的及优点。以下实施例是进一步说明本发明的诸面向,但非以任何面向限制本发明的范畴。
[0019]请参见图1。图1是依据本发明一实施例储存丛集化系统的方框图。如图1所示,储存丛集化系统I包含丛集化模块112、114和116、分别对应的储存前端132、134和136以及分别对应的运算模块152、154和156。一般而言,储存丛集必须有足够的节点(quorate)才能运作,而此处三个丛集化模块112、114和116代表着储存丛集化系统I分布于三台主机(实体或虚拟)上,而丛集化模块112所在的主机包含储存前端132和运算模块152,以此类推。在其他实施例中,丛集化模块112不一定只对应储存前端132和运算模块152 ;也就是说,丛集化模块112所在的主机上可以有更多的储存前端或运算模块。丛集化模块112、114和116彼此耦接(未绘示)。实务上,作为其各自主机上的服务,任一储存前端132、134和136可被任一丛集化模块112、114和116存取,任一运算模块152、154和156也可被任一丛集化模块112、114和116调用。
[0020]对于丛集化模块112、114和116而言,储存前端132、134和136隐藏了其后的硬件细节,分别提供一套文件系统或一块逻辑储存空间。以底层为SCSI装置为例,则储存前端132、134和136就是SCSI目标,可以常见的tgtd实作。当然储存前端132、134和136也可以衍生的网际网络SCSI (简称iSCSI)或其乙太网络对应(HyperSCSI)、串接式(SerialAttached) SCSI (简称 SAS)或其并接对应(Parallel SCSI)、InfiniBand、光纤通道(FibreChannel,简称FC)或其乙太网络或网际网络协议上的(Internet Protocol,简称IP)变形(FC over Ethernet 或 FC over IP)或乙太网络上的先进技术附件(ATA over Ethernet, ΑΤΑ是 Advanced Technology Attachment 的缩写)为依归。
[0021]丛集化模块112、114和116和运算模块152、154和156形成一个分散式运算平台。若套用以Apache Storm,则每个丛集化模块112、114和116皆为可启始和分配工作或运算给至少一运算模块152、154和156的主节点,而任一运算模块152、154和156又可将被分配到的工作拆派给彼此,如此递回直到最后工作完成。
[0022]请配合图1参见图2。图2是依据本发明一实施例提供对丛集式储存的存取的方法的流程图。如图2所示,于步骤S201中,丛集化模块112、114和116中至少一个自某用户端接收指示写入某数据项的存取指令。用户端可将存取指令发给多个丛集化模块,也可以固定或随机发给某个丛集化模块,如112。视储存丛集化系统I的环境设定,丛集化模块112可自行执行步骤S203以处理存取指令,或将所有与该用户端的往来转介给负责的另一个丛集化模块,如114。具体而言,丛集化模块112可以代理端点指标(proxy end-pointer)的方式告知用户端其已被转介给丛集化模块114,则之后至少在本次写入的流程中用户端只会和丛集化模块114往来。或者丛集化模块114可冒用(assume)丛集化模块112的身分,或储存丛集化系统I另包含一个丛集化模块112、114和116的共用前端,对用户端隐藏上述转介的过程。
[0023]假设存取指令由收到的丛集化模块112处理,则于步骤S203中,丛集化模块112调用运算模块152、154和156中至少一个运算数据项的至少一个衍生值。请注意丛集化模块112可以但不一定偏好由与自己对应或在同一主机上的运算模块152开始运算。衍生值通常指的是对数据项投以一散列函数(hash funct1n)的输出。步骤S203是本发明数据去重复的第一个环节;一般而言,处理数据项的衍生、散列或摘要(digest)值会比处理数据项本身来得轻松。工作或运算的分配可以发生在丛集化模块112或任何被调用的运算模块。数据项可以被分段,而任一被调用的运算模块负责的可以是其中一段的衍生值。在另一实施例中,假设丛集化模块112调用了运算模块152,而后者又调用了运算模块154。运算模块152负责的可以是数据项的粗略或模糊(fuzzy)摘要,亦即对数据项的特征(feature或characteristic)的大致描述,而运算模块154负责细部、精确的描述。因此,步骤S203所谓“至少一”衍生值可以是平行的任意数量,可以是递回任意次的运算,或这两种概念的彡口口。
[0024]接续上述调用运算模块152和154的例子,于步骤S205中,运算模块152检阅储存丛集化系统I的一份索引是否已经记载所运算出的模糊摘要。当模糊摘要存在于索引时,表示储存丛集化系统I已处理过和所述数据项类似者,索引可间接指示模糊摘要所对应的数据位元透过诸前端132、134和136储存于何处,不需再被写入,因此仅于步骤S207写入一遍模糊摘要以为记录。当模糊摘要不存在于索引时,显然其对应的至少部分的数据项需于步骤S209中被写入,且在一实施例中伴随着对索引的更新,亦即在索引中添加关联于本模糊摘要的条目。在一实施例中,仅在此模糊摘要出现达一定频率或次数时索