在存储群集中的擦除编码和复制的制作方法
【技术领域】
[0001]本发明一般地涉及擦除编码。更具体地,本发明涉及在固定内容存储群集中的擦除编码和复制的组合,并且涉及当使用擦除编码时的卷故障恢复。
【背景技术】
[0002]传统地,在存储群集中提供的存储(例如,通过使用独立节点的冗余阵列,或RAIN)相对于通过存储的对象的复制或存储的对象的擦除编码的硬件故障是可靠的。前者具有相同的独特标识符可以访问多个复制品(例如,使用日志和基于RAM的索引方案)的优势,但是具有高的带宽和存储开销(取决于期望的复制品的数量,大的对象可以占用显著量的空间)的缺点。后者享有针对类似级别的相对于介质故障的保护的较小的存储脚印以及较少的开销的好处,但是遭受的缺陷在于擦除集合的每个段是必须分离地标识的不同内容,以便读取对象或重新构建任何丢失的段。当重新启动存储群集时,该标识可能是特别有问题的。擦除编码在存储小的对象时也将招致较高的处理开销并且丢失其脚印优势。
[0003]因此,两种技术都具有缺陷。进一步地,可应用于擦除编码的某些现有技术方法使用与存储群集分离的控制数据库,以便标识和跟踪特定对象的段;该方法时有问题的,因为其引入更多的开销,并且令人怀疑该控制数据库的可用性以及其是否需要被复制。此外,即使在擦除编码下可以使用被用于对该对象进行编码的段的子集来重新构建对象(例如,如果存在磁盘故障),不仅标识哪些片段不再存在是费时的,而且定位剩余的段也是费时的。
[0004]相应地,期望改进的技术用于与存储群集一起使用,以便利用复制和擦除编码的优势,以及在硬件故障之后限制暴露。
【发明内容】
[0005]为了实现前述内容,并根据本发明的目的,公开了组合对象复制和擦除编码两者以便利用各自的优点的存储群集。
[0006]在一个实施例中,一种方法在存储群集中存储数字对象。首先,存储群集在存储群集的计算机节点处从客户端应用接收请求来存储数字对象。存储群集然后确定是使用复制还是擦除编码在存储群集中存储数字对象。可以通过参考来自客户端的指令、对象的固有属性、对象的元数据、群集设置或其他手段来做出该确定。当确定使用擦除编码存储数字对象时,存储群集使用擦除编码将数字对象写入到存储群集的多个计算机节点,并且数字对象被存储为多个段。另外,创建清单计算机文件,其包括擦除编码的指示以及在存储群集内针对每个段的独特标识符。存储群集然后将清单计算机文件存储在群集的一个或多个节点上,并且向客户端应用返回清单计算机文件的独特标识符。清单与其他数字对象是可区分的。
[0007]在另一实施例中,一个方法从具有多个计算机节点的存储群集读取数字对象。首先,在存储群集内的计算机节点中的一个从包括针对数字对象的独特标识符的客户端应用接收请求。存储群集在对象被存储的节点中的一个上寻找被这样标识的对象。如果该对象不是如上文描述的清单,则它被返回到客户端应用。如果该对象是清单,则其接着使用在所述清单内找到的独特段标识符在存储群集内确定多个段。使用这些独特的段标识符,该方法使用段和擦除编码算法重新构建数字对象。最后,该方法向客户端应用返回数字对象。
[0008]在另一实施例中,其中客户端应用希望以内容的新版本替换与独特标识符相关联的内容,本发明如在先前的段落中描述的那样运转以寻找对象,然后如之前段落中的那样写入它。新的版本将保留先前版本的独特标识符,但是具有较晚的创建时间戳,其在更新过程期间区分两个版本。一旦较新的版本被成功写入群集中,就旧的删除较旧的版本。健康处理模块也可以删除针对其较新的版本存在的对象的较旧的版本,作为从错误状态维持群集数据的一种方法。
[0009]在另一实施例中,一种方法从故障的磁盘恢复。首先,该方法在存储群集(具有多个计算机节点)内检测节点中的一个的磁盘已经故障。接下来,该方法扫描存储群集的另一磁盘的永久存储区以寻找故障磁盘的独特标识符;该独特标识符与存储群集的数字流相关联。然后确定所述数字流是使用复制还是使用擦除编码被存储在存储群集内;当确定数字流使用擦除编码被存储时,该方法标识先前存储在故障磁盘上的丢失的段。使用来自所述数字流的同胞标识符,该方法在存储群集内定位多个其他的段。接下来,该方法使用多个其他的段和擦除编码算法重新生成丢失的段。最后,该方法将重新生成的段存储在存储群集的计算机节点上。
[0010]在另一实施例中,段可以在存储群集内被重新定位,而不需要额外的控制计算机或控制数据库。当段被重新定位时,在同胞段的元数据中更新在其上游同胞段中的卷提示。替代地,在磁盘上的其日志中的同胞段的流的表示中更新卷提示。存储群集可以广播同胞段的独特标识符以便寻找同胞段所位于的磁盘。清单也可以被用于寻找上游段或者被重新定位的段的同胞段。
[0011]在其他的实施例中,以对象存储元数据或者在指示何时应将对象转换为不同的格式的群集设置内存储元数据。当触发条件被满足时,群集将对象从使用复制的存储转换成擦除编码格式,从一种擦除编码格式转换成另一种,或者从擦除编码格式转换成复制存储格式。以其旧的格式的原始对象如果期望的话可以被删除。有利的是,与原始对象一起使用的独特标识符被保留用于与以新的存储格式的对象一起使用,因此,确保原始存储所述对象的客户端应用可以使用与其提供的原始的独特标识符在任何未来的时间处取回它。
[0012]在另一实施例中,对象可以从实现一种存储格式(如,复制、具体的擦除编码等)的存储群集被移动到并不一定使用实现存储格式的第二个存储群集。当被移动时,对象将被自动转换成由第二个群集所使用的存储格式。对象的转换可以通过在第二个存储群集中的默认设置来指示,通过对象的用户元数据(其胜过群集设置)来指示,或者通过来自发起移动的程序的指令来指;^。
[0013]一般地,在本发明的任何实施例的情况下,不需要额外的控制数据库。本质上,存储在群集内的数字对象可以使用其独特标识符被写入、读取和管理,不论对象采样是使用复制还是使用擦除编码被存储。
【附图说明】
[0014]本发明连同其进一步优点可以通过参考与附图相组合的以下描述被最好地理解,其中:
图1图示了本发明操作的环境。
[0015]图2图示了使用5:7擦除编码的针对对象的示例擦除集合。
[0016]图3呈现了可以被用于本发明实施例的示例清单。
[0017]图4A和4B是描述客户端应用如何将文件写入存储集合的流程图。
[0018]图5是描述客户端应用如何从存储群集读取数字对象的流程图。
[0019]图6是描述存储群集可以如何从卷故障中恢复的流程图。
[0020]图7是描述如何将对象从一种格式转换到另一格式的流程图。
[0021]图8是描述如何执行跨存储群集的管理的流程图。
[0022]图9A和图9B图示了适于实现本发明的实施例的计算机系统。
【具体实施方式】
[0023]如本领域已知的那样,擦除编码是用于在没有复制的开销的情况下提供数据对象的冗余的技术。给定特定的数据对象,擦除编码将对象分为K个数据段并且从这些数据段生成P个奇偶校验段,针对在擦除集合中的总共M个段,通常指示为K:M擦除编码。例如,数据段被分为5个段,这些段然后被用于生成2个奇偶校验段,被称为使用5:7擦除编码。擦除编码的关键性质在于可以从任何K个段重新构建原始对象,无论擦除编码的对象的段是原始数据段还是奇偶校验段中的一个。相应地,将每个段分发到在存储群集内不同的卷(并且分发到不同的节点)因此保护数据对象防止在群集内的任何两个卷丢失是有利的。在群集中给定足够的节点,段被分布到不同的节点,提供防止节点丢失的保护。如果节点被定位在不同的地理区域中,则段以某种可能的程度被均匀地分布在将保护的各区域之中,以防止在一个地理场所中的群集的一部分的丢失。
[0024]在一个实施例中,本发明允许使用复制或使用擦除编码存储对象。取决于来自客户端应用的指令、对象的类别、对象的大小、对象的元数据等,群集可以以每个对象的基础来回切换。例如,相对较大的对象都可以使用擦除编码来存储,而相对较小的对象都可以使用复制来存储。普通的复制可以被视为擦除编码的一种特例,其中K=I并且其中M等于给定对象的复制品的总数。此外,不同的对象可以被分派不同的擦除编码。在非常大的对象的情况下,若干这样的擦除集合可以被用于表示该对象。通过允许不同对象被分派包括普通的复制的不同的编码,本发明允许防止数据丢失的不同级别的保护,以不同的处理成本和存储脚印。
[0025]在第二个实施例中,本发明在擦除编码下尝试标识和寻找对象的段的情况下解决了所述问题。代替使用分离的数据库,清单文件(或对象)包括与特定对象相关联的每个段的描述。在清单内包括在群集内的针对每个段的独特标识符、每个段的大小,其中针对所述对象使用编码算法以及具体的擦除编码(5:7,等)。然后将清单对待为在群集内的普通对象,被提供以独特的标识符,并且按需要被复制(例如,被复制到相同的冗余度,P+1)。清单的复制是简单的,因为群集已经针对其他对象执行了复制,并且具有小的存储开销,因为清单在大小上相对较小。因此,经由清单,特定的擦除编码的对象的段是快速并且容易可访问的。针对该清单对象的标识符被返回到客户应用用于对象的未来的取回。这提供了擦除编码的有效脚印,同时保持了简单的标识、高可用性以及普通复制的快速启动。
[0026]在第三个实施例中,本发明通过最小化在硬件故障之后、在重新生成所有丢失的段之前的时间,解决了在存储群集内对数据丢失的暴露。擦除编码的对象的每个段包括关于在保持对象的下一段的群集内的卷标识符的提示。该提示有可能是正确的卷标识符,但是可能不被保证。硬件故障(诸如硬盘故障)一发生,并且在注意到特定的段丢失之前,在群集内的每个卷就将扫描在磁盘上的其日志,以便寻找具有作为其提示的针对故障的卷的卷标识符的段。因此,在等待群集的任何正常的完整性检测发生之前,任何丢失的段可以被标识并且可以被尽可能快地重新生成。
[0027]存储群集示例
如上文所提及的那样,本发明应用于数字化对象,即以数字形式表示的任何类型的信息。例如,数字对象可以是信息的电子表示,诸如计算机文件、文件组,文件标识符的组或者数据或数据库信息的收集。这样的其他的数据的收集包括来自数字音频或视频流的帧或者剪辑、数字照片、扫描的纸质文档、语音信息、CAD/CAM设计、MRI或X射线数据、来自消息记录或文件的流、来自系统的审计或状态日志的日志条目、电子邮件存档、检查图像等。本文经常使用术语“计算机文件”来包含信息任何的电子表示。
[0028]本发明可以使用任何合适的计算机硬件和软件来实现,并且可以被实