CN112119380B - 带有旁路的奇偶校验记录 - Google Patents
带有旁路的奇偶校验记录 Download PDFInfo
- Publication number
- CN112119380B CN112119380B CN201980032632.7A CN201980032632A CN112119380B CN 112119380 B CN112119380 B CN 112119380B CN 201980032632 A CN201980032632 A CN 201980032632A CN 112119380 B CN112119380 B CN 112119380B
- Authority
- CN
- China
- Prior art keywords
- parity
- write
- storage device
- computer
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000004044 response Effects 0.000 claims abstract description 27
- 238000000034 method Methods 0.000 claims description 66
- 238000004891 communication Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 6
- 230000001360 synchronised effect Effects 0.000 claims description 6
- 238000001514 detection method Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 15
- 230000008859 change Effects 0.000 description 14
- 238000013507 mapping Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000006872 improvement Effects 0.000 description 5
- 239000007787 solid Substances 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001152 differential interference contrast microscopy Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
Abstract
在基于奇偶校验的冗余方案中,访问指示存储装置的空闲和已分配部分的分配信息。响应于针对写入操作的请求,当写入请求与存储装置的非空闲部分共享写入请求的奇偶校验时,对存储装置的写入的记录被更新为包括所请求的写入和相关联的奇偶校验。用请求的写入更新奇偶校验,并执行写入请求。当写入请求与存储装置的空闲部分共享写入请求的奇偶校验或写入请求跨越共享奇偶校验的存储装置的所有部分时,写入请求被允许在存储装置的空闲部分中被执行,而无需更新所述记录。
Description
背景技术
计算机系统通常利用某种类型的非易失性数据存储装置。例如计算机系统可以具有多个存储设备,诸如一个或多个硬盘驱动器、固态驱动器等。当使用多个存储设备时,它们可以以各种方式布置以提供一定程度的弹性。数据存储设备易受物理故障的影响,可以采用容错技术来避免或最小化此类故障的影响。
在一些示例中,物理盘驱动器组件可以被组合成一个或多个逻辑单元以提供数据冗余和性能改进。取决于所需的冗余性、性能、可靠性、可用性和容量的级别,数据也可以分布在驱动器上。例如可以通过不同的镜像方案或奇偶校验方案来实现不同级别的弹性。
镜像是将逻辑磁盘卷复制到单独的物理硬盘上以提供冗余。镜像卷是单独的卷副本的逻辑表示。可以通过维护两个数据副本的镜像方案来实现弹性,其中不同的副本位于一个或多个不同的设备布置上。通过在三个不同的设备布置上拥有三个数据副本,可以实现更高的弹性。第一个示例可以容忍单个设备故障,而第二个示例可以容忍两个设备故障。
替代地,可以使用各种奇偶校验方案来实现弹性。在一些示例中,可以实现奇偶校验驱动器以提供弹性/冗余。实现奇偶校验的一种方法是使用异或(XOR)功能。在这样的实现中,可以对要被支持的数据执行XOR,并且可以将XOR写入奇偶驱动器/卷。如果驱动器发生故障,则可以进行其余驱动器和奇偶校验驱动器的XOR,以恢复故障的驱动器上的数据。奇偶校验方案比三重镜像方案使用更少的盘空间,但由于需要执行奇偶校验功能以及其他管理任务,因此可能具有较低的性能水平。
相对于这些和其他考虑,提出了本文进行的本公开。本文所要求保护的技术方案不限于解决任意缺点或仅在诸如上述环境中操作的实施例。相反,仅提供此背景来说明可实践本文描述的一些实施例的一个示例性技术领域。
发明内容
期望提供最高水平的存储数据弹性来处理诸如电源中断的故障,同时提供性能并最小化成本。提供弹性的备份机制的两个示例是镜像方案和奇偶校验方案。虽然镜像方案可以提供高弹性,但是提供至少两个备份的典型实现可能会导致更高的成本。奇偶校验方案可能会减少所需的存储量,但可能会受制于依赖于故障发生的时间的较低的弹性。
在降低成本的同时提供改进的冗余和弹性的一种方式是实现与日志或寄存器耦合的奇偶校验方案。可以实现冗余/弹性方案来防止“读取和写入孔洞”问题,该问题通常是指由于缺乏原子性而被称为用户数据和奇偶校验数据之间的修订级别不匹配,从而在可以返回数据之前创建必须被重新同步的“孔洞”。例如这种孔洞可能是由于在提交写入操作之前在写入操作期间发生的电源故障引起的。例如如果在写入存储器期间电源故障事件使奇偶校验数据与数据不同步,则可能导致写入孔洞。
防止写入孔洞问题的一种方式是在继续进行写入之前,保持日志或日记以记录预期的写入。在一个实施例中,在继续记录奇偶校验数据之前,将预定的写入提交并记录(通常通过冲刷工作高速缓存)在日志中。日志条目现在包含如果在对存储器的写入操作期间发生电源故障事件仅重播写入所需的信息。换句话说,发生电源故障时,如果不是所有写入数据和奇偶校验数据都成功传输到持久性存储器,则日记包含重试写入所需的信息。因此,如果在计算奇偶校验之前发生电源故障,则奇偶校验缓存状态信息将反映恢复最后的预期动作所需的信息。此信息可用于重新启动数据的奇偶校验计算的过程。
在一个实施例中,当应用发送将数据写入存储装置的请求时,该写入请求被重定向到日记,从而可以对该数据写入请求进行日志记录。在奇偶校验功能允许写入和支持数据之前,将对日记进行日志记录。一旦日记条目被永久存储,就可以通过奇偶校验功能写入和支持数据。成功写入数据并存储更新的奇偶校验数据后,可以选择从日记中逐出日记条目,因为不再需要为挂起的写入保留信息。因为日记记录了所有对奇偶校验的写入,所以在奇偶校验备份过程中的任意时间发生电源故障或中断时,都可以保持一致性。
使用日记的一个缺点是由于将每次写入日志记录到日记而可能引起的性能影响。本公开描述了以更高的效率和改进的性能提供用于实现奇偶校验备份的日记方案的弹性的方法。在一个实施例中,并非所有写入都记录在日记中。即,可以允许某些写入继续进行,并旁路在日记中记录写入和奇偶校验信息。
在一个实施例中,可以获得描述计算设备的空闲和分配的存储空间的信息。在一些实施例中,可以最初从文件系统获得空闲和分配的存储空间信息。日记然后可以在写入数据时以及释放空间时维护存储空间分配的和空闲信息的日志。在一个实施例中,分配的和空闲的信息可以以位图的形式保存。可以以各种分辨率级别维护位图,诸如存储器扇区。
当接收到写入请求时,可以访问位图以在生成奇偶校验备份时确定数据写入是否将与存储器的空闲或分配部分配对。如果在生成奇偶校验备份时数据写入将与存储器的已分配部分配对,则可以更新日记。如果在生成奇偶校验备份时数据写入将与存储器的空闲部分配对,则可以旁路日记。当在生成奇偶校验备份时数据写入将与存储器的空闲部分配对时,数据将与空闲空间(即零)进行XOR,导致输出与要写入的新数据相同。因此,不存在奇偶校验数据依赖性,因此无需记录写入信息以便于重播写入。以此方式,可以避免延迟数据写入以将期望的写入存储到日记的成本。
通过在本文描述的情况下旁路日记,可以以减少所需的存储空间量的方式来提供对数据完整性和安全性的改进,并进一步减少在延迟和处理资源方面提供改进的成本。
随着日志继续用空闲/分配的信息来更新并且位图的大小增长,位图可以增长到一定的大小,使得维护和更新位图可能成为资源的重要消耗。当位图的大小覆盖较大的存储区域时,为每个更新的空闲/已分配状态更新和保存位图的过程可能会很昂贵。例如如果卷的容量为100TB,则空闲/已分配的位图可能很重要。但是,在任意给定时间,正在改变的数据量可能只占总容量的一小部分。因此,与完整位图相比,每个改变都相对较小。
在一个实施例中,不针对每次更新来更新整个位图。在一个实施例中,维护增量位图,该增量位图跟踪自先前存储的位图或先前的改变的记录以来的变化。在一个实施例中,当对存储的位图进行挂起的改变时,可以将该位图与挂起的改变进行XOR,并且结果将包括进行改变的位置为1。例如可以通过存储0和1的数量及其顺序来轻松压缩增量。这些改变可以被累积,然后被级联以生成完整的更新位图。
在一些实施例中,可以周期性地或响应于预定事件来生成完整的位图,其可以包括阈值数量的增量、日记大小或容量的百分比、可以预定的固定空间量、计算设备的关闭或其他事件、并应计算设备、用户或其他实体的请求。
应当理解,上述技术方案还可以被实现为计算机控制的装置、计算机过程、计算系统或诸如计算机可读介质的制品。通过阅读以下具体实施方式并查看相关附图,这些和各种其他特征将变得显而易见。提供本发明内容以简化形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。
本发明内容既不旨在标识所要求保护的技术方案的关键特征或必要特征,也不旨在本发明内容用于限制所要求保护的主题的范围。此外,要求保护的技术方案不限于解决在本公开的任意部分中指出的任意或所有缺点的实现。
附图说明
参考附图描述具体实施方式。在附图中,附图标记的最左边的(多个)数字标识该附图标记首次出现的附图。不同附图中相同的附图标记表示相似或完全相同的项。对多个项中的单个项的引用可以使用带有字母序列中的字母的附图标记来引用每个单个项目。对项的通用引用可以使用不带字母序列的特定附图标记。
图1是示出了示例备份方案的图。
图2是示出了根据所描述的实现的奇偶校验日记的示例的图。
图3A是示出了根据所描述的实现的更新或旁路奇偶日记的示例的图。
图3B是示出了根据所描述的实现的更新或旁路奇偶日记的示例的图。
图4是示出了根据所描述的实现的示例性操作过程的图。
图5是示出了根据所描述的实现的增量位图的生成的示例的图。
图6是示出了根据所描述的实现的存储增量位图的示例的图。
图7是示出了根据所描述的实现的示例性操作过程的图。
图8是示出了用于能够实现本文提出的技术和技艺的各方面的计算设备的计算设备架构的计算机架构的图。
具体实施方式
本文公开的技术提供了对诸如奇偶校验备份的数据备份和恢复方案的实现的改进。改进包括改进数据完整性和安全性,以及减少存储和处理资源。许多用户在备份他们的数据时都想要最高级别的弹性,同时又要提供性能并最小化成本。参照图1,示出了可以被实现以提供弹性数据备份的镜像方案和奇偶校验方案的示例。最初将两个数据块A和B示为可以存储在盘1上的数据组110。对于具有两个备份的镜像,数据块A和B被示为分别复制为盘2和盘3上的数据组120和130。在奇偶校验方案中,数据块A 140和B 145分别被显示在盘1和2上,并通过对数据进行XOR进行支持并保存为奇偶校验150。当数据B被更新为数据B'时,奇偶校验被对更新后的数据B进行XOR进行更新,并被存储为更新后的奇偶校验数据170。可以看出,取决于在该过程中何时发生电源中断,存在会丢失预期写入和实际写入数据之间的同步的可能。应当注意,所描述的示例可以以各种适用的奇偶校验方案来实现,并且不限于本文描述的特定示例。例如RAID5和RAID6都是可以实现所描述的实施例的示例场景。
在降低成本的同时提供冗余和弹性保证的一种方法是用日志、日记或寄存器来实现奇偶校验方案。日志、日记或寄存器,在本文中可以互换地指代,可以是一种数据结构,其可操作来存储数据写入和相关的奇偶校验信息以及本文进一步讨论的其他信息的记录。在实现冗余/弹性方案时,可以解决的一个问题是“读取和写入孔洞”问题。读取和写入漏洞问题通常是指由于缺乏原子性的用户数据和奇偶校验数据之间的修订级别不匹配,从而创建了一个“孔洞”,该孔洞必须在返回和使用存储的数据之前被重新同步。这样的孔洞可能是由于在执行写入操作之前在写入操作期间发生的电源故障引起的。例如如果在写入存储器期间电源故障事件使奇偶校验数据与数据不同步,则可能导致写入孔洞。在镜像模型中,根据发生电源故障的时间,当并非所有冗余备份都已提交并且数据的哪个版本是最新的不明确时,可能会发生同步丢失。在奇偶校验模型中,如果在奇偶校验数据更新期间发生电源中断,则如果奇偶校验数据已损坏,则恢复数据的能力可能会丢失。例如参考图1,如果数据块140中的数据B正在被更新为B'的过程中,并且A是稳定的并且奇偶校验备份A XOR B已经被存储,则更新奇偶校验数据A XOR B'的动作如果被中断,则可能会损害恢复A的能力。
防止写入孔洞问题的一种方法是在继续进行写入之前实现日志或日记以记录预期的写入。日志或日记可以是可操作用于存储写入信息和奇偶校验信息的任意数据结构。在一个实施例中,在继续记录奇偶校验数据之前,可以在日记中提交和保留预期的写入(通常通过冲刷工作缓存)。日记条目现在包含如果在对存储盘进行写入操作期间发生电源故障事件时仅重播写入所需的信息。换句话说,发生电源故障时,如果不是所有写入数据和奇偶校验数据都被成功传输到持久性存储器,则日记包含重试写入所需的信息。因此,如果在计算奇偶校验之前发生电源故障,则奇偶校验缓存状态信息将反映最初的预期动作。此信息可用于重新启动数据的奇偶校验计算过程。
参照图2,示出了使用日志或日记以为电源故障提供弹性的示例。示出了应用210,其发送将数据写入存储装置的请求。在允许将数据写入盘225并由奇偶校验220支持之前,将写入请求重定向到日记240,以便可以记录数据写入请求和关联的奇偶校验。一旦冲刷250了到日记的条目(从临时存储区到永久存储器的数据传输),数据就被写入盘225并由奇偶校验220支持。在成功记录了与奇偶校验数据相关的数据之后,由于不再需要为挂起的写入保留信息,因此日记条目可以选择地将其从日志中逐出。因为日志记录了所有对奇偶校验的写入,所以在奇偶校验备份过程期间的任意点发生电源故障或中断时,都可以保持一致性。
实现日记的一个缺点是由于记录对日记的每次写入可能引起的性能影响。本公开描述了提供弹性的方法,该弹性通过实现用于奇偶校验备份的日记方案而被启用,具有更高的效率和改进的性能。在一个实施例中,并非所有写入都被记录在日记中。即,可以允许某些写入继续进行并旁路日记。
在一个实施例中,可以获得描述计算设备的空闲和分配的存储空间的信息。在一些实施例中,可以最初从文件系统获得空闲和分配的存储空间信息。日记然后可以在数据被写入时以及空间被释放时维护分配的存储空间和空闲信息的日志。在一个实施例中,分配的和空闲的信息可以以位图的形式保存。可以将位图维持在各种分辨率级别,诸如存储器扇区。
当接收到写入请求时,可以在生成奇偶校验备份时访问位图以确定数据写入是否将与存储器的空闲或分配部分配对。如果在生成奇偶校验备份时将数据写入与已分配的存储器部分配对,则可以更新日记。如果在生成奇偶校验备份时将数据写入与存储器的空闲部分配对,则可以旁路日记。由于生成奇偶校验备份时,数据写入将与存储器的空闲部分配对,因此,数据将与空闲空间(即零)进行XOR,从而导致输出与要写入的新数据相同。由于如果不保存此XOR结果,则不会丢失任意信息,因此日记无需出于提供奇偶校验备份的目的而存储此信息。
参照图3A,示出了旁路奇偶校验日记的示例。盘0、1和2上的数据块310被显示为未分配(空闲)。当数据A被写入盘0,如所示的数据块320中,并且磁盘1上的相应奇偶校验对仍然空闲时,则不依赖于数据A来恢复磁盘1中的内容,因此日记350可以被旁路。再次参考图3A,示出了旁路奇偶校验日记的另一示例。盘0、1和2上的数据块310显示为未分配(空闲)。如当将数据A写入盘0并将数据B写入盘1,如所示的数据块320,并且盘1上的对应奇偶校验对仍然空闲时,则由于第一次写入A和B,因此不依赖于数据A或数据B来恢复盘1中的内容,因此可以旁路日记350。在这些实施例中,如果不影响任意稳定数据的恢复,则可以旁路日记。换句话说,如果要写入新数据,并且如果它不与已经存储并可能需要恢复的任意其他数据共享奇偶校验,则可以旁路日记。以此方式,可以避免延迟数据写入以将预期的写入存储到日记的成本。
参考图3B,示出了不旁路奇偶校验日记的示例。盘0、1和2上的数据块330被示为具有数据A\数据B和奇偶校验A xor B。当数据A在磁盘0上被更新时,如数据块340所示,则对数据A的预期更新被记录在日记350中。更新的奇偶校验A'xor B也被写入日记350。在日记350中记录了写入和更新的奇偶校验之后,盘0和2被更新,如数据块340所示。因为当A被更新为A'时数据B具有对与A的共享奇偶校验的依赖性,日记被旁路。
参考图4,该示例过程用于确定是否可以在不将写入保存到日记的情况下执行写入。操作402示出了访问指示存储装置的空闲和分配部分的分配信息。操作404示出了确定写入请求是否与存储装置的非空闲部分共享其奇偶校验。如果写入请求与存储装置的非空闲部分共享其奇偶校验备份,则操作404后面可以跟随操作406。操作406示出了更新对存储装置的写入的记录以包括请求的写入和相关联的奇偶校验。操作406之后可以是操作408。操作408示出了利用所请求的写入来更新奇偶校验。操作408之后可以是操作409。操作409示出了允许执行写入请求。
如果写入请求与存储装置的空闲部分共享其奇偶校验,则操作404之后可以是操作405。操作405示出了确定写入请求是否与存储装置的空闲部分共享其奇偶校验。如果写入请求与存储装置的空闲部分共享其奇偶校验,则操作405之后可以是操作410。如果写入请求未与存储装置的空闲部分共享其奇偶校验,则操作405之后可以是操作407。操作407示出了确定写入请求是否跨越共享奇偶校验的存储装置的所有部分。如果写入请求跨越共享奇偶校验的存储装置的所有部分,则操作410之后可以是操作407。
操作410示出了允许在存储器的空闲部分中执行写入请求,而无需更新记录。操作410之后可以是操作411。操作411示出了基于请求的写入来更新奇偶校验而不更新记录。通过在本文描述的情况下旁路日记,仅在必要时才使用日记以覆盖潜在的数据丢失。与空闲空间配对允许旁路日记,从而避免了由于要更新日记的时间而导致写入数据的延迟。因此,旁路允许使用日记支持的奇偶校验方法的好处,同时消除了一些开销。在许多情况下,存储装置中存在可用空间,因此允许日记被旁路。例如当计算设备是相对较新的或虚拟机最近已实例化时,可能存在相当大的未使用和未分配空间区域。当删除诸如视频文件的大文件时,也可能出现较大的可用空间区域。在为奇偶校验备份而将如此大的可用空间区域与数据配对的情况下,可以旁路奇偶校验日记。在一些实施例中,可以调整存储配置以增加日记可以被旁路的可能性。例如在虚拟化环境中,可以对一组虚拟机进行负载平衡,以使每个虚拟机与具有中等存储负载的存储卷关联。
在一些实施例中,可以实现奇偶校验和镜像方案两者,其中一些区域使用奇偶校验方案来支持,而某些区域使用镜像方案来支持。通过调整每种方案所使用的相对量,可以选择性能和弹性的最大化的平衡。最初,可以对数据写入进行镜像,并且随着时间的推移,来自镜像区域的数据可能会移动到奇偶校验备份的区域。
随着日志继续更新和维护位图,并且位图的大小增长,位图可以增长到一定的大小,以使得维护和更新位图成为资源的重大消耗。当位图的大小持续增长时,为每个更新的空闲/已分配状态更新和保存位图的过程可能会很昂贵。例如如果卷的容量为100TB,则空闲/已分配的位图的大小可以为许多兆字节。但是,在任意给定时间,正在改变的数据量可能只是总容量的一小部分。因此,与完整的位图相比,每个改变可能相对较小。
在一个实施例中,不针对每次更新来更新整个位图。在一个实施例中,维护增量位图,该增量位图跟踪自先前存储的位图或先前的改变记录以来的改变。参照图5,示出了其中将空闲/分配的位图的增量被保存在奇偶校验日记中的示例实现。当对存储的位图510进行挂起的改变520时,可以将存储的位图510与挂起的改变520进行XOR。所得到的增量530将指示1,其中进行了改变。例如可以通过将0和1的数目及其顺序存储在压缩的增量540中来轻松地压缩增量530。这些改变可以被累积,然后被级联起来以生成完整的更新位图。
参考图6,示出了可操作以存储完整位图602的日记600的示例。日记可被实现为数据结构。本领域技术人员将理解,图中所示的数据结构可以表示数据文件、数据库表、存储在计算机存储装置中的对象、程序结构或本领域中通常已知的任意其他数据容器。数据结构中包括的每个数据元素可以表示数据文件中的一个或多个字段、数据库表的一个或多个列、对象的一个或多个属性、程序结构的一个或多个变量或本领域通常已知的数据结构的任意其他数据单位。
当对位图进行改变时,将保存增量以按本文描述的方式存储改变。图6示出了三个增量604、606和608。基于可以预定的阈值事件,可以生成并存储另一个完整的位图610。完整位图610之后可以是增量位图620和622。完整位图610可以响应于预定事件630以及应计算设备、用户或其他实体的请求而生成,预定事件630可以在所示的示例中包括阈值数量的增量、日记大小或容量的百分比、预定的固定量的空间、计算设备的关闭或其他事件。其他事件也可能触发完整位图的生成和存储。
参照图7,示出了根据本公开的示例操作过程。参照图7,操作700开始该过程。操作700之后可以是操作702。操作702示出了维护包含存储写入和相关联的冗余备份的记录的日志。操作702之后可以是操作704。操作704示出了在日志中存储指示存储装置的空闲和分配部分的分配信息的映射。操作704之后可以是操作706。操作706示出了接收对存储装置的空闲和分配部分的改变的指示。操作706之后可以是操作708。操作708示出确定对分配信息的映射的更新。
操作708之后可以是操作710。操作710示出了存储对分配信息的映射的更新。操作710之后可以是操作712。操作712示出了响应于电源中断而访问所存储的改变并将冗余备份与所存储的数据同步。
还应该理解,所示出的方法可以在任意时间结束并且不需要整体执行。可以通过执行在计算机存储介质上包括的计算机可读指令来执行方法的一些或全部操作和/或基本上等效的操作,如下文所定义。如说明书和权利要求书中所使用的术语“计算机可读指令”及其变体在本文中被广泛地使用以包括例程、应用、应用模块、程序模块、程序、组件、数据结构、算法等。可以在各种系统配置上实现计算机可读指令,包括单处理器或多处理器系统、小型计算机、大型计算机、个人计算机、手持式计算设备、基于微处理器的可编程消费电子产品、其组合等。
因此,应当理解,本文描述的逻辑操作被实现为(1)在计算系统上运行的计算机实现的动作或程序模块的序列和/或(2)作为计算系统内部的互连机器逻辑电路或电路模块。该实现是取决于计算系统的性能和其他要求的选择问题。因此,本文描述的逻辑操作被不同地称为状态、操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可以以软件、固件、专用数字逻辑及其任意组合来实现。
例如所描述的方法的操作在本文中被描述为至少部分地由系统组件来实现,该系统组件可以包括应用、组件和/或电路。在某些配置中,系统组件包括动态链接库(DLL)、静态链接库、由应用编程接口(API)产生的功能、已编译程序、解释程序、脚本或任意其他可执行指令集。诸如与工作负载102、104和/或106相关联的数据的数据可以被存储在一个或多个存储器组件中的数据结构中。可以通过寻址数据结构的链接或引用从数据结构中取回数据。
尽管以下图示涉及图1-7的组件,但是可以理解,所描述的方法的操作也可以以许多其他方式来实现。例如该方法可以至少部分地由另一远程计算机或本地电路的处理器来实现。另外,方法的一个或多个操作可以可替代地或另外地至少部分地由单独工作或与其他软件模块结合工作的芯片组来实现。适用于提供本文公开的技术的任意服务、电路或应用都可以用于本文所述的操作。
图8示出了能够实现上述实施例的各个方面的示例计算机架构的附加细节。图8所示的计算机架构图示了系统的各个方面,诸如常规的服务器计算机、工作站、台式计算机、便携式计算机、平板电脑、嵌入在设备(诸如可穿戴设备、汽车、家庭自动化等)中的计算或处理系统、或者其他计算设备,并且可以用来执行本文介绍的任意软件组件。例如图8所示的计算机架构可以用于执行上述的任意软件组件。
计算机架构包括基板802或“主板”,其是印刷电路板,可以通过系统总线或其他电气通信路径将多个组件或设备连接至该印刷电路板。在一个示意性实施例中,一个或多个中央处理单元(“CPU”)804与芯片组806结合操作。CPU 804可以是标准可编程处理器,其执行计算机架构的操作所必需的算术和逻辑运算。
CPU 804通过操纵在这些状态之间进行区分和改变这些状态的切换元件来通过从一个离散的物理状态过渡到下一离散的物理状态来执行操作。切换元件通常可以包括:电子电路,其保持两个二进制状态之一,诸如触发器(flip-flops);以及电子电路,其基于一个或多个其他切换元件的状态的逻辑组合来提供输出状态,诸如逻辑门。这些基本切换元件可以组合以创建更复杂的逻辑电路,包括寄存器、加法器-减法器、算术逻辑单元、浮点单元等。
芯片组806在CPU 804与基板802上的其余组件和设备之间提供接口。芯片组806可以向RAM 808提供接口,该RAM 808用作计算机架构中的主存储器。芯片组806可以进一步提供到计算机可读存储介质的接口,诸如只读存储器(“ROM”)810或非易失性RAM(“NVRAM”),用于存储有助于启动计算设备以及在各个组件和设备之间传递信息的基本例程。ROM 810或NVRAM还可以存储根据本文描述的实施例的计算机架构的操作所必需的其他软件组件。
计算机架构可以使用通过诸如局域网的网络814到远程计算设备和计算机系统的逻辑连接来在联网环境中操作。芯片组806可以包括用于通过诸如千兆位以太网适配器的网络接口控制器(NIC)812提供网络连接的功能。NIC 812能够通过网络814将计算机架构连接到其他计算设备。应当理解,在计算机架构中可以存在多个NIC 812,从而将计算机连接到其他类型的网络和远程计算机系统。该网络允许计算机架构与诸如远程计算机801的远程服务和服务器进行通信。可以理解,远程计算机801可以托管许多服务,诸如华盛顿Redmond的MICROSOFT CORPORATION提供的XBOX LIVE游戏服务。另外,如上所述,远程计算机801可以镜像和反映在计算机架构上存储的数据和托管可以提供用于本文描述的技术的数据或处理的服务。
计算机架构可以连接到为计算设备提供非易失性存储的大容量存储设备826。大容量存储设备826可以存储系统程序、应用程序、其他程序模块和数据,本文已对其进行了更详细的描述。大容量存储设备826可以通过连接到芯片组806的存储控制器815连接到计算机架构。大容量存储设备826可以包括一个或多个物理存储单元。存储控制器815可以通过串行连接的SCSI(“SAS”)接口、串行高级技术附件(“SATA”)接口、光纤通道(“FC”)接口或其他类型的接口来与物理存储单元对接,以用于在计算机和物理存储单元之间的物理连接和传输数据。还应当理解,大容量存储设备826、其他存储介质和存储控制器815可以包括多媒体卡(MMC)组件、eMMC组件、安全数字(SD)组件、PCI Express组件等。
计算机架构可以通过变换物理存储单元的物理状态以反映正在存储的信息,来将数据存储在大容量存储设备826上。在本说明书的不同实现中,物理状态的特定变换可以取决于各种因素。这样的因素的示例可以包括但不限于用于实现物理存储单元的技术、大容量存储设备826被表征为一级存储还是二级存储等。
例如计算机架构可以通过由存储控制器815发布指令来将信息存储到大容量存储设备826,以变更磁盘驱动器单元内特定位置的磁特性、光学存储单元中的特定位置的反射或折射特性、或固态存储单元中特定电容器、晶体管或其他分立组件的电气特性。在不脱离本说明书的范围和精神的情况下,物理介质的其他变换也是可能的,其中提供了前述示例仅是为了促进本说明书。该计算机架构可以通过检测物理存储单元内的一个或多个特定位置的物理状态或特性来进一步从大容量存储设备826读取信息。
除了上述大容量存储设备826外,计算机架构还可以访问其他计算机可读介质来存储和取回信息,诸如程序模块、数据结构或其他数据。当操作系统827、应用程序829、其他数据和其他模块被描述为在大容量存储设备826中存储的数据和软件时,应当理解,这些组件和/或其他模块可以至少部分地被存储在计算机架构的其他计算机可读存储介质中。尽管本文包含的计算机可读介质的描述是指大容量存储设备,诸如固态驱动器、硬盘或CD-ROM驱动器,但本领域技术人员应理解,计算机可读介质可以是可以由计算机架构访问的任意可用计算机存储介质或通信介质。
通信介质包括诸如载波或其他传输机制的调制数据信号中的计算机可读指令、数据结构、程序模块或其他数据,并且包括任意传递介质。术语“调制数据信号”是指具有以将信息编码在信号中的方式改变或设置其一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质、以及诸如声学、RF、红外和其他无线介质的无线介质。以上任意内容的组合也应包括在计算机可读介质的范围内。
作为示例而非限制,计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任意方法或技术实现的易失性和非易失性、可移除和不可移除介质。例如计算机介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其他固态存储技术、CD-ROM、数字多功能磁盘(“DVD”)、HD-DVD、BLU-RAY或其他光学存储设备、磁带盒、磁带、磁盘存储设备或其他磁性存储设备、或可用于存储所需信息并可由计算机架构访问的任意其他介质。为了权利要求的目的,短语“计算机存储介质”、“计算机可读存储介质”及其变体本身不包括波或信号和/或通信介质。
大容量存储设备826可以存储用于控制计算机架构的操作的操作系统827。根据一个实施例,操作系统包括游戏操作系统。根据另一个实施例,操作系统包括来自MICROSOFT公司的操作系统。根据另外的实施例,操作系统可以包括可从它们各自的制造商处获得的UNIX、ANDROID、WINDOWS PHONE或iOS操作系统。应当理解,也可以使用其他操作系统。大容量存储设备826可以存储计算机架构所利用的其他系统或应用程序和数据,诸如上述任意其他软件组件和数据。大容量存储设备826还可以存储本文未具体标识的其他程序和数据。
在一个实施例中,用计算机可执行指令对大容量存储设备826或其他计算机可读存储介质进行编码,所述计算机可执行指令在被加载到计算机架构中时将计算机从通用计算系统转换为能够实现本文所述实施例的专用计算机。如上所述,这些计算机可执行指令通过指定CPU 804如何在状态之间转换来改变计算机架构。根据一个实施例,计算机架构可以访问存储计算机可执行指令的计算机可读存储介质,该计算机可执行指令在由计算机架构执行时,执行以上关于图8和其他附图描述的各种例程。该计算设备还可以包括用于执行本文描述的任意其他计算机实现的操作的计算机可读存储介质。
该计算机架构还可以包括一个或多个输入/输出控制器816,用于接收和处理来自多个输入设备的输入,诸如键盘、鼠标、麦克风、头戴式耳机、触摸板、触摸屏、电子手写笔、图像处理和手势识别设备或任意其他类型的输入设备。输入/输出控制器816与输入/输出设备825通信。输入/输出控制器816可以将输出提供给显示器,诸如计算机监视器、平板显示器、数字投影仪、打印机、绘图仪或其他类型的输出设备。输入/输出控制器816可以提供与其他设备的输入通信,诸如麦克风、扬声器、游戏控制器和/或音频设备。
例如输入/输出控制器816可以是编码器,并且输入/输出设备825可以包括具有多个扬声器的全扬声器系统。编码器可以使用空间化技术,并且编码器可以处理从应用88接收的音频输出音频或输出信号。编码器可以利用所选的空间化技术来生成适当地呈现给输入/输出设备825的空间编码流。
可以鉴于以下条款考虑本文提出的公开。
示例条款A,一种用于在计算系统中执行存储器操作的计算机实现的方法,在所述计算系统中基于奇偶校验的冗余方案被实现,所述方法包括:
访问指示存储装置的空闲和已分配部分的分配信息;
响应针对写入操作的请求,当所述写入请求与所述存储装置的非空闲部分共享其奇偶校验时:
更新对所述存储装置的写入的记录,以包括所请求的写入和相关联的奇偶校验;
用所述所请求的写入来更新所述奇偶校验;以及
允许所述写入请求被执行;
当所述写入请求与所述存储装置的空闲部分共享其奇偶校验或所述写入请求跨越共享所述奇偶校验的存储装置的所有部分时:
允许所述写入请求在所述存储装置的所述空闲部分中被执行,而无需更新所述记录;以及
基于所述所请求的写入来更新所述奇偶校验,而无需更新所述记录。
示例条款B,根据示例条款A的计算机实现的方法,其中所述分配信息被存储在所述记录中。
示例条款C,根据示例条款A至B中任一项的计算机实现的方法,其中更新记录包括执行冲刷以持久地存储所述更新,使得所述所请求的写入和相关联的奇偶校验能够响应于所述所请求的写入的中断而被恢复。
示例条款D,根据示例条款A至C中任一项的计算机实现的方法,其中所述奇偶校验包括在两个或更多个存储设备中存储的数据的异或运算。
示例条款E,根据示例条款A至D中任一项的计算机实现的方法,还包括:响应于电源中断,访问所述记录并将所述奇偶校验与所存储的数据同步。
示例条款F,根据示例条款A至E中任一项的计算机实现的方法,其中所述方法在虚拟化计算环境中被实现,还包括对虚拟机进行负载平衡以增加写入请求与奇偶校验相关联的可能性,所述奇偶校验与所述存储装置的空闲部分共享。
示例条款G,根据示例条款A至F中任一项的计算机实现的方法,还包括:当空闲和所分配的信息变得可用时,更新所述记录中存储的所述分配信息。
示例条款H,一种计算设备,被配置为实现基于奇偶校验的冗余方案,所述计算设备包括:
一个或多个处理器;
存储器,所述存储器与所述一个或多个处理器通信,所述存储器具有存储在其上的计算机可读指令,所述计算机可读指令在由所述一个或多个处理器执行时使所述计算设备执行操作,所述操作包括:
响应针对写入操作的请求,所述写入操作被确定为导致对共享奇偶校验的更新:
用所述写入操作和相关联的奇偶校验的记录来更新日志;以及
启动对所述奇偶校验和所请求的写入的更新;以及
否则:
允许所述写入请求被执行,而无需更新所述日志;以及
基于所请求的写入来更新所述奇偶校验,而无需更新所述日志。
示例条款I,根据示例条款H的计算设备,其中导致对共享奇偶校验进行更新的确定是基于所请求的写入与存储装置的未分配部分相关联的。
示例条款J,根据示例条款H至I中任一项的计算设备,其中该确定还基于存储分配信息。
示例条款K,根据示例条款H至J中任一项的计算设备,其中奇偶校验包括在两个或更多个存储设备上存储的数据的异或。
示例条款L,根据示例条款H至K中任一项的计算设备,其中更新日志包括执行冲刷以持久地存储更新,使得可以响应于所请求的写入的中断来恢复所请求的写入。
示例条款M,根据示例条款H至L中任一项的计算设备,还包括计算机可读指令,该计算机可读指令在由一个或多个处理器执行时使计算设备执行包括以下各项的操作:响应于电源中断,访问所述日志并将所述奇偶校验与所存储的数据同步。
示例条款N,根据示例条款H至M中任一项的计算设备,其中至少部分由于所述奇偶校验与存储装置的空闲部分相关联,所以写入操作不会引起对奇偶校验的更新。
示例条款O,根据示例条款H至N中任一项的计算设备,其中要由所述奇偶校验备份的数据量是可配置的。
示例条款P,根据示例条款H至O中的任一项的计算设备,其中附加的数据量被配置为使用镜像备份方案而被支持。
示例条款Q,一种计算机可读存储介质,具有存储在其上的计算机可读指令,该计算机可读指令在由计算设备的一个或多个处理器执行时使计算设备执行包括以下各项的操作:
在启动与写入请求相关联的奇偶校验更新之前,在该写入请求与存储装置的非空闲部分共享其奇偶校验备份时更新日志以记录该写入请求和奇偶校验更新;以及
当写入请求与存储装置的未分配部分共享其奇偶校验时,允许写入请求被执行而无需更新日志。
示例条款R,根据示例Q的计算机可读存储介质,还包括存储在其上的计算机可读指令,该计算机可读指令在由计算设备的一个或多个处理器执行时,使计算设备执行包括以下各项的操作:
响应于对写入请求的执行的中断,访问日志以确定写入请求是否应被重播。
示例条款S,根据示例Q至R中任一项的计算机可读存储介质,其中当写入请求跨越共享奇偶校验的存储装置的所有部分时,写入请求还允许被执行而不更新日志。
示例条款T,根据示例条款Q至S中任一项的计算机可读存储介质,还包括:至少部分地基于存储分配信息,确定写入请求具有与存储装置的分配部分相关联的奇偶校验备份。
示例条款U,一种计算机实现的方法,用于在冗余备份被实现的计算系统中执行存储器操作,该方法包括:
维护包含存储写入操作和相关联的冗余备份记录的日志;
在日志中存储分配信息的映射,该分配信息指示存储的空闲和已分配部分;
接收对存储装置的空闲和已分配部分的改变的指示;
确定对分配信息的映射的更新;
存储对分配信息的映射的更新;以及
响应于电源中断来访问存储的更新并将冗余备份与所存储的数据同步。
示例条款V,根据示例条款U的计算机实现的方法,其中响应于针对写入操作的请求,所述指示被接收。
示例条款W,根据示例条款U至V中任一项的计算机实现的方法,还包括在所述日志中存储指示写入操作的数据。
示例条款X,根据示例条款U至W中任一项的计算机实现的方法,其中当写入请求与和存储装置的空闲部分相关联的冗余备份相关联时,写入请求允许被执行而无需在日志中存储指示写入操作的数据。
示例条款Y,根据示例条款U至X中任一项的计算机实现的方法,其中冗余备份包括奇偶校验备份。
示例条款Z,根据示例条款U至Y中任一项的计算机实现的方法,其中奇偶校验备份包括对在两个或更多个存储设备中存储的数据的异或运算。
示例条款AA,根据示例条款U至Z中任一项的计算机实现的方法,还包括:响应于预定事件,存储指示存储装置的空闲和已分配部分的分配信息的完整映射。
示例条款BB,一种计算设备,被配置为实现基于奇偶校验的冗余方案,该计算设备包括:
一个或多个处理器;
存储器,所述存储器与所述一个或多个处理器通信,所述存储器具有存储在其上的计算机可读指令,所述计算机可读指令在由所述一个或多个处理器执行时使所述计算设备执行操作,所述操作包括:
在日志中存储指示存储装置的空闲和已分配部分的分配信息的映射,该日志包含存储写入和相关联的奇偶校验备份的记录;
接收对存储装置的空闲和已分配部分的更新的指示;
确定对分配信息的映射的更新的表示;
存储对分配信息的映射的更新的表示;以及
响应于服务中断来访问所存储的分配信息的映射并将所述奇偶校验备份与所存储的数据同步。
示例条款CC,根据示例条款BB的计算设备,还包括存储在其上的计算机可读指令,该计算机可读指令当由一个或多个处理器执行该指令时,使计算设备执行包括以下各项的操作:响应于预定事件,存储分配信息的完整映射,所述分配信息指示存储装置的空闲和分配部分。
示例条款DD,根据示例条款BB至CC中任一项的计算设备,其中预定事件包括以下一项或多项:更新的阈值数量、日志容量的阈值百分比、空间的阈值量、或关机。
示例条款EE,根据示例条款BB至DD中任一项的计算设备,其中奇偶校验备份包括在两个或更多个存储设备上存储的数据的异或。
示例条款FF,根据示例条款BB至EE中任一项的计算设备,其中更新日志包括执行冲刷以持久存储更新,从而响应于所请求的写入的中断,被中断的写入可以被恢复。
示例条款GG,根据示例条款BB至FF中任一项的计算设备,其中映射包括位图。
示例条款HH,根据示例条款BB至GG中任一项的计算设备,其中更新的表示包括当前位图与更新后的位图的异或。
示例条款II,根据示例条款BB至HH中任一项的计算设备,其中在表示被存储之前对所述表示被压缩。
示例条款JJ,根据示例条款BB至II中任一条款的计算设备,其中响应于针对写入操作的请求,所述指示被接收,还包括在日志中存储指示写入操作的数据。
示例条款KK,一种计算机可读存储介质,具有存储在其上的计算机可读指令,该计算机可读指令在由计算设备的一个或多个处理器执行时使计算设备执行包括以下各项的操作:
在日志中存储分配信息的映射,所述日志包含存储写入和相关联的冗余备份的记录,所述分配信息指示存储装置的空闲和分配部分;
接收对存储装置的空闲和已分配部分的改变的指示;
确定对分配信息的映射的更新;
存储对分配信息映射的更新;以及
响应于写入请求,访问所存储的更新,并基于更新的映射来确定是否记录所请求的写入。
示例条款LL,根据示例条款KK的计算机可读存储介质,还包括存储在其上的计算机可读指令,该计算机可读指令在由计算设备的一个或多个处理器执行时使计算设备执行包括以下各项的操作:
至少部分地基于更新的映射,确定写入请求具有与存储装置的分配部分相关联的冗余备份。
示例条款MM,根据示例条款KK至LL中的任一项的计算机可读存储介质,还包括存储在其上的计算机可读指令,该计算机可读指令在由计算设备的一个或多个处理器执行时导致计算设备执行包括以下各项的操作:
响应于预定事件,存储分配信息的完整映射,所述分配信息指示存储装置的空闲和已分配部分。
示例条款NN,根据示例条款KK至MM中任一项的计算机可读存储介质,其中预定事件包括以下一项或多项:更新的阈值数量、日志容量的阈值百分比、阈值空间量、或关机。
前面各节中描述的每个过程、方法和算法可以体现在由一个或多个计算机或计算机处理器执行的代码模块中,并且可以完全或部分地由一个或多个计算机或计算机处理器执行的代码模块来自动化。代码模块可以被存储在任意类型的非暂态计算机可读介质或计算机存储设备上,诸如硬盘驱动器、固态存储器、光盘和/或类似物。该过程和算法可以在专用电路中部分或全部实现。所公开的过程和过程步骤的结果可以永久地或以其他方式被存储在任意类型的非暂态计算机存储装置中,诸如易失性或非易失性存储装置中。
上述的各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合旨在落入本公开的范围内。另外,在一些实现中,可以省略某些方法或过程框。本文所述的方法和过程也不限于任意特定的顺序,并且可以以适当的其他顺序执行与之相关的框或状态。例如可以以不同于具体公开的顺序来执行所描述的框或状态,或者可以在单个框或状态中组合多个框或状态。示例框或状态可以串行、并行或以其他方式执行。可以将框或状态添加到所公开的示例实施例中或从所公开的示例实施例中移除。本文描述的示例系统和组件可以被配置为与所描述的不同。例如与所公开的示例实施例相比,元素可以被添加到所公开的示例实施例、从所公开的示例实施例中移除或被重新布置。
还将意识到,出于存储器管理和数据完整性的目的,各种项目被示为在使用时被存储在存储器中或被存储在存储装置中,并且这些项目或其部分可以在存储器与其他存储设备之间转移。备选地,在其他实施例中,一些或所有软件模块和/或系统可以在另一设备上的存储器中执行,并且经由计算机间通信与所示的计算系统进行通信。此外,在一些实施例中,可以以其他方式来实现或提供一些或所有系统和/或模块,例如至少部分地以固件和/或硬件,包括但不限于一个或多个专用集成电路(ASIC)、标准集成电路、控制器(例如通过执行适当的指令并包括微控制器和/或嵌入式控制器)、现场可编程门阵列(FPGA)、复杂的可编程逻辑器件(CPLD)等。因此,本发明可以用其他计算机系统配置来实践。
本文所使用的条件语言,诸如“可”、“可以”、“可能”、“能够”、“例如”等,除非另外特别说明,或者在所使用的上下文中另外理解,通常旨在表示某些实施例包括而其他实施例不包括某些特征、元件和/或步骤。因此,这样的条件语言通常不旨在暗示特征、元素和/或步骤以任意方式对于一个或多个实施例是必需的,或者一个或多个实施例必须包括用于在有或没有作者输入或提示的情况下确定在任何特定实施例中是否包括或将要执行这些特征、元素和/或步骤的逻辑。术语“包括”、“包含”、“具有”等是同义词,以开放式方式包含地使用,并且不排除其他要素、特征、动作、操作等。同样,术语“或”以其包含的含义使用(而不是以其排他的含义使用),使得例如在用于连接元素列表时,术语“或”表示在列表中的一个、一些或所有元素。
尽管已经描述了某些示例实施例,但是这些实施例仅通过示例的方式呈现,并且不旨在限制本文公开的发明的范围。因此,以上描述中的任何内容都不旨在意味着任何特定的特征、特性、步骤、模块或框是必要的或必不可少的。实际上,本文描述的新颖的方法和系统可以以多种其他形式来体现;此外,在不脱离本文公开的本发明的精神的情况下,可以对本文所述的方法和系统的形式进行各种省略、替换和改变。所附权利要求及其等同物旨在覆盖将落入本文所公开的某些发明的范围和精神内的形式或修改。
Claims (17)
1.一种用于在计算系统中执行存储器操作的计算机实现的方法,在所述计算系统中基于奇偶校验的冗余方案被实现,所述方法包括:
访问指示存储装置的空闲部分和所述存储装置的已分配部分的信息;
响应于针对写入操作的请求,确定在生成奇偶校验时所述写入操作是与所述存储装置的所述空闲部分配对,还是与所述存储装置的所述已分配部分配对;
在所述写入操作被确定为与所述存储装置的所述已分配部分配对的情况下:
更新对所述存储装置的所述空闲部分或者所述存储装置的所述已分配部分的写入记录,以包括所请求的写入;
用所述所请求的写入来更新所述奇偶校验;以及
允许针对所述写入操作的所述请求被执行;
在所述写入操作被确定为与所述存储装置的所述空闲部分配对的情况下:
允许针对所述写入操作的所述请求在所述存储装置的所述空闲部分中被执行,而无需更新所述写入记录;以及
基于所述所请求的写入来更新所述奇偶校验,而无需更新所述写入记录。
2.根据权利要求1所述的计算机实现的方法,其中所述信息被存储在所述写入记录中。
3.根据权利要求1所述的计算机实现的方法,其中更新所述写入记录包括执行冲刷以持久地存储更新,使得所述所请求的写入和相关联的奇偶校验能够响应于所述所请求的写入的中断而被恢复。
4.根据权利要求3所述的计算机实现的方法,其中所述奇偶校验包括在两个或更多个存储设备中存储的数据的异或运算。
5.根据权利要求1所述的计算机实现的方法,还包括:响应于电源中断,访问所述写入记录并将所述奇偶校验与所存储的数据同步。
6.根据权利要求1所述的计算机实现的方法,其中所述方法在虚拟化计算环境中被实现。
7.根据权利要求2所述的计算机实现的方法,还包括:当空闲和所分配的信息变得可用时,更新所述写入记录中存储的所述信息。
8.一种计算设备,被配置为实现基于奇偶校验的冗余方案,所述计算设备包括:
一个或多个处理器;
存储器,所述存储器与所述一个或多个处理器通信,所述存储器具有存储在其上的计算机可读指令,所述计算机可读指令在由所述一个或多个处理器执行时使所述计算设备执行操作,所述操作包括:
访问指示存储装置的空闲部分和所述存储装置的已分配部分的信息;
响应于针对写入操作的请求,确定在生成奇偶校验时所述写入操作是与所述存储装置的所述空闲部分配对,而非与所述存储装置的所述已分配部分配对:
基于所述写入操作被确定为与所述存储装置的所述空闲部分配对,允许写入请求在所述存储装置的所述空闲部分中被执行,而无需更新日志;以及
基于所请求的写入来更新所述奇偶校验,而无需更新所述日志。
9.根据权利要求8所述的计算设备,其中所述奇偶校验包括在两个或更多个存储设备中存储的数据的异或运算。
10.根据权利要求8所述的计算设备,还包括计算机可读指令,所述计算机可读指令在由所述一个或多个处理器执行时使所述计算设备执行操作,所述操作包括:响应于电源中断,访问所述日志并将所述奇偶校验与所存储的数据同步。
11.根据权利要求8所述的计算设备,其中至少部分由于所述奇偶校验与存储装置的空闲部分相关联,所以写入操作不会导致对所述奇偶校验的更新。
12.根据权利要求8所述的计算设备,其中要由奇偶检测功能的所述奇偶校验备份的数据量是可配置的。
13.根据权利要求12所述的计算设备,其中附加的数据量被配置为使用镜像备份方案而被备份。
14.一种非暂态计算机可读存储介质,具有存储在其上的计算机可读指令,所述计算机可读指令在由计算设备的一个或多个处理器执行时使所述计算设备执行操作,所述操作包括:
访问指示存储装置的空闲部分和所述存储装置的已分配部分的信息;
响应于针对写入操作的请求,确定在生成奇偶校验时所述写入操作是与所述存储装置的所述空闲部分配对,而非与所述存储装置的所述已分配部分配对;
基于所述写入操作被确定为与所述存储装置的所述空闲部分配对,允许写入请求在所述存储装置的所述空闲部分中被执行,而无需更新日志;以及
基于所请求的写入来更新所述奇偶校验,而无需更新所述日志。
15.根据权利要求14所述的非暂态计算机可读存储介质,还包括存储在其上的计算机可读指令,所述计算机可读指令在由所述计算设备的所述一个或多个处理器执行时,使所述计算设备执行操作,所述操作包括:
响应于对所述写入请求的执行的中断,访问所述日志以确定所述写入请求是否应被重播。
16.根据权利要求14所述的非暂态计算机可读存储介质,其中在所述写入请求跨越共享所述奇偶校验的存储装置的所有部分时,所述写入请求还被允许被执行,而不需要更新所述日志。
17.根据权利要求15所述的非暂态计算机可读存储介质,还包括:
至少部分地基于存储分配信息来确定所述写入请求具有与存储装置的已分配部分相关联的奇偶校验备份。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/984,135 US10664346B2 (en) | 2018-05-18 | 2018-05-18 | Parity log with by-pass |
US15/984,135 | 2018-05-18 | ||
PCT/US2019/030790 WO2019221951A1 (en) | 2018-05-18 | 2019-05-06 | Parity log with by-pass |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112119380A CN112119380A (zh) | 2020-12-22 |
CN112119380B true CN112119380B (zh) | 2024-03-22 |
Family
ID=66655446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980032632.7A Active CN112119380B (zh) | 2018-05-18 | 2019-05-06 | 带有旁路的奇偶校验记录 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10664346B2 (zh) |
EP (1) | EP3794451A1 (zh) |
CN (1) | CN112119380B (zh) |
WO (1) | WO2019221951A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11360699B1 (en) | 2019-08-30 | 2022-06-14 | Veritas Technologies Llc | Method and system for improved write performance in erasure-coded storage systems |
US11385806B1 (en) * | 2020-12-20 | 2022-07-12 | Veritas Technologies Llc | Methods and systems for efficient erasure-coded storage systems |
CN116483284B (zh) * | 2023-05-12 | 2024-05-28 | 深圳天融信创新科技有限公司 | 一种读写虚拟硬盘的方法、装置、介质及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1118503A (zh) * | 1994-05-05 | 1996-03-13 | 国际商业机器公司 | 带有空闲块奇偶校验高速缓存的第五级raid |
CN1703880A (zh) * | 2002-10-03 | 2005-11-30 | In4S公司 | 位串的校验方法及装置 |
US9946604B1 (en) * | 2015-02-04 | 2018-04-17 | Tintri Inc. | Optimized remote cloning |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7996609B2 (en) * | 2006-12-20 | 2011-08-09 | International Business Machines Corporation | System and method of dynamic allocation of non-volatile memory |
US20080276124A1 (en) * | 2007-05-04 | 2008-11-06 | Hetzler Steven R | Incomplete write protection for disk array |
US8880843B2 (en) * | 2010-02-10 | 2014-11-04 | International Business Machines Corporation | Providing redundancy in a virtualized storage system for a computer system |
US20120011314A1 (en) * | 2010-07-01 | 2012-01-12 | Infinidat Ltd. | Storage system with reduced energy consumption and method of operating thereof |
US8886880B2 (en) * | 2012-05-29 | 2014-11-11 | Dot Hill Systems Corporation | Write cache management method and apparatus |
US9454434B2 (en) * | 2014-01-17 | 2016-09-27 | Netapp, Inc. | File system driven raid rebuild technique |
US9946607B2 (en) * | 2015-03-04 | 2018-04-17 | Sandisk Technologies Llc | Systems and methods for storage error management |
US10564865B2 (en) | 2016-03-22 | 2020-02-18 | Seagate Technology Llc | Lockless parity management in a distributed data storage system |
-
2018
- 2018-05-18 US US15/984,135 patent/US10664346B2/en active Active
-
2019
- 2019-05-06 EP EP19726810.5A patent/EP3794451A1/en active Pending
- 2019-05-06 WO PCT/US2019/030790 patent/WO2019221951A1/en active Application Filing
- 2019-05-06 CN CN201980032632.7A patent/CN112119380B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1118503A (zh) * | 1994-05-05 | 1996-03-13 | 国际商业机器公司 | 带有空闲块奇偶校验高速缓存的第五级raid |
CN1703880A (zh) * | 2002-10-03 | 2005-11-30 | In4S公司 | 位串的校验方法及装置 |
US9946604B1 (en) * | 2015-02-04 | 2018-04-17 | Tintri Inc. | Optimized remote cloning |
Also Published As
Publication number | Publication date |
---|---|
WO2019221951A1 (en) | 2019-11-21 |
EP3794451A1 (en) | 2021-03-24 |
US20190354433A1 (en) | 2019-11-21 |
US10664346B2 (en) | 2020-05-26 |
CN112119380A (zh) | 2020-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10503620B1 (en) | Parity log with delta bitmap | |
US9189311B2 (en) | Rebuilding a storage array | |
EP2732373B1 (en) | Method and apparatus for flexible raid in ssd | |
US8065558B2 (en) | Data volume rebuilder and methods for arranging data volumes for improved RAID reconstruction performance | |
US8055938B1 (en) | Performance in virtual tape libraries | |
US9690651B2 (en) | Controlling a redundant array of independent disks (RAID) that includes a read only flash data storage device | |
CN112119380B (zh) | 带有旁路的奇偶校验记录 | |
CN103019888A (zh) | 备份方法与装置 | |
JP4324088B2 (ja) | データ複製制御装置 | |
US20170168896A1 (en) | Raid-6 for storage system employing a hot spare drive | |
US11429498B2 (en) | System and methods of efficiently resyncing failed components without bitmap in an erasure-coded distributed object with log-structured disk layout | |
US20200341871A1 (en) | Raid schema for providing metadata protection in a data storage system | |
US20190065325A1 (en) | Restore current version of a track from a non-volatile storage into a new location in cache | |
US9286163B2 (en) | Data recovery scheme based on data backup status | |
US20100138603A1 (en) | System and method for preventing data corruption after power failure | |
EP4293493A1 (en) | Systems and methods for a redundant array of independent disks (raid) using a raid circuit in cache coherent interconnect storage devices | |
US7313724B1 (en) | Method and apparatus for synchronizing redundant data with a volume | |
US7409512B1 (en) | Method and apparatus for maintaining information that indicates valid regions of a working volume and using that information to delay volume initialization | |
US9104598B2 (en) | Systems and methods for medium error reporting and handling in storage devices | |
US20200363958A1 (en) | Efficient recovery of resilient spaces | |
US10809940B1 (en) | Multilevel resiliency | |
US11809274B2 (en) | Recovery from partial device error in data storage system | |
US20210208969A1 (en) | Dropped write error detection | |
CN111506259A (zh) | 数据存储、读取方法、装置、设备及可读存储介质 | |
US11592994B2 (en) | Providing preferential treatment to metadata over user data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |