不损害数据完整性的在线数据移动的制作方法

文档序号:11935082阅读:305来源:国知局
不损害数据完整性的在线数据移动的制作方法与工艺

计算系统已变成普遍存在的,其范围是从小型的嵌入式设备到电话和平板再到PC和后端服务器。这些计算系统中的每个计算系统包括某种类型的数据存储装置,并且典型地包括许多不同类型的数据存储装置。例如,协同系统可以包括固态存储装置和硬盘驱动器或者硬盘驱动器的集合。固态存储装置可以能够比硬盘驱动器更快地处置读和写I/O请求,但可能不具有硬盘驱动器的存储容量。其它介质(诸如是磁带驱动器、DVD(或者其它光学介质)或者其它种类的介质)在读、写和存储数据时可以具有不同的优点和缺点。



技术实现要素:

本文中描述的实施例针对修改数据存储库内的存储容量和修改针对数据存储库的至少部分的弹性(resiliency)。在一个实施例中,计算机系统接收对移动数据的请求。对移动数据的所述请求可以指定要移走其数据的数据存储库、要将所述数据移动到其的数据存储库,或者可以允许所述计算机系统选择从哪里移动所述数据和/或将所述数据移动到哪里。所述计算机系统可以确定将把数据从一个数据存储库上的分配移动到另一个数据存储库上的新的分配。所述计算机系统可以在所述另一个数据存储库上创建新的分配,其中,所述新的分配被配置为接收来自所述第一数据存储库的数据。所述计算机系统然后当在所述第一数据存储库处接收到数据I/O请求时将所述数据移动到所述第二数据存储库上的所述新的分配。通过取决于访问请求的类型将数据存储库访问请求定向到所述第一数据存储库、所述第二数据存储库或者这两个数据存储库,数据存储库访问请求被与所述数据移动同步。

在另一个实施例中,计算机系统修改针对数据存储库的弹性。所述计算机系统确定针对数据存储库的至少部分的弹性方案将被从一种弹性方案改变为另一种弹性方案,其中,所述数据存储库被配置为存储数据的不同部分。所述计算机系统确定将如何根据弹性方案的所述改变来变更所述数据存储库内的数据的指定的部分,并且修改所述数据存储库的所述指定的部分的弹性方案,以使得针对所述数据存储库的所述指定的部分的弹性方案被改变,而针对所述数据存储库的其它部分的弹性方案不被改变。

提供本概要以便以简化形式介绍下面在详细说明中进一步描述的概念的选择。本概要不旨在识别所要求保护的主题的关键特征或者必要特征,其也不旨在被用作在确定所要求保护的主题的范围时的辅助。

附加的特征和优点将在下面的说明中阐述,并且部分地对于本领域的普通技术人员来说从所述说明中将是明显的,或者可以经由对本文中的教导的实践被习得。可以借助于在所附权利要求中特别指出的手段和组合来实现和获得本文中描述的实施例的特征和优点。从下面的说明和所附权利要求中,本文中描述的实施例的特征将变得更充分明显。

附图说明

为进一步澄清本文中描述的实施例的以上的和其它的特征,将参考附图再现更特定的说明。应当领会到,这些附图仅描绘了本文中描述的实施例的示例,并且因此将不被认为是对其范围的限制。将通过使用附图以附加的特异性和细节来描述和解释实施例,其中:

图1图示了本文中描述的实施例可以在其中操作的计算机架构,其包括修改数据存储库内的存储容量。

图2图示了用于修改数据存储库内的存储容量的示例方法的流程图。

图3图示了用于修改针对数据存储库的至少部分的弹性的示例方法的流程图。

图4图示了在其中针对数据的至少部分修改弹性方案的实施例。

图5图示了在其中添加存储容量并且在剩余的数据存储装置间对数据进行重新平衡的实施例。

图6图示了在其中移除存储容量并且在剩余的数据存储装置间对数据进行重新平衡的实施例。

具体实施方式

本文中描述的实施例针对修改数据存储库内的存储容量和修改针对数据存储库的至少部分的弹性。在一个实施例中,计算机系统接收对移动数据的请求。对移动数据的请求可以指定要移走其数据的数据存储库、要将数据移动到其的数据存储库,或者可以允许计算机系统选择从哪里移动数据和/或将数据移动到哪里。计算机系统可以确定将把数据从一个数据存储库上的分配移动到另一个数据存储库上的新的分配。计算机系统可以在所述另一个数据存储库上创建新的分配,其中,新的分配被配置为接收来自第一数据存储库的数据。计算机系统然后当在所述第一数据存储库处接收到数据I/O请求时将数据移动到第二数据存储库上的新的分配。通过取决于访问请求的类型将数据存储库访问请求定向到第一数据存储库、第二数据存储库或者这两个数据存储库,数据存储库访问请求被与数据移动同步。

在另一个实施例中,计算机系统修改针对数据存储库的弹性。所述计算机系统确定针对数据存储库的至少部分的弹性方案将被从一种弹性方案改变为另一种弹性方案,其中,所述数据存储库被配置为存储数据的不同部分。所述计算机系统确定将如何根据弹性方案的所述改变来变更所述数据存储库内的数据的指定的部分,并且修改所述数据存储库的所述指定的部分的弹性方案,以使得针对所述数据存储库的所述指定的部分的弹性方案被改变,而针对所述数据存储库的其它部分的弹性方案不被改变。

下面的讨论现在参考可以被执行的一些方法和方法动作。应当指出,尽管方法动作可以以一定的次序被讨论或者在流程图中被图示为以特定的次序发生,但除非具体被指出或者由于动作取决于在该动作被执行之前被完成的另一个动作而被要求,否则不必要求任何特定的排序。

本文中描述的实施例可以实施各种类型的计算系统。这些计算系统现在日益采用多样的形式。计算系统可以例如是诸如是智能电话或者功能电话这样的手持型设备、器具、膝上型计算机、可穿戴设备、桌面型计算机、大型机、分布式计算系统或者甚至常规地尚未被认为是计算系统的设备。在本说明和权利要求中,术语“计算系统”被宽泛地定义为包括任何设备或者系统(或者其组合),其包括至少一个物理的和有形的处理器和能够在其上具有可以被处理器执行的计算机可执行指令的物理的和有形的存储器。计算系统可以被分布在网络环境上,并且可以包括多个构成的计算系统。

如图1中图示的,计算系统101典型地包括至少一个处理单元102和存储器103。存储器103可以是物理系统存储器,该物理系统存储器可以是易失性的、非易失性的或者是这两者的某种组合。术语“存储器”在本文中还可以用于指诸如是物理存储介质这样的非易失性大容量存储装置。如果计算系统是分布式的,则处理、存储器和/或存储能力可以也是分布式的。

如本文中使用的,术语“可执行模块”或者“可执行构件”可以指可以在计算系统上被执行的软件对象、例程或者方法。本文中描述的不同的构件、模块、引擎和服务可以被实施为在计算系统上执行的对象或者进程(例如,实施为单独的线程)。

在下面的说明中,参考被一个或多个计算系统执行的动作描述了实施例。如果用软件来实施这样的动作,则执行动作的关联的计算系统的一个或多个处理器响应于具有被执行的计算机可执行指令指导计算系统的操作。例如,这样的计算机可执行指令可以被体现在形成计算机程序产品的一个或多个计算机可读介质上。这样的操作的示例涉及对数据的操纵。可以将计算机可执行指令(和被操纵的数据)存储在计算系统101的存储器103中。计算系统101还可以包含允许计算系统101通过有线或者无线网络与其它消息处理器通信的通信信道。

本文中描述的实施例可以包括或者使用包括计算机硬件的专用或者通用计算机系统,所述计算机硬件例如诸如是一个或多个处理器和系统存储器,如在下面详细讨论。可以将系统存储器包括在总存储器103内。系统存储器也可以被称为“主存储器”,并且包括可由至少一个处理单元102通过存储器总线寻址的存储器位置,在这种情况下,地址位置在存储器总线自身上被断言。系统存储器传统上已是易失性的,但本文中描述的原理也适用于其中系统存储器部分地或者甚至全部是非易失性的的情况。

本发明的范围内的实施例还包括用于携带或者存储计算机可执行指令和/或数据结构的物理的和其它的计算机可读介质。这样的计算机可读介质可以是可以被通用或者专用计算机系统访问的任何可用介质。存储计算机可执行指令和/或数据结构的计算机可读介质是计算机存储介质。携带计算机可执行指令和/或数据结构的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的实施例可以包括至少两个明显不同种类的计算机可读介质:计算机存储介质和传输介质。

计算机存储介质是存储计算机可执行指令和/或数据结构的物理硬件存储介质。物理硬件存储介质包括计算机硬件,所述计算机硬件诸如是RAM、ROM、EEPROM、固态驱动器(“SSD”)、闪存、相变存储器(“PCM”)、光盘存储装置、磁盘存储装置或者其它磁存储设备、或者可以用于存储采用计算机可执行指令或者数据结构的形式的程序代码的任何其它硬件存储设备,所述程序代码可以被通用或者专用计算机系统访问和执行以实施本发明的所公开的功能性。

传输介质可以包括网络和/或数据链路,其可以用于携带采用计算机可执行指令或者数据结构的形式的程序代码并且可以被通用或者专用计算机系统访问。“网络”被定义为使能在计算机系统和/或模块和/或其它电子设备之间传输电子数据的一个或多个数据链路。在通过网络或者另一个通信连接(硬连线、无线或者硬连线或者无线的组合)将信息传输或者提供给计算机系统时,计算机系统可以将该连接视为传输介质。以上各项的组合也应当被包括在计算机可读介质的范围内。

进一步地,在到达各种计算机系统构件时,可以将采用计算机可执行指令或者数据结构的形式的程序代码自动地从传输介质传输到计算机存储介质(或者反之亦然)。例如,通过网络或者数据链路接收的计算机可执行指令或者数据结构可以被缓冲在网络接口模块(例如,“NIC”)内的RAM中,并且然后最终被传输给计算机系统RAM和/或计算机系统处的较少易失性的计算机存储介质。因此,应当理解,可以将计算机存储介质包括在也(或者甚至主要地)使用传输介质的计算机系统构件中。

计算机可执行指令例如包括当在一个或多个处理器处被执行时导致通用计算机系统、专用计算机系统或者专用处理设备执行一定的功能或者功能组的指令和数据。计算机可执行指令可以例如是二进制文件、诸如是汇编语言的中间格式指令或者甚至源代码。

本领域的技术人员将领会到,本文中描述的原理可以在具有许多类型的计算机系统配置的网络计算环境中被实践,所述计算机系统配置包括个人计算机、桌面型计算机、膝上型计算机、消息处理器、手持型设备、多处理器系统、基于微处理器的或者可编程的消费电子、网络PC、小型计算机、大型计算机、移动电话、PDA、平板、寻呼机、路由器、交换机等。本发明也可以在分布式系统环境中被实践,其中,通过网络链接(经由硬连线数据链路、无线数据链路或者经由硬连线和无线数据链路的组合)的本地和远程计算机系统两者执行任务。因此,在分布式系统环境中,计算机系统可以包括多个构成的计算机系统。在分布式系统环境中,程序模块可以定位在本地和远程存储器存储设备两者处。

本领域的技术人员还将领会到,本发明可以在云计算环境中被实践。云计算环境可以是分布式的,尽管这不是要求的。当是分布式的时,云计算环境可以被在国际间分布在组织内和/或具有被跨多个组织拥有的构件。在本说明和下面的权利要求中,“云计算”被定义为用于使能实现对可配置计算资源(例如,网络、服务器、存储装置、应用和服务)的共享池的按需网络访问的模型。“云计算”的定义不限于在被正确地部署时可以从这样的模型获得的其它众多优点中的任何优点。

更进一步地,本文中描述的系统架构可以包括作为整体各自为系统的功能性做贡献的多个独立的构件。该模块化允许在处理平台可扩展性的问题时的增加的灵活性,并且为此提供了多种优点。通过使用具有有限的功能范围的较小规模的部分,可以更容易地管理系统复杂性和增长。通过使用这些松耦合的模块增强了平台故障耐受性。单独构件可以根据业务需求指示被递增地增长。模块化开发还意味着新功能性的减少的上市时间。新功能性可以被添加或者减除,而不影响核心系统。

图1图示了可以在其中使用至少一个实施例的计算机架构100。计算机架构100包括计算机系统101。计算机系统101可以是任何类型的本地或者包括云计算系统的分布式计算机系统。计算机系统101包括用于执行多种不同的功能的模块。例如,通信模块104可以被配置为与其它计算系统通信。通信模块104可以包括可以接收和/或传送去往或来自其它计算系统的数据的任何有线或者无线的通信装置。通信模块104可以被配置为与数据库、移动计算设备(诸如是移动电话或者平板)、嵌入式或者其它类型的计算系统交互。

计算机系统101的通信模块104可以被进一步配置为接收对移动数据的请求105。可以从应用、从用户或者从其它计算机系统接收这样的请求。可以在计算机系统101的内部生成或者可以从计算机系统101外部的源接收对移动数据的请求105。确定模块106可以基于所接收的对移动数据的请求105确定将把数据113从第一数据存储库112移动到第二数据存储库115。数据存储库112和113可以在计算机系统101的本地或者远端。数据存储库可以是单一的存储设备、存储设备的阵列或者诸如是SAN或者云这样的存储网络。数据存储库可以根据弹性方案对数据113进行存储。这些弹性方案可以包括数据镜像或者奇偶校验方案(诸如,数据条带化)或者任何其它类型的弹性方案,其包括各种廉价磁盘冗余阵列(RAID)方案。

响应于确定将把数据113从第一数据存储库112移动到第二数据存储库115,计算机系统101的分配创建模块107在第二数据存储库115上创建新的分配116。数据移动模块108然后可以将数据113移动到第二数据存储库115上的新创建的分配116。在某些实施例中,数据存储库112和115可以是向互联网暴露的在线数据存储库。在这样的情况下,在在线数据库或者其它数据存储库之间移动数据。在该过程期间,可以通过取决于访问请求的类型将数据存储库访问请求定向到第一数据存储库112、第二数据存储库115或者这两个数据存储库而使任何数据存储库访问请求(诸如对移动数据的请求105)与数据移动同步。将在下面更详细地描述该过程。

如在本文中使用的术语“在线数据移动”代表将包含数据的分配从一个数据存储库(例如,硬盘驱动器或者磁带驱动器的集合)移动到另一个数据存储库的过程。该数据的迁移在不中断数据存储库的功能性或者可用性并且不减少可以被容忍的故障的数量的情况下发生。附加地,作为该过程的部分,可以选择驱动器的新的集合来将数据存储空间转移到不同的故障域(例如,从能够容忍单一的机壳故障升级为能够容忍整个机架(rack)故障)。如本文中使用的,术语“故障域”可以指机壳(例如,仅一堆磁盘或者JBOD)、计算机(节点)、按照共同的物理元素分组的节点的合集(例如,机壳中的全部刀片服务器、机架中的全部节点或者特定的网络交换机后面的全部节点)、或者按照逻辑元素分组的节点的合集(例如,包括将一起下来以用于服务的节点的升级域)。驱动器的新集合还可以提高存储空间的存储效率(即,更好地使用驱动器的容量),或者改进存储空间的性能(例如,跨多个驱动器地散布‘热’数据(即,被频繁访问的数据))。

大规模部署随着需求增长和旧硬件超出保修而频繁地添加和移除硬件。此外,工作负载可以随时间增长和改变,从而要求这样的存储装置,其可以通过允许数据从已到达它们的生命尽头的驱动器迁移走、迁移到新的硬件上和来回移位来适应这些改变以基于工作负载更好地使用可用的带宽和容量。这在不损害数据的完整性或者弹性的情况下被实时地完成。

在传统的场景中,数据可以随着驱动器被添加或者移除而被移位;然而,典型地要求均等地跨系统中的全部驱动器散布数据。例如,许多RAID卡支持经由增加RAID卷的列来增加阵列中的驱动器)。此外,之前的解决方案为执行移动将损害数据的完整性(例如,把要从其移除数据的磁盘看作故障的)。

本文中描述的实施例允许基于包括用户定义的准则的各种准则在数据存储库(在线的或者其它的)之间移动数据。实施例进一步提供基于外部输入或者其它准则(诸如是关于数据的热度的信息)或者内部启发法(诸如是将数据从硬盘驱动器的末端移走以实现短的行程(short stroking)并且因此实现更快的数据访问时间)有选择地移动数据的能力。实施例可以进一步包括增加镜像中的副本的数量以及动态地并且稀疏地(仅在需要被移动的扇区上)将奇偶校验(RAID5/6)转换成具有镜像的奇偶校验(RAID5/6 + 1)、为避免损害完整性通过跨剩余的磁盘对磁盘的内容进行镜像来从RAID阵列移除磁盘、跨故障域移动数据以将RAID阵列的弹性提高得多于它的初始创建(例如,将可能丢失机壳的阵列迁移到可能丢失机架的阵列)、以及在不重写数据的情况下恰当地将镜像空间转换成奇偶校验空间(或者反之亦然)。

在某些实施例中,通过临时地将简单和镜像空间转换成具有更多副本的镜像来执行数据迁移。为了使该方法对奇偶校验起作用,将描述RAID5+1的概念。如本文中使用的,术语RAID5+1将包括具有读、写和重构能力的标准奇偶校验层。对底层磁盘的读和写将通过镜像层被重定向,镜像层具有其自己的读、写和重构能力。为避免奇偶校验层中的不必要的复杂度,镜像布置将提供保持每个单独列的全部副本的经聚合的视图。

在数据迁移将被执行时,可以使用任务来创建另一个分配作为目的地,并且临时地增加数据存储库的副本数量。该分配将作为陈旧的(即,它需要被重构,因为它不包含有效的数据)开始生命,并且将被重构任务捡起并且转移成健康的。这样,以数据存储库内的分配的粒度执行数据迁移(代替对于数据存储库内的每个分配执行它)。这样的实施例提供包括但不限于以下优点的优点:1)在迁移相同列的多个副本时,所述副本中的仅一个副本需要被读,并且可以被写到所述目的地中的全部两个目的地。2)如果在迁移期间读失败,但数据113的其它副本是可用的,则它们将是可用于从其进行重构的。3)特别在将镜像从磁盘移走时,从数据的任意副本读以执行移动的能力将还提高使迁移并行化的能力。

在另一个实施例中,通过迁移整个板(形成弹性层的分配的合集)在数据存储库之间迁移数据。该过程在当前的板组的相同的偏移量处分配整个板(slab)或者板的集合。这些新的分配可以被标记为对象池配置中的目的地。通过允许迁移板的集合,板尺寸以及任何其它弹性属性可以改变。如果源和目的地配置具有不同的板尺寸,则将在可以除以两个板尺寸的最小尺寸(即,最小公倍数)上执行迁移。

在重新分配之后,可以将镜像对象放置在板之上,在任务(例如,重构任务)将数据从旧的板复制到新的目的地板时将写转发到两个副本。在该任务完成时,旧的板将被丢弃,并且新的板将作为单独的存储层级(以代表弹性的任何改变)。如果目的地的弹性类型实施写回高速缓存,则可以分配第二子空间以替换旧的子空间。这允许任意两种弹性配置之间的迁移(例如,弹性类型、板尺寸和故障耐受性可以全部改变)。

在另一个实施例中,利用数据重叠迁移整个板。这是上面描述的实施例的变型,并且将以板级进行迁移,但将不允许板的尺寸改变。为停止数据的过度移动,将仅重新分配正在移动的列,将在第二(目的地)板上“做重影(ghost)”或者“不操作”剩余的列。列将看起来是在那里的,但对它们进行的写将被阻止。这移动最少量的数据,并且允许包括使能实现弹性改变的升级。

在又另一个实施例中,可以利用RAID级迁移来迁移单独的列。该过程可以由一起工作来提供端到端解决方案的两个单独的机制实施。第一个过程恰当地重新分配单独的列。首先,任务(诸如是池事务)创建新的分配,并且然后将它们与要被移动的源配对。然后将每个源和目的地合并成镜像,其中,目的地被标记为‘需要重新生成’或者等同的标记。然后作为单一的分配将这些镜像显现到板,并且重新生成任务将数据从源复制到目的地。在完成时,任务删除旧的分配,并且板下的镜像对象被新的分配代替。第二个机制允许镜像与奇偶校验存储空间之间的转换。首先,通过代替每个分配制作具有镜像的存储空间来将镜像与条带化分开。奇偶校验列然后被附添到末尾,并且标记为需要重新生成。在该重新生成完成时,第二池事务从所述镜像中的每个选择一个副本,并且显现奇偶校验板。

从镜像向奇偶校验的转换导致机壳-或者机架-感知的奇偶校验空间,机壳-感知的奇偶校验空间具有正确的磁盘上格式。也可以反转该过程以转换回镜像,并且类似的过程可以在诸如是2路(2-way)镜像和3路镜像这样的存储空间之间进行转换。在该转换期间,某些数据列可能需要被移动以保证容忍较高故障域故障的能力(因为镜像具有与奇偶校验不同的分配要求)。该迁移可以作为中间步骤(在奇偶校验已被重新生成之后)被执行以避免将数据存储库置于降低了的弹性的状态下。这允许对哪些分配移动的细粒度的控制。此外,仅在目的地驱动器上要求自由空间,并且可以并行地迁移多个板。将在下面分别关于图2和3的方法200和300进一步解释这些概念。

鉴于上面描述的系统和架构,可以根据所公开的主题实施的方法将参考图2和3的流程图被更好地领会。出于简化解释的目的,方法被示出和描述为一系列方框。然而,应当理解和领会到,所要求保护的主题不受方框的次序的限制,因为一些方框可以按照不同的次序和/或与来自本文中描绘和描述的方框的其它方框并发地发生。此外,并非全部所图示的方框可以是实施下文中描述的方法所要求的。

图2图示了用于修改数据存储库内的存储容量的方法200的流程图。现在将频繁参考环境100的构件和数据描述方法200。

方法200包括接收对移动数据的一个或多个部分的请求(210)。例如,计算机系统101的通信模块104可以接收来自请求源的对移动数据的请求105。请求源可以是应用、服务、用户或者其它计算机系统。请求可以指定数据113将被从一个数据存储库112移动到另一个数据存储库115,数据存储库112和另一个数据存储库115中的任一项或者全部两项可以是在线的。数据113可以是单独文件、文件的合集、数据的二进制大对象(blobs)或者诸如是板这样的数据的其它分配、元数据或者其它类型的数据或者数据的合集。请求105可以指定要移走其数据的数据存储库(例如,图1中的第一数据存储库112)、要向其移动数据的数据存储库(例如,图1中的第二数据存储库115)或者不指定两者中的任一项(即,请求可以简单地指示数据的一定的部分将被移动)。如果未指定数据存储库,则计算机系统101可以确定哪些数据存储库具有所指定的数据,并且可以进一步确定要把数据移动到哪个(些)数据存储库。在这样的情况下,请求105可以包括用于辅助系统作出决定的关于数据存储库的信息。请求可以包括多个数据源和多个数据目标。

方法200进一步包括确定数据将被从第一数据存储库移动到第二数据存储库(220)。计算机系统101的确定模块106可以基于对移动数据的请求105确定数据113将被从第一数据存储库112移动到第二数据存储库115。该确定可以包括确定哪些数据或者数据存储库正被最大量地使用。如上面提到的,每个数据存储库可以包括单一的存储设备或者多个存储设备。在其中数据存储库是硬盘驱动器的阵列的情况下,所述硬盘驱动器中的一些硬盘驱动器可以比其它硬盘驱动器正在更多地被使用。那些正不断被写的驱动器可以说是“热的”或者包括“热数据”,而不是正被那样经常地写的驱动器是“冷的”或者包括较大部分的“冷数据”。确定模块106可以识别哪些数据(在数据113中的)可以被移动、哪些数据必须移动以及数据将被移动到哪里。在某些情况下,数据不可以被移动,并且可以被标记为“不可移动的数据”。如果数据可以移动,则确定模块106可以确定用于该数据的最佳位置。

可以基于包括外部构件输入的各种因素作出这些确定。例如,可以实施热度引擎,其跟踪对给定数据存储库中的数据的全部读/写。其它因素可以包括启发法(例如,将数据从驱动器的末端移走以促进针对硬盘驱动器数据读尖端的短的旅程)。另外的其它的因素可以包括数据存储库的特性,所述特性包括相比较小的驱动器喜爱较大的驱动器、当它正在较快地行进以及能够较快速地读和写时喜爱驱动盘外部。确定模块106可以进一步被配置为识别数据I/O请求瓶颈正在哪里出现。例如,如果多个应用正在尝试向第一数据存储库内的单一的硬盘驱动器或者硬盘驱动器的集合写数据,并且向那些驱动器的大量数据写正在导致I/O瓶颈,则确定模块可以确定那些驱动器上的现有数据将被移动到其它驱动器以分散I/O请求111或者到来的I/O请求将被重定向到数据存储库内的其它驱动器(例如,通过数据重定向模块106)或者重定向到不同的数据存储库(例如,第二数据存储库115)。

方法200进一步包括:在第二数据存储库上创建新的分配,所述新的分配被配置为接收来自第一数据存储库的数据的至少部分(230);以及,当在第一数据存储库处接收到数据I/O请求时将数据移动到第二数据存储库上的新的分配,其中,通过取决于访问请求的类型将数据存储库访问请求定向到第一数据存储库、第二数据存储库或者这两个数据存储库,数据存储库访问请求被与数据移动同步(240)。计算机系统101的分配创建模块107可以在第二数据存储库115上创建新的分配116。该新的分配116可以被配置为接收从第一数据存储库112移动到第二数据存储库115的数据113中的一些或者全部。

在某些实施例中,第二数据存储库115可以包括至少一个硬盘驱动器。在这样的情况下,第二数据存储库115上的新创建的分配16可以被大致上定位在硬盘驱动器的起点附近(即,硬盘驱动器的外边缘附近)。这样,可以将数据从第一数据存储库上的硬盘驱动器的末端移走,并且移动到第二数据存储库115上的驱动器的起点。这允许更快速地访问数据。可以针对诸如是磁带驱动器或者光盘驱动器这样的其它数据存储设备使用其它优化。

第二数据存储库115可以被配置为接受新的数据存储设备和/或新的数据存储介质。在某些实施例中,第二数据存储库115可以包括被添加到第二数据存储库的数据存储介质。该第二数据存储库可以被定位在与第一数据存储库的故障域不同的故障域上。例如,如果针对给定的硬件存储装置机架(例如,第一数据存储库112)建立了故障域,则可以将存储介质添加到第二数据存储库115,所述第二数据存储库115至少在某些实施例中与第一数据存储库在不同的故障域中。在新的介质被添加时,可以基于添加了什么种类的硬件对现有的数据进行重新平衡。实际上,在某些情况下,整个机架可以被添加到现有的数据存储库。在这样的情况下,可以在新添加的机架的硬件存储设备间对现有的数据进行重新平衡。

在重新平衡发生时,不必在不同的驱动器间均匀地分布数据。例如,在硬盘驱动器被添加到数据存储库时,那些硬盘驱动器中的一些可以是不同容量的驱动器。在这样的情况下,每个硬盘的全部容量可以被指派给第二数据存储库或者是可以被第二数据存储库访问的。相应地,甚至在更大或者更小容量的其它驱动器存在时,每个硬盘驱动器或者磁带驱动器或者诸如是固态驱动器(SSD)、非易失性存储器特快(non-volatile memory express, NVMe)、虚拟硬盘(VHD)等这样的其它类型的块存储装置也可以在其最大限度上被使用。当在数据存储库处接收数据写时,可以将数据写发送给第一和第二数据存储库两者,并且可以将到来的数据读发送给第一数据存储库,直到第一数据存储库的数据被复制到第二数据存储库上的新的分配为止。这样,在数据存储库处维持了一致性,以使得到来的写被发送给任一个数据存储库,而数据读被发送给较旧的数据,直到数据被完整地复制完到另一个(第二)数据存储库为止。

在图5中,磁盘阵列501被示为具有两个硬盘驱动器:HD 502A和HD 502B。可以在操作期间将新的硬盘驱动器502C添加到磁盘阵列501。在新的磁盘502C被添加时,使用新的磁盘和任何现有的磁盘对磁盘阵列的数据进行重新平衡。可以在不损害磁盘阵列上的任何现有的弹性实施方案的情况下执行重新平衡。例如,如果已实施数据镜像,则可以在之前的磁盘502B和新添加的磁盘502C之间对HD 502A中的数据进行镜像。数据可以被均匀地分布在阵列的磁盘之间,或者可以以另一种方式被分布,诸如基于数据的热度或者磁盘的总热度被分布。这里,应当指出,尽管在图5中示出了两个或三个磁盘,但磁盘阵列501或者图1中的数据存储库(112和115)中的任一个可以包括大致上任意数量的磁盘、磁带驱动器或者其它存储设备。此外,尽管在图5和6中实施了镜像弹性方案,但应当指出,可以使用任何RAID或者其它类型的镜像或者奇偶校验弹性方案。

图6图示了其中从磁盘阵列601移除至少一个硬盘的实施例。磁盘阵列601可以包括硬盘驱动器HD 602B、HD 602C和HD 602D。硬盘驱动器602C可以由于该驱动器的故障或者由于某个其它的原因而被移除。磁盘阵列601现在包括602A、602B和602D。在剩余的硬盘驱动器之间对曾在驱动器602C上的数据进行重新平衡。与其中硬盘驱动器被添加到磁盘阵列的上面的实施例一样,可以根据多种不同的因素对数据进行重新平衡,并且不需要在剩余的硬盘驱动器上均匀地对数据进行重新平衡。此外,与上面的示例一样,可以在不损害诸如是镜像这样的现有的弹性实施方案的情况下从阵列601移除磁盘。可以以不使磁盘阵列601的弹性降级的方式自动并且动态地在剩余的驱动器之间分布数据。数据可以根据热或者冷数据被重新平衡,以使得热和冷数据在剩余的驱动器之间被均匀地分布,或者可以被重新平衡到每个磁盘的起点。附加地或者替换地,可以根据数据的已指派的重要性对数据进行重新平衡(即,数据的重要性可以指示按照其对数据进行重新平衡的次序)。

返回图1,在某些实施例中,可以在数据113向新的分配116的转移期间通过允许第一用户的数据写采用超过第二用户的数据写的优先级或者通过允许用户的数据写采用超过计算系统的数据写的优先级或者反之依然来防止数据I/O冲突。因此,在来自多个不同的用户或者应用的写将到来时,可以基于用户或者应用划分写的优先级并且按照优先级的次序对写进行处理,以使得避免I/O冲突。在数据已被成功地移动到新的数据存储库(或者移动到新的分配)时,可以删除第一数据存储库上的任何之前被使用的分配。

在数据存储库内实施分配(不论是现有的还是新添加的)以在逻辑上定义存储装置的指定的区域。每个分配识别该分配位于数据存储库内的什么地方、它包含什么数据以及它的数据被存储在不同的数据存储设备上的什么地方。可以将分配存储在映射表中。每当将存储设备添加到数据存储库(诸如是上面的磁盘阵列501/601)或者从数据存储库移除存储设备时,计算系统101可以访问映射表以确定哪些分配曾存储在被添加/移除的存储设备上。然后,存储在被添加/移除的驱动器上的数据被重新平衡到数据存储库的一个或多个其它的存储设备。在某些情况下,之前被使用的分配可以包括到正在向其移动数据的数据存储库(即,第二数据存储库115)上的新创建的分配的指针,这样,如果在数据从第一数据存储库向第二数据存储库的转移期间删除数据,则向新创建的分配通知该删除,并且贯穿转移保证弹性。

现在转向图3,图示了用于修改针对数据存储库的至少部分的弹性的方法300的流程图。现在将频繁参考环境100的构件和数据描述方法300。

方法300包括确定将把针对数据存储库的至少指定的部分的弹性方案从第一弹性方案改变为第二、不同的弹性方案,所述数据存储库包括数据的一个或多个部分(310)。例如,计算机系统101的确定模块106可以确定将把针对第一数据存储库112上的至少一些数据113的弹性方案114A改变为第二弹性方案114B。如上面提到的,弹性方案可以包括镜像、奇偶校验或者其组合(包括各种RAID实施方案)或者其它弹性方案。

方法300接下来包括:确定数据存储库的指定的部分内的数据将如何根据弹性方案的改变被变更(动作320);以及,修改数据存储库的指定的部分的弹性方案,以使得针对数据存储库的指定的部分的弹性方案被改变,而针对数据存储库的其它部分的弹性方案不被改变(330)。计算机系统101的确定模块106可以因此确定数据113将如何根据弹性方案的改变(例如,从镜像到奇偶校验或者从奇偶校验到镜像)被变更。计算机系统101的修改模块110然后可以修改针对数据的一定部分的弹性方案,而剩下数据的其它部分是未被触及的。

因此,例如,如图4中所示,数据存储库401具有多个不同的数据部分(402A、402B和402C)。这些数据部分可以各自是不同的存储设备(例如,硬盘),或者可以是相同的硬盘的逻辑部分,或者是物理和逻辑数据部分的组合。数据存储库内的每个数据部分可以具有它自己的弹性方案:针对数据部分402A的方案403A、针对数据部分402B的方案403B和针对数据部分402C的方案403C。本文中的实施例可以修改数据存储库的部分(例如,402B)及其弹性方案,而不修改数据存储库的其它部分或者它们的弹性方案。因此,在对数据存储库部分402B作出修改404时,可以对于该数据部分实施新的弹性方案403D,而不影响任何其它数据部分。

在某些情况下,可以向数据存储库添加存储设备。存储设备的至少一部分可以正在实施N路镜像弹性方案。在新的设备被添加时,可以对于数据存储库实施N+1路镜像方案,以使得在两个存储设备之间分离数据存储库数据。分离不需要是均匀的,并且可以根据诸如是相对热度水平这样的启发法对其进行平衡。更进一步地,在某些情况下,可以从数据存储库移除存储设备。可以在剩余的存储设备之间对曾存储在被移除的数据存储设备上的数据进行重新平衡,而不对剩余的存储设备上的现有的数据进行重新平衡。要从一种弹性方案转换到另一种弹性方案的数据存储库部分的粒度可以被设置为任意值(1GB),或者可以是大致上任意的尺寸。这样,为改变弹性方案不需要转换整个卷或者阵列。相反,本文中的实施例可以将阵列或者卷的一个扇区从镜像转换到奇偶校验或者反之亦然,而单独剩下卷或者阵列的剩余部分。然后,如果用户想要移除一个驱动器,则系统可以只对数据存储库的该驱动器或者该部分上的数据进行重新平衡/重新对齐。

相应地,提供了修改数据存储库内的存储容量的方法、系统和计算机程序产品。此外,提供了修改针对数据存储库的至少部分的弹性的方法、系统和计算机程序产品。

权利要求支持

提供了一种包括至少一个处理器的计算机系统。在计算机系统处,提供了用于修改数据存储库内的存储容量的计算机实施的方法。方法包括:接收对移动数据的一个或多个部分的请求105;确定数据113将被从第一数据存储库112上的分配移动到第二数据存储库115上的新的分配116,第一和第二数据存储库被配置为存储数据的分配;在第二数据存储库115上创建新的分配116,新的分配被配置为接收来自第一数据存储库112的数据113的至少部分;以及,当在第一数据存储库处接收到数据I/O请求111时,将数据113移动到第二数据存储库115上的新的分配116,其中,通过取决于访问请求的类型将数据存储库访问请求定向到第一数据存储库112、第二数据存储库115或者这两个数据存储库,数据存储库访问请求被与数据移动同步。

在某些实施例中,确定数据将被从第一数据存储库移动到第二数据存储库包括确定哪些数据或者数据存储库正在被最大量地使用。在某些实施例中,第二数据存储库包括至少一个硬盘驱动器,并且其中,第二数据存储库上的新的分配被定位得比第一数据存储库上的分配更靠近第二数据存储库的起点。在某些实施例中,第二数据存储库包括被添加到计算系统的数据存储介质,第二数据存储库被定位在与第一数据存储库的故障域不同的故障域上。在某些实施例中,故障域包括硬件存储装置机架,以使得第二数据存储库包括被添加到与第一数据存储库的硬件存储装置机架不同的硬件存储装置机架的数据存储介质。

提供了一种包括至少一个处理器的计算机系统。在计算机系统处,提供一种用于修改针对数据存储库的至少部分的弹性的计算机实施的方法。方法包括:确定针对数据存储库112的至少指定的部分的弹性方案114A将被从第一弹性方案114A改变为第二、不同的弹性方案114B,数据存储库包括数据113的一个或多个部分;确定数据存储库112的指定的部分内的数据113将如何根据弹性方案的改变被变更;以及,修改数据存储库112的指定的部分的弹性方案114A,以使得针对数据存储库的指定的部分的弹性方案被改变,而针对数据存储库的其它部分的弹性方案不被改变。

某些实施例进一步包括向数据存储库添加存储设备,其中,数据存储库的指定的部分正在实施N路镜像弹性方案,并且对于数据存储库实施N+1路镜像方案,其中,在两个存储设备之间分离数据存储库数据。其它的实施例进一步包括:从数据存储库移除存储设备,以及在剩余的存储设备之间对曾存储在被移除的数据存储设备上的数据进行重新平衡,而不对剩余的存储设备上的现有数据进行重新平衡。

一种计算机系统包括以下:一个或多个处理器;用于接收对移走第一数据存储库112的数据的一个或多个部分并且将其移动到第二数据存储库115上的请求105的接收器104;用于识别哪些数据113将被从第一数据存储库移动到第二数据存储库的确定模块106;用于在第二数据存储库115上创建新的分配116的分配创建模块107,新的分配被配置为接收来自第一数据存储库112的数据113的至少部分;以及,数据移动模块108,其用于:当在第一数据存储库处接收到数据I/O请求111时,将数据113移动到第二数据存储库115上的新的分配116,以使得数据写被发送给第一和第二数据存储库两者,并且数据读被发送给第一数据存储库112,直到第一数据存储库的数据113被复制到第二数据存储库115上的新的分配116为止。

某些实施例进一步包括:从数据存储库移除至少一个存储设备;访问映射表以确定哪些分配曾存储在被移除的存储设备上;以及,将曾存储在被移除的驱动器上的分配的数据重新平衡到数据存储库的一个或多个其它的存储设备。在某些实施例中,第二数据存储库包括多个块存储设备,所述多个块存储设备中的至少两个块存储设备具有不同的容量。某些实施例进一步包括:向第二数据存储库中的多个块存储设备添加至少一个硬盘;以及,在新添加的硬盘驱动器和现有的多个硬盘中的至少一个硬盘之间对曾存储在第一数据存储库上的数据的至少部分进行重新平衡,重新平衡在不损害第二数据存储库上的现有的弹性实施方案的情况下被执行。

某些实施例进一步包括:从第一数据存储库中的多个硬盘中移除至少一个硬盘;以及,在所述多个硬盘中的剩余的硬盘之间对曾存储在第一数据存储库上的数据的至少部分进行重新平衡,重新平衡在不损害第二数据存储库上的现有的弹性实施方案的情况下被执行。在某些实施例中,在数据向新的分配的转移期间通过允许用户的数据写采用超过计算系统的数据写的优先级来防止数据I/O冲突。在某些实施例中,之前被使用的分配包括到第二数据存储库上的新创建的分配的指针,以使得如果在数据从第一数据存储库向第二数据存储库的转移期间删除数据,则向新创建的分配通知该删除。

本文中描述的概念和特征可以以其它具体的形式被体现,而不脱离它们的精神或者描述性特性。所描述的实施例将在所有方面被认为是说明性的而非限制性的。因此,本公开内容的范围由所附权利要求而非由前述说明指示。落在权利要求的等同项的意义和范围内的全部改变将被包括在它们的范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1