CN112088366A - 主机感知更新写 - Google Patents
主机感知更新写 Download PDFInfo
- Publication number
- CN112088366A CN112088366A CN201980030460.XA CN201980030460A CN112088366A CN 112088366 A CN112088366 A CN 112088366A CN 201980030460 A CN201980030460 A CN 201980030460A CN 112088366 A CN112088366 A CN 112088366A
- Authority
- CN
- China
- Prior art keywords
- data
- logical address
- unit
- storage unit
- host
- 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.)
- Pending
Links
- 238000003860 storage Methods 0.000 claims abstract description 168
- 238000000034 method Methods 0.000 claims abstract description 105
- 238000013507 mapping Methods 0.000 claims abstract description 67
- 238000004590 computer program Methods 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 13
- 238000012005 ligant binding assay Methods 0.000 abstract description 88
- 229920001485 poly(butyl acrylate) polymer Polymers 0.000 abstract description 53
- 230000008569 process Effects 0.000 description 78
- 230000006870 function Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 12
- 210000004027 cell Anatomy 0.000 description 9
- 239000000872 buffer Substances 0.000 description 8
- 238000011084 recovery Methods 0.000 description 8
- 238000013519 translation Methods 0.000 description 7
- 230000004888 barrier function Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000003321 amplification Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 238000003199 nucleic acid amplification method Methods 0.000 description 3
- 210000000352 storage cell Anatomy 0.000 description 3
- 230000001010 compromised effect Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0656—Data buffering arrangements
-
- 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
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
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)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
- Hardware Redundancy (AREA)
- Memory System (AREA)
Abstract
一个实施例提供一种方法,其包括在存储单元上维持由主机查看的第一组逻辑地址(例如,逻辑块地址或LBA)与所述存储单元的第一组物理地址(例如,物理块地址或PBA)和第二组物理地址之间的映射数据。第一组逻辑地址的第一逻辑地址(例如,LBA)对应于所述第一组物理地址中维持第一逻辑地址的当前数据的第一物理地址(例如,PBA)。第一逻辑地址进一步对应于第二组物理地址中维持第一逻辑地址的先前数据的第二物理地址(例如,PBA)。所述方法还包括在所述存储单元处从所述主机接收命令以执行涉及所述第一逻辑地址的多设备操作。操作被原子地执行。
Description
本发明一般涉及存储系统,尤其涉及用于实现主机感知更新写协议的系统和方法。
背景技术
基于硬件的存储系统通常提供单独的非易失性存储以用于防止非故意掉电的数据保护。这种单独的非易失性存储的典型用途是实现预写式日志,其保证了遗漏的更新可以应用于与纠删码(erasure code)相关联的原子读-修改-写操作。通过比较,实现用于数据保护的纠删编码的软件定义的存储系统不能假定非易失性存储的存在,并且因此被迫使用附加存储设备来实现这些预写式日志,这增加了系统级的I/O负载,导致降低的吞吐量和增加的响应时间。
发明内容
一个实施例提供一种方法,其包括在存储单元上维持由主机查看的第一组逻辑地址(例如,逻辑块地址或LBA)与所述存储单元的第一组物理地址(例如,物理块地址或PBA)和第二组物理地址之间的映射数据。第一组逻辑地址中的第一逻辑地址(例如,LBA)对应于第一组物理地址中维持所述第一逻辑地址的当前数据的第一物理地址(例如,PBA)。第一逻辑地址还对应于所述第二组物理地址中维持所述第一逻辑地址的先前数据的第二物理地址(例如,PBA)。所述方法进一步包括在所述存储单元处从所述主机接收命令以执行涉及所述第一逻辑地址的多设备操作。操作被原子地执行。
本发明的这些和其它方面、特征和优点将参考附图和本文的详细描述来理解,并且将借助于在所附权利要求中特别指出的各种元件和组合来实现。应当理解,本发明的附图和详细描述的上述一般描述和以下简要描述是本发明的优选实施例的示例性和说明性的,而不是对所要求保护的本发明的限制。
附图说明
在说明书结尾处的权利要求中特别指出并明确要求了被认为是本发明的主题。从下面结合附图的详细描述中,本发明的前述和其它目的、特征和优点将变得显而易见,其中:
图1A示出了在时间t0处于初始状态的传统软件定义的纠删编码的存储系统;
图1B示出了在时间t1的存储系统;
图1C示出了在时间t2的存储系统;
图1D示出了在时间t3的存储系统;
图1E示出了在时间t4的存储系统;
图1F示出了在时间t5的存储系统;
图2A示出了一个或多个实施例中的用于存储的示例框架;
图2B示出了一个或多个实施例中的用于存储的另一示例框架;
图2C示出了一个或多个实施例中的用于存储的又一示例框架;
图3是示出在一个或多个实施例中用于实现主机感知更新协议以保持单个奇偶校验纠删码完整的示例过程的流程图;以及
图4是示出了用于实现本发明实施例的信息处理系统的高级框图。
详细描述通过参考附图的示例解释了本发明的优选实施例以及优点和特征。
具体实施方式
本发明一般涉及存储系统,尤其涉及用于实现主机感知更新写协议的系统和方法。一个实施例的方法包括在存储单元上维持由主机查看的第一组逻辑地址(例如,逻辑块地址或LBA)与所述存储单元的第一组物理地址(例如,物理块地址或PBA)和第二组物理地址之间的映射数据。第一组逻辑地址的第一逻辑地址(例如,LBA)对应于第一组物理地址中的第一物理地址(例如,PBA),所述第一物理地址维持第一逻辑地址的当前数据。第一逻辑地址进一步对应于第二组物理地址中的第二物理地址(例如,PBA),所述第二物理地址维持第一逻辑地址的先前数据。所述方法还包括在所述存储单元处从主机接收命令以执行涉及第一逻辑地址的多设备操作。操作被原子地执行。
为了说明的目的,这里使用的术语“纠删编码的存储系统”通常指实现用于数据弹性的一般类型的算法的存储系统,例如但不限于实现任意级别的独立磁盘冗余阵列(RAID)的存储系统。
实现用于数据保护的纠删编码的常规软件定义的存储系统不能假定非易失性存储的存在。图1A-1F示出了用于在传统的软件定义的纠删编码的存储系统10上执行更新写操作的示例步骤序列。
图1A示出了在时间t0处于初始状态的存储系统10。存储系统10实现用于数据保护的3+P纠删码。存储系统10包括一个或多个非易失性存储单元12,用于维持数据(例如,数据块和奇偶校验块)。存储系统10还包括易失性缓冲器11,用于在一个或多个存储单元12上的输入/输出(I/O)操作期间保持数据。如图1A所示,在初始状态,一个或多个存储单元12保持数据块D0、数据块D1、数据块D2和根据下面提供的奇偶校验等式(1)计算的奇偶校验块DP:
DP=D0+D1+D2 (1),
其中+表示异或(XOR)运算。
奇偶校验条带包括一组数据块和与该组数据块对应的一个或多个奇偶校验块。例如,数据块D0-D2和奇偶校验块DP一起形成奇偶校验条带。
图1B示出了在时间t1的存储系统10。假设更新写操作是由外部主机系统发出的多设备操作,并且需要用新数据块D0'更新写一个或多个存储单元12中的数据块D0。在时间t1,响应于从外部主机系统接收更新写操作,存储系统10将数据块D0从一个或多个存储单元12读取到易失性缓冲器11中。
图1C示出了在时间t2的存储系统10。为了成功地完成更新写操作,奇偶校验块DP也必须被更新为新的奇偶校验块DP'。在时间t2,存储系统10将奇偶校验块DP从一个或多个存储单元12读取到易失性缓冲器110中。
图1D示出了在时间t3的存储系统10。在时间t3,存储系统10根据以下提供的奇偶等式(2)计算新的奇偶块DP':
DP'=D0+D0'+DP (2)
图1E示出了在时间t4的存储系统10。在时间t4,存储系统10将新数据块D0'写入一个或多个存储单元120。
图1F示出了在时间t5的存储系统10。在时间t5,存储系统10将新的奇偶校验块DP'写入一个或多个存储单元120以完成更新写操作。
涉及数据块D0和奇偶校验条DP的步骤是异步的,因此图1A-1F中所示的步骤序列是一种可能的排序。
如果在时间t4和时间t5之间发生非故意掉电事件,则导致数据完整性暴露。具体地,奇偶校验块DP可能被损害,导致存储系统10不能从其恢复的不确定的奇偶校验状态。奇偶校验块DP的不确定奇偶校验状态可以根据下面提供的表达式(3)来表示:
DP!=D0'+D1+D2 (3)
如果外部主机系统重试更新写操作,则存储系统10将提供无效的新奇偶块DP',因为存储系统10将根据下面提供的奇偶等式(4)计算新奇偶块DP':
DP'=D0'+D0'+DP (4)
其中,由于XOR运算的特性,奇偶等式(4)被简化为下面提供的奇偶等式(5):
DP'=DP (5)
如果在时间t4和t5执行的步骤被颠倒,则类似的数据完整性暴露导致掉电事件。此外,如果使用更复杂的奇偶校验等式来表示奇偶校验块,则存在数据完整性暴露的更大可能性。因此,需要强化更新写操作,并且需要该多器件操作是原子的。
期望软件定义的系统展示从诸如掉电事件恢复所需的属性,如原子性和与持久性相关联的其他属性。例如,如果在更新写操作期间发生非故意的掉电,则软件定义的存储系统必须能够恢复到一致的存储状态并确保正确的纠删码。
在没有非易失性缓冲器的常规软件定义的存储系统中,日志用于实现数据更新的原子性。日志通常存储在存储系统的附加非易失性存储单元中。可以实现复制以用于日志的数据保护,以避免导致掉电事件中的数据完整性暴露。
用于实现数据更新的原子性的一种常规方法是预写式日志(即,阴影日志),其涉及在更新奇偶性块时使用预写式记事务日志。预写式日志导致高I/O放大损失。
例如,令d1'、d2'、…、dN'表示需要原子更新写(即,跨非易失性存储单元原子地更新写)的新数据块的一组N个逻辑地址(例如,逻辑块地址或LBA)。令p1'、p2'、…、pM'表示用于新奇偶校验块的M个LBA的集合,所述新奇偶校验块对应于N个LBA并且还需要原子更新写。令d1、d2、…、dN和p1、p2、…、pM分别表示N个LBA和M个LBA的先前版本。
为了更新写奇偶校验块,需要涉及从非易失性存储单元读取N个LBA和M个LBA的先前版本(即,d1、d2、…、dN和p1、p2、…、pM)的读操作,使得可以使用奇偶校验等式从N个LBA计算M个LBA。这些读取操作需要N+M个块读取。
为了实现更新写的原子性,在将新数据块和新奇偶校验块写入到非易失性存储单元之前写入多块日志记录。日志记录包括新数据块和新奇偶校验块(即,d2’,…,dN’和p1’,p2’,…,pM’)。日志记录可以包括作为日志记录本身的一部分的内嵌的新数据和奇偶校验值,或者包括指向从实现管理的阴影块区域分配的块的指针。在任一情况下,都需要对日志记录和/或阴影块区的N+M个块写入。此外,需要日志记录的C个镜像副本来保护日志记录本身免于数据丢失,其中C是被选择为与由存储系统实现的纠删码的容错相匹配的值。结果,写入前记录日志导致C(N+M)个写入的写入放大因子。
只有当新数据块和奇偶校验块被安全地写入日志记录时,新数据块和奇偶校验块才可以被写入非易失性存储单元。因此,使用预写式日志的原子更新写的总I/O放大因子是N+M个块读取和C(N+M)个写入的总和。
由于数据块和奇偶校验块不同步,奇偶校验块可能被损害(即,不确定的奇偶校验状态)。
一个实施例提供了一种用于存储系统上的写减少(即,减少写I/O负担)的系统和方法,其使用影子日志结合写入前事务日志,以在底层存储使用写时拷贝(COW)方法时通过原子性来维持数据完整性。在没有这样的数据保护的情况下,如果存在非预期的掉电,则可能发生数据完整性暴露。一个实施例应用于闪存存储和COW文件系统,例如ZFS。一个实施例避免了通常为阴影副本和写入前事务日志提供弹性所需的附加写操作。
COW存储单元,例如闪存,具有内部转换层,该内部转换层维持用于将外部主机系统看到的一组逻辑地址(例如LBA)映射(“映射数据”)到存储单元的一组物理地址(例如物理块地址或PBA)的元数据信息。由于闪存存储通常不支持针对写操作的就地更新,因此在内部维持映射数据允许存储单元支持完全擦除块的垃圾回收。
图2A示出了一个或多个实施例中的用于存储的示例框架50。示例框架50包括软件定义的存储系统100和连接到存储系统100的外部主机系统60。
在一个实施例中,存储系统100是包括用于维持数据(例如,数据块和奇偶校验块)的一个或多个非易失性存储单元120(例如,COW存储单元)的存储阵列。存储系统100还包括I/O单元130,其被配置为与主机系统60交换数据,诸如接收命令(例如,读命令、写命令等)。存储系统100还包括易失性缓冲器110,用于在响应于所接收的命令而对一个或多个存储单元120执行I/O操作期间保持数据。在一个实施例中,存储系统100实现用于数据保护的纠删码(即,纠删码存储系统)。
在一个实施例中,主机系统60将存储在一个或多个存储单元120上的数据视为LBA的虚拟化地址空间,而不知道一个或多个存储单元120的边界或由存储系统100实现的纠删码的细节。主机系统60包括I/O单元61,其被配置为与存储系统100交换数据,诸如发出命令(例如,读命令、写命令等)。主机系统60可向虚拟化地址空间发出命令,而无需知道写命令可涉及附加的更新写操作以保持纠删码完整。
在一个实施例中,存储系统100还包括控制器/虚拟化单元140,其被配置为对于主机系统60所见的虚拟化地址空间的LBA,识别包含与该LBA对应的数据块和奇偶校验块的一个或多个存储单元120的一个或多个部分。控制器/虚拟化单元140将虚拟化地址空间的逻辑地址映射到一个或多个存储单元120的物理地址(例如,将虚拟化地址空间的LBA映射到包含相应数据块和奇偶校验块的一个或多个存储单元120的PBA)。在另一个实施例中,控制器/虚拟化单元140改为在主机系统60上实现(如图2B所示)。在又一个实施例中,控制器/虚拟化单元140在另一个外部系统上实现,例如控制器系统80(如图2C所示)。
与传统的软件定义的存储系统相比,框架50支持对存储系统100的行为的修改以及对与主机系统60的I/O接口的修改,以实现所需的附加写操作的数量的减少。具体地,框架50扩展在至少一个存储单元120的内部转换层121中维持的映射元数据。扩展的映射元数据包括但不限于先前版本映射信息125,其识别和跟踪一个或多个LBA的一个或多个先前版本副本(即,数据块或奇偶块的LBA)。框架50还提供由控制器/虚拟化单元140和一个或多个存储单元120实现的一个或多个新I/O接口,以便于处理和管理先前版本映射信息。
存储单元120的内部转换层121被配置成实现以下功能:(1)用于确定与LBA相关联的存储单元120的PBA的功能,以及(2)用于为写操作检索存储单元120的空闲PBA的功能。
框架50支持其中大多数功能在存储中执行的主机感知模型以及其中用于提供新功能的必要信息在主机级可用且可操作的主机管理方法。
在一个实施例中,与传统的软件定义的存储系统不同,LBA可以对应于多个PBA。例如,LBA可以对应于维持数据块的第一PBA和维持数据块的先前版本副本的第二PBA。尽管本文稍后详细描述的先前版本映射信息的实施例识别并跟踪一个或多个LBA的单个先前版本副本,但先前版本映射信息可识别并跟踪一个或多个LBA的多个先前版本副本。
先前版本映射信息可以以多种方式存储在至少一个存储单元120上,例如但不限于散列表、键值存储、数据库等。由于预期先前版本副本的总数显著小于可用的LBA的总数,因此在一个实施例中,先前版本副本可单独存储,例如使用稀疏数据结构以用于有效存储,进而消除在每一LBA的先前版本副本的先前版本映射信息中具有条目的要求。
在一个实施例中,通过对于LBA包括指向维持该LBA的数据的当前版本副本(即,当前数据块或当前奇偶块)的第一PBA的第一指针,以及指向维持该LBA的数据的先前版本副本(即,先前数据块或先前奇偶块)的第二PBA的第二指针,来实现存储单元120上的先前版本映射信息的管理。如本文稍后详细描述的,在至少一个存储单元120上保持先前版本映射信息便于跟踪至少一个存储单元120的内部操作的状态,以便在掉电事件之后进行数据恢复。
下面的表1提供了在一个或多个实施例中的LBA的示例条目,其中,该条目被包括在存储单元120上的先前版本映射信息中。
如以上提供的表1所示,条目包括多个字段。多个字段包括但不限于以下中的一个或多个:包含用于条目的本地标识符(例如,存储阵列中的地址)的可选ID字段,用于在条目的内部管理中使用,(2)包含由主机系统60看到/查看的虚拟化地址空间的LBA的LBA字段,(3)包含存储单元120的PBA的当前PBA字段,其包含LBA的数据的当前版本副本,(4)包含存储单元120的不同PBA的先前PBA字段,其包含LBA的数据的先前版本副本,(5)包含gwc标志的全局写完成(gwc)字段,其指示写操作是否完成,(6)包含tsn的事务序列号(tsn)字段,tsn在存储单元120上的先前版本映射信息中包括的所有条目中是唯一的,以及(7)包含hmd的主机定义的元数据(hmd)字段。
如果条目为空,那么LBA字段可改为维持空(NULL)值以将条目标记为空。如果未指派LBA的数据的当前版本副本,那么当前PBA字段可改为维持空值。如果未指派LBA的数据的先前版本副本,那么先前PBA字段可改为维持空值。
为了说明的目的,让术语“数据单元”通常指包括一个或多个PBA的存储单元120的一部分,所述PBA包含一个或多个数据块。让术语“奇偶校验单元”一般指存储单元120的包括一个或多个PBA的部分,所述PBA包含一个或多个奇偶校验块。让术语“受影响的数据单元”一般指包含需要更新写以成功完成未完成命(outstanding command)的数据块的数据单元。让术语“受影响的奇偶校验单元”一般指包含需要更新写以成功完成未完成命令的奇偶校验块的奇偶校验单元。
在一个实施例中,hmd识别未完成更新写操作中涉及的一个或多个数据块的一个或多个LBA,以及包含该一个或多个数据块的一个或多个受影响的数据单元。在另一实施例中,hmd可用于存储与写操作有关的其它主机特定信息。
在一个实施例中,不是未完成的更新写操作的一部分的数据的LBA不需要在存储单元120上的先前版本映射信息中具有条目。
在至少一个存储单元120上保持先前版本映射信息确保了对存储系统100的原子写操作。
在一个实施例中,存储系统100实现单个奇偶校验纠删码。在另一实施例中,存储系统100利用更复杂的奇偶校验等式/布置来实现纠删码。
图2B示出了一个或多个实施例中的用于存储的另一示例框架51。在框架51中,控制器/虚拟化单元140和易失性缓冲器110改为在主机系统60上实现。
类似于上述框架50,框架51支持对存储系统100的行为的修改以及对与主机系统60的I/O接口的修改,以实现所需的附加写操作的数量的减少。框架51提供由控制器/虚拟化单元140和一个或多个存储单元120分别经由I/O单元61和130实现的一个或多个新的I/O接口,以便于处理和管理先前版本映射信息。框架51支持其中大多数功能在存储中执行的主机感知模型以及其中用于提供新功能的必要信息在主机级可用且可操作的主机管理方法两者。
图2C示出了一个或多个实施例中的用于存储的另一示例框架52。在架构52中,控制器/虚拟化单元140和易失性缓冲器110改为在另一外部系统上实现,例如控制器系统80,控制器系统80还包括被配置为与主机系统60交换数据的第一I/O单元81,以及被配置为与存储系统100交换数据的第二I/O单元82。
类似于上述框架50,框架52支持对存储系统100的行为的修改以及对与主机系统60的I/O接口的修改,以实现所需的附加写操作的数量的减少。框架52提供由控制器/虚拟化单元140和一个或多个存储单元120分别经由I/O单元82和130实现的一个或多个新的I/O接口,以便于处理和管理先前版本映射信息。框架52支持其中大多数功能在存储中执行的主机感知模型以及其中用于提供新功能的必要信息在主机级可用且可操作的主机管理方法二者。
图3是示出在一个或多个实施例中用于实现主机感知更新协议以保持单个奇偶校验纠删码完整的示例过程400的流程图。过程框401包括主机系统60向虚拟化地址空间发出写命令。例如,假设主机系统60发出写命令(例如,write(b,d0'))以将新数据块d0'写入虚拟地址空间的LBA b。在一个实施例中,写命令可以指连续LBA的范围。
处理框402包括控制器/虚拟化单元140,其识别每个受影响的数据单元和每个受影响的奇偶校验单元,以及对应于每个受影响的数据单元和每个受影响的奇偶校验单元的每个LBA,其中每个受影响的数据单元和每个受影响的奇偶校验单元需要更新写以成功完成写命令。在过程框402中,控制器/虚拟化单元140识别出需要更新写操作来成功地完成写命令。
例如,假设控制器/虚拟化单元140识别出受影响的数据单元是具有相应LBAn的数据单元0,并且受影响的奇偶校验单元是具有相应LBA m的奇偶校验单元3。控制器/虚拟化单元140在具有相应LBA n的数据单元0上发出读命令(例如,read(0,n))以检索当前数据块d0(即,当前版本副本),并且在具有相应LBA m的奇偶校验单元3上发出另一个读命令(例如,read(3,m))以检索当前奇偶校验块p0(即,当前版本副本)。控制器/虚拟化单元140然后计算新的奇偶校验块P0',其中P0'=d0+d0'+p0。
过程框403包括控制器/虚拟化单元140递增当前事务序列号tn。事务序列号tn对应于未完成的更新写操作。过程框403还包括控制器/虚拟化单元140创建事务记录tr。事务记录tr包括每个受影响的数据单元的列表,每个LBA对应于每个受影响的数据单元,并且可选地包括时间戳。例如,假设控制器/虚拟化单元140创建包括数据单元0、LBA n和时间戳time(例如,createtr(0,n,time))的事务记录tr。
过程框404包括控制器/虚拟化单元140在需要更新写的每个受影响的数据单元和每个受影响的奇偶校验单元上发起更新写操作,以成功完成写命令。例如,假设控制器/虚拟化单元140在以下各项中的每一个上发起更新写操作:具有相应LBA n的数据单元0用于写入新数据块d0'(例如,write(0,n,d0',update,tn,tr)),并且具有相应LBA m的奇偶校验单元3用于写入新奇偶校验块p0'(例如,write(3,m,p0',update,tn,tr))。控制器/虚拟化单元140并行地向每个受影响的数据单元和每个受影响的奇偶校验单元发出写命令。所发出的每个写命令包括以下参数:更新写标志update被设置以指示写命令是更新写操作、事务序列号tn和事务记录tr。
在控制器/虚拟化单元140向每个受影响的数据单元和每个受影响的奇偶校验单元发出写命令之后,控制器/虚拟化单元140进行到过程框405,以等待来自每个受影响的数据单元和每个受影响的奇偶校验单元的写完成通知。当控制器/虚拟化单元140在过程框405中等待时,数据单元0执行过程框421-425的步骤,并且奇偶校验单元3执行处理框441-445的步骤。过程框421-425的步骤与过程框441-445的步骤异步(即,处理框425和445的完成可以以任何顺序发生)。
过程框421包括数据单元0响应于从控制器/虚拟化单元140接收到写命令而确定对应于LBA n的数据单元0的PBA(例如,getPBA(n))。例如,假设数据单元0通过其内部转换层确定PBA j对应于LBA n。过程框421还包括数据单元0执行对其先前版本映射信息(保持在其内部转换层中)的查找搜索,以检索LBA n的条目vmed(例如vmap_find(n))。条目vmed识别并跟踪LBAn的先前版本副本。如果查找搜索成功,则返回条目vmed。过程框421还包括确定PBA j的状态和条目vmed对于更新写(例如,updw_check(j,vmed))是否有效。如果PBA j的状态和条目vmed对于更新写都无效,则可调用错误恢复过程。如果PBA j的状态和条目vmed对于更新写有效,那么数据单元0进行到过程框422。
过程框422包括数据单元0检索数据单元0的空闲PBA k用作目标PBA来写入新数据块d0'(例如,getReePBA())。如果数据单元0不能检索空闲PBA,则可调用错误恢复过程。过程框422还包括数据单元0将LBA n的新条目添加到其先前版本映射信息(例如,add_vmap(n,NULL,j,tn,tr))。例如,新条目包括具有以下分配值的以下字段:分配空值的当前PBA字段,(2)分配j的先前PBA字段,(3)分配tn的tsn字段,(4)分配tr的hmd字段,以及(5)清除(即,未设置)的gwc字段。添加新条目使存储于PBA j中且与LBA n相关联的当前数据块d0两者免于被擦除或重新使用,借此使其可用于数据恢复操作(例如,在掉电的情况下)。由于没有写入数据块,所以添加新条目仅导致较小的原子表格更新。
过程框423包括数据单元0将新数据块d0'写入空闲PBA k(例如,写(k,d0'))。
过程框424包括数据单元0通过将k分配给条目的当前PBA字段(例如,set_vmap_curr(n,tn,k))来更新其先前版本映射信息中的与LBA n相对应并包括事务序列号tn的条目。该更新是仅在新数据块d0'被写入PBA k之后发生的原子表更新。
过程框425包括数据单元0向控制器/虚拟化单元140发出写完成通知,确认其从控制器/虚拟化单元140接收的写命令完成。
过程框441包括奇偶校验单元3响应于从控制器/虚拟化单元140接收到写命令而确定奇偶校验单元3的与LBA m对应的PBA (例如,getPBA(m))。例如,假设奇偶校验单元3通过其内部转换层确定PBA f对应于LBA m。过程框441还包括奇偶校验单元3执行对其先前版本映射信息(保持在其内部转换层中)的查找搜索,以检索LBA m的条目vmep(例如vmap_find(m))。条目vmep识别并跟踪LBA m的先前版本副本。如果查找搜索成功,则返回条目vmep。过程框441还包括确定PBA f和条目vmep的状态对于更新写(例如,updw_check(f,vmep))是否有效。如果PBA f的状态和条目vmep对于更新写都无效,则可调用错误恢复过程。如果PBA f的状态和条目vmep对于更新写是有效的,则奇偶校验单元3前进到过程框442。
过程框442包括奇偶校验单元3,其检索奇偶校验单元3的空闲PBA g以用作目标PBA来写入新的奇偶校验块p0'(例如,getreePBA())。如果奇偶校验单元3不能检索空闲PBA,则可调用错误恢复过程。过程框442还包括奇偶校验单元3将LBA m的新条目添加到其先前版本映射信息(例如add_vmap(m,NULL,f,tn,tr))。例如,新条目包括具有以下分配值的以下字段:分配空值的当前PBA字段,(2)分配f的先前PBA字段,(3)分配tn的tsn字段,(4)分配tr的hmd字段,以及(5)清除(即,未设置)gwc字段。添加新条目使存储于PBA f中且与LBA m相关联的当前奇偶校验块p0免于被擦除或重新使用,借此使其可用于数据恢复操作(例如,在掉电的情况下)。由于没有写入数据块,所以添加新条目仅导致较小的原子表格更新。
过程框443包括奇偶校验单元3将新奇偶校验块p0'写入空闲PBAg(例如,写(g,p0'))。
过程框444包括奇偶校验单元3通过将g分配给条目的当前PBA字段(例如,set_vmp_curr(m,tn,f))来更新其先前版本映射信息中的与LBA m对应并包括事务序列号tn的条目。该更新是仅在新奇偶校验块p0'被写入PBA g之后发生的原子表更新。
过程框445包括奇偶校验单元3向控制器/虚拟化单元140发出写完成通知,确认其从控制器/虚拟化单元140接收的写命令完成。
过程框405包括控制器/虚拟化单元140,其通过等待来自数据单元0和奇偶校验单元3的写完成通知,确认向数据单元0和奇偶校验单元3发出的未完成写命令完成,来实现屏障同步(“barrier sync”)操作。在一个实施例中,对受影响的单元(即,受影响的数据单元或受影响的奇偶校验单元)的附加写命令被阻止,直到控制器/虚拟化单元140从受影响的单元接收到写完成通知。在一个实施例中,如果在受影响单元上维持的先前版本映射信息识别并跟踪LBA的多个先前版本副本,则一旦达到先前版本副本的总数的限制,就阻止对受影响奇偶校验带区的受影响块(即,数据块和奇偶校验块)的附加写命令。
过程框406包括控制器/虚拟化单元140响应于从每个受影响的单元接收到写完成通知而向每个受影响的单元发出全局写完成命令。例如,假设控制器/虚拟化单元140向下列受影响的单元中的每一个发出全局写完成命令:具有相应LBA n的数据单元0(例如,global_wcomp(0,n,tn)),以及具有相应LBA m的奇偶校验单元3(例如,global_wcomp(3,m,tn))。所发出的每个全局写命令包括事务序列号tn作为参数。
在控制器/虚拟化单元140向每个受影响的单元发出全局写命令之后,控制器/虚拟化单元140进行到过程框407,以等待来自每个受影响的单元的全局写完成通知。当控制器/虚拟化单元140在过程框407中等待时,数据单元0执行过程框426-427的步骤,并且奇偶校验单元3执行过程框446-447的步骤。过程框426-427的步骤与过程框446-447的步骤异步(即,过程框427和447的完成可以任何次序发生)。
过程框426包括数据单元0响应于从控制器/虚拟化单元140接收全局写命令,通过设置条目的gwc标志(例如,set_vmp_gwc(n,tn))来更新其先前版本映射信息中的条目,该条目对应于LBA n并且包括事务序列号tn。在设置gwc标记之后,数据单元0前进到过程框427。
过程框427包括数据单元0向控制器/虚拟化单元140发出全局写完成通知,确认它从控制器/虚拟化单元140接收的全局写完成命令已完成。
过程框446包括奇偶校验单元3响应于从控制器/虚拟化单元140接收全局写命令,通过设置条目的gwc标志(例如,set_vmp_gwc(m,tn))来更新其先前版本映射信息中的条目,该条目对应于LBAm并且包括事务序列号tn。在设置gwc标志之后,奇偶校验单元3前进到过程框447。
过程框447包括奇偶校验单元3向控制器/虚拟化单元140发出全局写完成通知,确认其从控制器/虚拟化单元140接收的全局写完成命令完成。
过程框407包括控制器/虚拟化单元140等待来自数据单元0和奇偶校验单元3的全局写完成通知,确认向数据单元0和奇偶校验单元3发出的未完成的全局写命令完成。在一个实施例中,控制器/虚拟化单元140在过程框407期间实现屏障同步操作(barrier syncoperation)。
过程框408包括控制器/虚拟化单元140响应于从每个受影响的单元接收到全局写完成通知而向主机系统60发出虚拟化地址空间的LBA b的主机写完成通知(例如,host_writecomp(b))。过程框408还包括控制器/虚拟化单元140向每个受影响的单元发出释放命令,以释放其先前版本映射信息中的条目,该条目对应于与受影响的单元相对应的LBA,并且包括事务序列号tn,使得更新写操作被硬化。例如,假设控制器/虚拟化单元140向以下受影响的单元中的每一个发出释放命令:具有对应LBA n的数据单元0(例如,free_vmap(0,n,tn)),以及具有对应LBA m的奇偶校验单元3(例如,free_vmap(3,m,tn))。发出的每个释放命令包括事务序列号tn作为参数。
在控制器/虚拟化单元140向每个受影响的单元发出释放命令之后,控制器/虚拟化单元140进行到过程框409,以等待来自每个受影响的单元的释放完成通知。当控制器/虚拟化单元140在过程框409中等待时,数据单元0执行过程框428-429的步骤,并且奇偶校验单元3执行过程框448-449的步骤。过程框428-429的步骤与过程框448-449的步骤异步(即,过程框429和449的完成可以任何次序发生)。
过程框428包括数据单元0响应于从控制器/虚拟化单元140接收到释放命令而移除其先前版本映射信息中的条目,该条目对应于LBA n并且包括事务序列号tn(例如,rem_vmap(n,tn))。
过程框449包括数据单元0向控制器/虚拟化单元140发出释放完成通知,确认它从控制器/虚拟化单元140接收的释放命令完成。
过程框448包括奇偶校验单元3响应于从控制器/虚拟化单元140接收到释放命令而移除其先前版本映射信息中的条目,该条目对应于LBAm并且包括事务序列号tn(例如rem_vmap(m,tn))。
过程框449包括奇偶校验单元3向控制器/虚拟化单元140发出释放完成通知,确认其从控制器/虚拟化单元140接收的释放命令是完整的。
过程框409包括控制器/虚拟化单元140等待来自数据单元0和奇偶校验单元3的释放完成通知,确认向数据单元0和奇偶校验单元3发出的未完成释放命令完成。在一个实施例中,控制器/虚拟化单元140在过程框409期间实现屏障同步操作。
过程框410是过程400的结束。
如果存储系统100实现具有更复杂的奇偶校验等式/排列的纠删码,则以与上述过程400类似的方式实现主机感知更新写协议。
下面的表2提供了在过程400的一些过程框期间与LBA n相对应的数据单元0上的先前版本映射信息中的条目。
表2
下面的表3提供了在过程400的一些过程框期间与LBA m相对应的奇偶校验单元3上的先前版本映射信息中的条目。
表3
如上面提供的表2-表3所示,在过程框405中,经由屏障同步操作,由数据单元0执行的步骤的顺序仅与由奇偶校验单元3执行的步骤的顺序同步。除了该特定时间点之外,数据单元0的状态相对于奇偶校验单元3的状态在其它时间点是任意的。
如表2所示,在过程框421和428期间,关于数据单元0的先前版本映射信息不包括LBA n的条目。如表3所示,在过程框441和448期间,关于奇偶校验单元3的先前版本映射信息不包括LBA m的条目。
下面表4提供了在一个或多个实施例中受影响单元的不同可能状态的列表。
表4
状态 | 描述 |
501 | 没有未决/未完成的写操作 |
502 | 可以撤销 |
503 | 可以完成原始写操作(重做) |
504 | 需要清理 |
505 | 可能需要对一个或多个其它受影响的单元清理 |
- | 状态无效 |
在一个或多个实施例中,下面的表5提供了指示在过程400的一些过程框期间数据单元0和奇偶校验单元3的状态信息。
如上面提供的表5所示,当数据单元0和奇偶校验单元3分别执行过程框424和441的步骤时,存储系统100的整体状态(即,数据单元0和奇偶校验单元3的状态)是503(即,可以完成原始写操作(重做))。
在从掉电事件恢复时,存储系统100需要确定每个LBA的状态。在一个实施例中,为了在掉电事件之后恢复存储系统100,可以基于状态信息和先前版本映射信息,例如包括在表2-表3中的先前版本映射信息和包括在表5中的状态信息,来确定与每个受影响的单元相对应的每个LBA的状态,例如,如果数据单元0上的先前版本映射信息不包括LBA n的条目,并且奇偶校验单元3上的先前版本映射信息不包括LBA m的条目(即,数据单元0正在执行过程框421或428的步骤,并且奇偶校验单元3正在执行过程框441或448的步骤),则存储系统100的整体状态(即,数据单元0的状态和奇偶校验单元3的状态)是501(即,不存在未决/未完成的写操作)。
如果存储系统100的整体状态(即,数据单元0的状态和奇偶校验单元3的状态)是502(即,撤消是可能的),则关于数据单元0的先前版本映射信息和关于奇偶校验单元3的先前版本映射信息包括先前版本副本而不包括当前版本副本。在这种状态下,通过将LBA的先前版本副本恢复到该LBA的当前版本副本,写操作可以被撤销到存在一致奇偶校验条带的状态。在一个实施例中,可通过从先前版本映射信息中移除对应于LBA的条目来恢复LBA的先前版本副本。如果主机系统60在发出写命令之后没有从控制器/虚拟化单元140接收到主机写完成通知,则主机系统60可重试该写命令。
如果存储系统100的整体状态(即,数据单元0的状态和奇偶校验单元3的状态)为503(即,可能完成原始写操作),则关于数据单元0的先前版本映射信息和关于奇偶校验单元3的先前版本映射信息包括LBA的先前版本副本和LBA的当前版本副本。在这种状态下,可以通过重新计算新的奇偶校验块来完成写命令。
如果存储系统100的整体状态(即,数据单元0的状态和奇偶校验单元3的状态)是504(即,需要清除),则存储系统100包含一致的奇偶校验条带,从而保持由存储系统100实现的纠删码完整。在这种状态下,仅需要清除以从先前的版本映射信息中移除相关联的条目。每个受影响的单元可以向存储系统100返回全局写完成通知。
如果存储系统100的整体状态(即,数据单元0的状态和奇偶校验单元3的状态)是505(即,可能需要对一个或多个其他受影响的单元进行清除),则一些但不是所有受影响的单元已经完成了清除。需要用未决释放命令对每个受影响的单元进行清除。
在一个实施例中,每个框架50、51和52提供一个或多个新的I/O接口以便于处理和管理先前版本映射信息。例如,一个或多个新I/O接口可以包括用于实现和管理图3中所示的主机感知更新写协议的命令集。下表6提供了一个或多个实施例中的命令集的示例实现。
表6
例如,在框架50中,命令集由控制器/虚拟化单元140和一个或多个存储单元120实现。作为另一个例子,在框架51中,命令集由控制器/虚拟化单元140和一个或多个存储单元120分别通过I/O单元61和130实现。作为又一个例子,在框架52中,该命令集由控制器/虚拟化单元140和一个或多个存储单元120分别通过I/O单元82和130实现。
每个框架50、51和52适用于其中更新写操作需要跨包括文件系统、数据库等的不同存储单元是原子的任何情形。
图4是示出了用于实现本发明的一个实施例的信息处理系统300的高级框图。计算机系统包括一个或多个处理器,例如处理器302。处理器302连接到通信基础设施304(例如,通信总线、跨接棒(cross-over bar)或网络)。
计算机系统可以包括显示接口306,其转发来自通信基础设施304(或来自未示出的帧缓冲器)的图形、文本和其他数据,以便在显示单元308上显示。计算机系统还包括主存储器310,优选地是随机存取存储器(RAM),并且还可以包括辅助存储器312。辅助存储器312可以包括例如硬盘驱动器314和/或可移动存储驱动器316,其表示例如软盘驱动器、磁带驱动器或光盘驱动器。可移动存储驱动器316以本领域普通技术人员公知的方式从可移动存储单元318读取和/或向其写入。可移动存储单元318代表例如软盘、压缩盘、磁带或光盘等,其由可移动存储驱动器316读取和写入。如将了解,可移除存储单元318包括其中存储有计算机软件和/或数据的计算机可读媒体。
在替代实施例中,辅助存储器312可以包括用于允许计算机程序或其它指令被加载到计算机系统中的其它类似装置。这种装置可以包括例如可移动存储单元320和接口322。这种装置的例子可以包括程序包和包接口(例如在视频游戏设备中找到的)、可移动存储器芯片(例如EPROM或PROM)和相关的插槽、以及其它可移动存储单元320和接口322,其允许软件和数据从可移动存储单元320传送到计算机系统。
计算机系统还可以包括通信接口324。通信接口324允许软件和数据在计算机系统和外部设备之间传输。通信接口324的示例可以包括调制解调器、网络接口(例如以太网卡)、通信端口或PCMCIA插槽和卡等。经由通信接口324传送的软件和数据是信号的形式,其可以是例如电子、电磁、光或能够由通信接口324接收的其他信号。这些信号经由通信路径(即,信道)326被提供给通信接口324。该通信路径326承载信号,并且可以使用电线或电缆、光纤、电话线、蜂窝电话链路、RF链路和/或其它通信信道来实现。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Java、Smalltalk、C++等,以及过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
从以上描述中,可以看出,本发明提供了用于实现本发明的实施例的系统、计算机程序产品和方法。本发明还提供了用于实现本发明的实施例的非瞬时性计算机可用存储介质。非瞬时性计算机可用存储介质具有计算机可读程序,其中程序在计算机上被处理时使计算机根据本文描述的实施例实现本发明的步骤。权利要求中对单数元件的引用不是要表示“一个且仅一个”,除非明确地这样声明,而是表示“一个或多个”。当前已知或以后将为本领域普通技术人员所知的上述示例性实施例的元件的所有结构和功能等同物旨在被本权利要求所包含。本文的权利要求要素不应根据35U.S.C.第112节第六段的规定来解释,除非使用“用于…的装置(means for)”或“用于…的步骤(step for)”来明确地表述该要素。
本文所用的术语仅是为了描述特定实施例的目的,而不是要限制本发明。如本文所用,单数形式“a(一个)”、“an(一个)”和“该(the)”旨在也包括复数形式,除非上下文另有明确指示。还将理解,术语“包括(comprises)”和/或“包含(comprising)”在本说明书中使用时,指定所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、组件和/或其组的存在或添加。
以下权利要求中的所有装置或步骤加功能元件的对应结构、材料、动作和等同物旨在包括用于与如具体要求保护的其它要求保护的元件组合执行功能的任何结构、材料或动作。已经出于说明和描述的目的给出了本发明的描述,但是该描述不是穷举的或者将本发明限制为所公开的形式。在不背离本发明的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释本发明的原理和实际应用,并且使本领域的其他普通技术人员能够理解本发明的具有各种修改的各种实施例,这些修改适合于所设想的特定用途。
Claims (20)
1.一种方法,包括:
在存储单元上维持由主机查看的第一组逻辑地址与所述存储单元的第一组物理地址和第二组物理地址之间的映射数据,其中所述第一组逻辑地址中的第一逻辑地址对应于所述第一组物理地址中维持所述第一逻辑地址的当前数据的第一物理地址,并且所述第一逻辑地址还对应于所述第二组物理地址中维持所述第一逻辑地址的先前数据的第二物理地址;以及
在所述存储单元处从所述主机接收命令以执行涉及所述第一逻辑地址的多设备操作,其中所述操作被原子地执行。
2.根据权利要求1所述的方法,其中所述操作是更新写操作。
3.根据权利要求2所述的方法,其中所述映射数据识别并跟踪所述第一逻辑地址的一个或多个先前版本副本,并且对于所述第一逻辑地址的每个先前版本副本,所述映射数据包括维持所述先前版本副本的对应物理地址。
4.根据权利要求2所述的方法,其中所述映射数据包括用于所述更新写操作的事务序列号。
5.根据权利要求2所述的方法,其中所述映射数据包括指示所述更新写操作中涉及的每个存储单元的主机定义的元数据。
6.根据权利要求4所述的方法,其中所述操作响应于所述主机从所述存储单元接收到指示多设备原子性的以下通知而完成:确认在所述存储单元上的更新写完成的通知、确认设置了全局写完成标记的通知、以及确认从所述映射数据中移除了映射数据中与所述第一逻辑地址相对应并且包括所述事务序列号的条目的通知。
7.根据权利要求1所述的方法,其中所述当前数据包括当前数据块,且所述先前数据包括先前数据块。
8.根据权利要求1所述的方法,其中所述当前数据包括当前奇偶校验块,并且所述先前数据包括先前奇偶校验块。
9.一种系统,包括:
至少一个处理器;以及
存储指令的非瞬时性处理器可读存储器设备,所述指令在由所述至少一个处理器执行时使所述至少一个处理器执行操作,所述操作包括:
在存储单元上维持由主机查看的第一组逻辑地址与所述存储单元的第一组物理地址和第二组物理地址之间的映射数据,其中所述第一组逻辑地址中的第一逻辑地址对应于所述第一组物理地址中维持所述第一逻辑地址的当前数据的第一物理地址,并且所述第一逻辑地址还对应于所述第二组物理地址中维持所述第一逻辑地址的先前数据的第二物理地址;以及
在所述存储单元处从所述主机接收命令以执行涉及所述第一逻辑地址的多设备操作,其中所述操作被原子地执行。
10.根据权利要求9所述的系统,其中所述操作是更新写操作。
11.根据权利要求10所述的系统,其中所述映射数据识别并跟踪所述第一逻辑地址的一个或多个先前版本副本,并且对于所述第一逻辑地址的每个先前版本副本,所述映射数据包括维持所述先前版本副本的对应物理地址。
12.根据权利要求10所述的系统,其中所述映射数据包括用于所述更新写操作的事务序列号。
13.根据权利要求10所述的系统,其中所述映射数据包括指示所述更新写操作中涉及的每个存储单元的主机定义的元数据。
14.根据权利要求12所述的系统,其中所述操作响应于所述主机从所述存储单元接收到指示多设备原子性的以下通知而完成:确认在所述存储单元上的更新写完成的通知、确认设置了全局写完成标记的通知、以及确认从所述映射数据中移除了映射数据中与所述第一逻辑地址相对应并且包括所述事务序列号的条目的通知。
15.根据权利要求9所述的系统,其中所述当前数据包括当前数据块,并且所述先前数据包括先前数据块。
16.根据权利要求9所述的系统,其中所述当前数据包括当前奇偶校验块,并且所述先前数据包括先前奇偶校验块。
17.一种计算机程序产品,包括具有包含在其中的程序代码的计算机可读硬件存储介质,所述程序代码可由计算机执行以实现一种方法,所述方法包括:
在存储单元上维持由主机查看的第一组逻辑地址与所述存储单元的第一组物理地址和第二组物理地址之间的映射数据,其中所述第一组逻辑地址中的第一逻辑地址对应于所述第一组物理地址中维持所述第一逻辑地址的当前数据的第一物理地址,并且所述第一逻辑地址还对应于所述第二组物理地址中维持所述第一逻辑地址的先前数据的第二物理地址;以及
在所述存储单元处从所述主机接收命令以执行涉及所述第一逻辑地址的多设备操作,其中所述操作被原子地执行。
18.根据权利要求17所述的计算机程序产品,其中所述操作是更新写操作。
19.根据权利要求18所述的计算机程序产品,其中所述映射数据识别并跟踪所述第一逻辑地址的一个或多个先前版本副本,并且对于所述第一逻辑地址的每个先前版本副本,所述映射数据包括维持所述先前版本副本的对应物理地址。
20.根据权利要求18所述的计算机程序产品,其中所述映射数据包括用于所述更新写操作的事务序列号。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/975,584 | 2018-05-09 | ||
US15/975,584 US11099980B2 (en) | 2018-05-09 | 2018-05-09 | Host aware update write |
PCT/IB2019/053419 WO2019215532A1 (en) | 2018-05-09 | 2019-04-25 | Host aware update write |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112088366A true CN112088366A (zh) | 2020-12-15 |
Family
ID=68464720
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980030460.XA Pending CN112088366A (zh) | 2018-05-09 | 2019-04-25 | 主机感知更新写 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11099980B2 (zh) |
JP (1) | JP7189965B2 (zh) |
CN (1) | CN112088366A (zh) |
DE (1) | DE112019000849T5 (zh) |
GB (1) | GB2586430B (zh) |
WO (1) | WO2019215532A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114942858A (zh) * | 2021-02-16 | 2022-08-26 | 美光科技公司 | 基于条目未中的主机系统通知 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200099882A (ko) * | 2019-02-15 | 2020-08-25 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
CN111371888B (zh) * | 2020-03-02 | 2021-07-09 | 西南交通大学 | 一种基于纠删编码的多源数据传输系统及方法 |
CN114968088B (zh) * | 2022-04-08 | 2023-09-05 | 中移互联网有限公司 | 文件存储方法、文件读取方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7487308B1 (en) * | 2003-11-28 | 2009-02-03 | Symantec Operating Corporation | Identification for reservation of replacement storage devices for a logical volume to satisfy its intent |
CN101826053A (zh) * | 2009-03-03 | 2010-09-08 | 慧国(上海)软件科技有限公司 | 闪存的存取方法及闪存装置 |
CN104885062A (zh) * | 2012-12-10 | 2015-09-02 | 谷歌公司 | 使用逻辑到物理映射以与数据存储装置进行直接用户空间通信 |
CN105005535A (zh) * | 2015-07-22 | 2015-10-28 | 清华大学 | 一种分布式闪存事务处理方法 |
US20170123995A1 (en) * | 2015-11-03 | 2017-05-04 | Intel Corporation | Efficient redundant array of independent disks (raid) write hole solutions |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1345113A3 (en) | 2002-03-13 | 2008-02-06 | Hitachi, Ltd. | Management server |
US7426625B2 (en) | 2004-03-31 | 2008-09-16 | International Business Machines Corporation | Data processing system and computer program product for support of system memory addresses with holes |
KR101473344B1 (ko) | 2007-08-24 | 2014-12-17 | 삼성전자 주식회사 | 플래시 메모리를 스토리지로 사용하는 장치 및 그 동작방법 |
CN101976182A (zh) | 2010-11-15 | 2011-02-16 | 记忆科技(深圳)有限公司 | 一种固态硬盘预读取的方法及其装置 |
GB2527529B (en) | 2014-06-24 | 2021-07-14 | Advanced Risc Mach Ltd | A device controller and method for performing a plurality of write transactions atomically within a non-volatile data storage device |
WO2016051512A1 (ja) * | 2014-09-30 | 2016-04-07 | 株式会社日立製作所 | 分散型ストレージシステム |
US9671971B2 (en) | 2015-03-27 | 2017-06-06 | Intel Corporation | Managing prior versions of data for logical addresses in a storage device |
-
2018
- 2018-05-09 US US15/975,584 patent/US11099980B2/en active Active
-
2019
- 2019-04-25 JP JP2020558595A patent/JP7189965B2/ja active Active
- 2019-04-25 GB GB2019203.5A patent/GB2586430B/en active Active
- 2019-04-25 DE DE112019000849.8T patent/DE112019000849T5/de active Pending
- 2019-04-25 CN CN201980030460.XA patent/CN112088366A/zh active Pending
- 2019-04-25 WO PCT/IB2019/053419 patent/WO2019215532A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7487308B1 (en) * | 2003-11-28 | 2009-02-03 | Symantec Operating Corporation | Identification for reservation of replacement storage devices for a logical volume to satisfy its intent |
CN101826053A (zh) * | 2009-03-03 | 2010-09-08 | 慧国(上海)软件科技有限公司 | 闪存的存取方法及闪存装置 |
CN104885062A (zh) * | 2012-12-10 | 2015-09-02 | 谷歌公司 | 使用逻辑到物理映射以与数据存储装置进行直接用户空间通信 |
CN105005535A (zh) * | 2015-07-22 | 2015-10-28 | 清华大学 | 一种分布式闪存事务处理方法 |
US20170123995A1 (en) * | 2015-11-03 | 2017-05-04 | Intel Corporation | Efficient redundant array of independent disks (raid) write hole solutions |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114942858A (zh) * | 2021-02-16 | 2022-08-26 | 美光科技公司 | 基于条目未中的主机系统通知 |
CN114942858B (zh) * | 2021-02-16 | 2023-01-24 | 美光科技公司 | 基于条目未中的主机系统通知 |
Also Published As
Publication number | Publication date |
---|---|
JP7189965B2 (ja) | 2022-12-14 |
DE112019000849T5 (de) | 2020-11-05 |
WO2019215532A1 (en) | 2019-11-14 |
US20190347191A1 (en) | 2019-11-14 |
US11099980B2 (en) | 2021-08-24 |
GB2586430A (en) | 2021-02-17 |
JP2021522577A (ja) | 2021-08-30 |
GB202019203D0 (en) | 2021-01-20 |
GB2586430B (en) | 2021-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112088366A (zh) | 主机感知更新写 | |
US10031692B2 (en) | Synchronization for initialization of a remote mirror storage facility | |
US7882315B2 (en) | Snapshot mechanism in a data processing system and method and apparatus thereof | |
US9690666B1 (en) | Incremental backup operations in a transactional file system | |
US9075535B2 (en) | Source cleaning cascaded volumes using reference counts | |
US9063894B2 (en) | Cascade ordering | |
US8468128B2 (en) | Synchronization of sequential access storage components with backup catalog | |
EP1706822B1 (en) | Maintaining consistency for remote copy using virtualization | |
US11429498B2 (en) | System and methods of efficiently resyncing failed components without bitmap in an erasure-coded distributed object with log-structured disk layout | |
CN104166605A (zh) | 基于增量数据文件的数据备份方法及系统 | |
US9423973B2 (en) | Asynchronous tape backup and restore from tape backup in a disk storage environment | |
US9146685B2 (en) | Marking local regions and providing a snapshot thereof for asynchronous mirroring | |
US10228879B1 (en) | System and method for backup and restore of offline disks in mainframe computers | |
US8595271B1 (en) | Systems and methods for performing file system checks | |
US11334444B2 (en) | Method, device and computer program product for managing a storage system | |
US8751758B2 (en) | Delayed instant copy operation for short-lived snapshots | |
US11226739B2 (en) | Method, device and computer program product for storage management | |
US11645333B1 (en) | Garbage collection integrated with physical file verification | |
US10146638B1 (en) | Check point recovery based on identifying changed blocks for block-based backup files | |
CN115202561A (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
CN112347037A (zh) | 存储卷的快照处理方法、装置、介质和电子设备 |
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 |