CN102084330A - 用于有效地映射虚拟地址和物理地址的装置、系统和方法 - Google Patents

用于有效地映射虚拟地址和物理地址的装置、系统和方法 Download PDF

Info

Publication number
CN102084330A
CN102084330A CN200980121088XA CN200980121088A CN102084330A CN 102084330 A CN102084330 A CN 102084330A CN 200980121088X A CN200980121088X A CN 200980121088XA CN 200980121088 A CN200980121088 A CN 200980121088A CN 102084330 A CN102084330 A CN 102084330A
Authority
CN
China
Prior art keywords
data
mapping
module
storage device
oppositely
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
Application number
CN200980121088XA
Other languages
English (en)
Inventor
大卫·弗林
迈克尔·扎佩
约翰·斯特拉瑟
大卫·阿特金森
乔纳森·撒切尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fusion IO LLC
Original Assignee
Fusion IO LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fusion IO LLC filed Critical Fusion IO LLC
Publication of CN102084330A publication Critical patent/CN102084330A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • HELECTRICITY
    • H05ELECTRIC TECHNIQUES NOT OTHERWISE PROVIDED FOR
    • H05KPRINTED CIRCUITS; CASINGS OR CONSTRUCTIONAL DETAILS OF ELECTRIC APPARATUS; MANUFACTURE OF ASSEMBLAGES OF ELECTRICAL COMPONENTS
    • H05K7/00Constructional details common to different types of electric apparatus
    • H05K7/14Mounting supporting structure in casing or on frame or rack
    • H05K7/1438Back panels or connecting means therefor; Terminals; Coding means to avoid wrong insertion
    • H05K7/1439Back panel mother boards
    • H05K7/1444Complex or three-dimensional-arrangements; Stepped or dual mother boards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Abstract

本发明公开了一种用于有效地映射虚拟地址和物理地址的装置、系统和方法。正向映射模块702使用正向映射1104从虚拟地址1106识别数据段的数据的物理地址1126。虚拟地址1106包括稀疏地位于虚拟地址空间内的离散地址。反向映射模块704使用反向映射1122以从物理地址1126确定数据段的虚拟地址1106。反向映射1122将数据存储设备106映射到擦除区域,从而反向映射1122的一部分跨越数据存储设备106的在存储空间恢复操作中一起擦除的擦除区域。存储空间恢复模块706在恢复擦除区域的操作之前使用反向映射1122识别擦除区域中的有效数据。

Description

用于有效地映射虚拟地址和物理地址的装置、系统和方法
相关申请的交叉引用
本申请是下述申请的部分继续申请并要求其优先权:David Flynn等人于2007年12月6日提交的题为“APPARATUS,SYSTEM,AND METHOD FORSTORAGE SPACE RECOVERY IN SOLID-STATE STORAGE”美国专利申请No.11/952,101,通过引用将该申请并入本文中。
技术领域
本发明涉及数据存储,并且更具体地,涉及有效地映射数据存储设备中的虚拟地址和物理地址。
背景技术
传统的数据存储设备(例如磁盘驱动器、光盘驱动器等)通常作为随机存取设备运行以存储数据。随机存取通常能够在同一时间内存取序列中的任意元素。这不同于顺序存取,在顺序存取中,数据被顺序地存储且被顺序地访问。例如,用于存储数据的磁带就是一种顺序存取设备。存取一个数据元素可能耗费不同的时间,这是由于一个数据元素的位置可能离读取头的位置近,而且必须使磁带前进或后退才能到达第二个数据元素,因此,存取另一个数据元素可能消耗更多的时间。由于在随机存取设备中存取每个数据元素的时间需要大约一致,因此,随机存取设备(如存储芯片、磁盘驱动器或固态存储器)作为随机存取设备运行。由于数据存取的可预测性和效率,随机存取是可取的。
通常,文件系统利用初级命令与随机存取存储设备通信。文件系统管理数据的位置。初级命令通常包括命令中的物理地址和数据长度以存储或访问数据。随机存取存储设备中的数据通常可以在读-修改-写操作中更新,其中在特定地址的数据被读取、修改,然后被写入与其存储位置相同的位置。
虽然随机存取设备的概念是可取的,但随机存取可能在某些类型的数据存储中产生问题。例如,随机存取可能造成存储设备中的某些位置比其他位置使用得更多。就这方面而言,随机存取可能在闪存中是有害的,这是因为闪存中的每个存储单元通常仅能使用一定的次数,然后必须对其进行修复或者存储单元变得不可靠。随机存取也可导致存储设备成为散存的存储设备,这可能增加存储存取时间。
数据存储设备(例如闪存和其他固态存储器)的顺序存储可用于缓解与随机存取有关的一些问题。当使用顺序存储时,通常期望具有一些类型的存储空间恢复(垃圾收集)系统以合并有效数据并为数据的顺序存储释放存储区域。通常,存储空间恢复例程将取得选定为恢复的区域中的有效数据。通常在处理选定区域之前,有效数据被移动到另一位置。
一种识别有效数据的方法是在移动有效数据之前,搜索选定区域以识别有效数据在选定区域中的位置。搜索用于将虚拟地址映射到物理地址的单个结构以识别存储在选定区域中的每个数据段是繁琐且无效率的,这是因为大部分虚拟-物理索引被设计为基于可能的虚拟标识符的范围或名字空间内的任一可能的虚拟标识符快速地识别物理地址。
发明内容
从上述讨论可知,显然存在对于有效地映射虚拟地址和物理地址的装置、系统和方法的需要。有利地是,这种装置、系统和方法会提供一种有效方式以从虚拟标识符识别所存储数据的物理地址,并且识别擦除区域中有效数据的量和擦除区域中有效数据的位置。
响应于现有技术的现状,具体地,响应于现有技术中未被当前可用的存储设备所完全解决的问题和需要,本发明被开发出来。因此,本发明被开发以提供一种用于有效地映射虚拟地址和物理地址的装置、系统和方法,其克服了现有技术中的上述全部或大部分缺点。
有效地映射虚拟地址和物理地址的装置具有多个配置为功能性的执行下述必要步骤的模块:使用正向映射从虚拟地址识别物理地址、使用反向映射从物理地址识别虚拟地址和使用反向映射识别擦除区域中的有效数据和无效数据。在所述的实施方式中,这些模块包括正向映射模块、反向映射模块和存储空间恢复模块。
正向映射模块使用正向映射以识别数据段的数据的一个或多个物理地址。从数据段的一个或多个虚拟地址识别所述一个或多个物理地址。在指令到数据存储设备的存储请求中识别数据段。正向映射是将一个或多个虚拟地址映射到存储在数据存储设备中的数据的一个或多个物理地址的映射。一个或多个虚拟地址包括虚拟地址空间内的离散地址,其中,虚拟地址稀疏地位于虚拟地址空间。
反向映射模块使用反向映射以从物理地址确定数据段的虚拟地址。反向映射将一个或多个物理地址映射到一个或多个虚拟地址。反向映射中的物理地址与正向映射关联。一个或多个虚拟地址对应于与存储在数据存储设备中的数据有关的一个或多个数据段。反向映射将数据存储设备映射到擦除区域,从而反向映射的一部分跨越数据存储设备的在存储空间恢复操作中一起擦除的擦除区域。存储空间恢复操作恢复擦除区域以用于将来的数据存储。存储空间恢复模块在恢复擦除区域的操作前使用反向映射识别擦除区域中的有效数据。在恢复操作之前,识别的有效数据被移动到另一擦除区域。
在一种实施方式中,一个或多个源参数与数据一起存储,源参数至少包括虚拟地址和存储数据的数据长度,虚拟地址对应于和数据有关的数据段。在又一种实施方式中,该装置包括映射重建模块,用于利用与数据一起存储的源参数重建正向映射和反向映射。在另一种实施方式中,该装置包括检查点模块,用于存储与正向映射和反向映射相关的信息。检查点与时间点有关。该信息足以将正向映射和反向映射恢复到与检查点有关的状态。
在另一种实施方式中,该装置包括映射同步模块,用于通过顺序地应用源参数和物理地址将正向映射和反向映射从与检查点有关的状态更新到当前状态。源参数与顺序地存储在检查点之后的数据一起存储。物理地址源于数据存储设备上的数据的位置。
在一种实施方式中,正向映射和反向映射独立于下述各项中的一个或多个:组织数据用于发送存储请求的请求设备的文件结构、名字空间和目录。在另一种实施方式中,存储请求的数据段的虚拟地址包括文件名、对象名和/或块存储地址。逻辑块存储地址至少包括物理地址和数据段的长度,在该物理地址处,发送存储请求的请求设备为存储设备准备存储数据段。
在另一种实施方式中,正向映射是第一正向映射,反向映射是第一反向映射,第一正向映射和第一反向映射被存储为数据并且独立于由第一正向映射和第一反向映射所映射的数据存储。在该实施方式中,数据包括第一正向映射、第一反向映射和与第一正向映射和第一反向映射一起存储的时间戳数据。在该实施方式中,第一正向映射和第一反向映射的数据由第二正向映射和第二反向映射索引。在另一种实施方式中,该装置包括一个或多个额外的正向和反向映射,其中每个额外的正向和反向映射被存储为数据并且由额外的正向和反向映射索引。
在一种实施方式中,正向映射包括用于存储在数据存储设备的有效数据的信息,反向映射包括用于存储在数据存储设备上的有效数据和无效数据的信息。在另一种实施方式中,该装置包括无效模块,用于在反向映射中标记数据的条目,该条目指示由其引用的数据响应于导致数据被无效的操作而无效。
在又一种实施方式中,存储空间恢复模块还包括通过扫描用于擦除区域的反向映射确定擦除区域中无效数据的量,从而相对于擦除区域的存储容量确定无效数据的量。存储空间恢复模块利用擦除区域中无效数据的量选择恢复的擦除区域。在又一种实施方式中,存储空间恢复模块包括选择恢复的擦除区域、将选定的擦除区域的有效数据写入当前正在写入数据的数据存储设备中的新位置、更新反向映射以指示写入新位置的有效数据在选定的擦除区域中无效、以及基于写入新位置的有效数据更新正向映射和反向映射。
在一种实施方式中,该装置仿真按存储请求所指令的那样存储数据的随机存取逻辑块存储设备。在另一种实施方式中,正向映射包括B-树、内容可寻址存储器(CAM)、二进制树和/或哈希表。在另一种实施方式中,该装置包括映射更新模块,用于响应于改变数据存储设备的内容更新正向映射和/或反向映射。基于数据存储设备存储数据的位置,映射更新模块从数据存储设备接收将所存储数据的物理地址链接到虚拟地址的信息。
在一种实施方式中,该装置在基本上没有数据的情况下接收存储请求。在又一种实施方式中,该装置初始化直接存储器存取(DMA)进程或远程直接存储器存取(RDMA)进程以响应于存储请求将数据转移到数据存储设备。在另一种实施方式中,正向映射模块、反向映射模块和/或存储空间恢复模块的至少一部分位于发送存储请求的请求设备、数据存储设备、存储设备控制器或与请求设备、数据存储设备和存储设备控制器分离的计算设备内。
本发明也提供了一种系统以有效地映射物理地址和虚拟地址,该系统可由数据存储设备和控制数据存储设备上的数据存储的存储控制器实施。具体地,在一种实施方式中,存储控制器包括正向映射模块、反向映射模块和存储空间恢复模块。
正向映射模块使用正向映射以识别数据段的数据的一个或多个物理地址。从数据段的一个或多个虚拟地址识别所述一个或多个物理地址。在指令到数据存储设备的存储请求中识别数据段。正向映射是将一个或多个虚拟地址映射到存储在数据存储设备中的数据的一个或多个物理地址的映射。一个或多个虚拟地址包括虚拟地址空间内的离散地址,其中,虚拟地址稀疏地位于虚拟地址空间。
反向映射模块使用反向映射以从物理地址确定数据段的虚拟地址。反向映射将一个或多个物理地址映射到一个或多个虚拟地址。反向映射中的物理地址与正向映射关联。一个或多个虚拟地址对应于与存储在数据存储设备中的数据有关的一个或多个数据段。反向映射将数据存储设备映射到擦除区域,从而反向映射的一部分跨越数据存储设备的在存储空间恢复操作中一起擦除的擦除区域。存储空间恢复操作恢复擦除区域以用于将来的数据存储。存储空间恢复模块在恢复擦除区域的操作前使用反向映射识别擦除区域中的有效数据。在恢复操作之前,识别的有效数据被移动到另一擦除区域。
在一种实施方式中,存储请求接收自客户端,该客户端通过计算机网络与存储控制器通信。在另一种实施方式中,该系统包括服务器,其中存储控制器和/或数据存储设备位于服务器内。在另一种实施方式中,存储设备是固态存储设备,其中数据段的数据存储在固态存储器中。
本发明也提供了一种有效地映射物理地址和虚拟地址的方法。在公开的实施方式中,该方法包括执行上文中相对于所述装置和系统的功能所必须的步骤。在一种实施方式中,该方法包括使用正向映射以识别数据段的数据的一个或多个物理地址。从数据段的一个或多个虚拟地址识别所述一个或多个物理地址。在指令到数据存储设备的存储请求中识别数据段。正向映射包括将一个或多个虚拟地址映射到存储在数据存储设备中的数据的一个或多个物理地址的映射。一个或多个虚拟地址是虚拟地址空间内的离散地址,其中,虚拟地址稀疏地位于虚拟地址空间。
该方法包括使用反向映射以从物理地址确定数据段的虚拟地址。反向映射将一个或多个物理地址映射到一个或多个虚拟地址。反向映射中的物理地址与正向映射关联。一个或多个虚拟地址对应于与存储在数据存储设备中的数据有关的一个或多个数据段。反向映射将数据存储设备映射到擦除区域,从而反向映射的一部分跨越数据存储设备的在存储空间恢复操作中一起擦除的擦除区域。存储空间恢复操作恢复擦除区域以用于将来的数据存储。该方法包括在恢复擦除区域的操作前使用反向映射识别擦除区域中的有效数据。在恢复操作之前,识别的有效数据被移动到另一擦除区域。
本说明书全文所提到的特征、优点或者类似措辞并不意味着可利用本发明实现的所有的特征和优点应该或本来就包含在本发明的任一单独的实施方式中。更确切地,涉及特征和优点的措辞被理解为意味着:与实施方式一起描述的特定的特征、优点或者特点包括在本发明的至少一种实施方式中。因此,在本说明书全文中,关于特征、优点和类似措辞的讨论可(但未必)涉及同一种实施方式。
此外,描述的本发明的特征、优点和特点可采用任何合适的方式与一个或多个实施方式结合。相关领域的技术人员可意识到本发明可在不具备特定实施方式的一个或多个具体特征或优点的情况下被实施。在其他例子中,可意识到附加特征和优点可出现在某些实施方式中,而不是在本发明的所有实施方式中都出现。
通过下面的说明和附加的权利要求,本发明的这些特征和优点将变得更加充分的显而易见,或者可以通过按下文所阐述的本发明的实践而获悉。
附图说明
为了更容易地理解本发明的优点,将参考附图中示出的具体实例方式详细说明上文中简述的本发明的实施方式。应当理解,这些附图仅描绘了本发明的典型实施方式,因此不能将其理解为对本发明的限制,将结合附图具体且详细地描述和解释本发明,附图中:
图1是示出了根据本发明的将存储请求转换为附加数据命令的系统的一种实施方式的示意性框图;
图2是示出了根据本发明的将存储请求转换为附加数据命令的装置的一种实施方式的示意性框图;
图3是示出了根据本发明的将存储请求转换为附加数据命令的替换装置的一种实施方式的示意性框图;
图4是示出了根据本发明的将存储请求转换为附加数据命令的方法的一种实施方式的示意性流程图;
图5是示出了根据本发明的将存储请求转换为附加数据命令的另一种方法的一种实施方式的示意性流程图;
图6是根据本发明的将存储请求转换为附加数据命令的实例的示意性框图;
图7是根据本发明的用于有效地映射虚拟地址和物理地址的装置的一种实施方式的示意性框图;
图8是根据本发明的用于有效地映射虚拟地址和物理地址的装置的另一种实施方式的示意性框图;
图9是根据本发明的用于有效地映射虚拟地址和物理地址的方法的一种实施方式的示意性流程图;
图10是根据本发明的用于有效地映射虚拟地址和物理地址的方法的另一种实施方式的示意性流程图;
图11是根据本发明的正向映射和反向映射的实例的示意性框图;
图12是示出了根据本发明的用于协调存储请求的装置的一种实施方式的示意性框图;
图13是示出了根据本发明的用于协调存储请求的装置的另一种实施方式的示意性框图;
图14是示出了根据本发明的用于协调存储请求的方法的一种实施方式的示意性流程图;
图15是示出了根据本发明的用于协调存储请求的方法的另一种实施方式的示意性流程图;
图16A是示出了根据本发明的用于协调存储请求的装置的实例的示意性框图的第一部分;
图16B是示出了根据本发明的用于协调存储请求的装置的实例的示意性框图的第二部分;
图16C是示出了根据本发明的用于协调存储请求的装置的实例的示意性框图的第三部分。
具体实施方式
为了更显著地强调功能性单元运行的独立性,在本说明书中描述的许多功能性单元已被标示为模块。例如,模块可作为硬件电路来实施,所述硬件电路包括自定义VLSI电路、门阵列或成品半导体(例如逻辑芯片、晶体管或其他分立元件)。模块也可在可编程硬件设备(如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备或类似设备)内实施。
模块还可在由不同类型的处理器运行的软件中实施。例如,可执行代码的识别模块可以包括一个或多个计算机指令物理块或逻辑块,该计算机指令被作为对象、程序或函数来组织。然而,识别模块的可执行文件不必在物理上位于一起,但是可包括存储在不同位置的不同命令,当这些命令在逻辑上连接在一起时,所述命令包括所述模块并实现所述模块的指定目标。
当然,可执行代码的模块可以为一个或许多指令,并且甚至可以分布在若干不同的代码段中、分布在不同的程序中并可分布在多个存储设备中。类似地,可以在此在模块内识别并示出运算数据,并且可以以任何合适的形式体现所述运算数据并在任意合适类型的数据结构中组织所述运算数据。所述运算数据可作为单数据集收集,或者可以分布在不同的位置(包括不同的存储设备),并且可在系统或网络中至少部分地仅作为电信号存在。当模块或模块的部分在软件中实施时,软件部分被存储在一个或多个计算机可读媒体上。
本说明书全文所提到的“一种实施方式”、“实施方式”或类似的措辞意味着与实施方式一起描述的特定的特征、结构或特点包括在本发明的至少一种实施方式中。因此,在本说明书全文中,短语“在一种实施方式中”、“在实施方式中”及类似措辞的出现可(但未必都)涉及同一实施方式。
提及的计算机可读媒介可采取任何能够在数字处理装置上存储机器可读指令的形式。计算机可读媒介可通过下述设备体现:传输线、光盘、数字视频光盘、磁带、伯努利驱动器、磁盘、穿孔卡、闪存、集成电路或其他数字处理装置存储设备。
此外,描述的本发明的特征、结构或特点可以以任何合适的方式合并在一种或多种实施方式中。在下文的说明中,提供了大量的具体细节以全面理解本发明的实施方式,所述具体细节比如编程、软件模块、用户选择、网络事务、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等等的实例。然而,相关技术领域的技术人员可认识到:本发明在可在不具备一个或多个具体细节的情况下被实施,或者本发明可结合其他方法、组件、材料等实施。在其他例子中,并没有显示或描述公知的结构、材料或操作以使本发明变得清晰。
一般而言,此处所包括的示意性流程图作为逻辑流程图示出。同样的,描述的顺序和所标记的步骤表明了所示出的方法的一种实施方式。可以设想在功能上、逻辑上或效果上与所示方法的一个或多个步骤或其部分相同的其他步骤和方法。此外,所用的格式和符号是用于解释方法的逻辑步骤并且不应理解为是对该方法的限制。尽管在流程图中可使用不同的箭头类型和直线类型,但是不应将其理解为对相应方法的范围的限制。事实上,一些箭头或其他连接符可用于仅指示方法的逻辑流程。例如,箭头可指示在所示方法所列举的步骤之间的不明确的时间阶段的等待或监视期。此外,特定方法的顺序可以(但未必)严格遵照所示出的相应步骤的顺序。
图1是示出了根据本发明的将存储请求转换为附加数据命令并有效地映射物理地址和虚拟地址的系统100的一种实施方式的示意性框图。系统100包括存储设备102,存储设备102包括存储控制器104和数据存储设备106。存储设备102位于通过计算机网络112连接到一个或多个客户端110的服务器108内。
在一种实施方式中,系统100包括具有存储控制器104和数据存储设备106的存储设备102。存储控制器104和数据存储设备106可被包括在同一箱体中,该同一箱体为存储设备102。在另一种实施方式中,存储控制器104和数据存储设备106是分离的。存储控制器104通常控制对数据存储设备106的数据存储访问。在一种实施方式中,数据存储设备106能够使得对数据存储设备106上的所有数据的访问次数基本上相当。例如,数据存储设备106可以是固态存储设备,例如闪存、纳米随机存取存储器(nano RAM或NRAM)、磁阻RAM(MRAM)、动态RAM(DRAM)、相变RAM(PRAM)等。数据存储设备106也以是硬盘驱动器、光盘(CD)驱动器、光驱动器和类似设备。
尽管在图1中数据存储设备106被示为单个存储设备,但数据存储设备106可以包括两个或多个存储设备。数据存储设备106可被配置为独立驱动器冗余阵列(RAID)、磁盘簇(JBOD)和类似设备。数据存储设备106可与一个或多个数据存储设备106(例如固态存储器)一起配置为高性能、短期存储器,也可与一个或多个数据存储设备106(例如硬盘驱动器)一起配置为低性能、长期存储器。在这种实施方式中,存储控制器104可管理不同类型的数据存储设备106。本领域技术人员会意识到其他类型和配置的数据存储设备106。
存储控制器104可控制一个或多个数据存储设备106而且可以是RAID控制器、用于存储区域网络(SAN)的控制器等等。存储控制器104可包括一个或多个子控制器。存储控制器104可与数据存储设备106集成或分离,并且存储控制器104可以集成在一起或者是分布式的。例如,存储控制器104的一部分可以是主控制器,而存储控制器104其他部分可以是子控制器或从控制器。主控制器可以是与轮流控制数据存储设备106的其他子控制器通信的设备,或者可以是控制从控制器和数据存储设备106的主控制器。本领域技术人员会认识到具有其他形式和功能的存储控制器104。
在一种实施方式中,存储设备102包括在服务器108中。在不同的实施方式中,存储控制器104或数据存储设备106或二者都可位于服务器108的外部。服务器108可连接到存储控制器104,或者存储控制器104可通过系统总线连接到数据存储设备106,系统总线例如外围组件互连快速(PCI-e)总线、串行高级技术附件(串行ATA)总线或类似总线。在另一种实施方式中,固态存储设备102位于服务器108或存储设备102外部,并可以通过通用串行总线(USB)、电气和电子工程师学会(IEEE)1394总线(FireWire)等连接。在其他实施方式中,存储设备102连接到服务器108,或者存储控制器104利用外围组件互连(PCI)快速总线使用外部电子或光总线扩展或联网方案连接到数据存储设备106,联网方案例如以太网、光纤通道、无限带宽、或PCI快速高级交换(PCIe-AS)及其类似。本领域技术人员会认识到其他各种可能的连接方法。
替换地,服务器108也可以是个人计算机、膝上型计算机、主计算机、工作站、电子设备等。服务器108可包括客户端110或通过计算机网络112连接到客户端110。系统100可包括任意数量的计算机、客户端110、计算机网络112或其他电子设备,只要系统100能够将存储请求传输到存储设备102。客户端110可以是运行在服务器108或另一台计算机或电子设备上的程序。客户端110也可以是个人计算机、膝上型计算机、主计算机、工作站、电子设备等。本领域技术人员会认识到能够将存储请求发送到存储设备102的系统100的其他组件和配置。
图2示出了根据本发明的将存储请求转换为附加数据命令的装置200的一种实施方式的示意性框图。装置200包括存储请求接收器模块202、翻译模块204和映射模块206,下文将描述这些模块。在图2中,装置200被示出为位于存储控制器104中,但模块202、204、206中的全部或部分可位于存储控制器104的外部而且可分布在系统100的不同组件中。
装置200包括从请求设备接收存储请求的存储请求接收器模块202。在一种实施方式中,请求设备是服务器108。在另一种实施方式中,请求设备是客户端110。请求设备可以是能够发送存储请求的任何设备。
存储请求包括将文件或对象的数据段存储在数据存储设备106上的请求。存储请求可以是对象请求、文件请求、逻辑块存储请求及类似请求。存储请求包括数据段的一个或多个源参数。源参数包括文件或对象的虚拟地址,数据段的数据来源于所述虚拟地址。通常,虚拟地址是文件或对象的标识符。虚拟地址可以是连接到存储设备102的文件系统已知的文件名、对象名或其他标识符。
在逻辑地址与逻辑地址空间和虚拟地址与虚拟地址空间之间做出区别。在此文本中,虚拟地址空间拟包含间接编址的最大可能范围。如本文所用的,虚拟地址空间可同时包括:一个或多个虚拟地址空间、一个或多个逻辑地址空间、一个或多个存储空间、一个或多个逻辑块地址空间、一个或多个混合块地址空间等等。
例如,客户端可以运行多个虚拟操作系统。在这种实施方式中,每个虚拟操作系统可具有虚拟存储空间。每一个虚拟存储空间可以根据设备的虚拟地址空间和虚拟-物理映射被映射到存储在存储设备中的数据。在另一个实例中,若干客户端中的对象可以以多对一的关系独立地映射到相同的存储数据,该相同的存储数据称为具有对客户端的唯一虚拟地址的共享数据。尽管此处的实例示出了一对一的关系,但方法、装置和系统将支持多对一、一对多、甚至是多对多的虚拟-物理的地址映射。
通过支持识别、地址、长度和元数据转换中的广泛间接性,虚拟-物理映射方法将支持稀疏编址(物理地址空间的过量供应)、瘦供给(thinprovisioning)、虚拟分区和数据转换(例如压缩、加密)。
此处,作为一种约定,虚拟ID唯一地标识在客户端的虚拟空间内存储的数据实体。虚拟地址更具体地编址虚拟实体的数据。例如,虚拟地址可包括虚拟ID和在数据集内的偏移量。在另一实例中,虚拟地址可包括虚拟ID和虚拟实体内的索引,其中索引可以是非统一的(例如,长度不同)记录结构中的记录。
在一种实施方式中,装置200仿真逻辑块存储设备,源参数包括一个或多个逻辑块地址,其中,请求设备通过存储请求请求数据段以将其存储。在该实施方式中,虚拟地址可包括逻辑块地址。例如,如果存储请求是逻辑块存储请求,请求设备可指定数据段将要存储在数据存储设备106中的位置。逻辑块地址可包括诸如RAID群组号、数据存储设备标识符、分区、柱面号、扇区、偏移量等的信息。本领域技术人员会认识到可包括在逻辑块地址中的其他元素。
存储请求可包括将数据段存储在不止一个位置上的请求,或者存储请求可包括将数据段的某些部分存储在不止一个位置上的请求,从而存储请求可包括不止一个逻辑块地址。当存储请求包括逻辑块地址时,存储请求通常也包括对应于一个或多个逻辑块地址的一个或多个偏移量和数据长度。偏移量和数据长度可暗示逻辑块是否具有固定尺寸。通常,偏移量是指数据段开始进入文件或对象有多远,通常从文件或对象的形头起算。数据长度通常包括存储设备将有多大容量被与逻辑块地址关联的数据段或数据段的部分占据。通常,将以可被存储控制器104和数据存储设备106识别的一些单位表示偏移量和数据长度。例如,偏移量和数据长度可以表示为字节、块、扇区或其他用于分割数据存储设备106的单位。本领域技术人员会认识到用于全部或部分数据段的偏移量和数据长度的其他表示方法。
系统100包括将存储请求翻译为一条或多条存储命令的翻译模块204,其中至少一条存储命令是附加数据存储命令。每条附加数据存储命令指令数据存储设备106将创建自数据段的数据和一个或多个源参数存储在一个或多个附加点上。源参数与数据一起存储,而且至少一个源参数是虚拟地址。
优选地,数据存储设备106将数据存储为数据包。数据包包括数据段的数据和数据包包头。在一种实施方式中,数据包包头包括源参数。在另一种实施方式中,源参数与数据同时存储。例如,数据可顺序地存储在数据存储设备的一个位置上的附加点中,而源参数同时顺序地存储在数据存储设备中的另一位置中。在该实施方式中,源参数和数据存储的顺序可用于在读操作或数据和源参数被检索的其他操作期间配对数据和源参数。
在一种实施方式中,数据存储设备106通过下述操作顺序地存储数据(或数据包):将数据存储在页、分区或其他指定区域中;将附加点移动到紧随先前存储的数据末端的下一个可用地址;将数据存储在附加点,再次将附加点移动到紧随先前存储的数据末端的下一个可用地址等等。数据存储在页、分区等中,直到页或分区满为止,然后附加点移动,数据存储在另一页、分区等等。附加点可以响应于具体请求由存储设备102独立地移动。
顺序存储数据对于固态存储设备来说是尤其有益的,这是因为其甚至允许分布式的数据以防止出现比其他地址写入更频繁的热点或热地址。由于顺序存储数据省去了搜寻时间、省去了读-修改-写操作和相关擦除操作并由此增加了固态存储设备的数据可靠性和有效寿命,因此,顺序存储数据对于固态存储设备来说是尤其有益。由于常规固态存储设备对存储在固态存储设备中任意位置的数据的读取访问时间基本上相同,固态存储设备中的顺序存储也通常不会不利地影响读取访问时间。这种特性允许数据存储设备106仿真随机存取设备以有效地消除由于写入搜寻次数而产生的恢复时间,并增加了固态存储设备106的可靠性和有效寿命,而不会不利地影响读取性能。
顺序存储对于数据存储设备106也可具有其他好处。顺序存储相对于存取时间的益处在下述文献中有全面的描述:题为“Apparatus,System,andMethod for Managing Commands of Solid-State Storage Using Bank Interleave”的美国专利申请号11/952,095;和题为“Apparatus,System,and Method for StorageSpace Recovery In Solid-State Storage”的美国专利申请号11/952,101(下文中的“存储空间恢复申请”),两项申请均由David Flynn等人于2007年12月6日提交,通过引用将所述文献并入本文。
一个明显益处是:通过顺序地存储数据以及将源参数与数据一起(在包头或同时)存储,数据存储设备106成为了日志存储设备。通常,日志存储设备记录数据存储的序列或顺序,从而如果第一数据包在第二数据包之后存储,这种存储顺序是已知的并且可以是确定的。
在一种实施方式中,将要存储数据的附加点独立于环境。鉴于数据被顺序地存储,附加点可由存储设备保持,从而与存储请求一起接收的数据可以存储在数据存储日志中的下一个可用的物理地址。对于该附加点来说,没有外部环境。这意味着,数据并不根据与客户端的明确或隐藏关系存储在设备的不同物理区域中。例如,第一客户端可利用第一分区访问设备,而第二客户端利用第二分区访问设备。在虚拟编址方案中,这些分区是严格的逻辑构造。在两个不同的分区中用于两个客户端的数据仍然被顺序地附加。这样,设备不限制开放文件的数量,并由此不限制能够同时访问设备的客户端的数量。额外益处是:存储空间的使用效率最优,而且自然地支持提供增加容量使用率(如瘦供给)的存储方法。
通常,附加点被设置为紧随先前存储的数据或数据包之后的地址,但在其他实施方式中,附加点可以设置在页、擦除块、分区等的起始地址上,可以设置在紧随不可用地址的块之后,等等。在一种实施方式中,数据存储设备106保持附加点的地址,翻译模块204仅创建指令数据存储设备106将数据存储在附加点上的附加数据存储命令。一旦存储了数据,数据存储设备106然后向映射模块206或另一设备或模块报告数据存储的物理地址。在另一种实施方式中,翻译模块204得知或保持附加点在数据存储设备106中的物理地址并且利用附加点的物理地址创建附加数据存储命令。
在一种实施方式中,表示在当前擦除区域被写满之后将要被写入的下一擦除区域(或擦除块)的附加点或擦除区域指针可预先排队且由数据存储设备106或翻译模块204从队列中取出。在另一种实施方式中,附加点(擦除区域指针)根据设定的模式从子区域移动到子区域。设定的模式可包括区域序列信息。
附加数据存储命令通常是将数据存储在附加点的命令。数据创建自数据段,通常,数据段的数据跨越数据段。翻译模块204可创建一个或多个附加数据存储命令。例如,如果数据段分解而且数据的不止一个部分存储在非连续位置,可能会需要不止一个的附加数据存储命令。在另一种实施方式中,单个附加数据存储命令能够将数据段存储在多个、非连续位置。
数据段的数据可来自不同的源。在一种实施方式中,数据是来自新的先前并没有存储在数据存储设备106上的文件的数据。在另一种实施方式中,数据段的数据已从数据存储设备106中读取,而且已在将数据再次作为数据包存储在数据存储设备106中之前被修正。在另一种实施方式中,数据段的数据来自在存储恢复(垃圾收集)操作中恢复的另一擦除区域(例如擦除块)、页、分区等。在该实施方式中,数据可以是在恢复擦除区域以用于将来的数据存储之前从选定的擦除区域移动而来的有效数据。在另一种实施方式中,数据是索引数据或映射数据,索引数据或映射数据被存储用来保护索引或映射。本领域技术人员会认识到可位于由存储请求接收器模块202接收的数据段中的其他数据。
在不同的实施方式中,翻译模块204创建与存储请求有关的其他命令。例如,翻译模块204可创建集附加点命令、读取命令、擦除命令、复位命令、移动命令、同步命令、清洗命令、读取控制登记命令、修正控制登记命令、程序页命令、在擦除块上指令的擦除命令、转移命令列表命令、请求状态命令及类似命令。通常,其他命令增补附加数据存储命令以服务存储请求。本领域技术人员会认识到其他可以由翻译模块204创建以服务存储请求的相关命令和命令序列。
在一种实施方式中,存储请求接收器模块202所接收的存储请求是在基本上没有数据的情况下接收的。在这种情况下,存储请求是请求转移数据的请求,并且实质上不包括数据。在另一种实施方式中,附加数据存储命令在基本上没有数据的情况下被传输到数据存储设备106。在这种情况下,附加数据存储命令是转移数据的命令,并且实质上不包括数据。在又一种实施方式中,源参数包括主机或客户端110内的一个或多个物理存储地址,作为存储请求的结果,数据段从该物理存储地址被读取。在这种实施方式中,翻译模块204创建的存储请求或命令(例如附加数据存储命令)初始化或请求直接存储器存取(DMA)或远程直接存储器存取(RDMA)进程以将数据段的数据转移到数据存储设备106。例如,DMA进程可由附加数据存储命令初始化为从客户端110到数据存储设备106内的某个位置的DMA数据。本领域技术人员会意识到初始化或请求DMA或RDMA进程的其他方法。
在典型的DMA或RDMA进程中,数据存储设备106在写入操作中从主机的存储器中取出数据并在读取操作中将数据推入主机。这样做是有利的,因为主机不需要知道数据将要被存储在数据存储设备10的哪个位置。主机可以仅告知存储设备102取出将要被写入的数据的位置或者数据将要被存储以供读取的位置。
装置200包括映射模块206,映射模块206将数据段的一个或多个源参数映射到数据存储设备106中的一个或多个位置,其中数据存储设备106附加了数据段的数据和源参数。源参数可包括与数据段、设备标识符、分区标识符、数据段的一个或多个数据包的长度、存储请求之前或之后数据段在主机的存储器中所处的一个或多个存储位置、一个或多个存储位置中的一个或多个长度的数据、数据段的属性、数据段的元数据、数据段的控制参数等相关联的虚拟标识符。
有利地,数据段的源参数到存储数据段的数据的物理位置之间的映射允许装置200利用数据存储设备106仿真随机存取设备,数据在数据存储设备106顺序地存储。这样是有利的,因为具有装置200的存储设备102或存储控制器104能够连接成随机存取设备并且能够接收对象请求、文件请求和逻辑块存储请求,而不会对这些请求予以区分。装置200平等地处理来自不同请求的数据,即实质上以与虚拟地址相同的方式映射在存储请求中接收到的逻辑块地址。换言之,在逻辑块存储请求中接收的逻辑块地址、数据长度等可以成为将要被映射到数据请求的数据在数据存储设备106中的存储位置的物理地址的虚拟地址。
图3是示出了根据本发明的将存储请求转换为附加数据命令的替换装置300的一种实施方式的示意性框图。装置300包括存储请求接收器模块202、翻译模块204和映射模块206,这些模块基本上类似于上文中相对于图2的装置200描述的模块。装置300包括存储响应接收器模块302、响应传输模块304、压缩模块306、索引重建模块308、命令重新排序模块310、请求重新排序模块312和垃圾收集模块314,下文将描述这些模块。装置300在图3中示为位于存储控制器104中,但模块202、204、206、302-314中的一部分可以位于存储控制器104的外部而且可分布在系统100的不同元件中。此外,装置300的模块202-206、302-314可独立于客户端110运行。
在一种实施方式中,装置300包括从数据存储设备106接收一个或多个存储命令响应的存储响应接收器模块302。存储命令响应包括数据存储设备106附加数据段的数据的一个或多个位置。在这种实施方式中,数据存储设备106存储数据的位置对于装置300来说可以是未知的,直到数据存储设备106响应并指示数据附加的位置。当直到数据存储设备106存储数据之后数据存储设备106附加数据的物理位置才是已知的时,映射模块206从数据存储设备106(通常来自于一个或多个存储命令响应)接收数据存储设备106附加数据段的数据的一个或多个位置。在另一种实施方式中,如上所述,翻译模块204跟踪或管理数据段的数据存储的物理地址,映射模块206可从翻译模块204接收数据存储的位置的物理地址。
在另一种实施方式中,装置300包括将存储请求响应发到请求设备的响应传输模块304。存储请求响应包括关于存储请求的执行的信息。例如,存储请求响应可指示存储请求已成功执行或其他状态信息。在另一种实施方式中,存储请求响应包括指示数据和相关联的源参数所存储的位置。如果装置300正在仿真随机存取设备,这种实施方式可以是不可取的。在一种实施方式中,响应传输模块304在存储响应接收器模块302接收存储命令响应之后发送存储请求响应,该存储命令响应指示数据段的所有数据和相关联的源参数已成功存储在数据存储设备106上。在另一种实施方式中,响应传输模块304独立于存储命令响应的接收而发送存储请求响应。本领域技术人员会意识到在存储请求中发送的其他信息和发送响应的时机。
在一种实施方式中,装置300包括在存储在数据存储设备106上之前压缩附加数据存储命令的数据以形成数据的压缩模块306。通常,压缩模块306改变数据段的部分数据(或数据包)的数据长度。这影响了数据存储的位置和后续的附加点。在这种情况下,每个附加点可以是未知的,直到压缩之后。当使用压缩时,数据存储设备106或压缩模块306下游的一些模块通常跟踪附加点和数据存储设备106上的数据的物理位置,并且等待直到数据被压缩以确定数据(或数据包)的一部分和后续的附加点的数据长度。一旦得知附加点且压缩了数据,数据长度和位置(可以是物理地址的形式)可以被回报给映射模块206。在一种实施方式中,压缩模块306将压缩信息与所压缩的数据一起存储,通常存储在用于数据的数据包头中。本领域技术人员会认识到在数据存储设备106存储之前的压缩的其他特点和结果。
在另一种实施方式中,装置300包括索引重建模块308,索引重建模块308利用一个或多个源参数和数据段的数据在数据存储设备106上的物理位置重建映射模块206为数据段创建的映射。为了提升存取速度,索引通常存储在快速、非易失性存储器中(例如DRAM),快速、非易失性存储器容易由于电力故障、系统复位等丢失。将源参数与数据一起存储在顺序存储设备在顺序日志内创建了非易失性数据记录,索引重建模块308利用顺序日志重新创建源参数和物理地址以及数据长度之间的索引映射。
源参数可以存储在包头、数据包内的特定位置或者存储在数据包的尾端。通常,源参数存储在数据包的包头中。数据长度通常存储在数据包头内,从而如果索引或映射不可用,也可以顺序地搜索数据。在一种实施方式中,索引重建模块308在数据存储设备106的整个区域(例如页或擦除块)中跟踪,以重建包括用于数据段的映射的索引。
有利地是,数据在数据存储设备106上的物理存储位置和与数据一起存储的源参数包括主要的虚拟-物理映射。映射模块206所创建的映射包括次要虚拟-物理。次要虚拟-物理映射通常存储在RAM中,从而如果由于失去电力、发生故障或者其他原因,映射模块206所创建的映射失效时,主要虚拟-物理映射可用于重建次要虚拟-物理映射。
例如,索引重建模块308在数据存储设备106中查看位于数据的页的起始处的数据包头。索引重建模块308读取第一数据包的物理地址,然后读取包头中的源参数(包括数据长度)。然后,索引重建模块308将数据包中的源参数映射到数据包的物理地址和数据长度。索引重建模块308随后利用数据长度移动到下一数据包。索引重建模块308然后重复重建在页中的所有数据包中跟踪的进程以构建次要虚拟-物理映射。因此,数据存储设备106是可用于重建索引的顺序日志,该索引包括物理地址和源参数(例如虚拟标识符、偏移量、逻辑块地址、源物理长度等)之间的映射。
在一种实施方式中,索引被周期性地检查,或者在特定的时间点或以特定的状态存储在非易失性存储器中。每页何时被数据填充的顺序由带内保持,并且该顺序与检查点相互联系。如果索引不可用,对应于最近的检查点的最近索引可被检索。随后,可通过重放始于在检查点之后保存数据包的位置的日志来将索引提到当前。索引重建模块308可以通过下述方法同步:从存储在检查点之后的数据包到最新存储的数据包顺序地在数据包中跟踪以将索引更新到当前状态。有利地是,索引重建模块308允许有效和快速地恢复被检查的索引。
在一种实施方式中,装置300包括用于修正两个或多个未完成的附加数据存储命令的执行序列的命令重新排序模块310。命令重新排序模块310以一种更有效的方式有利于序列命令。在一种实施方式中,读取命令可被推迟,直到同一数据段的写入命令完成。在另一种实施方式中,支持多通道的存储设备102可允许当第一通道繁忙时其预定的命令推迟,并允许其他通道的其他命令继续执行,直到第一通道可用。在另一种实施方式中,当存储请求接收器模块202接收两个或多个存储请求时,装置300包括重新排列服务存储请求的顺序的请求重新排序模块312。命令重新排序模块310和请求重新排序模块312以一种更有效的方式有利于序列命令和请求。
在另一种实施方式中,装置300包括垃圾收集模块314,垃圾收集模块314在将存储区域返回给数据存储设备106的可用空间的池以用于后续的数据存储之前,从数据存储设备106的被标识为恢复的存储区域移动有效数据,并从存储区域中擦除无效数据。在该实施方式中,映射模块206将数据存储设备106中的一个或多个位置的有效数据的源参数的映射更新为数据存储设备106附加有效数据和关联的源参数的新位置。在一种实施方式中,可按与其他存储请求相同的方式从选定为恢复的区域中移动有效数据。
图4是示出了根据本发明的将存储请求转换为附加数据命令的方法400的一种实施方式的示意性流程图。方法400开始,在步骤402,存储请求接收器模块202从请求设备(例如客户端110或服务器108)接收存储请求。存储请求包括将文件或对象的数据段存储在数据存储设备106上的请求。存储请求可包括一个或多个用于数据段的源参数,数据段至少包括一个或多个逻辑块地址(在该地址处,存储请求请求存储数据段)和一个或多个相应于一个或多个逻辑块地址的数据长度。
在步骤404,翻译模块204将存储请求翻译为一条或多条存储命令。至少一条存储命令是附加数据存储命令。每条附加数据存储命令指令数据存储设备106将数据段的数据存储在一个或多个附加点上。附加点是数据存储设备106中的位置,其是数据存储设备106上最新存储的数据段之后的下一个地址。如果翻译模块204将数据段分割为不止一个段,则通常不止一个数据附加命令被创建。如果源自数据段的数据不适于页、擦除块等的末端的附加点,这样做可能是需要的。第二附加点可被设置在另一页、擦除块等的起始位置处。
在步骤406,映射模块206将数据段的一个或多个源参数映射为数据存储设备106的一个或多个位置,在该位置处,数据存储设备106附加数据段的数据,方法400结束。通常,映射是允许将来存取数据的索引的一部分。通过将数据的物理位置和数据长度映射到源参数,装置200能够仿真随机存取设备,同时将数据顺序地存储在数据存储设备106上。
图5是示出了根据本发明的将存储请求转换为附加数据命令的另一种方法500的一种实施方式的示意性流程图。方法500开始,在步骤502,存储请求接收器模块202从请求设备(例如客户端110或服务器108)接收存储请求。在步骤504,翻译模块204将存储请求翻译为一条或多条存储命令,其中至少一条存储命令是附加数据存储命令。同样地,每条附加数据存储命令指令数据存储设备106将数据段的数据存储在一个或多个附加点上。
在步骤506,压缩模块306将关于数据段的一条或多条附加数据存储命令的数据压缩成压缩数据,并且在步骤508,数据存储设备106响应于附加数据存储命令存储压缩数据。在步骤510,存储响应接收器模块302从数据存储设备106接收一个或多个存储命令响应。存储命令响应包括数据存储设备106附加数据段的数据的一个或多个位置。在步骤512,基于作为存储命令响应的一部分接收的存储位置,映射模块206将数据段的一个或多个源参数映射到数据存储设备106中的一个或多个位置,在这些位置,数据存储设备106附加数据段的数据,方法500结束。通常,压缩数据使得在存储数据之后将源参数映射到存储位置成为必须,这是因为压缩通常会改变数据的数据长度。
图6是根据本发明的将存储请求转换为附加数据命令的实例600的示意性框图。实例600仅展示了用于将存储请求转换为附加数据存储命令的装置200、装置300的一种实施方式,并不试图以任何方式成为限制。本领域技术人员会认识到,有不同于图6的实例600的许多方法实施本发明。
实例600可表示请求设备指令存储设备102将数据段存储在特定物理地址处的逻辑块存储请求。请求设备(如客户端110或服务器108)初始化存储请求以从源数据存储设备写入数据。来自源数据存储设备的数据602的一部分与存储在数据602的一部分内的数据段606一起被描述。在这种情况下,数据段606拟被存储于存储设备102的扇区1、偏移量5和数据长度为8的物理地址上。在一种实施方式中,请求设备制定存储请求608并将存储请求608发送到存储设备102,存储请求608包括具有源参数的包头,源参数包括逻辑块地址和数据长度。
为简便起见,实例600假设数据段606的数据未被压缩。在实例600中,数据段606的数据长度为8,并且在当前页616内有用于数据包的空间,用于长度为5的数据包的数据正在被存储在当前页616中。在这个例子中,翻译模块204确定数据段606不适于当前数据所存储的当前页616的末端并从数据段606创建两条附加数据存储命令614以存储两个数据包。数据1610和数据2612。
数据当前所存储的页616包括有效数据618。在其他页中可包括有效或无效数据。一条附加数据存储命令614将数据1610存储在附加点1620中,附加点1620紧随数据最新存储的位置622。数据包数据1610随后存储在当前页616的末端,如624所示。
第二附加数据存储命令614将数据2612存储在数据将要被存储的下一页626上。在一种实施方式中,下一页626位于不同于数据1610所存储的页616的擦除块中。在这种实施方式中,存储在附加点1620的数据可流到下一页,而不需要必须在下一页的起始处设置新的附加点,除非下一页626位于另一擦除块中。在另一种实施方式中,下一页626是邻近数据1610所存储的页616的页,或者在某种程序上是逻辑上的下一页,但是新的附加点2630需要位于下一页626的起始处。本领域技术人员会认识到何时第二附加点630被要求继续存储数据。下一页626不包括有效数据628,这是由于下一页626已被擦除或存储空间恢复进程已经确定下一页626中不再有有效数据。第二附加数据存储命令614将数据包数据2612存储在附加点2630上,如632所示。
该实例600表明了数据段606分离的情况,数据段606分离是由于创建自数据段606的数据包610、612落在了页616的边界上,在其他情况下,数据段606的数据可存储在一起或者可以分离为三个或更多个数据包。在其他情况下,压缩模块306将数据段606的数据压缩以形成一个或多个数据包610、612。
图7是根据本发明的用于有效地映射虚拟地址和物理地址的装置700的一种实施方式的示意性框图。装置700包括正向映射模块702、反向映射模块704和存储空间恢复模块706,下文将描述这些模块。正向映射模块702、反向映射模块704和存储空间恢复模块706中的一个或多个的至少一部分位于下述设备的一个或多个中:发送存储请求的请求设备、数据存储设备106、存储控制器104、以及与请求设备、数据存储设备106和存储控制器104分离的计算设备。
在一种实施方式中,正向映射模块702和反向映射模块704与映射模块206结合起来工作。正向映射模块702和反向映射模块704可以是映射模块206的一部分,或者与映射模块206分离但一起工作。
装置700包括使用正向映射以识别数据段的数据的一个或多个物理地址的正向映射模块702。通过数据段的一个或多个虚拟地址识别物理地址,虚拟地址在发送到数据存储设备106的存储请求中识别。例如,存储请求可包括读取存储在数据存储设备106中的数据的请求。读取数据的存储请求包括与存储在数据存储设备106上的数据相关联的虚拟地址或虚拟标识符。读取请求可包括文件的虚拟地址,数据段源于该文件,这可以解释为,读取请求是读取与虚拟地址相关联的整个数据段的请求。
在另一实例中,读取请求包括读取请求中所请求的数据的虚拟地址以及偏移量和虚拟地址。例如,如果数据段是20个块,读取请求可包括16块的偏移量(即,始于20个块中的第16个块)和5的数据长度,从而读取请求读取数据段的最后5个块。读取请求也可在请求中包括偏移量和数据长度以读取整个数据段或从数据段的起始处读取。其他请求也可包括在存储请求中,例如状态请求。存储请求的其他类型和其他形式也被考虑在本发明的范围内并且能够被本领域技术人员所认识到。
装置700包括正向映射,该正向映射将一个或多个虚拟地址映射到存储在数据存储设备106中的数据的一个或多个物理地址。虚拟地址对应于与存储在数据存储设备106中的数据有关的一个或多个数据段。通常,一个或多个虚拟地址包括虚拟地址空间内的离散地址,其中虚拟地址通常稀疏地位于虚拟地址空间。对于数据段的虚拟地址来说,数据长度信息也可与虚拟地址关联且也可以包括在正向映射中。通常,数据长度对应于数据段的大小。结合虚拟地址和与虚拟地址有关的数据长度信息可用于帮助读取数据段内的特定部分。
通常,用于识别存储的数据的虚拟地址表示可能位于名字空间或可能的虚拟地址范围内的极少量虚拟地址。搜索这种稀疏构成的空间可能是繁琐的。出于这个原因,正向映射通常是有助于快速遍历正向映射以基于虚拟地址找出物理地址的数据结构。例如,正向映射可包括B-树、内容可寻址存储器(CAM)、二进制树、哈希表或有助于快速搜索稀疏构成的空间或范围的其他数据结构。通过使用快速搜索稀疏构成的名字空间的正向映射,装置700提供了从虚拟地址确定一个或多个物理地址的有效方式。
当正向映射可被优化(或至少被设计)以快速地从虚拟地址确定物理地址时,通常,不必为了在数据存储设备106的特定区域内定位所有数据而优化正向。出于该原因,装置700包括使用反向映射以从物理地址确定数据段的虚拟地址的反向映射模块704。反向映射用于将一个或多个物理地址映射到一个或多个虚拟地址,并且能够被反向映射模块704或其他进程使用以从物理地址确定虚拟地址。反向映射是有利地将数据存储设备106映射到擦除区域,从而反向映射的一部分跨越数据存储设备106的在存储空间恢复操作中一起擦除的擦除区域。存储空间恢复操作(或垃圾收集操作)恢复擦除区域以用于进一步的数据存储。通过利用擦除区域组织反向映射,存储空间恢复模块706能够有效地识别用于存储空间恢复的擦除区域并识别有效数据。下文将更详细地描述存储空间恢复模块706。
反向映射中的物理地址与正向映射关联或链接到正向映射,从而如果在正向映射中虚拟地址A映射到物理地址B,则在反向映射中,物理地址B映射到虚拟地址A。在一种实施方式中,正向映射包括链接到反向映射中的条目的物理地址。在另一种实施方式中,正向映射包括指向反向映射中的物理地址的指针或一些其他的中间链表、表等。本领域技术人员会认识到将物理地址链接到正向映射和反向映射的其他方法。
在一种实施方式中,反向映射包括一个或多个源参数。源参数通常与存储请求一起被接收并至少包括一个或多个虚拟地址。源参数也可包括与数据段的数据相关联的数据长度,数据段与存储请求一起被接收。在另一种实施方式中,反向映射不包括虚拟地址或数据长度形式的源参数,且源参数与存储在数据存储设备106上的数据段的数据一起存储。在该实施方式中,源参数可从反向映射中的引到与数据一起存储的源参数的物理地址被找出。换言之,反向映射可使用主要虚拟-物理映射,而不使用次要逻辑-物理映射。
将源参数与数据一起存储在顺序存储设备中是有利的,这是因为存储在数据存储设备106中的数据成为了能够被回放以重建正向和反向映射的日志。这是由于以下事实:与存储请求被接收的时间相匹配的顺序存储数据,并由此,源数据执行双重职能;重建正向和反向映射,并从物理地址确定虚拟地址。
装置700包括存储空间恢复模块706,存储空间恢复模块706在恢复擦除区域的操作之前利用反向映射识别擦除区域中的有效数据。在恢复操作之前,所识别的有效数据被移动到另一个擦除区域。通过利用擦除区域组织反向映射,存储空间恢复模块706能够扫描反向映射中对应于擦除区域的那部分以快速地识别有效数据或确定擦除区域中的有效数据的数量。擦除区域可包括一起擦除的擦除块、固定数量的页等。可组织反向映射,从而一旦扫描到特定擦除区域的条目,就得知了擦除区域的内容。
通过利用擦除区域组织反向映射,相比于搜索B-树、二进制树或其他用于虚拟-物理地址搜索的类似结构,搜索擦除区域的内容更加有效。搜索B-树、二进制树等形式的正向映射是繁琐的,这是因为B-树、二进制树等必须频繁地被全面搜索以识别擦除区域的所有有效数据。反向可包括表、数据库或其他允许进入擦除区域的将要被存储的数据以有助于擦除区域的数据的操作的结构。
在一种实施方式中,正向映射和反向映射独立于组织数据用于发送存储请求的请求设备的文件结构、名字空间、目录等,请求设备例如运行在服务器108或客户端110中的文件服务器或客户端。通过维持与请求设备的任何文件服务器分离的正向映射和反向映射,装置700能够仿真像存储请求所请求的那样存储数据的随机存取、逻辑块存储设备。
正向映射和反向映射的使用允许装置700看起来像是将数据存储在存储请求所指令的特定位置,而实际上将数据顺序地存储在数据存储设备106。有利地是,装置700通过仿真逻辑块存储而实际上顺序地存储数据,克服了随机存储对固态存储器(例如闪存)所产生的问题。装置700也允许灵活性,这是由于一个存储请求可以是逻辑块存储请求,而第二存储请求可以是对象存储请求、文件存储请求等。保持请求设备对文件结构、名字空间等的独立性在装置700可以服务的存储请求的类型方面提供了极大的灵活性。
图8是根据本发明的用于有效地映射虚拟地址和物理地址的装置800的另一种实施方式的示意性框图。装置800包括正向映射模块702、反向映射模块704和存储空间恢复模块706,这些模块与上文中相对于图7的装置200描述的基本相同。装置800还包括映射重建模块802、检查点模块804、映射同步模块806、无效模块808和映射更新模块810,将在下文中描述这些模块。
装置800包括映射重建模块802,映射重建模块802利用与数据一起存储的源参数重建正向映射和反向映射。当数据在数据存储设备106上顺序地存储时,通过跟踪擦除区域或擦除块在数据存储设备106中填充顺序和将源参数与数据一起存储,数据存储设备106成为顺序日志。映射重建模块802通过顺序地读取存储在数据存储设备106上的数据包回放日志。每个物理地址和数据包长度与每个数据包中的源参数成对,以重建正向和反向映射。
在另一种实施方式中,装置800包括检查点模块804,检查点模块804存储与正向映射和反向映射相关的信息,其中检查点是与数据存储设备的时间点或状态点有关的检查点。存储的信息足以将正向映射和反向映射恢复到相对于检查点的状态。例如,存储的信息可包括将正向和反向映射连同一些指示状态或时间检查点的标识符存储在非易失性存储器中,例如存储在数据存储设备中。
例如,时间戳可以与检查点信息一起存储。然后,时间戳可以与数据存储设备106中位置相互关联,其中数据包当前在该位置正在被存储在检查点中。在另一实例中,状态信息与检查点信息一起存储,状态点信息例如数据存储设备106正在存储数据的位置。本领域技术人员会认识到可由检查点模块804存储以将正向和反向映射恢复为检查点的其他检查点信息。
在另一种实施方式中,装置800包括映射同步模块806,映射同步模块806通过顺序地应用源参数和物理地址将正向映射和反向映射从相对于检查点的状态更新到当前状态。应用的源参数与顺序存储在检查点之后的数据一起存储。物理地址源于数据存储设备106上的数据的位置。
有利地是,映射同步模块806从检查点(而不是从起始处开始恢复)将正向和反向映射恢复到当前状态,并回放数据存储设备106的所有内容。映射同步模块806使用检查点到达紧随检查点之后存储的数据包,然后从该点到当前状态(在该状态下,数据包当前正被存储在数据存储设备106上)回放数据包。映射同步模块806通常比映射重建模块802消耗更少的时间来恢复正向和反向映射。
在一种实施方式中,正向和反向映射存储在数据存储设备106上,而正向和反向映射的另一个集被创建以映射存储的正向和反向映射。例如,数据包可存储在第一存储通道中,而用于存储的数据包的正向和反向映射可作为数据存储在第二存储通道中;第二存储通道上的用于数据的正向和反向映射可以作为数据存储在第三存储通道上,依此类推。这种递归的进程可根据需要为额外的正向和反向映射继续。存储通道可以位于单个数据存储设备106或位于分离的数据存储设备106。
装置800包括无效模块808,无效模块808在反向映射中标记数据的条目,该条目指示由其引用的数据响应于导致数据被无效的操作而无效。无效模块808可作为删除请求、读-修改-写请求及类似请求的结果标记条目无效。反向映射包括一些类型的无效标记或标签,无效标记或标签可由无效模块808改变以指示与反向映射中的条目关联的数据是无效的。例如,反向映射可包括一个由无效模块808在数据无效时设定的位。
在一种实施方式中,反向映射包括用于存储在数据存储设备106的有效数据和无效数据的信息,正向映射包括用于存储在数据存储设备106上的有效数据的信息。由于反向映射对于存储空间恢复操作来说是有用的,指示擦除块中的哪些数据为无效的信息包括在反向映射中。通过在反向映射中维持指示无效数据的信息,在一种实施方式中,正向映射仅需要维持有关于存储在数据存储设备106上的有效数据的信息,由此提升了正向查找的效率和速度。
随后,存储空间恢复模块706可使用无效标记通过下述方法确定擦除区域中的无效数据的数量:扫描用于擦除区域的反向映射以相对于擦除区域的存储容量确定无效数据的数量。然后,存储空间恢复模块706可使用擦除区域中的无效数据的确定数量来选择恢复的擦除区域。通过扫描若干擦除区域甚至是全部可用的擦除区域,存储空间恢复模块706可以使用选择标准(例如擦除区域中无效数据的最高量)以选择恢复的擦除区域。
在一种实施方式中,一旦擦除区域被选定为恢复,存储空间恢复模块706可随后将有效数据从选定的擦除区域写入数据存储设备106中的新位置。通常,该新位置位于当前正在顺序地存储数据的擦除区域的页中。存储空间恢复模块706可利用数据管道写入有效数据,正如由David Flynn等人于2007年12月6日提交的申请号为11,952,091,题为“Apparatus,System,and Methodfor Managing Data Using a Data Pipeline”美国专利申请中所述的,通过引用将该文献并入本文中。
在一种实施方式中,存储空间恢复模块706还更新反向映射以指示写入新位置的有效数据在选定的擦除区域中为无效,并且基于写入新位置的有效数据更新正向和反向映射。在另一种实施方式中,存储空间恢复模块706与映射更新模块810(下文将对其描述)协同作用以更新正向和反向映射。
在优选实施方式中,存储空间恢复模块706相对于与存储请求和其他命令相关联的数据存储和检索自主地运行。包括在存储空间恢复模块706中的存储空间恢复操作在上文中引用的存储空间恢复申请有更详细的描述。
在一种实施方式中,装置800包括映射更新模块810,映射更新模块810响应于数据存储设备106被改变的内容更新正向映射和/或反向映射。在又一种实施方式中,基于数据存储设备存储数据的位置,映射更新模块810从数据存储设备接收将所存储数据的物理地址链接到虚拟地址的信息。在该实施方式中,存储数据包的位置可以是不可用的,直到数据存储设备106存储了数据包。
例如,来自数据段的数据被压缩以形成数据包,每个数据包的大小可以是未知的,直到压缩之后。数据存储设备106顺序地存储数据,一旦数据包被压缩和存储,附加被设定到存储的数据包之后的位置,下一数据包被存储。一旦得知附加点,数据存储设备106随后发回对应于存储下一数据包的附加点的物理地址的报告。映射更新模块810使用所报告的存储的数据包的物理地址和关联的数据长度更新正向和反向映射。本领域技术人员会认识到映射更新模块810的其他实施方式以基于存储在数据存储设备106上的数据的物理地址和关联的数据长度更新正向和反向映射。
图9是根据本发明的用于有效地映射虚拟地址和物理地址的方法900的一种实施方式的示意性流程图。方法900开始,在步骤902,正向映射模块702使用正向映射识别数据段的数据的一个或多个物理地址。从数据段的一个或多个虚拟地址识别物理地址,在指令数据存储设备106的存储请求中识别数据段。正向映射包括一个或多个虚拟地址到数据存储设备106中存储的数据的一个或多个物理地址之间的映射。虚拟地址是虚拟地址空间内的离散地址,其中虚拟地址稀疏地位于虚拟地址空间。
在步骤904,反向映射模块704使用反向映射从物理地址确定数据段的虚拟地址。反向映射将一个或多个物理地址映射到一个或多个虚拟地址。反向映射中的物理地址也利用指针、链接等与正向映射相关联。反向映射中的虚拟地址对应于与存储在数据存储设备106上的数据相关的一个或多个数据段。反向映射也将数据存储设备映射到擦除区域,从而反向映射的一部分跨越擦除区域。数据存储设备106的擦除区域在存储空间恢复操作中被一起擦除。存储空间恢复操为将来存储数据恢复擦除区域。
在步骤906,存储空间恢复模块706在恢复擦除区域的操作之前使用反向映射识别擦除区域中的有效数据,方法900结束。存储空间恢复模块706或其他与存储空间恢复关联的模块在恢复操作之前将识别的有效数据移动到另一擦除区域。注意到方法900的步骤902、904、906平行示出,这是因为步骤902、904、906可以以任意顺序独立地实施。
图10是根据本发明的用于有效地映射虚拟地址和物理地址的方法1000的另一种实施方式的示意性流程图。方法1000开始,在步骤1002,存储空间恢复模块706通过下述方法确定擦除区域中的有效数据的数量:扫描用于擦除区域的反向映射以确定有效数据相对于擦除区域的存储容量的数量。在步骤1004,存储空间恢复模块706确定是否要计算另一擦除区域。如果在步骤1004,存储空间恢复模块706确定要计算另一擦除区域,存储空间恢复模块706为下一擦除区域确定有效数据的量。
如果在步骤1004,存储空间恢复模块706确定不计算另一擦除区域,则在步骤1006,存储空间恢复模块706通过利用选择标准选择恢复的擦除区域,选择标准可包括利用擦除区域中的无效数据的数量。在步骤1008,存储空间恢复模块706识别选定的擦除区域中的有效数据并在步骤1010中,将有效数据移动到当前写入数据的擦除区域中。在步骤1012,映射更新模块810随后更新正向和反向映射以表明有效数据已被写入数据存储设备106中的另一位置。
在一种实施方式中,在步骤1014,存储空间恢复模块706擦除选定的擦除区域并将选定的存储区域标记为可用于数据存储,方法1000结束。在另一种实施方式中,一旦存储空间恢复模块706将选定的擦除区域中的所有有效数据写入另一位置,在步骤1014,存储空间恢复模块706将选定的存储区域标记为可用于数据存储,而不需要擦除。
图11是根据本发明的正向映射和反向映射的实例的示意性框图。通常,装置700和800接收存储请求,例如读取和编址的存储请求。例如,装置700和800可接收逻辑块存储请求1102以开始读取读取地址182并读取3个块。通常,正向映射1104将逻辑块地址存储为与其他虚拟地址在一起的虚拟地址,从而正向映射模块702使用正向映射1104从存储请求1102的值为182的虚拟地址识别物理地址。在该实例中,为简便起见,仅示出了数字的虚拟地址,但本领域技术人员会认识到正向映射1104中可使用和表示的任意虚拟地址。在其他实施方式中,正向映射1104可包括字母-数字字符、十六进制字符及类似字符。
在该实例中,正向映射1104是简单的B-树。在其他实施方式中,正向映射1104可以是内容可寻址存储器(CAM)、二进制树、哈希表或本领域内技术人员所知的其他数据结构。在该实施方式中,B-树包括可包括两个虚拟地址的节点(例如根节点1108)。每个虚拟地址可以是值域。例如,虚拟地址可以是具有值域(例如偏移量和长度)的虚拟标识符的形式,或者可表示利用第一和最后地址或位置的值域。
单个虚拟地址包括在特定节点(例如根节点1108)中时,如果被搜索的虚拟地址1106小于节点的虚拟地址,搜索会继续沿着定向边1110往下到达节点1108的左边。如果被搜索的虚拟地址1106与当前节点1108匹配(即,位于在节点中识别的值域内),搜索停止,并且在当前节点1108的指针、链接、物理地址等被识别。如果被搜索的虚拟地址1106大于当前节点1108的值域,搜索会继续沿着定向边1112往下到达当前节点1108的右边。当节点包括两个虚拟地址,并且被搜索的虚拟地址1106落入节点的所列的虚拟地址之间时,搜索继续沿着中间定向边(未示出)往下到达具有落入当前节点1108的两个虚拟地址之间的虚拟地址的节点。搜索继续沿着B-树往下进行,直到定位了期望的虚拟地址或者确定了B-树中不存在所搜索的虚拟地址1106。
在图11所示出的实例中,正向映射模块702从根节点1108开始搜索值为182的虚拟地址1106。由于搜索的虚拟地址1106小于根节点的虚拟地址(2005-212),正向映射模块702向下沿着定向边1110往下搜索到达下一节点1114的左边。搜索的值为182的虚拟地址1106大于存储在下一节点1114的虚拟地址(072-083),所以正向映射模块702向下沿着定向边1116从节点1114的右边往下搜索到达下一节点1118。在该实例中,下一节点1118包括178-192的虚拟地址,从而所搜索的值为182的虚拟地址1106与节点1118的值为178-192的虚拟地址匹配,这是因为所搜索的值为182的虚拟地址1106落入到节点1118的值域178-192内。
一旦正向映射模块702确定了正向映射1104中的匹配,正向映射模块702将在节点1118内找到的或与节点1118链接的物理地址返回。在所述实例中,由正向映射模块702识别为包含所搜索的虚拟地址1106的节点1118包括映射到反向映射1122中的条目1120的链接“f”。
在所述实施方式中,对于反向映射1122中的每个条目1120(表示为表中的行)而言,反向映射1122包括条目ID 1124、物理地址1126、与存储在数据存储设备106的物理地址1126上的数据(在这种情况下,数据被压缩)相关联的数据长度1128、有效标签1130、虚拟地址1132(可选)、与虚拟地址1132相关联的数据长度1134(可选)和其他杂项数据1136。反向映射1122被组织到擦除块(擦除区域)中。在该实例中,对应于选定的节点1118的条目1120位于擦除块n 1138中。擦除块n 1138在擦除块n-11140之后,擦除块n 1138之后是擦除块n+11142(擦除块n-1和擦除块n+1中的内容未示出)。擦除块可以是包括预定数量的页的一些擦除区域。擦除区域是数据存储设备106上在存储恢复操作中被一起擦除的区域。
条目ID 1124被示出为是反向映射1122的一部分,条目ID 1124可以是地址、虚拟链接或将反向映射1122中的条目链接到正向映射1104中的节点的其他手段。物理地址1126是数据存储设备106中对应于所搜索的虚拟地址1106的数据所驻留的地址。与物理地址1126关联的数据长度1128识别存储在物理地址1126上的数据包的长度。(为简便起见,物理地址1126和数据长度1128可被一起称为目标参数1144,虚拟地址1132和关联的数据长度可被称为源参数1146)。在这个实例中,目标参数1144的数据长度1120不同于源参数1146的数据长度1134,在一种实施方式中,在存储之前压缩存储在数据存储设备106上的数据包。对于与条目1120关联的数据,数据可被高度压缩,从64个块压缩成1个块。
有效标签1130指示映射到条目1120的数据是否有效。在这种情况下,与条目1120关联的数据是有效的,在图11中,其在条目1120的行中被表示为“Y”。通常,反向映射1122既跟踪有效数据又跟踪无效数据,正向映射1104跟踪有效数据。在该实例中,条目“c”1148表示与条目1148关联的数据无效。注意到正向映射1104不包括虚拟地址。通常,反向映射1122保持无效数据的条目,从而能够在存储恢复操作中快速地区别有效数据和无效数据。
为了方便,所述反向映射1122包括源参数1146,但反向映射1122可以(但未必)包括源参数1146。例如,如果源参数1146与数据一起存储(可能位于存储数据的包头),反向映射1122可通过包括与数据关联的物理地址1126间接地识别虚拟地址,而可以从存储的数据中识别源参数1146。本领域技术人员会认识到何时将源参数1146存储在反向映射1122是有利的。
反向映射1122也可包括其他杂项数据1136,例如文件名、对象名、源数据等。本领域技术人员会认识到在反向映射1122中有用的其他信息。尽管物理地址1126在反向映射1122中示出,但在其他实施方式中,物理地址1126或其他目标参数1144可被包括在其他位置中,例如可被包括下述位置:正向映射1104、中间表或数据结构等等。
通常,反向映射1122由擦除块或擦除区域设置,从而遍历与擦除块(如擦除块n 1138)关联的映射的一部分允许存储空间恢复模块706识别擦除块1138中的有效数据并计算擦除块1138中有效数据的数量(或相反地,无效数据的量)。由于索引可被优化用于搜索和存储恢复操作,将索引设置到正向映射1104和反向映射1122中是有利的,其中正向映射1104能够被快速地搜索以从虚拟地址1106识别物理地址1126,反向映射1122能够被快速地搜索以识别擦除块1138中的有效数据及其数量。本领域技术人员会认识到具有正向映射1104和反向映射1122的索引的其他好处。
图12是示出了根据本发明的用于协调存储请求的装置1200的一种实施方式的示意性框图。装置1200包括具有附加/无效模块1202和重组模块1204的存储控制器104,这将在下文描述。附加/无效模块1202和重组模块1204中的一个或多个的至少一部分位于下述设备中的一个或多个中:发送存储请求的请求设备、数据存储设备106、存储控制器104和与请求设备、数据存储设备106和存储控制器104分离的计算设备。
装置1200包括附加/无效模块1202,附加/无效模块1202响应于第一存储请求的接收生成第一附加数据存储命令,并响应于第二存储请求的接收生成第二附加数据存储命令。从一个或多个请求设备接收第一和第二存储请求。请求设备可以是服务器108或客户端110,客户端110可以位于服务器108上,或者通过计算机网络112与服务器108通信。
第一存储请求包括用第一数据覆盖数据段的现有数据的请求。数据段存储在数据存储设备106上。第二存储请求包括用第二数据覆盖相同数据段的现有数据的请求。第一和第二数据包括将以相同的偏移量存储在数据段内的重叠数据的至少一部分,在第一存储请求之后接收第二存储请求。
附加/无效模块1202还响应于第一存储请求通过将数据段的数据标记为无效来更新索引。标记为无效的数据是正被第一数据替换的数据。附加/无效模块1202也响应于第二存储请求通过将数据段的数据标记为无效来更新索引,其中,标记为无效的数据是正被第二数据替换的数据。在一种实施方式中,附加/无效模块1202通过更新反向映射1122来更新索引。在一种实施方式中,附加/无效模块1202更新反向映射1122以指示数据段无效。在另一种实施方式中,附加/无效模块1202仅将对应于第一数据或第二数据的数据标记为无效。这可能需要修正正向映射1104和反向映射1122,这将在下文中详细描述。
在另一种实施方式中,将数据段的数据标记为无效可包括生成表,该表指示数据段的正被第一数据和第二数据替换的部分是无效的,该表还指示数据段中未被替换的部分仍然是有效的。该表可被重组模块1204在更新索引的过程中使用,而不需要将整个数据段标记为无效。
装置1200包括重组模块1204,重组模块1204基于第一数据更新索引并基于第二数据更新索引,其中,组织被更新的索引以指示第二数据比第一数据更符合当前情况。在基于第一数据更新索引(在基于第二数据更新索引之前)之时或基于第二数据更新索引(在基于第一数据更新索引之前)之时保持索引的这种组织。
在一种实施方式中,组织索引以指示对于重叠数据来说第二数据比第一数据更符合当前情况包括在用于重叠数据的索引中保持指针、链接等,不考虑更新的顺序,重叠数据对应于第二数据。例如,如果源数据段包括由3’的第一数据和3”的第二数据覆盖的块3,在更新之后,不论索引是否在第一数据之前用第二数据更新,索引都指向3”,反之亦然。在下文对图16的描述中提供了进一步的解释。
通常,组织索引以指示第二数据比第一数据更符合当前情况可包括利用第二数据更新索引中映射到重叠数据的一部分,以及甚至在重组模块1204基于第二数据(在基于第一数据更新索引之前)更新索引的情况下,保留到第二数据的映射。
当附加/无效模块1202更新索引时,附加/无效模块1202阻止通过另一进程访问索引以确保数据完整性。例如,如果附加/无效模块1202正在基于第一数据更新索引,附加/无效模块1202阻止重组模块1204或附加/无效模块1202的另一例程基于第二数据更新索引。通过在索引更新时阻止对索引的访问(即锁定索引),装置1200支持多处理器或多线程运行的装置的模块1202和1204的多重运行。注意到尽管上文中讨论了两个存储请求,本发明可同样地应用到同时处理三个或更多个存储请求的情形。
图13是示出了根据本发明的用于协调存储请求的装置1300的另一种实施方式的示意性框图。装置1300包括附加/无效模块1202和重组模块1204,这两个模块基本上类似于结合图12的装置1200所描述的。装置1300还包括数据位置模块1302、读取模块1304、读取延迟模块1306、序列编号模块1308,将在下文中描述这些模块。图示中,装置1300的模块1202、1204、1302-1308位于存储控制器104中,但模块1202、1204、1302-1308的全部或部分可包括在数据存储设备106、客户端110、服务器108或其他设备或其他位置中。
在一种实施方式中,装置1300包括数据位置模块1302,数据位置更新模块1302利用数据存储设备106存储第一数据的第一物理地址更新索引,还利用数据存储设备106存储第二数据的第二物理地址更新索引。装置1300接收数据存储设备106存储第一数据和从数据存储设备106接收第二数据的物理位置。如上所述,数据存储设备106顺序地存储数据,为给定的数据包存储数据的位置可以是未知的,直到存储了先前的数据包。
组织所更新的索引以指示第二物理位置比第一物理位置更符合当前情况,而不考虑索引是基于第一物理位置被更新(在基于第二物理位置更新之前),还是基于第二物理位置被更新(在基于第一物理位置更新之前)。例如,如果第一数据的重叠部分响应于第一存储请求存储在地址1中,而第二数据的重叠部分存储地址2中,则数据位置模块1302为索引中相对于重叠数据的部分将地址2存储在索引中。如果在为第一数据更新之前,为第二数据更新索引,则索引为重叠数据维持地址2,而不是用地址1替换地址2。
数据位置更新模块1302阻止通过数据位置模块1302或其他模块(例如附加/无效模块1202或重组模块1204)的另一例程访问索引,直到数据位置模块1302完成更新索引。在数据位置模块1302更新索引之时阻止对索引的访问增加了数据的可靠性。
通常,在重组模块1204处理存储请求之前,附加/无效模块1202处理特定存储请求,并且在数据位置模块1302处理存储请求之前,重组模块1204处理存储请求。然而,一旦确定两个存储请求到达的顺序,附加/无效模块1202的例程处理第二存储请求可发生在附加/无效模块1202的另一例程处理第一存储请求之前。同样地,重组模块1204处理第二存储请求可发生在附加/无效模块1202或重组模块1204的另一例程处理第一存储请求之前。
类似地,数据位置模块1302的例程处理第二存储请求可发生在附加/无效模块1202、重组模块1204或数据位置模块1302的另一例程处理第一存储请求之前。本发明的这种特征允许异步和独立的多处理器和/或多线程地处理存储请求。在模块1202、1204、1302的另一例程更新索引和基于到达的顺序而不是处理的顺序组织索引时,阻止对模块1202、1204和1302的访问有助于通过多处理器或多线程并行地处理存储请求。
装置1300包括反向的读取模块1304,读取模块1304响应于包括读取请求的存储请求读取数据段的至少一部分。读取请求必须与导致修正数据段的存储请求协调,从而装置1300也包括读取延迟模块1306,读取延迟模块1306推迟服务所请求的读取操作,直到第一存储请求由附加/无效模块1202、重组模块1204和数据位置更新模块1302服务。读取延迟模块1306通过在更新数据段的内容时或在更新映射到数据段的索引时阻止读取操作保持数据的完整性。
在一种实施方式中,当在请求覆盖数据段的至少一部分的第一存储请求之后,但在同样请求覆盖数据的至少一部分的第二存储请求之前接收到读取数据段的读取请求时,读取延迟模块1306推迟服务读取请求,直到第一和第二存储请求都已由附加/无效模块1202、重组模块1204和数据位置更新模块1302服务。在这种实施方式中,读取延迟模块1306允许基于第二数据存储请求更新数据段,从而读取模块1304将读取数据段的最新版本。
在一种实施方式中,装置1300包括序列编号模块1308,序列编号模块1308将序列号与存储请求关联,其中分配的序列号表示装置1300接收存储请求的顺序。序列号有助于组织索引,从而索引反映出:基于第二存储请求的更新发生在基于第一存储请求的更新之前。在这种实施方式中,重组模块1204组织索引以利用分配给第一存储请求和第二存储请求中的每一个的序列号指示第二数据比第一数据更符合当前情况。同样地,数据位置模块1302也组织索引以指示第二数据比第一数据更符合当前情况。序列号可以是时间戳、连续的数字或其他任何可被用于识别一个序列号先于另一个序列号的机制。本领域技术人员会认识到序列号的其他形式。
在一种实施方式中,在更新索引时,附加/无效模块1202、重组模块1204或数据位置模块1302不阻止访问整个索引。索引可被分割成两个或多个区域。例如,一个区域可涉及数据存储设备106的一个区域,而索引的另一个区域可涉及数据存储设备106的另一个区域。在该实施方式中,当服务涉及索引的第一区域的存储请求时,附加/无效模块1202、重组模块1204或数据位置模块1302的额外的例程可服务涉及第二区域的第二存储请求。在另一种实施方式中,索引可被分割以创建多个可独立运行的虚拟地址区域。索引的区域可以是分支、次分支,甚至是节点,只要在更新区域时限制对区域的访问不影响同时更新的其他分区的数据完整性。
在一种实施方式中,第一和第二存储请求与将要替换数据段的至少一部分的数据一起接收。在另一种实施方式中,同时接收第一和第二存储请求中的一个或两个,而没有数据。此外,可将相应的附加数据存储请求在没有数据的情况下发送到数据存储设备106。例如,存储请求可不包括数据且可以初始化直接存储器存取(DMA)进程和远程直接存储器存取(RDMA)进程以将数据段的数据转移到数据存储设备106。同样地,发送到数据存储设备106的附加数据存储命令可指令数据存储设备106建立DMA或RDMA进程以转移数据。装置1200、1300具有足够的灵活性以处理具有数据一个存储请求、是恢复进程的一部分的另一存储请求和建立DMA和RDMA操作的又一存储请求。
本发明公开了附加/无效模块1202、重组模块1204和数据位置更新模块1302的例程是如何处理大约在同一时间接收到的影响单个数据段的请求,本领域技术人员会认识到附加/无效模块1202、重组模块1204、数据位置更新模块1302可处理其他影响单个数据段的不同部分的多种存储请求,也可处理影响两个或多个分离的数据段的存储请求。
图14是示出了根据本发明的用于协调存储请求的方法1400的一种实施方式的示意性流程图。方法1400开始,在步骤1402,装置1200接收第一存储请求。在步骤1404,装置1200接收第二存储请求。第一和第二存储请求通过覆盖数据段的至少一部分影响单个数据段。此外,第一和第二数据请求覆盖数据段为第一和第二存储请求所共有的至少一个重叠部分。
在步骤1406,附加/无效模块1202的例程生成第一附加数据存储命令以用第一数据覆盖数据段的至少一部分。在步骤1408,附加/无效模块1202的例程还生成第二附加数据存储命令以用第二数据覆盖数据段的至少一部分。在步骤1410,附加/无效模块1202的正在服务第一数据请求的例程通过无效数据段中被第一数据替换的数据更新索引。在步骤1412,附加/无效模块1202的正在服务第二数据请求的例程通过无效数据段中被第二数据替换的数据也更新索引。
在步骤1414,重组模块1204的例程基于第一数据更新索引。在步骤1416,重组模块1204的例程还基于第二数据更新索引,方法1400结束。当附加/无效模块1202或重组模块1204的任意例程更新索引时,模块1202、1204的其他例程被阻止访问索引。
与附加/无效模块1202和重组模块1204的例程有关的步骤1406-1416的顺序仅仅是一种实施方式。步骤1406-1416的其他顺序是可能的而且是本发明的重要特征,只要在重组模块1204服务第一存储请求之前,附加/无效模块1202服务第一存储请求,而且在重组模块1204服务第二存储请求之前,附加/无效模块1202服务第二存储请求。例如,附加/无效模块1202的例程和重组模块1204的例程可以在附加/无效模块1202的另一例程服务第一存储请求之前服务第二存储请求。在下文中,相对于图16所示出的实例更详细地论述了服务存储请求的可能顺序。
图15是示出了根据本发明的用于协调存储请求的方法1500的一种实施方式的示意性流程图。方法1500是为协调上述的客户端110、存储控制器104或装置1200、1300的其他位置以及数据存储设备106中的存储请求而采取的步骤的实例。注意到方法1500描述了三个设备中的动作,方法1500不意图暗示本发明需要跨越不止一个设备,也不意图暗示模块必须按图12和13所示定位。
本发明可以在存储控制器104或与数据存储设备106的存储控制器104通信的其他单个设备中实施,也可包括客户端110、服务器108等中的驱动器的一部分。通常,客户端110和数据存储设备106中所示的动作独立于本发明,而且仅被用于展示一般在客户端110和数据存储设备106中发生了什么以发送存储请求和响应于存储请求而存储数据。
尽管方法1500描绘了单个客户端110,但通常,具有多个客户端110,而且每个客户端110通过存储控制器104的一个或多个的例程访问数据存储设备106。在步骤1502,客户端110初始化客户端之间的锁之时,方法1500开始,该锁与其他客户端110协调数据的写入,从而使得图示的客户端110是在特定时间发送具有写入请求的存储请求的唯一客户端110。写入请求可以是写入新数据的请求,或者是替换或修正现有数据段的请求。在服务写入新数据的写入请求时阻止对索引的访问是重要的,因此本发明在下述情况下特别有用:替换或修正现有数据段以确保在出现两个或多个修正/替换相同数据段的请求时的数据完整性。在该实施方式中,一旦客户端之间的锁就位以确保来自不止一个客户端110的写入请求的同步性,则在步骤1504,客户端110将写入请求发送到存储控制器104。在另一种实施方式中,未利用客户端之间的同步性,而且存储请求没有预定的顺序。在所述的实施方式中,写入请求基本不具有数据并初始化DMA进程以将数据从客户端110或其他位置转移到数据存储设备106。
在步骤1506,附加/无效模块1202随后通过“锁定”索引阻止对索引的多重访问。在步骤1508,序列模块1308随后获取序列号并将序列号与写入请求关联。在步骤1510,附加/无效模块1202基于写入请求创建附加数据存储命令。附加数据存储命令包括分配的序列号并涉及数据段中由写入请求要求覆盖的数据。然后,在步骤1511,附加/无效模块1202或存储控制器104内的其他模块将附加数据存储命令和序列号一起发送到数据存储设备106。附加数据存储命令包括初始化DMA进程的命令,以将数据从客户端110或其他位置转移到数据存储设备106。
此外,在步骤1512,附加/无效模块1202通过将现有数据标记为无效更新索引。现有数据是数据段的一部分的数据,并且将要被写入请求中引用的数据替换。随后,在步骤1514,附加/无效模块1202释放索引中的块,从而使得可以服务其他写入请求。此外,在步骤1515,客户端110解锁写入请求的发送,从而另一客户端110能够将写入请求发送给存储控制器104。在一种实施方式中,附加/无效模块1202暂时地无效整个数据段,直到索引被更新。在索引被更新之后,数据段的未被写入请求影响的部分被标记为有效。在另一种实施方式中,附加/无效模块1202仅无效索引的与被覆盖的数据相关联的部分。
注意到并行地示出了创建附加数据存储命令(步骤1510)和无效数据(步骤1513)。在另一种实施方式中,在无效数据(步骤1512)和在索引中释放锁(步骤1514)之后,附加/无效模块1202创建附加数据存储命令(步骤1510)。在优选实施方式中,数据存储设备106以序列号的顺序存储数据包。在一种实施方式中,通过将序列号与附加数据存储命令关联(步骤1511),附加/无效模块1202可独立于无效数据(步骤1512)和解锁索引(步骤1512)创建附加数据存储命令(步骤1510)。
一旦数据存储设备106接收到附加命令和序列号,在步骤1516,数据存储设备106初始化DMA进程以将与写入请求关联的数据转移到数据存储设备106。在步骤1518,数据存储设备106还阻止读取将要被存储的该数据并在步骤1520处理接收的数据。处理数据可能包括在首部加包头、压缩数据、加密数据、创建纠错码(ECC)等。尽管只示出了单重DMA转移,但处理也可包括多重DMA转移。随后,数据存储设备106完成用于与序列号关联的附加数据存储命令的DMA,然后在步骤1524,数据存储设备106完成附加数据存储命令。
在其他实施方式中,除创建附加数据存储命令之外,附加/无效模块1202还创建与写入请求关联的其他命令,并将命令与序列号关联。然后,存储控制器104发送命令,其中序列号附加到每个命令上。随后在步骤1524中,数据存储设备106完成与序列号关联的所有命令。本领域技术人员会认识到可生成用于服务写入请求的、与写入请求相关联的其他命令。一旦数据存储设备106处理了通过DMA接收的数据(步骤1520),数据存储设备106存储数据(步骤1526)并解除对读取数据的阻止(步骤1528)。注意到数据的存储(步骤1526)是可能比其他进程消耗更多时间的进程。在优选实施方式中,存储控制器104在数据被存储时将处理许多其他存储请求。
在附加/无效模块1202解锁索引(步骤1514)之后,重组模块1204锁定索引(步骤1530)并在步骤1532中基于请求写入的数据相对于从客户端110接收的写入请求更新索引。随后在步骤1534,重组模块1204解锁索引。一旦被解锁,索引可被附加/无效模块1202和重组模块1204的其他例程访问。在一种实施方式中,作为对附加/无效模块1202解锁索引(步骤1514)和重组模块1204重新锁定索引(步骤1530)的替代,索引在附加/无效模块1202的无效过程和重组模块1204的索引更新过程中保持锁定状态。
一旦在步骤1524中,数据存储设备106完成与序列号关联的命令,则在步骤1536中,数据存储设备106发送数据存储设备106存储关联的数据(步骤1526)的一个或多个物理地址。在一种实施方式中,一起发送命令完成1524与序列号1536。在优选实施方式中,与命令完成1524一起被发送的序列号1536与最初发送给数据存储设备106的序列号1511相同。在步骤1538中,数据位置模块1302锁定索引并在步骤1540中更新索引以指向数据存储设备106在步骤1526中存储数据的位置。在该实施方式中,附加/无效模块1202清除关联的数据段的无效标志。在另一种实施方式中,附加/无效模块1202无效与写入请求相关联的整个数据段,而数据位置模块1302清除数据中未受写入请求影响的无效标志。随后在步骤1542中,数据位置模块1302解锁索引,在步骤1544中,存储控制器104完成写入请求并将确认发送到客户端110。然后在步骤1546中,客户端110接收并处理确认,方法1500结束。
在一种实施方式中,每次索引被锁定(步骤1506、1530、1538),整个索引被锁定。在另一种实施方式中,仅索引的一个部分被锁定。例如,分支可以被锁定,或者甚至是对应于数据段的节点被锁定。
图16(包括图16A、16B和16C)是示出了根据本发明的用于协调存储请求的装置1200、1300的实例1600的示意性框图。在实例1600中,原始状态的数据段1602被假定为基于先前的存储数据段的写入请求而存储在数据存储设备106上。同样在该实例中,装置1200、1300从两个客户端110接收两个存储请求:客户端A发送请求1而客户端B发送请求2。两个存储请求都试图覆盖数据段的一部分。来自客户端A的请求1的接收早于来自客户端B的请求2的接收。
接收请求的时间序列1604被示为表示如果存储控制器104将数据存储设备106仿真为随机存储设备,客户端110如何感知到对数据段的改变。数据段的原始状态1602包括五个标号为1-5的块。原始状态1602的块被示为不具有断面线。客户端A发送与修正块2和块3的第一数据相关联的请求1。第一数据1606分别将块2和块3中的新数据示出为2’和3’。具有第一数据1606的块被示为具有水平断面线。客户端A发送与修正块3和块4的第二数据相关联的请求2。第二数据1608分别将块3和块4中的新数据示出为3”和4”。具有第二数据1608的块被示为具有从左上到右下的斜断面线。最终状态1610被示出,其中,第一数据和第二数据覆盖块2、3和4。
特别值得注意地是,在最终状态1610中,块3包括第二数据3”。这是由于请求2在请求1之后到达。由于对于请求1来说,请求2在时间上居第二位,所以请求2被认为是比请求1更符合当前情况。实例1600描述了为数据段更新索引的若干情况,从而索引的最终状态在每种情况下都是一样的,而且第二数据比第一数据更符合当前情况。
在实例1600中,一旦接收了数据,则将其在三个步骤内处理。首先,附加/无效模块1202的例程无效数据段中将要被写入请求的数据替换的数据。其次,索引被假设为具有B-树、二进制树或类似结构形式的正向映射1104,重组模块1204的例程通过重组树更新索引。最后,数据位置模块1302使用数据存储设备106存储数据的一个或多个位置更新索引。例如,数据位置模块1302可更新反向映射1122。用于请求A的这三个动作被示为A1、A2、A3。用于请求B的这三个动作被示为B1、B2、B3。在另一种实施方式中,步骤A1和A2可结合成单个步骤。类似的,A2和A3可以结合。重新布置和结合步骤或步骤中执行的进程符合本发明的广泛范围。
实例1600描述了10个不同序列(S1-S10)的树基于与请求A和请求B相关联的动作的不同组合而更新树的状态。注意到全部10个可能的序列的最终状态是一样的,这正是所期望的结果。序列S1-S10全部开始于步骤A1。这假设在请求1被接收之后,附加/无效模块1202马上为来自客户端A的请求1分配序列号并无效数据。在另一种实施方式中,分配序列号和无效数据是分开进行的。在这种实施方式中,来自客户端A的请求1的接收早于来自客户端B的请求2的接收,附加/无效模块1202的一个或多个例程最初基于到达的顺序将序列号分配给每个请求,由于每个请求具有分配的序列号,可推迟在步骤A1中为无效数据而进行的处理,可首先处理B1以无效数据。在这种情况下,B1先于A1(未示出)的额外序列的最终状态将与序列S1-S10所示出的最终状态相同。
第一序列S1描述了树中表示数据段的块1-5的节点的原始状态。(注意到表示原始状态的节点不具有断面线以与在图的上部示出的块的原始状态相匹配)。节点示出了1-5(1:5)的范围,对应于处于原始状态1602的块1-5。序列S1的第一步是为了使附加/无效模块1202无效数据段的节点。这在步骤A1中描述,其中节点被示出为无效,并且节点下的字母A指示请求A正在被服务以无效数据。无效的范围以从右上到左下的断面线示出,节点下的字母指示哪个请求无效数据。
为简便起见,注意到在实例1600示出的序列S1-S10中,整个范围1-5被示为无效。然而,在优选实施方式中,只有被请求影响的块才被无效。在无效进程期间,附加/无效模块1202锁定索引的全部或部分。
如A2所示,序列S1的第二步是为了使重组模块1204重组树以分裂块2和3,这将指向2’和3’。在这个步骤中,块1、4和5的锁被释放,且数据在原始状态下保持可为读取进行访问。块2和3在树的中间节点中被示为无效。如A3所示,序列S1的第三步是为了使数据位置模块1302基于块2’和3’存储在数据存储设备106的位置而更新树。这被描述为显示新块2’和3’的中间节点和具有水平断面线的节点,具有水平断面线的节点对应于在步骤A3结束时块的最终状态,如上述的完成客户端A的更新1606。这可以通过将正向映射1104的节点中的指针更新为指向反向映射1122中的一个或多个条目来实现,其中,反向映射1122中的条目具有第一数据的物理地址。在这种情况下,反向映射1122具有用于2’和3’的物理地址。
如B1所示,序列S1的第四步是为了使附加/无效模块1202的例程无效树中将要被第二数据3”和4”覆盖的节点。在这种情况下,第二节点(2’:3’)和第三节点(4:5)被影响,所以这两个节点被描述为无效(从右到左的断面线)。如B2所示,序列S1的第五步是为了使重组模块1204重组这两个节点以形成指向2’的节点、指向3”:4”的节点和指向块5的节点。指向3”:4”的节点被示为无效。
如B3所示,序列S1的第六步对应于数据位置模块1302的例程利用数据存储设备106存储块3”和4”的位置的物理地址信息更新索引。此时,表示3”和4”的节点被示为处于最终状态,并用从左到右的断面线表示。步骤B3表明树中表示处于最终状态的块1-5的部分,其中块1和5未被修正。块2表明,其已被第一数据2’更新,块3和4表明,它们已被第二数据3”和4”更新。注意到块3恰当地与第二数据3”一起示出,不管处理的顺序如何,描述的全部序列S1-S10的最终状态都是一样的。
序列S2与序列S1相同,除了交换步骤A3和B1的处理顺序。在步骤B1,服务请求B的重组模块1204的例程无效指向块3和4的两个节点。在步骤A3,服务请求A的数据位置模块1302的例程利用2’和3’存储的位置更新索引,但第二节点(2”:3”)和第三节点(4:5)保持无效,这是因为服务请求B的重组模块1204的例程还未从第二和第三节点中分离出3和4。一旦重组模块1204重组了节点以包括指向3”:4”且离开指向2’的节点和指向5的节点,指向2’和5的节点处于最终状态。在步骤B3(与序列S1的步骤B3相同)之后,序列S2的节点处于最终状态并与序列S1的最终状态相匹配。
图16B和图16C中示出的序列S3-S10完成类似序列S1和S2的过程和分析,除了将步骤重新排序。注意在在所有的序列S1-S10中,最终状态都是相同的。有利地是,本发明允许多处理器或多线程操作以访问存储在公共数据存储设备106上的相同数据段或在数据存储设备106的阵列中被条带化的数据段。有利地是,本发明允许多处理器或多线程操作以使完成服务多重服务请求的时间不同,而同时保持数据的完整性。尽管示出了两个存储请求,但本发明也可应用到当前访问相同数据段的三个或更多个同时的存储请求。本领域技术人员会认识到本发明的其他好处和实施装置1200、1300的模块1202、1204、1302-1308其他方法。
本发明可采用其他指定形式实施而不脱离本发明的宗旨或本质特点。描述的实施方式在各个方面被视为仅仅是示例性而不是限制性的。因此,本发明的范围由附属的权利要求确定,而不是由上述说明书确定。在本发明的权利要求的含义和等同范围内的所有改变被包含在本发明的保护范围内。

Claims (24)

1.一种用于有效地映射物理地址和虚拟地址的装置,该装置包括:
正向映射模块,用于使用正向映射以识别数据段的数据的一个或多个物理地址,所述一个或多个物理地址从数据段的一个或多个虚拟地址识别,所述数据段在指令到数据存储设备的存储请求中识别,正向映射包括将一个或多个虚拟地址映射到存储在数据存储设备中的数据的一个或多个物理地址的映射,该一个或多个虚拟地址包括虚拟地址空间内的离散地址,其中,虚拟地址稀疏地位于虚拟地址空间;
反向映射模块,用于使用反向映射以从物理地址确定数据段的虚拟地址,其中,反向映射将一个或多个物理地址映射到一个或多个虚拟地址,反向映射中的物理地址与正向映射关联,该一个或多个虚拟地址对应于与存储在数据存储设备中的数据有关的一个或多个数据段,反向映射将数据存储设备映射到擦除区域,从而反向映射的一部分跨越数据存储设备的在存储空间恢复操作中一起擦除的擦除区域,存储空间恢复操作恢复擦除区域以用于将来的数据存储;及
存储空间恢复模块,用于在恢复擦除区域的操作前使用反向映射识别擦除区域中的有效数据,在恢复操作之前,识别的有效数据被移动到另一擦除区域。
2.如权利要求1所述的装置,其中,一个或多个源参数与数据一起存储,源参数至少包括虚拟地址和存储数据的数据长度,虚拟地址对应于和数据有关的数据段。
3.如权利要求2所述的装置,还包括映射重建模块,用于利用与数据一起存储的源参数重建正向映射和反向映射。
4.如权利要求3所述的装置,还包括检查点模块,用于存储与正向映射和反向映射相关的信息,检查点与时间点有关,该信息足以将正向映射和反向映射恢复到与检查点有关的状态。
5.如权利要求4所述的装置,还包括映射同步模块,用于通过顺序地应用源参数和物理地址将正向映射和反向映射从与检查点有关的状态更新到当前状态,源参数与顺序地存储在检查点之后的数据一起存储,物理地址源于数据存储设备上的数据的位置。
6.如权利要求1所述的装置,其中,正向映射和反向映射独立于下述各项中的一个或多个:组织数据用于发送存储请求的请求设备的文件结构、名字空间和目录。
7.如权利要求1所述的装置,其中,存储请求的数据段的虚拟地址包括文件名、对象名和块存储地址中的一个或多个,块存储地址至少包括物理地址和数据段的长度,在该物理地址处,发送存储请求的请求设备为存储设备准备存储数据段。
8.如权利要求1所述的装置,其中,正向映射和反向映射包括第一正向映射和第一反向映射,其中第一正向映射和第一反向映射被存储为数据并且独立于由第一正向映射和第一反向映射所映射的数据存储,数据包括第一正向映射、第一反向映射和与第一正向映射和第一反向映射一起存储的时间戳数据,第一正向映射和第一反向映射的数据由第二正向映射和第二反向映射索引。
9.如权利要求8所述的装置,还包括一个或多个额外的正向和反向映射,每个额外的正向和反向映射被存储为数据并且由额外的正向和反向映射索引。
10.如权利要求1所述的装置,其中,正向映射包括用于存储在数据存储设备的有效数据的信息,反向映射包括用于存储在数据存储设备上的有效数据和无效数据的信息。
11.如权利要求1所述的装置,还包括无效模块,用于在反向映射中标记数据的条目,该条目指示由其引用的数据响应于导致数据被无效的操作而无效。
12.如权利要求11所述的装置,其中,存储空间恢复模块还包括通过扫描用于擦除区域的反向映射确定擦除区域中无效数据的量,从而相对于擦除区域的存储容量确定无效数据的量,存储空间恢复模块利用擦除区域中无效数据的量选择恢复的擦除区域。
13.如权利要求12所述的装置,其中,存储空间恢复模块还包括选择恢复的擦除区域、将选定的擦除区域的有效数据写入当前正在写入数据的数据存储设备中的新位置、更新反向映射以指示写入新位置的有效数据在选定的擦除区域中无效、以及基于写入新位置的有效数据更新正向映射和反向映射。
14.如权利要求1所述的装置,其中,该装置按存储请求所指令的那样仿真存储数据的随机存取块存储设备。
15.如权利要求1所述的装置,其中,正向映射包括下述各项中的一种或多种:B-树、内容可寻址存储器(CAM)、二进制树和哈希表。
16.如权利要求1所述的装置,还包括映射更新模块,用于响应于改变数据存储设备的内容更新正向映射和反向映射中的一个或多个,映射更新模块基于数据存储设备存储数据的位置从数据存储设备接收将存储数据的物理地址链接到虚拟地址的信息。
17.如权利要求1所述的装置,其中,该装置在基本上没有数据的情况下接收存储请求。
18.如权利要求17所述的装置,其中,该装置初始化直接存储器存取(DMA)进程或远程直接存储器存取(RDMA)进程以响应于存储请求将数据转移到数据存储设备。
19.如权利要求1所述的装置,其中,正向映射模块、反向映射模块和存储空间恢复模块中的一个或多个的至少一部分位于下述设备中的一个或多个内:发送存储请求的请求设备、数据存储设备、存储设备控制器以及与请求设备、数据存储设备和存储设备控制器分离的计算设备。
20.一种用于有效地映射物理地址和虚拟地址的系统,该系统包括:
数据存储设备;和
控制数据存储设备上的数据存储的存储控制器,该存储控制器包括:
正向映射模块,用于使用正向映射以识别数据段的数据的一个或多个物理地址,所述一个或多个物理地址从数据段的一个或多个虚拟地址识别,所述数据段在指令到数据存储设备的存储请求中识别,正向映射包括将一个或多个虚拟地址映射到存储在数据存储设备中的数据的一个或多个物理地址的映射,该一个或多个虚拟地址包括虚拟地址空间内的离散地址,其中,虚拟地址稀疏地位于虚拟地址空间;
反向映射模块,用于使用反向映射以从物理地址确定数据段的虚拟地址,其中,反向映射将一个或多个物理地址映射到一个或多个虚拟地址,反向映射中的物理地址与正向映射关联,一个或多个虚拟地址对应于与存储在数据存储设备中的数据有关的一个或多个数据段,反向映射将数据存储设备映射到擦除区域,从而反向映射的一部分跨越数据存储设备的在存储空间恢复操作中一起擦除的擦除区域,存储空间恢复操作恢复擦除区域以用于将来的数据存储;及
存储空间恢复模块,用于在恢复擦除区域的操作前使用反向映射识别擦除区域中的有效数据,在恢复操作之前,识别的有效数据被移动到另一擦除区域。
21.如权利要求20所述的系统,其中,存储请求接收自客户端,该客户端通过计算机网络与存储控制器通信。
22.如权利要求20所述的系统,还包括服务器,其中存储控制器和数据存储设备中的一个或多个位于服务器内。
23.如权利要求20所述的系统,其中,存储设备包括固态存储设备,其中数据段的数据存储在固态存储器中。
24.一种包括计算机可读媒体的计算机程序制品,该计算机可读媒体具有计算机可用的程序代码,可执行该程序代码以实现有效地映射物理地址和虚拟地址的操作,该计算机程序制品的操作包括:
使用正向映射以识别数据段的数据的一个或多个物理地址,所述一个或多个物理地址从数据段的一个或多个虚拟地址识别,所述数据段在指令到数据存储设备的存储请求中识别,正向映射包括将一个或多个虚拟地址映射到存储在数据存储设备中的数据的一个或多个物理地址的映射,该一个或多个虚拟地址包括虚拟地址空间内的离散地址,其中,虚拟地址稀疏地位于虚拟地址空间;
使用反向映射以从物理地址确定数据段的虚拟地址,其中,反向映射将一个或多个物理地址映射到一个或多个虚拟地址,反向映射中的物理地址与正向映射关联,该一个或多个虚拟地址对应于与存储在数据存储设备中的数据有关的一个或多个数据段,反向映射将数据存储设备映射到擦除区域,从而反向映射的一部分跨越数据存储设备的在存储空间恢复操作中一起擦除的擦除区域,存储空间恢复操作恢复擦除区域以用于将来的数据存储;及
在恢复擦除区域的操作前使用反向映射识别擦除区域中的有效数据,在恢复操作之前,识别的有效数据被移动到另一擦除区域。
CN200980121088XA 2008-04-06 2009-04-04 用于有效地映射虚拟地址和物理地址的装置、系统和方法 Pending CN102084330A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/098,434 US8195912B2 (en) 2007-12-06 2008-04-06 Apparatus, system, and method for efficient mapping of virtual and physical addresses
US12/098,434 2008-04-06
PCT/US2009/039570 WO2009126542A1 (en) 2008-04-06 2009-04-04 Apparatus, system, and method for efficient mapping of virtual and physical addresses

Publications (1)

Publication Number Publication Date
CN102084330A true CN102084330A (zh) 2011-06-01

Family

ID=40722872

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980121088XA Pending CN102084330A (zh) 2008-04-06 2009-04-04 用于有效地映射虚拟地址和物理地址的装置、系统和方法

Country Status (6)

Country Link
US (3) US8195912B2 (zh)
EP (1) EP2286326A1 (zh)
JP (1) JP2011518380A (zh)
KR (1) KR20110039417A (zh)
CN (1) CN102084330A (zh)
WO (1) WO2009126542A1 (zh)

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102902629A (zh) * 2012-06-20 2013-01-30 华为技术有限公司 存储空间映射方法及装置
CN102955793A (zh) * 2011-08-23 2013-03-06 腾讯科技(深圳)有限公司 处理文件载体空间的方法和装置
CN104246724A (zh) * 2012-03-23 2014-12-24 Dssd股份有限公司 用于用内容条目表格存储数据的系统和方法
CN105739915A (zh) * 2014-12-29 2016-07-06 三星电子株式会社 存储系统中执行的条带重建方法和存储系统
CN105893188A (zh) * 2014-09-30 2016-08-24 伊姆西公司 用于加速磁盘阵列的数据重构的方法和装置
CN105930500A (zh) * 2016-05-06 2016-09-07 华为技术有限公司 数据库系统中事务恢复的方法与数据库管理系统
CN106648457A (zh) * 2016-09-27 2017-05-10 华为数字技术(成都)有限公司 更新反向映射元数据的方法及装置
CN107195159A (zh) * 2017-07-13 2017-09-22 蚌埠依爱消防电子有限责任公司 一种消防报警系统和消防报警系统的巡检方法
CN107408022A (zh) * 2015-03-27 2017-11-28 英特尔公司 管理存储设备中的逻辑地址的数据的先前版本
CN107690629A (zh) * 2015-06-16 2018-02-13 Arm 有限公司 地址转换
CN108614781A (zh) * 2016-12-09 2018-10-02 北京京存技术有限公司 基于NANDflash的有效数据查找方法和NANDflash存储设备
CN109144416A (zh) * 2018-08-03 2019-01-04 华为技术有限公司 查询数据的方法和装置
US10802729B2 (en) 2015-06-16 2020-10-13 Arm Limited Apparatus and method for sharing pages including enforcing ownership rights independently of privilege level
CN111800522A (zh) * 2015-06-26 2020-10-20 伊姆西Ip控股有限责任公司 确定设备的物理位置的方法和装置
US10838877B2 (en) 2015-06-16 2020-11-17 Arm Limited Protected exception handling
WO2020259418A1 (zh) * 2019-06-24 2020-12-30 华为技术有限公司 一种数据访问方法、网卡及服务器
CN112559537A (zh) * 2019-09-25 2021-03-26 阿里巴巴集团控股有限公司 云存储区间更新方法、装置、电子设备及计算机存储介质
CN113851166A (zh) * 2020-06-25 2021-12-28 美光科技公司 存储器子系统中的加速读取转译路径
US11314658B2 (en) 2015-06-16 2022-04-26 Arm Limited Apparatus and method including an ownership table for indicating owner processes for blocks of physical addresses of a memory
WO2023011425A1 (zh) * 2021-08-05 2023-02-09 北京车和家信息技术有限公司 数据传输方法、装置、数据传输设备及存储介质
WO2023029417A1 (zh) * 2021-08-31 2023-03-09 华为技术有限公司 一种数据存储方法及装置

Families Citing this family (149)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006005719A (ja) * 2004-06-18 2006-01-05 Fujitsu Ltd アドレス変換プログラム、プログラム利用方法、情報処理装置及びコンピュータ可読媒体
US8296337B2 (en) 2006-12-06 2012-10-23 Fusion-Io, Inc. Apparatus, system, and method for managing data from a requesting device with an empty data token directive
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US8719501B2 (en) 2009-09-08 2014-05-06 Fusion-Io Apparatus, system, and method for caching data on a solid-state storage device
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8892831B2 (en) * 2008-01-16 2014-11-18 Apple Inc. Memory subsystem hibernation
US20090198952A1 (en) * 2008-02-04 2009-08-06 Apple Inc Memory Mapping Architecture
US20090307409A1 (en) * 2008-06-06 2009-12-10 Apple Inc. Device memory management
US8583893B2 (en) * 2009-05-28 2013-11-12 Marvell World Trade Ltd. Metadata management for virtual volumes
CN101908368A (zh) * 2009-06-04 2010-12-08 威刚科技(苏州)有限公司 电子存储装置及其操作方法
US8479080B1 (en) * 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8516219B2 (en) * 2009-07-24 2013-08-20 Apple Inc. Index cache tree
US8468293B2 (en) * 2009-07-24 2013-06-18 Apple Inc. Restore index page
WO2011021237A1 (en) * 2009-08-20 2011-02-24 Hitachi,Ltd. Storage subsystem and its data processing method
JP5518197B2 (ja) 2009-09-09 2014-06-11 フュージョン−アイオー・インコーポレーテッド ストレージを割り当てるための装置、システム、および方法
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US8412881B2 (en) * 2009-12-22 2013-04-02 Intel Corporation Modified B+ tree to store NAND memory indirection maps
US8793290B1 (en) * 2010-02-24 2014-07-29 Toshiba Corporation Metadata management for pools of storage disks
US9183134B2 (en) 2010-04-22 2015-11-10 Seagate Technology Llc Data segregation in a storage device
US8762340B2 (en) 2010-05-14 2014-06-24 Salesforce.Com, Inc. Methods and systems for backing up a search index in a multi-tenant database environment
US8825982B2 (en) * 2010-06-10 2014-09-02 Global Supercomputing Corporation Storage unsharing
CN101923486B (zh) * 2010-07-23 2012-10-10 华中科技大学 一种硬件事务内存系统中避免数据移动的方法
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
US20120239860A1 (en) * 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9141527B2 (en) * 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
WO2012129191A2 (en) 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US9767098B2 (en) 2012-08-08 2017-09-19 Amazon Technologies, Inc. Archival data storage system
US9563681B1 (en) 2012-08-08 2017-02-07 Amazon Technologies, Inc. Archival data flow management
US20120272036A1 (en) * 2011-04-22 2012-10-25 Naveen Muralimanohar Adaptive memory system
US8638600B2 (en) 2011-04-22 2014-01-28 Hewlett-Packard Development Company, L.P. Random-access memory with dynamically adjustable endurance and retention
US9189675B2 (en) 2011-04-28 2015-11-17 Moon J. Kim Adaptive fingerprint scanning
US8699762B2 (en) 2011-05-13 2014-04-15 Moon J. Kim Multi-sided card having a resistive fingerprint imaging array
US8868882B2 (en) * 2011-06-08 2014-10-21 Microsoft Corporation Storage architecture for backup application
US8675928B2 (en) 2011-06-14 2014-03-18 Moon J. Kim Multiple charge-coupled biometric sensor array
US9417894B1 (en) 2011-06-15 2016-08-16 Ryft Systems, Inc. Methods and apparatus for a tablet computer system incorporating a reprogrammable circuit module
US20120324143A1 (en) 2011-06-15 2012-12-20 Data Design Corporation Methods and apparatus for data access by a reprogrammable circuit module
US8671249B2 (en) 2011-07-22 2014-03-11 Fusion-Io, Inc. Apparatus, system, and method for managing storage capacity recovery
US9417803B2 (en) 2011-09-20 2016-08-16 Apple Inc. Adaptive mapping of logical addresses to memory devices in solid state drives
US8593866B2 (en) 2011-11-11 2013-11-26 Sandisk Technologies Inc. Systems and methods for operating multi-bank nonvolatile memory
CN102508787B (zh) * 2011-11-29 2014-09-03 清华大学 混合结构内存的内存分配系统及方法
US20130151766A1 (en) * 2011-12-12 2013-06-13 Moon J. Kim Convergence of memory and storage input/output in digital systems
US8806111B2 (en) 2011-12-20 2014-08-12 Fusion-Io, Inc. Apparatus, system, and method for backing data of a non-volatile storage device using a backing store
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US20150019792A1 (en) * 2012-01-23 2015-01-15 The Regents Of The University Of California System and method for implementing transactions using storage device support for atomic updates and flexible interface for managing data logging
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US8554963B1 (en) 2012-03-23 2013-10-08 DSSD, Inc. Storage system with multicast DMA and unified address space
JP5962140B2 (ja) * 2012-03-30 2016-08-03 富士通株式会社 プログラム、制御方法、制御装置およびシステム
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US10120579B1 (en) 2012-08-08 2018-11-06 Amazon Technologies, Inc. Data storage management for sequentially written media
US9779035B1 (en) 2012-08-08 2017-10-03 Amazon Technologies, Inc. Log-based data storage on sequentially written media
US9830111B1 (en) 2012-08-08 2017-11-28 Amazon Technologies, Inc. Data storage space management
US9904788B2 (en) 2012-08-08 2018-02-27 Amazon Technologies, Inc. Redundant key management
US9652487B1 (en) 2012-08-08 2017-05-16 Amazon Technologies, Inc. Programmable checksum calculations on data storage devices
US8805793B2 (en) 2012-08-08 2014-08-12 Amazon Technologies, Inc. Data storage integrity validation
US9225675B2 (en) 2012-08-08 2015-12-29 Amazon Technologies, Inc. Data storage application programming interface
US8959067B1 (en) 2012-08-08 2015-02-17 Amazon Technologies, Inc. Data storage inventory indexing
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US10509776B2 (en) * 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US9489297B2 (en) 2013-01-21 2016-11-08 Sandisk Technologies Llc Pregroomer for storage array
US9329991B2 (en) 2013-01-22 2016-05-03 Seagate Technology Llc Translation layer partitioned between host and controller
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US10558581B1 (en) * 2013-02-19 2020-02-11 Amazon Technologies, Inc. Systems and techniques for data recovery in a keymapless data storage system
US9454474B2 (en) 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
US11966355B2 (en) * 2013-03-10 2024-04-23 Mellanox Technologies, Ltd. Network adapter with a common queue for both networking and data manipulation work requests
US9473561B2 (en) * 2013-03-15 2016-10-18 International Business Machines Corporation Data transmission for transaction processing in a networked environment
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US10558561B2 (en) * 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
EP3005117A4 (en) * 2013-05-29 2017-01-18 Hewlett-Packard Enterprise Development LP Invoking an error handler to handle an uncorrectable error
US9489300B2 (en) * 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9489299B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9117514B2 (en) * 2013-06-19 2015-08-25 Sandisk Technologies Inc. Data encoding for non-volatile memory
US9117520B2 (en) * 2013-06-19 2015-08-25 Sandisk Technologies Inc. Data encoding for non-volatile memory
US9489294B2 (en) 2013-06-19 2016-11-08 Sandisk Technologies Llc Data encoding for non-volatile memory
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US9778859B2 (en) * 2013-09-18 2017-10-03 Western Digital Technologies, Inc. Doorless protocol having multiple queue read requests in flight
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9213600B2 (en) 2013-11-11 2015-12-15 Seagate Technology Llc Dynamic per-decoder control of log likelihood ratio and decoding parameters
US9390008B2 (en) * 2013-12-11 2016-07-12 Sandisk Technologies Llc Data encoding for non-volatile memory
KR102252419B1 (ko) 2014-01-09 2021-05-14 한국전자통신연구원 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
US10372546B2 (en) * 2014-02-07 2019-08-06 International Business Machines Corporation Creating a restore copy from a copy of source data in a repository having source data at different point-in-times
US11194667B2 (en) 2014-02-07 2021-12-07 International Business Machines Corporation Creating a restore copy from a copy of a full copy of source data in a repository that is at a different point-in-time than a restore point-in-time of a restore request
US11169958B2 (en) 2014-02-07 2021-11-09 International Business Machines Corporation Using a repository having a full copy of source data and point-in-time information from point-in-time copies of the source data to restore the source data at different points-in-time
WO2015130282A1 (en) * 2014-02-27 2015-09-03 Hewlett-Packard Development Company, L. P. Communication between integrated graphics processing units
US10387446B2 (en) 2014-04-28 2019-08-20 International Business Machines Corporation Merging multiple point-in-time copies into a merged point-in-time copy
US9940167B2 (en) 2014-05-20 2018-04-10 Red Hat Israel, Ltd. Identifying memory devices for swapping virtual machine memory pages
CN105446888B (zh) * 2014-05-30 2018-10-12 华为技术有限公司 存储设备间移动数据的方法、控制器和存储系统
US20150363329A1 (en) * 2014-06-12 2015-12-17 Hamilton Sundstrand Corporation Memory address translation
KR20160015793A (ko) * 2014-07-31 2016-02-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN105593828B (zh) 2014-08-12 2018-12-07 华为技术有限公司 管理文件的方法、分布式存储系统和管理节点
KR102148889B1 (ko) 2014-08-18 2020-08-31 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 메모리 컨트롤러를 포함하는 불휘발성 메모리 시스템
US9112890B1 (en) 2014-08-20 2015-08-18 E8 Storage Systems Ltd. Distributed storage over shared multi-queued storage device
US9378149B1 (en) 2014-08-29 2016-06-28 Emc Corporation Method and system for tracking modification times of data in a storage system
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US9274720B1 (en) 2014-09-15 2016-03-01 E8 Storage Systems Ltd. Distributed RAID over shared multi-queued storage devices
US9519666B2 (en) * 2014-11-27 2016-12-13 E8 Storage Systems Ltd. Snapshots and thin-provisioning in distributed storage over shared storage devices
US10521449B1 (en) * 2014-12-17 2019-12-31 Amazon Technologies, Inc. Cross-region replication architecture
US11782601B2 (en) 2015-01-20 2023-10-10 Ultrata, Llc Object memory instruction set
EP3248106A4 (en) 2015-01-20 2018-09-12 Ultrata LLC Distributed index for fault tolerant object memory fabric
US9495303B2 (en) * 2015-02-03 2016-11-15 Intel Corporation Fine grained address remapping for virtualization
US9880755B2 (en) 2015-02-25 2018-01-30 Western Digital Technologies, Inc. System and method for copy on write on an SSD
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US9525737B2 (en) 2015-04-14 2016-12-20 E8 Storage Systems Ltd. Lockless distributed redundant storage and NVRAM cache in a highly-distributed shared topology with direct memory access capable interconnect
US9529542B2 (en) 2015-04-14 2016-12-27 E8 Storage Systems Ltd. Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect
US9971542B2 (en) 2015-06-09 2018-05-15 Ultrata, Llc Infinite memory fabric streams and APIs
US10698628B2 (en) 2015-06-09 2020-06-30 Ultrata, Llc Infinite memory fabric hardware implementation with memory
US9886210B2 (en) * 2015-06-09 2018-02-06 Ultrata, Llc Infinite memory fabric hardware implementation with router
US10496626B2 (en) 2015-06-11 2019-12-03 EB Storage Systems Ltd. Deduplication in a highly-distributed shared topology with direct-memory-access capable interconnect
GB2539436B (en) 2015-06-16 2019-02-06 Advanced Risc Mach Ltd Secure initialisation
KR102277731B1 (ko) 2015-07-21 2021-07-14 삼성전자주식회사 스토리지 시스템의 구동 방법 및 스토리지 컨트롤러
US9740603B2 (en) 2015-08-06 2017-08-22 International Business Machines Corporation Managing content in persistent memory modules when organization of the persistent memory modules changes
US11386060B1 (en) 2015-09-23 2022-07-12 Amazon Technologies, Inc. Techniques for verifiably processing data in distributed computing systems
US10025722B2 (en) * 2015-10-28 2018-07-17 International Business Machines Corporation Efficient translation reloads for page faults with host accelerator directly accessing process address space without setting up DMA with driver and kernel by process inheriting hardware context from the host accelerator
WO2017100281A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc Memory fabric software implementation
WO2017100292A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc. Object memory interfaces across shared links
US9842084B2 (en) 2016-04-05 2017-12-12 E8 Storage Systems Ltd. Write cache and write-hole recovery in distributed raid over shared multi-queue storage devices
KR102580123B1 (ko) 2016-05-03 2023-09-20 삼성전자주식회사 Raid 스토리지 장치 및 그것의 관리 방법
US10031689B2 (en) * 2016-09-15 2018-07-24 Western Digital Technologies, Inc. Stream management for storage devices
US10599582B2 (en) * 2016-09-26 2020-03-24 Intel Corporation Using a virtual to virtual address table for memory compression
US10747678B2 (en) 2016-10-27 2020-08-18 Seagate Technology Llc Storage tier with compressed forward map
CN106658577B (zh) * 2016-11-17 2019-05-17 厦门理工学院 一种联合空间-时间稀疏性的传感网数据恢复方法
US10031872B1 (en) 2017-01-23 2018-07-24 E8 Storage Systems Ltd. Storage in multi-queue storage devices using queue multiplexing and access control
TWI639918B (zh) * 2017-05-11 2018-11-01 慧榮科技股份有限公司 資料儲存裝置以及其操作方法
US10579613B2 (en) * 2017-08-08 2020-03-03 International Business Machines Corporation Database recovery using persistent address spaces
US10685010B2 (en) 2017-09-11 2020-06-16 Amazon Technologies, Inc. Shared volumes in distributed RAID over shared multi-queue storage devices
JP2019057052A (ja) * 2017-09-20 2019-04-11 東芝メモリ株式会社 メモリシステム
EP3698253A4 (en) * 2017-10-17 2021-08-04 Argus Cyber Security Ltd SYSTEM AND METHOD FOR MANAGING A PROGRAM MEMORY ON A MEMORY DEVICE
US11132256B2 (en) * 2018-08-03 2021-09-28 Western Digital Technologies, Inc. RAID storage system with logical data group rebuild
CN109445681B (zh) * 2018-08-27 2021-05-11 华为技术有限公司 数据的存储方法、装置和存储系统
US11860947B2 (en) * 2019-01-31 2024-01-02 International Business Machines Corporation Deleted data restoration
KR20200099897A (ko) * 2019-02-15 2020-08-25 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US10877900B1 (en) * 2019-06-26 2020-12-29 Western Digital Technologies, Inc. Enabling faster and regulated device initialization times
KR102336873B1 (ko) * 2020-04-27 2021-12-08 주식회사 글로비즈 철도 차량의 공조 장치의 진단 방법 및 시스템
WO2021223880A1 (en) * 2020-05-08 2021-11-11 Huawei Technologies Co., Ltd. Remote direct memory access with offset values
CN114026548A (zh) * 2020-05-28 2022-02-08 华为技术有限公司 直接内存访问的方法和系统
US11429296B2 (en) 2020-06-01 2022-08-30 Western Digital Technologies, Inc. Storage system, host, and method for extended and imaginary logical-to-physical address mapping
US11527300B2 (en) 2020-08-26 2022-12-13 Western Digital Technologies, Inc. Level dependent error correction code protection in multi-level non-volatile memory
US11436083B2 (en) 2020-09-04 2022-09-06 Western Digital Technologies, Inc. Data address management in non-volatile memory

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030163630A1 (en) * 2002-02-27 2003-08-28 Aasheim Jered Donald Dynamic data structures for tracking data stored in a flash memory device
US20040186946A1 (en) * 2003-03-19 2004-09-23 Jinaeon Lee Flash file system
US20050228961A1 (en) * 2000-06-02 2005-10-13 Reuter James M Generating updated virtual disks using distributed mapping tables accessible by mapping agents and managed by a centralized controller
CN101080710A (zh) * 2004-08-24 2007-11-28 塞门铁克操作公司 映象数据存储装置写时间映射

Family Cites Families (142)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5261068A (en) * 1990-05-25 1993-11-09 Dell Usa L.P. Dual path memory retrieval system for an interleaved dynamic RAM memory unit
GB2251324B (en) * 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
US5325509A (en) * 1991-03-05 1994-06-28 Zitel Corporation Method of operating a cache memory including determining desirability of cache ahead or cache behind based on a number of available I/O operations
US5438671A (en) * 1991-07-19 1995-08-01 Dell U.S.A., L.P. Method and system for transferring compressed bytes of information between separate hard disk drive units
JP3407317B2 (ja) * 1991-11-28 2003-05-19 株式会社日立製作所 フラッシュメモリを使用した記憶装置
US5416915A (en) * 1992-12-11 1995-05-16 International Business Machines Corporation Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array
US5845329A (en) * 1993-01-29 1998-12-01 Sanyo Electric Co., Ltd. Parallel computer
JP2856621B2 (ja) * 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5388083A (en) * 1993-03-26 1995-02-07 Cirrus Logic, Inc. Flash memory mass storage architecture
US5479638A (en) * 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US6078520A (en) * 1993-04-08 2000-06-20 Hitachi, Ltd. Flash memory control method and information processing system therewith
JP2784440B2 (ja) * 1993-04-14 1998-08-06 インターナショナル・ビジネス・マシーンズ・コーポレイション データ・ページの転送制御方法
US5765207A (en) * 1993-06-22 1998-06-09 International Business Machines Corporation Recursive hardware state machine
US5592641A (en) * 1993-06-30 1997-01-07 Intel Corporation Method and device for selectively locking write access to blocks in a memory array using write protect inputs and block enabled status
US5504882A (en) * 1994-06-20 1996-04-02 International Business Machines Corporation Fault tolerant data storage subsystem employing hierarchically arranged controllers
US5845331A (en) * 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
US6002411A (en) * 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US6170047B1 (en) * 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US5701434A (en) * 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
EP0747825B1 (en) * 1995-06-06 2001-09-19 Hewlett-Packard Company, A Delaware Corporation SDRAM data allocation system and method
JP3732869B2 (ja) 1995-06-07 2006-01-11 株式会社日立製作所 外部記憶装置
US5907856A (en) 1995-07-31 1999-05-25 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US5754563A (en) * 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
US5933847A (en) * 1995-09-28 1999-08-03 Canon Kabushiki Kaisha Selecting erase method based on type of power supply for flash EEPROM
US6014724A (en) 1995-10-27 2000-01-11 Scm Microsystems (U.S.) Inc. Flash translation layer block indication map revision system and method
US6330688B1 (en) * 1995-10-31 2001-12-11 Intel Corporation On chip error correction for devices in a solid state drive
US5758118A (en) 1995-12-08 1998-05-26 International Business Machines Corporation Methods and data storage devices for RAID expansion by on-line addition of new DASDs
US5734861A (en) * 1995-12-12 1998-03-31 International Business Machines Corporation Log-structured disk array with garbage collection regrouping of tracks to preserve seek affinity
JPH09198195A (ja) * 1996-01-19 1997-07-31 Nec Corp データ再配置可能なディスク装置
US6385710B1 (en) * 1996-02-23 2002-05-07 Sun Microsystems, Inc. Multiple-mode external cache subsystem
US5835964A (en) * 1996-04-29 1998-11-10 Microsoft Corporation Virtual memory system with hardware TLB and unmapped software TLB updated from mapped task address maps using unmapped kernel address map
US5960462A (en) * 1996-09-26 1999-09-28 Intel Corporation Method and apparatus for analyzing a main memory configuration to program a memory controller
US5754567A (en) * 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
JP3459868B2 (ja) * 1997-05-16 2003-10-27 日本電気株式会社 メモリ障害時におけるグループ入れ替え方式
US6000006A (en) 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US6418478B1 (en) * 1997-10-30 2002-07-09 Commvault Systems, Inc. Pipelined high speed data transfer mechanism
US6119116A (en) * 1997-12-18 2000-09-12 International Business Machines Corp. System and method for accessing and distributing audio CD data over a network
US6374336B1 (en) 1997-12-24 2002-04-16 Avid Technology, Inc. Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
US6185654B1 (en) * 1998-07-17 2001-02-06 Compaq Computer Corporation Phantom resource memory address mapping system
US6353878B1 (en) 1998-08-13 2002-03-05 Emc Corporation Remote control of backup media in a secondary storage subsystem through access to a primary storage subsystem
US6470436B1 (en) 1998-12-01 2002-10-22 Fast-Chip, Inc. Eliminating memory fragmentation and garbage collection from the process of managing dynamically allocated memory
GB9903490D0 (en) * 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6795890B1 (en) * 1999-02-19 2004-09-21 Mitsubishi Denki Kabushiki Kaisha Data storage method, and data processing device using an erasure block buffer and write buffer for writing and erasing data in memory
US6571312B1 (en) * 1999-02-19 2003-05-27 Mitsubishi Denki Kabushiki Kaisha Data storage method and data processing device using an erasure block buffer and write buffer for writing and erasing data in memory
US6412080B1 (en) * 1999-02-23 2002-06-25 Microsoft Corporation Lightweight persistent storage system for flash memory devices
MY122279A (en) * 1999-03-03 2006-04-29 Sony Corp Nonvolatile memory and nonvolatile memory reproducing apparatus
US6535869B1 (en) 1999-03-23 2003-03-18 International Business Machines Corporation Increasing efficiency of indexing random-access files composed of fixed-length data blocks by embedding a file index therein
US7620769B2 (en) 2000-01-06 2009-11-17 Super Talent Electronics, Inc. Recycling partially-stale flash blocks using a sliding window for multi-level-cell (MLC) flash memory
KR100577380B1 (ko) * 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
US6742078B1 (en) * 1999-10-05 2004-05-25 Feiya Technology Corp. Management, data link structure and calculating method for flash memory
ATE247296T1 (de) 1999-10-25 2003-08-15 Sun Microsystems Inc Speichersystem mit unterstützung von dateistufenzugriffen und blockstufenzugriffen
US6785835B2 (en) * 2000-01-25 2004-08-31 Hewlett-Packard Development Company, L.P. Raid memory
US6671757B1 (en) * 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
EP1130516A1 (en) 2000-03-01 2001-09-05 Hewlett-Packard Company, A Delaware Corporation Address mapping in solid state storage device
US6240040B1 (en) * 2000-03-15 2001-05-29 Advanced Micro Devices, Inc. Multiple bank simultaneous operation for a flash memory
US7089391B2 (en) * 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US6523102B1 (en) * 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US6779094B2 (en) * 2000-06-19 2004-08-17 Storage Technology Corporation Apparatus and method for instant copy of data by writing new data to an additional physical storage area
US6912537B2 (en) 2000-06-20 2005-06-28 Storage Technology Corporation Dynamically changeable virtual mapping scheme
US6567307B1 (en) * 2000-07-21 2003-05-20 Lexar Media, Inc. Block management for mass storage
US6404647B1 (en) * 2000-08-24 2002-06-11 Hewlett-Packard Co. Solid-state mass memory storage device
US6883079B1 (en) * 2000-09-01 2005-04-19 Maxtor Corporation Method and apparatus for using data compression as a means of increasing buffer bandwidth
AU2001290547A1 (en) * 2000-09-11 2002-03-26 Jinglong F. Zhang A method and apparatus employing one-way transforms
US6625685B1 (en) * 2000-09-20 2003-09-23 Broadcom Corporation Memory controller with programmable configuration
US7039727B2 (en) 2000-10-17 2006-05-02 Microsoft Corporation System and method for controlling mass storage class digital imaging devices
US6779088B1 (en) * 2000-10-24 2004-08-17 International Business Machines Corporation Virtual uncompressed cache size control in compressed memory systems
US20020069318A1 (en) * 2000-12-01 2002-06-06 Chow Yan Chiew Real time application accelerator and method of operating the same
US7020739B2 (en) * 2000-12-06 2006-03-28 Tdk Corporation Memory controller, flash memory system having memory controller and method for controlling flash memory device
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6839808B2 (en) * 2001-07-06 2005-01-04 Juniper Networks, Inc. Processing cluster having multiple compute engines and shared tier one caches
US6760805B2 (en) * 2001-09-05 2004-07-06 M-Systems Flash Disk Pioneers Ltd. Flash management system for large page size
US20030061296A1 (en) * 2001-09-24 2003-03-27 International Business Machines Corporation Memory semantic storage I/O
US6938133B2 (en) * 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
GB0123416D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US6715046B1 (en) * 2001-11-29 2004-03-30 Cisco Technology, Inc. Method and apparatus for reading from and writing to storage using acknowledged phases of sets of data
US7036043B2 (en) 2001-12-28 2006-04-25 Storage Technology Corporation Data management with virtual recovery mapping and backward moves
US6697076B1 (en) 2001-12-31 2004-02-24 Apple Computer, Inc. Method and apparatus for address re-mapping
JP4061272B2 (ja) * 2002-01-09 2008-03-12 株式会社ルネサステクノロジ メモリシステム及びメモリカード
US6839826B2 (en) 2002-02-06 2005-01-04 Sandisk Corporation Memory device with pointer structure to map logical to physical addresses
US7010662B2 (en) * 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US20030163633A1 (en) * 2002-02-27 2003-08-28 Aasheim Jered Donald System and method for achieving uniform wear levels in a flash memory device
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
JP2003281071A (ja) 2002-03-20 2003-10-03 Seiko Epson Corp データ転送制御装置、電子機器及びデータ転送制御方法
JP4050548B2 (ja) * 2002-04-18 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
US7043599B1 (en) * 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US7082495B2 (en) * 2002-06-27 2006-07-25 Microsoft Corporation Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory
US7051152B1 (en) * 2002-08-07 2006-05-23 Nvidia Corporation Method and system of improving disk access time by compression
JP2004086295A (ja) 2002-08-23 2004-03-18 Megawin Technology Co Ltd Nand型フラッシュメモリディスク装置及び論理アドレス検出の方法
US7882081B2 (en) * 2002-08-30 2011-02-01 Netapp, Inc. Optimized disk repository for the storage and retrieval of mostly sequential data
US7340566B2 (en) 2002-10-21 2008-03-04 Microsoft Corporation System and method for initializing a memory device from block oriented NAND flash
US7415565B2 (en) * 2002-10-31 2008-08-19 Ring Technology Enterprises, Llc Methods and systems for a storage system with a program-controlled switch for routing data
US6996676B2 (en) * 2002-11-14 2006-02-07 International Business Machines Corporation System and method for implementing an adaptive replacement cache policy
US7093101B2 (en) * 2002-11-21 2006-08-15 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7302592B2 (en) 2002-12-02 2007-11-27 Silverbrook Research Pty Ltd Integrated circuit which disables writing circuitry to memory when the power drops below a power threshold predetermined and controlled by the processor
EP1607868A4 (en) 2003-03-10 2009-04-22 Sharp Kk DATA PROCESSING DEVICE, DATA PROCESSING PROGRAM AND RECORDING MEDIUM
JP2004348818A (ja) * 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置の書込制御方法及びシステム並びに携帯電子機器
US7320100B2 (en) 2003-05-20 2008-01-15 Cray Inc. Apparatus and method for memory with bit swapping on the fly and testing
US7243203B2 (en) 2003-06-13 2007-07-10 Sandisk 3D Llc Pipeline circuit for low latency memory
US20040268359A1 (en) * 2003-06-27 2004-12-30 Hanes David H. Computer-readable medium, method and computer system for processing input/output requests
US7373514B2 (en) 2003-07-23 2008-05-13 Intel Corporation High-performance hashing system
US20050055495A1 (en) * 2003-09-05 2005-03-10 Nokia Corporation Memory wear leveling
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7337201B1 (en) * 2003-10-08 2008-02-26 Sun Microsystems, Inc. System and method to increase memory allocation efficiency
US7096321B2 (en) * 2003-10-21 2006-08-22 International Business Machines Corporation Method and system for a cache replacement technique with adaptive skipping
GB2425199B (en) * 2003-11-13 2007-08-15 Commvault Systems Inc System and method for combining data streams in pipelined storage operations in a storage network
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7631138B2 (en) * 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US7305520B2 (en) 2004-01-30 2007-12-04 Hewlett-Packard Development Company, L.P. Storage system with capability to allocate virtual storage segments among a plurality of controllers
US20080082736A1 (en) 2004-03-11 2008-04-03 Chow David Q Managing bad blocks in various flash memory cells for electronic data flash card
JP2005293774A (ja) 2004-04-02 2005-10-20 Hitachi Global Storage Technologies Netherlands Bv ディスク装置の制御方法
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US20050240713A1 (en) * 2004-04-22 2005-10-27 V-Da Technology Flash memory device with ATA/ATAPI/SCSI or proprietary programming interface on PCI express
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
JP2006040264A (ja) * 2004-06-21 2006-02-09 Toshiba Corp メモリカードの制御方法および不揮発性半導体メモリの制御方法
US20060020616A1 (en) * 2004-07-22 2006-01-26 Geoffrey Hardy Indexing operational logs in a distributed processing system
US20060075057A1 (en) * 2004-08-30 2006-04-06 International Business Machines Corporation Remote direct memory access system and method
US7487320B2 (en) 2004-12-15 2009-02-03 International Business Machines Corporation Apparatus and system for dynamically allocating main memory among a plurality of applications
KR100662256B1 (ko) 2004-12-20 2006-12-28 한국전자통신연구원 낮은 프로세스 점유율을 가지는 객체기반 스토리지 장치및 그 제어 방법
US7689599B1 (en) * 2005-01-31 2010-03-30 Symantec Operating Corporation Repair of inconsistencies between data and metadata stored on a temporal volume using transaction log replay
US7620773B2 (en) * 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US7130960B1 (en) 2005-04-21 2006-10-31 Hitachi, Ltd. System and method for managing disk space in a thin-provisioned storage subsystem
US7752381B2 (en) * 2005-05-24 2010-07-06 Micron Technology, Inc. Version based non-volatile memory translation layer
US7716387B2 (en) 2005-07-14 2010-05-11 Canon Kabushiki Kaisha Memory control apparatus and method
JP5162846B2 (ja) 2005-07-29 2013-03-13 ソニー株式会社 記憶装置、コンピュータシステム、および記憶システム
US7552271B2 (en) 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
JP5008845B2 (ja) 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US7529905B2 (en) 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7634585B2 (en) 2005-11-04 2009-12-15 Sandisk Corporation In-line cache using nonvolatile memory between host and disk device
US7739472B2 (en) 2005-11-22 2010-06-15 Sandisk Corporation Memory system for legacy hosts
US20070143560A1 (en) 2005-12-21 2007-06-21 Gorobets Sergey A Non-volatile memories with memory allocation for a directly mapped file storage system
KR100781520B1 (ko) 2006-02-24 2007-12-03 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 이를위한 맵핑 정보 복구 방법
JP2007233903A (ja) 2006-03-03 2007-09-13 Hitachi Ltd 記憶制御装置及び記憶制御装置のデータ回復方法
US20070233937A1 (en) 2006-03-31 2007-10-04 Coulson Richard L Reliability of write operations to a non-volatile memory
US8307148B2 (en) 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7783956B2 (en) 2006-07-12 2010-08-24 Cronera Systems Incorporated Data recorder
US9465823B2 (en) 2006-10-19 2016-10-11 Oracle International Corporation System and method for data de-duplication
KR100771519B1 (ko) 2006-10-23 2007-10-30 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
US20080140918A1 (en) 2006-12-11 2008-06-12 Pantas Sutardja Hybrid non-volatile solid state memory system
US7917803B2 (en) 2008-06-17 2011-03-29 Seagate Technology Llc Data conflict resolution for solid-state memory devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050228961A1 (en) * 2000-06-02 2005-10-13 Reuter James M Generating updated virtual disks using distributed mapping tables accessible by mapping agents and managed by a centralized controller
US20030163630A1 (en) * 2002-02-27 2003-08-28 Aasheim Jered Donald Dynamic data structures for tracking data stored in a flash memory device
US20040186946A1 (en) * 2003-03-19 2004-09-23 Jinaeon Lee Flash file system
CN101080710A (zh) * 2004-08-24 2007-11-28 塞门铁克操作公司 映象数据存储装置写时间映射

Cited By (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102955793A (zh) * 2011-08-23 2013-03-06 腾讯科技(深圳)有限公司 处理文件载体空间的方法和装置
CN102955793B (zh) * 2011-08-23 2016-08-03 腾讯科技(深圳)有限公司 处理文件载体空间的方法和装置
CN104246724B (zh) * 2012-03-23 2017-12-01 Dssd股份有限公司 用于用内容表格条目存储数据的系统和方法
CN104246724A (zh) * 2012-03-23 2014-12-24 Dssd股份有限公司 用于用内容条目表格存储数据的系统和方法
WO2013189177A1 (zh) * 2012-06-20 2013-12-27 华为技术有限公司 存储空间映射方法及装置
CN102902629B (zh) * 2012-06-20 2016-06-22 华为技术有限公司 存储空间映射方法及装置
CN102902629A (zh) * 2012-06-20 2013-01-30 华为技术有限公司 存储空间映射方法及装置
CN105893188A (zh) * 2014-09-30 2016-08-24 伊姆西公司 用于加速磁盘阵列的数据重构的方法和装置
US10585770B2 (en) 2014-09-30 2020-03-10 EMC IP Holding Company LLC Method and apparatus for accelerating data reconstruction for a disk array
CN105893188B (zh) * 2014-09-30 2018-12-14 伊姆西公司 用于加速磁盘阵列的数据重构的方法和装置
CN105739915A (zh) * 2014-12-29 2016-07-06 三星电子株式会社 存储系统中执行的条带重建方法和存储系统
CN105739915B (zh) * 2014-12-29 2020-01-07 三星电子株式会社 存储系统中执行的条带重建方法和存储系统
CN107408022B (zh) * 2015-03-27 2021-10-26 英特尔公司 管理存储设备中的逻辑地址的数据的先前版本
CN107408022A (zh) * 2015-03-27 2017-11-28 英特尔公司 管理存储设备中的逻辑地址的数据的先前版本
US10936504B2 (en) 2015-06-16 2021-03-02 Arm Limited Apparatus and method for address translation and control of whether an access request is rejected based on an ownership table indicating an owner process for a block of physical addresses
US11314658B2 (en) 2015-06-16 2022-04-26 Arm Limited Apparatus and method including an ownership table for indicating owner processes for blocks of physical addresses of a memory
CN107690629B (zh) * 2015-06-16 2022-01-18 Arm 有限公司 地址转换
CN107690629A (zh) * 2015-06-16 2018-02-13 Arm 有限公司 地址转换
US10802729B2 (en) 2015-06-16 2020-10-13 Arm Limited Apparatus and method for sharing pages including enforcing ownership rights independently of privilege level
US10838877B2 (en) 2015-06-16 2020-11-17 Arm Limited Protected exception handling
TWI713522B (zh) * 2015-06-16 2020-12-21 英商Arm股份有限公司 位址轉換
CN111800522B (zh) * 2015-06-26 2023-04-07 伊姆西Ip控股有限责任公司 确定设备的物理位置的方法和装置
CN111800522A (zh) * 2015-06-26 2020-10-20 伊姆西Ip控股有限责任公司 确定设备的物理位置的方法和装置
CN105930500A (zh) * 2016-05-06 2016-09-07 华为技术有限公司 数据库系统中事务恢复的方法与数据库管理系统
CN106648457A (zh) * 2016-09-27 2017-05-10 华为数字技术(成都)有限公司 更新反向映射元数据的方法及装置
CN106648457B (zh) * 2016-09-27 2019-09-03 华为数字技术(成都)有限公司 更新反向映射元数据的方法及装置
CN108614781B (zh) * 2016-12-09 2022-05-27 北京兆易创新科技股份有限公司 基于NANDflash的有效数据查找方法和NANDflash存储设备
CN108614781A (zh) * 2016-12-09 2018-10-02 北京京存技术有限公司 基于NANDflash的有效数据查找方法和NANDflash存储设备
CN107195159A (zh) * 2017-07-13 2017-09-22 蚌埠依爱消防电子有限责任公司 一种消防报警系统和消防报警系统的巡检方法
US11579986B2 (en) 2018-08-03 2023-02-14 Huawei Cloud Computing Technologies Co., Ltd. Data query method and apparatus
CN109144416A (zh) * 2018-08-03 2019-01-04 华为技术有限公司 查询数据的方法和装置
WO2020259418A1 (zh) * 2019-06-24 2020-12-30 华为技术有限公司 一种数据访问方法、网卡及服务器
CN112559537A (zh) * 2019-09-25 2021-03-26 阿里巴巴集团控股有限公司 云存储区间更新方法、装置、电子设备及计算机存储介质
CN112559537B (zh) * 2019-09-25 2022-04-29 阿里巴巴集团控股有限公司 云存储区间更新方法、装置、电子设备及计算机存储介质
CN113851166A (zh) * 2020-06-25 2021-12-28 美光科技公司 存储器子系统中的加速读取转译路径
CN113851166B (zh) * 2020-06-25 2023-01-03 美光科技公司 存储器子系统中的加速读取转译路径
WO2023011425A1 (zh) * 2021-08-05 2023-02-09 北京车和家信息技术有限公司 数据传输方法、装置、数据传输设备及存储介质
WO2023029417A1 (zh) * 2021-08-31 2023-03-09 华为技术有限公司 一种数据存储方法及装置

Also Published As

Publication number Publication date
EP2286326A1 (en) 2011-02-23
WO2009126542A1 (en) 2009-10-15
US20130185532A1 (en) 2013-07-18
US8195912B2 (en) 2012-06-05
JP2011518380A (ja) 2011-06-23
US20120233396A1 (en) 2012-09-13
US20090150641A1 (en) 2009-06-11
KR20110039417A (ko) 2011-04-18

Similar Documents

Publication Publication Date Title
CN102084330A (zh) 用于有效地映射虚拟地址和物理地址的装置、系统和方法
CN102084332A (zh) 将存储请求转换为附加数据存储命令的装置、系统和方法
CN102084331A (zh) 在多处理器/多线程环境下协调存储请求的装置、系统和方法
CN102084360A (zh) 用于确认从数据存储设备读取正确的数据段的装置、系统和方法
CN101689131B (zh) 用于共享的、前端、分布式raid的装置、系统和方法
CN101501623B (zh) 感知文件系统的块存储系统、装置和方法
CN101622606B (zh) 用于作为大容量、非易失性存储器的高速缓存的固态存储器的装置、系统和方法
CN102598020B (zh) 用于改进的数据去重的装置、系统及方法
CN104699420A (zh) 允许各种规模存储装置的动态可扩展和可收缩的容错存储系统和方法
CN104395904A (zh) 高效的数据对象存储和检索
CN102662795A (zh) 一种分布式存储系统中元数据容错恢复方法
CN103098034B (zh) 用于条件和原子存储操作的装置和方法
CN103098034A (zh) 用于条件和原子存储操作的装置、系统和方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20110601