CN103593387B - 在多个阶段高效地存储和检索数据和元数据的方法和系统 - Google Patents
在多个阶段高效地存储和检索数据和元数据的方法和系统 Download PDFInfo
- Publication number
- CN103593387B CN103593387B CN201310357226.2A CN201310357226A CN103593387B CN 103593387 B CN103593387 B CN 103593387B CN 201310357226 A CN201310357226 A CN 201310357226A CN 103593387 B CN103593387 B CN 103593387B
- Authority
- CN
- China
- Prior art keywords
- metadata
- token
- daily record
- delta
- entity
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0686—Libraries, e.g. tape libraries, jukebox
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及在多个阶段高效地存储和检索数据和元数据的方法和系统。为了在多个阶段高效地存储和检索数据和元数据,在第一阶段,使用分派给最活跃元数据发出实体的元数据令牌在单个输入/输出操作中一起存储数据和元数据,同时把最不活跃元数据发出实体的元数据背负在具有元数据令牌之一的最活跃元数据发出实体之一上。在第二阶段,把元数据重写到元数据德尔塔日志以回收元数据令牌。在第三阶段,把元数据日志应用于包含存储系统的元数据的元数据结构,在利用元数据日志的元数据成功更新主元数据结构之后,清除元数据德尔塔日志。用空的元数据日志交换该元数据日志,以并发地添加元数据同时保留元数据日志直至把该元数据日志应用于元数据结构。
Description
技术领域
本发明一般地涉及计算机,更具体地讲,涉及在存储系统中利用快速元数据检索高效地存储同步的数据和元数据。
背景技术
在现今的社会中,计算机系统很常见。可在工作场所、在家庭或者在学校找到计算机系统。计算机系统可包括数据存储系统或盘存储系统以处理并存储数据。数据存储系统或盘存储系统被用于处理并存储数据。存储系统可包括一个或多个盘驱动器。这些数据处理系统通常需要大量的数据存储。数据处理系统内的顾客数据或由用户产生的数据占据该数据存储的很大一部分。这些计算机系统中的许多计算机系统涉及存储和检索大量的数据和元数据。
发明内容
随着对用于存储信息的更快、更强大并且更高效的方式的需求增涨,存储技术的优化正变为关键挑战。现代存储系统架构涉及持久保持在后端存储装置上的大量元数据。例如,在以时间顺序保存数据的日志存储系统中,诸如逻辑位置和块长度的属性与数据本身一样重要。在这种存储系统中,数据和相关元数据在逻辑上不可分离,并且元数据的部分丢失经常相当于数据丢失。因此,当实现这些系统时,需要数据和数据的相关元数据同步。在当前现有技术中,为存储和检索元数据而提供的解决方案无法使数据和元数据保持完全同步,无法在可容易检索的集中区域中存储元数据,不提供元数据的可忽略的I/O开销,并且不在元数据崩溃之后在有限并且容易计算的时间内加载元数据和/或恢复元数据。
因此,考虑到前述情况,提供用于在计算机存储系统中使用处理器装置在多个阶段高效地存储和检索数据和元数据的各种示例性方法、系统和计算机程序产品实施例。在第一阶段,使用分派给最活跃元数据发出实体的元数据令牌在单个输入/输出操作中一起存储数据和元数据,同时把最不活跃元数据发出实体的元数据背负在具有元数据令牌之一的最活跃元数据发出实体之一上。在第二阶段,把元数据重写到元数据德尔塔日志以回收元数据令牌。在第三阶段,把元数据日志应用于包含存储系统的元数据的元数据结构,然后在利用元数据日志的元数据成功更新主元数据结构之后,清除元数据德尔塔日志。用空的元数据日志交换所述元数据日志,以并发地添加元数据同时保留元数据日志直至把该元数据德尔塔日志应用于元数据结构。
除了前述示例性方法实施例之外,提供其它示例性系统和计算机产品实施例,并且它们提供相关优点。提供前述“发明内容”以便以简化形式介绍以下在“具体实施方式”中进一步描述的概念的选集。该“发明内容”并不旨在识别要求保护的主题的关键特征或必要特征,也不旨在用于辅助确定要求保护的主题的范围。要求保护的主题不限于解决在“背景技术”中指出的任何或所有缺点的实现方式。
附图说明
为了容易理解本发明的优点,将通过参照在附图中示出的特定实施例来提供以上简要描述的本发明的更具体的描述。应该理解,这些附图描述本发明的实施例并且因此不应被视为限制它的范围,将通过使用附图利用另外的特异性和细节描述并解释本发明,在附图中:
图1是示出具有可实现本发明的各方面的示例存储装置的计算系统环境的方框图;
图2是示出可实现本发明的各方面的计算机系统中的示例性数据存储系统的硬件结构的方框图;
图3是示出用于元数据发出过程的示例性方法的流程图;
图4是示出用于加载元数据并且从系统崩溃恢复元数据的示例性方法的流程图;
图5是示出用于撤销元数据令牌的示例性方法的流程图;和
图6是示出用新的元数据令牌交换元数据令牌的示例性方法的流程图。
具体实施方式
如前所述,随着对用于存储信息的更快、更强大并且更高效的方式的需求增涨,存储技术的优化正变为关键挑战。存在用于元数据的物理放置的两种基本方案。一种是把元数据放置为与它的相关数据块相邻,而另一种是把元数据放置在集中区域中。这产生输入/输出(I/O)性能和元数据加载成本之间的折衷:选择把元数据放置为与分布的数据块相邻使得难以找到并加载存储为元数据的信息;把元数据放置在集中位置需要发出用于为单个用户IO服务的多个IO命令。
混合方案是这样的方案:最初以分布格式存储元数据,并在以后把它移动到集中位置。在这种方案中,加载尚未被移动的元数据是复杂的过程:首先,必须加载集中的元数据,然后,必须从全部物理范围收集全部的分布的元数据。收集这些元数据是昂贵的操作,对预热时间和例程I/O都有影响。这些方案无法使数据和元数据保持完全同步,无法在可容易检索的集中区域中存储元数据,并且不在元数据崩溃之后在有限并且容易计算的时间内加载元数据和/或恢复元数据。因此,为了解决存储和检索数据和元数据的低效,如上所述,示出的本发明的实施例提供一种用于在计算机存储系统中使用处理器装置在多个阶段高效地存储和检索数据和元数据的解决方案。换句话说,以下示出一种通过在不显著影响系统吞吐量和等待时间的情况下限制元数据的物理分布来克服上述方案的缺陷的混合方法。
在第一阶段,使用分派给最活跃元数据发出实体的元数据令牌(例如,元数据写令牌)在单个输入/输出(I/O)操作中一起存储数据和元数据,同时把较不活跃元数据发出实体的元数据背负在具有元数据令牌之一的最活跃元数据发出实体之一上。“最活跃”和“较不活跃”的程度可由用户或现有技术公知的其它方法预先确定和/或设置。在第二阶段,把元数据重写到元数据德尔塔日志以回收元数据令牌。在第三阶段,把元数据德尔塔日志应用于包含存储系统的元数据的主元数据结构,然后在利用元数据德尔塔日志的元数据成功更新主元数据结构之后,清除元数据德尔塔日志。为了在元数据日志被应用于主元数据结构的同时允许对元数据日志的更新,元数据日志被立即与空的元数据日志交换,所述空的元数据日志将会为未来的主结构更新积累正在进行的元数据更新。
现在参照图1,描述计算环境中的数据存储系统(例如,虚拟磁带系统)的示例性架构10。计算机系统10包括连接到大容量存储装置14和存储装置16的中央处理单元(CPU)12。大容量存储装置可以包括能够在独立磁盘冗余阵列(RAID)中配置的硬盘驱动器(HDD)装置、固态装置(SSD)等。能够在位于系统10中或别处的装置14上执行进一步描述的备份操作。存储装置16可以包括诸如电可擦除可编程只读存储器(EEPROM)的存储器或相关装置的主机。存储装置16和大容量存储装置14经由信号承载介质连接到CPU12。另外,CPU12通过通信端口18连接到通信网络20,通信网络20具有附接的多个另外的计算机系统22和24。
图2是显示根据本发明的计算机系统中的数据存储系统的硬件结构的示例性方框图200。参照图2,示出主机计算机210、220、225,主机计算机210、220、225中的每一个用作用于执行数据处理的中央处理单元,即数据存储系统200的一部分。主机(物理或虚拟装置)210、220和225可以是数据存储系统200中的用于实现本发明的目的的一个或多个新的物理装置或逻辑装置。在一个实施例中,仅作为例子,数据存储系统200可被实现为IBMSystemStorageTM DS8000TM。网络连接260可以是光纤通道网络结构、光纤通道点到点链路、以太网上光纤通道网络结构或点到点链路、FICON或ESCON I/O接口、任何其它I/O接口类型、无线网络、有线网络、LAN、WAN、异构、同构、公共(即,互联网)、专用或其任何组合。主机210、220和225可在本地或分布在一个或多个位置中,并且可装备有至存储控制器240的任何类型的网络结构或网络适配器260,诸如光纤通道、FICON、ESCON、以太网、光纤、无线或同轴适配器。数据存储系统200因此装备有合适的网络结构(图2中未示出)或网络适配器260以进行通信。在图1中描述了数据存储系统200,数据存储系统200包括存储控制器240和存储器230。
为了便于更清楚地理解这里描述的方法,存储控制器240在图2中被示出为单个处理单元,包括微处理器242、系统存储器243和非易失性存储器(“NVS”)216,以下将对此进行更详细的描述。需要注意的是,在一些实施例中,存储控制器240包括多个处理单元,所述多个处理单元中的每一个具有它们自己的处理器复合体和系统存储器,所述多个处理单元由数据存储系统200内的专用网络互连。存储器230可包括通过存储网络连接到存储控制器240的一个或多个存储装置,诸如存储阵列。
在一些实施例中,存储器230中所包括的装置可按照环架构连接。存储控制器240管理存储器230,并帮助进行用于存储器230的写和读请求的处理。存储控制器240的系统存储器243存储程序指令和数据,处理器242可访问所述程序指令和数据以在计算环境中执行与管理存储器230关联的功能和方法步骤并且执行本发明的步骤和方法。在一个实施例中,系统存储器243包括计算机存储环境中的包括这里描述的方法和操作的操作软件250,与操作软件250关联,或者与操作软件250通信。如图2中所示,系统存储器243可还包括用于缓冲分别称为写/读请求的“写数据”和“读数据”及其关联数据的、用于存储器230的缓存245(在这里也称为“缓冲存储器”),或者与缓存245通信。应该注意的是,虽然大多数存储操作事实上是写和读请求,但存在其它类型的操作,诸如查询命令。在一个实施例中,在系统存储器243外部的装置中分配缓存245,但保持可由微处理器242访问缓存245,并且除了执行如这里所述的操作之外,缓存245还可用于提供针对数据丢失的额外的安全性。
在一些实施例中,缓存245利用易失性存储器和非易失性存储器实现,并且经由局部总线(图2中未示出)耦合到微处理器242以实现数据存储系统200的增强的性能。数据存储控制器中所包括的NVS216可由微处理器242访问,并用于为其它附图中所述的本发明的操作和执行提供另外的支持。NVS216也可称为“持久”缓存或“缓冲存储器”,并利用非易失性存储器来实现,所述非易失性存储器可使用外部电源保持存储在其中的数据或者可不使用外部电源保持存储在其中的数据。为了适合实现本发明的目标的任何目的,NVS可被存储在缓存245中以及与缓存245一起存储。在一些实施例中,诸如电池的备用电源(图2中未示出)在数据存储系统200失去电源的情况下向NVS216提供足够的电力以保持存储在其中的数据。在某些实施例中,NVS216的容量小于或等于缓存245的总容量。
存储器230可在物理上包括一个或多个存储装置,诸如存储阵列。存储阵列是诸如硬盘的个体存储装置的逻辑分组。在某些实施例中,存储器230包括JBOD(简单磁盘捆绑)阵列或RAID(独立磁盘冗余阵列)阵列。一批物理存储阵列可进一步被组合以形成盘包(rank),所述盘包使物理存储与逻辑结构分离。盘包中的存储空间可被分配到逻辑卷,所述逻辑卷定义在写/读请求中指定的存储位置。
在一个实施例中,仅作为例子,如图2中所示的存储系统可包括逻辑卷(或简单称为“卷”),可具有不同种类的分配。存储器230a、230b和230n被显示为数据存储系统200中的盘包,并且在这里被称为盘包230a、230b和230n。盘包可相对于数据存储系统200位于本地,或者可位于物理远程位置。换句话说,本地存储控制器可与远程存储控制器连接并管理在远程位置的存储器。盘包230a被显示为利用两个完整卷234和236以及一个部分卷232a来构成。盘包230b被显示为具有另一部分卷232b。因此,卷232被跨盘包230a和230b进行分配。盘包230n被显示为完全分配给卷238,也就是说,盘包230n指的是卷238的整个物理存储器。从以上例子将会理解,盘包可被构造为包括一个或多个部分和/或完整卷。卷和盘包可进一步被划分成所谓的“轨道”,所述轨道代表存储器的固定块。轨道因此与给定卷关联并且可被给予给定盘包。
在计算环境中,存储控制器240可包括元数据令牌模块255、元数据发出实体控制模块257和元数据德尔塔(delta)日志模块259。元数据令牌模块255、元数据发出实体控制模块257和元数据德尔塔日志模块259可结合存储控制器240、主机210、220、225和存储装置230中的每个和各个部件进行工作。元数据令牌模块255、元数据发出实体控制模块257和元数据德尔塔日志模块259在结构上可以是一个完整的模块,或者可与其它单独模块关联和/或被包括在其它单独模块中。元数据令牌模块255、元数据发出实体控制模块257和元数据德尔塔日志模块259也可位于缓存245或存储控制器240的其它部件中以实现本发明的目的。在一个实施例中,电源防护模块255是由群集(cluster)中的所有节点共享的单个外部块。电源防护模块255是物理电源开关,群集节点从该电源开关取得电力馈送。操作它的软件组件被包括在各种防护代理257和259中。因为电源防护模块255是物理实体,所以电源防护模块255可不位于缓存中,而防护代理257能够位于缓存中。
存储控制器240可构造为具有:控制开关241,用于控制针对主机计算机210、220、225的光纤通道协议;微处理器242,用于控制所有的存储控制器240;非易失性控制存储器243,用于存储用于控制存储控制器240的操作的微程序(操作软件)250、用于控制的数据和稍后描述的每个表;缓存245,用于临时存储(缓冲)数据;和缓冲器244,用于辅助缓存245来读和写数据;控制开关241,用于控制用来控制去往或来自存储器230的数据传输的协议;元数据令牌模块255;元数据实体控制模块257;和元数据德尔塔日志模块259,在元数据德尔塔日志模块259上可设置信息。可利用本发明实现多个缓冲器244以辅助如这里所述的操作。在一个实施例中,群集主机/节点210、220、225和存储控制器240通过作为接口的网络适配器(这可以是光纤通道)260(即,经由称为“网络结构(fabric)”的至少一个开关)而连接。
在一个实施例中,主机计算机或者一个或多个物理或虚拟装置210、220、225和存储控制器240通过作为接口的网络适配器(这可以是光纤通道)260(即,经由称为“网络结构”的至少一个开关)连接。在一个实施例中,仅作为例子,将描述图2中示出的系统的操作。微处理器242可控制存储器243以存储来自主机装置(物理或虚拟)210的命令信息和用于识别主机装置(物理或虚拟)210的信息。控制开关241、缓冲器244、缓存245、操作软件250、微处理器242、存储器243、NVS216、元数据令牌模块255、元数据发出实体控制模块257和元数据德尔塔日志模块259彼此通信,并且可以是分离的部分或一个单独部件。此外,诸如操作软件250的几个部件(如果并非所有部件的话)可被包括在存储器243中。为了适合本发明的目的,示出的装置内的每个部件可被链接在一起,并且可彼此通信。
如上所述,本发明提供一种用于在计算机存储系统中使用处理器装置在多个阶段高效地存储和检索数据和元数据的解决方案。在一个实施例中,在以下示出并定义元数据元素的生命周期中的三个主要阶段(如上所述)。在称为“分布元数据阶段”的第一阶段,用户和/或系统触发的过程(在这里称为“元数据发出实体”和/或“元数据实体”)提供具有或没有相关数据的元数据。元数据元素是指由这些实体发出的元数据。每个元数据元素具有从发出该元数据元素、经过移动该元数据元素、到把该元数据元素应用在集中元数据结构上的生命周期。元数据与它们的相关数据或在相同时间恰好写入的非相关数据被存储在一起。这两个选项之间的选择取决于在这里称为“元数据写令牌”和/或“元数据令牌”的资源的可用性。如果处理数据和元数据的元数据发出实体与这种令牌关联,则允许元数据被与数据存储在一起。否则,元数据“背负(piggy-back)”在这些元数据实体之中与元数据令牌关联的另一元数据实体上。背负类似于搭便车,即,两个不同且分离的实体共享相同或类似的目的地,并且它们中的缺乏独立移动能力的一个使用另一个作为去往目的地的运输方法。这里,背负被用于描述这样的过程:由缺乏元数据令牌的实体发出的一个元数据“搭乘”另一实体的有效令牌以到达它的目的地,诸如NVS。这些元数据令牌在数量上有限制(有界限)。限制活跃元数据令牌的总数量减少了物理装置上的元数据的分散度,这进而导致改进的元数据加载时间。元数据写令牌与上下文的关联是动态的并且取决于上下文操作的I/O比率:加载得越多的上下文越可能持有令牌。改变一组元数据令牌关联涉及将在稍后描述的持久更新。活跃令牌的集合是有限并且公知大小的集合。使用这里描述的方法可改变集合自身的内容。不存在“非活跃”令牌集合,因为不存在“非活跃”令牌–每个元数据实体或者持有令牌或者不持有令牌。撤销的令牌仅是把当前令牌集合交换为另一令牌集合的过程中的中间步骤。
在第二阶段,元数据元素被重新写入到元数据元素的日志(称为“元数据德尔塔日志”)。元数据写令牌可被回收,但仅在所有的它们的关联元数据元素已移动到第二阶段并且被重新写入到元数据德尔塔日志中之后才可以。移动到第二阶段或逐渐变为第二阶段意味着元数据被写到元数据日志。
在第三阶段,在包含具有容易访问的形式的系统元数据的持久数据结构(称为“主元数据结构”)上应用元数据德尔塔日志。应该注意的是,在第一阶段、第二阶段与第三阶段之间存在元数据结构的基本差异。在第一阶段和第二阶段,元数据被存储为日志,这意味着当所有的变化顺序地到达时所有的变化被写入。虽然这种方法是输入/输出(I/O)高效的,但当加载元数据时它不是高效的,因为写到日志的所有元数据必须被重放以产生最终的存储器内数据结构。为了降低这种CPU负荷,第三阶段表示持久元数据而不保留它的日志历史,并且它是能够被容易地加载到存储器中的持久元数据的快照。术语“应用”在这里暗示本发明要更新受影响的元数据结构并把受影响的元数据结构发射到NVS,因此,如果需要,则能够容易地加载受影响的元数据结构。
在成功地更新该结构之后,元数据德尔塔日志被清除。为了能够与主元数据结构更新并发地把元数据元素添加到元数据德尔塔日志,在更新之前,元数据德尔塔日志被与空的元数据德尔塔日志交换并保留旧的元数据德尔塔日志,直至在主元数据结构上完全应用了旧的元数据德尔塔日志,这是第三阶段。
每个元数据发出实体遵循如上所述的元数据生命周期的规则(阶段):元数据被与数据一起写到装置,或者背负在持有有效元数据写令牌的另一实体上。在实体正在执行同步(组块)写入(或组块元数据写入)的情况下,仅当数据和相关元数据已被成功地写入时,该操作才被视为完成。
现在参照图3,描述示出了用于元数据发出过程的示例性方法300的流程图。方法300仅描述第一阶段,并且到方法300结束时,数据和元数据都作为数据流的一部分持久保持在NVS上。存在方法300的两个主分支。在一个分支(例如,左手侧)上,方法300持有有效元数据写令牌,因此,方法300允许数据附接该数据自己的元数据和其它数据的元数据元素。附接意味着每个元数据将会被写到背负有元数据的实体的数据和元数据被写到的同一位置。当写完成时,过程(例如,方法300)负责向搭乘的元数据实体/过程通知:它们的元数据被成功地存储。如果令牌自从方法300的开始已被撤销,则可存在等待令牌可用的“撤销令牌”过程。在分支的另一侧(例如,在右手侧),当前过程不持有有效元数据令牌;因此元数据实体必须依赖于持有元数据令牌的元数据实体以执行元数据写操作。应该注意的是,方法300仅能在数据和元数据都已被成功地存储之后答复用户。在这种背景下,方法300通过接收数据和元数据(步骤302)来开始(步骤301)。方法300确定是否存在持有有效元数据令牌的任何元数据实体(步骤304)。如果存在持有有效元数据令牌的任何元数据实体,则该方法将会附接数据与元数据(步骤306)。方法300把不具有有效元数据令牌的元数据实体的元数据附接(例如,背负)到持有有效元数据令牌的元数据实体(步骤308)。写入数据和元数据(步骤310)。元数据现在被存储在两个分开的位置:1)作为由令牌持有实体发出的数据流的一部分;和2)在存储器中作为未决的写元数据日志的一部分。发送对用户的答复,该答复指示数据和元数据已被成功地存储(步骤313)。方法300随后确定是否任何元数据令牌已被撤销(步骤314)。如果为是,则方法300向未决“撤销令牌”过程通知元数据令牌之一已被撤销(步骤316)。如果为否,则方法300结束(步骤318)。然而,如上所述,存在两个并发进行的分支。返回到步骤304,如果存在不持有有效元数据令牌的任何元数据实体,则在没有元数据的情况下独自写入属于不持有有效元数据令牌的这些元数据实体的数据(步骤320)。然而,方法300将把元数据发送给持有有效元数据令牌的元数据实体并且将背负该元数据(步骤322)。方法300将会随后等待元数据被写入(步骤324)。元数据被写入并完成(步骤326)。向元数据实体/用户发送指示元数据已被成功地写入的答复(步骤328)。方法300随后结束(步骤318)。
可能需要加载元数据和/或从崩溃恢复。如以下将在图4中所述,主元数据结构中的元数据被加载到存储器中。加载和恢复不是元数据生命周期的阶段之一,而是在不适当的系统关闭(例如,系统未使所有的元数据移动到第三阶段)之后重构存储器内元数据结构的过程的总体名称。在主元数据上应用元数据德尔塔日志。由于元数据德尔塔日志可能已在崩溃之前已被部分地应用,所以元数据德尔塔日志可能包含已经在主结构上应用的元素。有两种方案可行:在一种方案中,所有元数据元素应该支持“双重放”,即,以相同次序把它们应用两次等同于把它们应用一次。在另一方案中,已经应用的元素必须被检测并且不被重新应用。读取活跃元数据写令牌的集合。对于每个令牌,读取在它的关联物理位置写入的元数据元素。通过与元数据的元素原始次序对应的密钥对这些元数据元素排序,并且元数据元素被应用在存储器中的主元数据结构上并排队用于下一元数据德尔塔日志更新。图4示出把系统元数据加载到存储器内结构中的过程。在这个过程期间,一些元数据必须被从早于第三阶段的阶段恢复。
图4是示出用于加载元数据并且从系统崩溃恢复元数据的示例性方法400的流程图。方法400通过把主元数据结构读取到存储器中(步骤404)而开始(步骤402)。读取元数据德尔塔日志(步骤406)。在存储器中的主元数据结构上应用元数据德尔塔日志(步骤408)。读取元数据令牌的活跃集合(步骤409)。方法400确定是否存在更多的元数据令牌(步骤410)。如果为是,则方法400读取与这些元数据令牌关联的位置(步骤412)。元数据随后被解析(步骤414)。方法400再次确定是否存在更多的元数据令牌(步骤416)。如果从步骤410和/或从步骤416得出不存在更多的元数据令牌,则方法400继续并对元数据元素排序(步骤418)。根据元数据的创建的起源按时间次序对元数据元素排序。方法400随后确定是否存在更多的元数据元素(步骤420)。如果为是,则方法400把所述元数据元素附加到下一元数据德尔塔日志更新末尾(步骤422)。在存储器中的主元数据上应用元数据元素(步骤424)。方法400随后再次确定是否存在更多的元数据元素(例如,元数据实体)(步骤426)。如果为是,则方法400返回到步骤410。如果从步骤410或步骤426得出不存在更多的元数据元素,则方法400结束(步骤428)。
在一个实施例中,如上所述,首先,持久主元数据结构被加载到存储器中。元数据德尔塔日志随后被读取并应用在该持久主元数据结构上。定位阶段一的元数据元素,读取持久活跃令牌集合。接下来,从与活跃元数据令牌关联的位置读取元数据元素。元数据元素按照它们的原始创建的时间次序被排序,被附加到日志末尾,然后被应用在存储器内主元数据结构(即,持久主元数据结构)上。
如上所述,元数据写令牌的数量在数量上受限制。活跃元数据写令牌的数量直接影响加载时间,这是元数据写令牌受到限制的原因。这样,需要管理并保持活跃元数据写令牌。计算系统中的元数据发出实体的数量可能大于元数据写令牌的数量。在这种情况下,这些元数据发出实体中的一些不被允许独自存储元数据,而是相反地,这些元数据发出实体必须背负在持有元数据写令牌的这些元数据发出实体中的任何元数据发出实体上。携带令牌持有实体(例如,持有元数据写令牌的元数据发出实体)被选择为最靠近/最接近发出实际写操作的持有元数据写令牌的元数据发出实体。
为了优化系统性能,元数据写令牌理想地被授予最多加载的元数据发出实体(例如,最活跃元数据发出实体)。这确保对等待时间的影响最小。当元数据发出实体上的负荷显著改变时,令牌关联被改变以反映这种改变。元数据令牌仅可在与该元数据令牌关联的所有元数据元素从第一阶段完结之后被回收。以下描述用新集合交换活跃令牌的当前集合。
对于要被撤销的每个元数据令牌,元数据令牌被标记以防止该元数据令牌与新的元数据一起使用。一旦与撤销的令牌关联的所有元数据元素从第一阶段完结,能够交换活跃元数据令牌集合。(应该注意的是,能够使用像双缓冲的方法原子地执行两个持久元数据令牌集合之间的交换的实现方式。)
如以下图5中所示,描述从已变得与其它元数据发出实体相比较少加载(例如,较不活跃)的元数据发出实体撤销单个令牌的过程。图5是示出用于撤销元数据令牌的示例性方法500的流程图。方法500通过选择“牺牲品(victim)”元数据令牌(例如,识别的已变得较不活跃的元数据令牌)(步骤504)而开始(步骤502)。方法500把该元数据令牌标记为无效(步骤506)。方法500确定牺牲品元数据令牌是否具有任何进行中写入(例如,需要处理或正被处理的任何写操作)(步骤508)。如果为是,则方法500针对该牺牲品元数据令牌等待写操作完成(步骤510)。方法500对于牺牲品元数据令牌完成写操作(步骤512)。如果为否,则方法500把元数据附加到下一元数据德尔塔日志更新末尾(步骤514)。方法500等待直至元数据德尔塔日志被更新(步骤516)。方法500弹出未决令牌实体并给予无效元数据令牌(步骤520)。方法500更新存储器内草稿令牌集合(步骤522)。方法500结束(步骤524)。
图5可被总结如下。首先,元数据令牌被标记为无效,因此,没有新的元数据元素将使用被标记的元数据令牌。如果存在使用标记的元数据令牌的任何活跃元数据写入,则执行等待操作,允许活跃元数据写入完成。本发明于是确保:通过把所有元数据元素附加到元数据德尔塔日志末尾,使用标记的元数据令牌写入的所有元数据元素到达第二阶段。然后,较活跃/较多加载并且应该得到元数据写令牌的元数据发出过程被选择并且分派仍然在无效状态下的标记的/撤销的元数据令牌。这种新的分派在待应用元数据令牌集合的存储器内草稿中被更新。
在一个实施例中,如以下的图6中所述,描述用新的元数据令牌集合交换当前元数据令牌集合的过程。现在参照图6,示出了示出用新的元数据令牌交换元数据令牌的示例性方法600的流程图。方法600通过选择新的一个元数据令牌和/或元数据令牌的集合(步骤604)而开始(步骤602)。方法600确定是否存在均需要被从选择的元数据令牌的当前集合去除的多个元数据令牌(步骤605)。如果为是,则方法600启动需要被去除的元数据令牌的“撤销令牌”过程(参见图5方法)(步骤606)。当从步骤605得出不存在需要从选择的元数据令牌的当前集合去除的另外的元数据令牌时,方法600等待所有撤销的元数据令牌完成任何I/O操作(步骤610)。方法600把草稿令牌集合写入到装置(步骤614)。方法600在装置上更新“活跃元数据令牌集合指针”(步骤616)。方法600随后针对新的集合中的每个元数据令牌确定是否存在无效的任何元数据令牌(步骤618)。如果为是,则方法600把该元数据令牌设置为有效(步骤620)。如果不存在无效的任何元数据令牌,则该方法结束(步骤624)。
图6可被总结如下。首先,对于不再是新的元数据令牌集合的一部分的每一个元数据写令牌执行“撤销令牌”过程。当针对每一个元数据写令牌执行的所有的撤销令牌过程已完成时,新的元数据令牌集合的草稿集合被写到装置,并且随后在原子更新中,盘上的“活跃令牌集合指针”被更新到新存储的新的元数据令牌集合的位置。使存在于新的元数据令牌集合上的所有无效元数据写令牌重新有效。应该注意的是,在旧的元数据令牌集合和新的元数据令牌集合之间共享的元数据令牌能够在这个过程期间正常地使用,也就是说,它们不经历撤销令牌过程,因此,持有这些令牌的元数据发出实体被允许保持利用它们的I/O发出元数据。
群集管理“cman”是使中央群集成员资格和消息传送系统更加可用的项目的集合。捕捉节点(未示出)可继续加载/初始化410其它需要的内核模块,诸如RAID模块。为了使崩溃内核足够快速地加载并操作这个事件流,崩溃内核需要尽可能地“瘦(thin)”,即,仅包括用于使它启动并发送应急(panic)消息的必要模块(驱动程序)。然后,一旦已知故障节点,它将不会被防护。此时,对于加载对vmcore文件进行转储所需的其它模块,时间变得不重要。这些模块之一是访问我们想要把文件写入的盘所需的驱动程序。
加载/初始化410阶段不是时间敏感的,并且能够花费几分钟。应急节点402使用kdump操作把存储器转储412到盘,把虚拟存储器(VM)核文件保存在本地文件系统上。一旦崩溃文件转储412已被加载到群集的捕捉节点成功地捕捉,发送“应急模式完成”消息414。幸存节点406记录422应急模式完成消息414。发送“应急模式完成”消息414后,应急节点402自己重启416。在重启416之后,应急节点402发出警报,这能够用于各种监测功能。应该注意的是,这里用于图4中的2节点群集结构的相同逻辑/步骤可被进一步扩展以用于具有多个节点的群集。通过修改消息传送方法以使用多播,由此把应急消息发送给群集的所有成员,可实现这一点。消息传送协议能够根据其IP地址把应急消息发送给特定节点,或者发送给一组节点。发送给特定IP地址被称为单播。发送给一组节点被称为多播。有时,多播被称为广播,但它并不完全相同。
此时,并且结合崩溃节点,示出辅助内核(和/或捕捉内核)的较低级部件细节。捕捉节点被加载到群集中以捕捉属于崩溃节点的崩溃转储文件。通过包括尽可能多的处理硬件部件的模块,捕捉节点(例如,辅助节点的内核)应该支持硬件平台。例如,在Linux中,模块是用于更常见地称为驱动程序的术语。由于驱动程序用于在OS和它在其上运行的硬件之间进行“连接”,具有许多驱动程序能够使内核在更多样的服务器及其关联硬件部件(诸如,网卡等)上加载。重要的是,网络相关模块被编译到内核中。幸存内核支持kdump特征,并且辅助/幸存内核和文件系统的总体目标启动时间小于4秒。辅助内核是专门构造的并且是主线内核(它可以不是主线内核并且能够是任何Linux内核)的编译版本,诸如仅作为例子示出的主线Linux内核3.1.0。为了用作转储捕捉内核,下面的选项应该在内核上可用:1)内核可重新定位(例如,可重新定位的内核是能够被从不同存储地址加载的内核,与必须位于存储空间中的特定地址的不可重新定位内核相对。为了使崩溃内核映像驻留于与主内核不同的位置并且仍然能够被加载而需要这一点),2)内核具有编译在内的kexec特征(kexec机制是实际加载崩溃内核的机制。它由kdump工具使用),3)内核具有对/dev/oldmem和/proc/vmore的支持,需要该支持以把存储器映像转换成转储文件,4)内核能够实现“内核崩溃转储”(内核需要能够访问存储器,以便保存转储文件),和5)内核能够被编译为单处理器内核,它是kexec的一般推荐。Kexec是允许不经过BIOS从已经运行的内核的环境启动内核(例如,Linux内核)的快速启动机制。BIOS可能非常耗时,尤其是在具有许多外设的大服务器上。这能够为最后许多次启动机器的开发者以及需要重启服务器的用户节省很多时间。从新启动的内核的环境而非从崩溃的内核的环境捕捉崩溃转储。每当系统崩溃时,kdump使用kexec启动到第二内核。这个第二内核(例如,捕捉内核)利用非常少的内存启动并且捕捉转储映像。第一内核保留第二内核用于启动的内存的一部分。为了支持尽可能多的配置并且减少启动后用户空间模块加载,大多数装置驱动程序被建立到内核中。仅慢的装置驱动程序会作为模块处理并且在辅助内核启动之后被加载。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的盘包表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
这些计算机程序指令也可存储在计算机可读介质中,该计算机可读介质能够指示计算机、其它可编程数据处理设备或其它装置按照特定的方式发挥作用,从而存储在计算机可读介质中的指令产生一种制造产品,所述制造产品包括实现流程图和/或方框图的一个或多个方框中规定的功能/动作的指令。计算机程序指令也可被加载到计算机、其它可编程数据处理设备或其它装置上,以使得在计算机、其它可编程设备或其它装置上执行一系列的操作步骤以产生计算机实现的过程,从而在该计算机或其它可编程设备上执行的指令提供用于实现流程图和/或方框图的一个或多个方框中规定的功能/动作的过程。
以上附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
尽管已详细示出了本发明的一个或多个实施例,但本领域技术人员将会理解,在不脱离如下面的权利要求所阐述的本发明的范围的情况下可做出对这些实施例的修改和改变。
Claims (18)
1.一种用于使用处理器装置在存储系统中在多个阶段高效地存储和检索数据和元数据的方法,该方法包括:
在第一阶段,使用分派给最活跃元数据发出实体的元数据令牌在单个输入/输出(I/O)操作中一起存储数据和元数据,同时把最不活跃元数据发出实体的元数据背负在具有元数据令牌之一的最活跃元数据发出实体之一上;以及
在第二阶段,把元数据重写到元数据德尔塔日志以回收元数据令牌。
2.如权利要求1所述的方法,其中,所述元数据令牌在数量上有限并且每一个被包括在活跃令牌集合中。
3.如权利要求1所述的方法,还包括在第三阶段执行下面的至少一个步骤:
把元数据德尔塔日志应用于包含存储系统的元数据的主元数据结构,
在利用元数据德尔塔日志的元数据成功更新主元数据结构之后,清除元数据德尔塔日志,以及
用空的元数据德尔塔日志交换所述元数据德尔塔日志,以并发地添加元数据同时保留所述元数据德尔塔日志直至把该元数据德尔塔日志应用于主元数据结构。
4.如权利要求1所述的方法,还包括执行下面的至少一个步骤:
向所述最不活跃元数据发出实体发送通知,该通知指示背负在最活跃元数据发出实体之一上的元数据已被成功存储,以及
如果元数据令牌之一已被撤销,则通知等待元数据令牌之一变为可用的未决撤销元数据令牌过程。
5.如权利要求3所述的方法,还包括为了加载元数据和从崩溃操作恢复元数据之一而执行下面的至少一个步骤:
把主元数据结构加载到存储器中,
读取元数据德尔塔日志,
把元数据德尔塔日志应用于主元数据结构,其中如果元数据德尔塔日志已被至少部分应用于主元数据结构,则执行下面的至少一个步骤:
以相同次序把元数据元素应用两次,其中元数据支持双重放,以及
检测先前已被应用于主元数据结构的元数据,并且仅应用元数据德尔塔日志中的先前尚未应用的元数据,
读取每个元数据令牌并且从与元数据令牌关联的位置读取元数据,
根据创建时间按时间次序对元数据进行排序,以及
把元数据附加到对元数据德尔塔日志的下一更新末尾。
6.如权利要求1所述的方法,还包括:为了把最不活跃元数据发出实体的元数据背负在具有元数据令牌之一的最活跃元数据发出实体之一上,选择最靠近发出写操作的最活跃元数据发出实体之一。
7.如权利要求6所述的方法,还包括执行下面的步骤之一:
从已变为较不活跃的最活跃元数据发出实体之一撤销元数据令牌之一,以及
用元数据令牌的新的活跃集合交换所述元数据令牌的活跃集合。
8.如权利要求7所述的方法,还包括为了撤销元数据令牌之一而执行下面的步骤之一:
把所述元数据令牌之一标记为无效以禁止供元数据使用,
等待任何活跃元数据写操作完成,
通过把元数据附加到元数据德尔塔日志末尾来确保写入的元数据到达第二阶段,
选择最活跃元数据发出实体中正在等待分派元数据令牌之一的一个替代实体,以分派撤销的元数据令牌之一,以及
针对元数据令牌的新的分派更新活跃令牌集合。
9.如权利要求7所述的方法,还包括为了用元数据令牌的新的活跃集合交换所述元数据令牌的活跃集合而执行下面的步骤之一:
对于不是元数据令牌的新的活跃集合的一部分的每一个元数据令牌,执行撤销元数据令牌过程,
等待撤销的每个元数据令牌完成,
把元数据令牌的新的活跃集合写到元数据德尔塔日志,
把活跃令牌集合指针更新到元数据令牌的新的活跃集合中的位置,以及
使在元数据令牌的新的活跃集合上的无效的每个元数据令牌重新有效。
10.一种用于在存储系统中在多个阶段高效地存储和检索数据和元数据的系统,该系统包括:
至少一个处理器装置,用于在所述多个阶段存储和检索数据和元数据,其中所述至少一个处理器装置:
在第一阶段,使用分派给最活跃元数据发出实体的元数据令牌在单个输入/输出(I/O)操作中一起存储数据和元数据,同时把最不活跃元数据发出实体的元数据背负在具有元数据令牌之一的最活跃元数据发出实体之一上;以及
在第二阶段,把元数据重写到元数据德尔塔日志以回收元数据令牌。
11.如权利要求10所述的系统,其中,所述元数据令牌在数量上有限并且每一个被包括在活跃令牌集合中。
12.如权利要求10所述的系统,其中,所述至少一个处理器装置在第三阶段执行下面的至少一个步骤:
把元数据德尔塔日志应用于包含存储系统的元数据的主元数据结构,
在利用元数据德尔塔日志的元数据成功更新主元数据结构之后,清除元数据德尔塔日志,以及
用空的元数据德尔塔日志交换所述元数据德尔塔日志,以并发地添加元数据同时保留元数据德尔塔日志直至把该元数据德尔塔日志应用于主元数据结构。
13.如权利要求10所述的系统,其中所述至少一个处理器装置执行下面的至少一个步骤:
向所述最不活跃元数据发出实体发送通知,该通知指示背负在最活跃元数据发出实体之一上的元数据已被成功存储,以及
如果元数据令牌之一已被撤销,则通知等待元数据令牌之一变为可用的未决撤销元数据令牌过程。
14.如权利要求12所述的系统,其中,所述至少一个处理器装置为了加载元数据和从崩溃操作恢复元数据之一而执行下面的至少一个步骤:
把主元数据结构加载到存储器中,
读取元数据德尔塔日志,
把元数据德尔塔日志应用于主元数据结构,其中如果元数据德尔塔日志已被至少部分应用于主元数据结构,则所述至少一个处理器装置执行下面的至少一个步骤:
以相同次序把元数据元素应用两次,其中元数据支持双重放,以及
检测先前已被应用于主元数据结构的元数据,并且仅应用元数据德尔塔日志中的先前尚未应用的元数据,
读取每个元数据令牌并且从与元数据令牌关联的位置读取元数据,
根据创建时间按时间次序对元数据进行排序,以及
把元数据附加到元数据德尔塔日志的下一更新末尾。
15.如权利要求10所述的系统,其中,所述至少一个处理器装置为了把最不活跃元数据发出实体的元数据背负在具有元数据令牌之一的最活跃元数据发出实体之一上而选择最靠近发出写操作的最活跃元数据发出实体之一。
16.如权利要求15所述的系统,其中,所述至少一个处理器装置执行下面的步骤之一:
从已变为较不活跃的最活跃元数据发出实体之一撤销元数据令牌之一,以及
用元数据令牌的新的活跃集合交换所述元数据令牌的活跃集合。
17.如权利要求16所述的系统,其中,所述至少一个处理器装置为了撤销元数据令牌之一而执行下面的步骤之一:
把所述元数据令牌之一标记为无效以禁止供元数据使用,
等待任何活跃元数据写操作完成,
通过把元数据附加到元数据德尔塔日志末尾来确保写入的元数据到达第二阶段,
选择最活跃元数据发出实体中正在等待分派元数据令牌之一的一个替代实体,以分派撤销的元数据令牌之一,以及
针对元数据令牌的新的分派更新活跃令牌集合。
18.如权利要求16所述的系统,其中,所述至少一个处理器装置为了用元数据令牌的新的活跃集合交换所述元数据令牌的活跃集合而执行下面的步骤之一:
对于不是元数据令牌的新的活跃集合的一部分的每一个元数据令牌,执行撤销元数据令牌过程,
等待撤销的每个元数据令牌完成,
把元数据令牌的新的活跃集合写到元数据德尔塔日志,
把活跃令牌集合指针更新到元数据令牌的新的活跃集合中的位置,以及
使在元数据令牌的新的活跃集合上的无效的每个元数据令牌重新有效。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/588,292 US8805855B2 (en) | 2012-08-17 | 2012-08-17 | Efficiently storing and retrieving data and metadata |
US13/588,292 | 2012-08-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103593387A CN103593387A (zh) | 2014-02-19 |
CN103593387B true CN103593387B (zh) | 2016-12-28 |
Family
ID=50083532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310357226.2A Active CN103593387B (zh) | 2012-08-17 | 2013-08-16 | 在多个阶段高效地存储和检索数据和元数据的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (3) | US8805855B2 (zh) |
CN (1) | CN103593387B (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9026860B2 (en) * | 2012-07-31 | 2015-05-05 | International Business Machines Corpoation | Securing crash dump files |
US10013166B2 (en) | 2012-12-20 | 2018-07-03 | Amazon Technologies, Inc. | Virtual tape library system |
US20140181396A1 (en) * | 2012-12-20 | 2014-06-26 | Amazon Technologies, Inc. | Virtual tape using a logical data container |
US9483213B1 (en) | 2013-04-29 | 2016-11-01 | Amazon Technologies, Inc. | Virtual media changers |
GB2520712A (en) | 2013-11-28 | 2015-06-03 | Ibm | Data dump method for a memory in a data processing system |
CN104899312B (zh) * | 2015-06-15 | 2018-07-31 | 国家电网公司 | 一种多层分类数据体系的数据更新方法 |
WO2017165827A1 (en) * | 2016-03-25 | 2017-09-28 | Amazon Technologies, Inc. | Low latency distributed storage service |
US10802740B2 (en) * | 2016-04-21 | 2020-10-13 | Netapp, Inc. | Systems, methods, and computer readable media providing arbitrary sizing of data extents |
US10540360B2 (en) | 2016-07-29 | 2020-01-21 | Hewlett Packard Enterprise Development Lp | Identifying relationship instances between entities |
CN106339285A (zh) * | 2016-08-19 | 2017-01-18 | 浪潮电子信息产业股份有限公司 | 一种linux系统意外重启的分析方法 |
KR20180058327A (ko) * | 2016-11-24 | 2018-06-01 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그의 동작 방법 |
US10176052B2 (en) | 2017-04-24 | 2019-01-08 | International Business Machines Corporation | Snapshot backup with unified restore information |
US10997065B2 (en) * | 2017-11-13 | 2021-05-04 | SK Hynix Inc. | Memory system and operating method thereof |
US10671143B2 (en) * | 2018-01-11 | 2020-06-02 | Red Hat Israel, Ltd. | Power management using automation engine |
US10481818B2 (en) * | 2018-02-28 | 2019-11-19 | Micron Technology, Inc. | Meta data processing during startup of storage devices |
US11048590B1 (en) | 2018-03-15 | 2021-06-29 | Pure Storage, Inc. | Data consistency during recovery in a cloud-based storage system |
CN109445694B (zh) * | 2018-10-19 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种分布式存储系统元数据分离方法和装置 |
US10990316B2 (en) * | 2019-06-28 | 2021-04-27 | Western Digital Technologies, Inc. | Log-based storage for different data types in non-volatile memory |
CN110351265A (zh) * | 2019-07-02 | 2019-10-18 | 创新奇智(重庆)科技有限公司 | 一种基于jwt的认证鉴权方法、计算机可读介质及系统 |
US11733907B2 (en) * | 2020-08-05 | 2023-08-22 | EMC IP Holding Company LLC | Optimize recovery time objective and costs of cloud based recovery |
US11341172B2 (en) | 2020-08-14 | 2022-05-24 | Firmscribe, Llc | Capturing messages from a phone message exchange |
US11109199B1 (en) * | 2020-08-14 | 2021-08-31 | U.S. Financial Compliance, LLC | Capturing messages from a phone message exchange with matter association |
CN112989183B (zh) * | 2021-02-20 | 2022-03-22 | 湖南视拓信息技术股份有限公司 | 一种基于生命周期的产品信息推荐方法、装置及相关设备 |
CN113590043B (zh) * | 2021-07-29 | 2024-08-16 | 北京沃东天骏信息技术有限公司 | 一种数据存储方法、装置、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101685444A (zh) * | 2008-09-27 | 2010-03-31 | 国际商业机器公司 | 用于实现元数据搜索的系统和方法 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6205501B1 (en) * | 1998-01-07 | 2001-03-20 | National Semiconductor Corp. | Apparatus and method for handling universal serial bus control transfers |
US6353866B1 (en) * | 1998-01-07 | 2002-03-05 | National Semiconductor Corporation | Apparatus and method for initializing a universal serial bus device |
JP2002055995A (ja) | 2000-05-31 | 2002-02-20 | Canon Inc | 情報処理方法及び装置 |
US6948061B1 (en) * | 2000-09-20 | 2005-09-20 | Certicom Corp. | Method and device for performing secure transactions |
US8019788B1 (en) | 2002-09-30 | 2011-09-13 | Siemens Product Lifecycle Management Software Inc. | Data compression and file segmentation in directmodel JT datastores |
US7870102B2 (en) * | 2006-07-12 | 2011-01-11 | International Business Machines Corporation | Apparatus and method to store and manage information and meta data |
US7917469B2 (en) | 2006-11-08 | 2011-03-29 | Hitachi Data Systems Corporation | Fast primary cluster recovery |
US8205064B2 (en) * | 2007-05-11 | 2012-06-19 | Advanced Micro Devices, Inc. | Latency hiding for a memory management unit page table lookup |
US7913007B2 (en) * | 2007-09-27 | 2011-03-22 | The University Of North Carolina | Systems, methods, and computer readable media for preemption in asynchronous systems using anti-tokens |
KR200445014Y1 (ko) * | 2007-10-26 | 2009-06-22 | 내외 코리아(주) | 타이어 공기압 측정용 압력센서 및 이를 구비한 타이어공기압 모니터링 시스템 |
US20090216707A1 (en) | 2008-02-26 | 2009-08-27 | International Business Machines Corporation | File resource usage information in metadata of a file |
US8301593B2 (en) * | 2008-06-12 | 2012-10-30 | Gravic, Inc. | Mixed mode synchronous and asynchronous replication system |
US7962458B2 (en) * | 2008-06-12 | 2011-06-14 | Gravic, Inc. | Method for replicating explicit locks in a data replication engine |
US8495454B2 (en) | 2008-07-14 | 2013-07-23 | Marvell World Trade Ltd. | Methods, apparatuses, systems, and architectures for quickly and reliably encoding and/or decoding system data |
CN101324898A (zh) | 2008-08-05 | 2008-12-17 | 北京蓝色星际软件技术发展有限公司 | 一种基于文件属性的快速检索、恢复方法 |
US8190832B2 (en) * | 2009-01-29 | 2012-05-29 | International Business Machines Corporation | Data storage performance enhancement through a write activity level metric recorded in high performance block storage metadata |
US20100274795A1 (en) * | 2009-04-22 | 2010-10-28 | Yahoo! Inc. | Method and system for implementing a composite database |
US20100313044A1 (en) * | 2009-06-03 | 2010-12-09 | Microsoft Corporation | Storage array power management through i/o redirection |
WO2012012075A1 (en) | 2010-06-30 | 2012-01-26 | Jibe Mobile, Inc. | System for replication and delivery of remote data and accumulated metadata with enhanced display |
US8255634B2 (en) * | 2010-08-11 | 2012-08-28 | Lsi Corporation | Apparatus and methods for look-ahead virtual volume meta-data processing in a storage controller |
US8341350B2 (en) * | 2010-09-21 | 2012-12-25 | Lsi Corporation | Analyzing sub-LUN granularity for dynamic storage tiering |
JP5671288B2 (ja) * | 2010-09-24 | 2015-02-18 | 任天堂株式会社 | 情報処理装置、情報処理プログラム、情報処理方法及び情報処理システム |
DE102010046945A1 (de) * | 2010-09-29 | 2012-03-29 | Bsn-Jobst Gmbh | Kompressionsartikel mit Einsatz |
US8938588B2 (en) * | 2010-12-16 | 2015-01-20 | International Business Machines Corporation | Ensuring forward progress of token-required cache operations in a shared cache |
US8935469B2 (en) * | 2011-01-12 | 2015-01-13 | International Business Machines Corporation | Autonomic reclamation processing for tapes |
US8533231B2 (en) * | 2011-08-12 | 2013-09-10 | Nexenta Systems, Inc. | Cloud storage system with distributed metadata |
US20130173853A1 (en) * | 2011-09-26 | 2013-07-04 | Nec Laboratories America, Inc. | Memory-efficient caching methods and systems |
US20130085944A1 (en) * | 2011-09-29 | 2013-04-04 | Pacid Technologies, Llc | System and method for application security |
US20130304547A1 (en) * | 2012-05-08 | 2013-11-14 | Salesforce.Com, Inc. | Investment valuation projections in an on-demand system |
-
2012
- 2012-08-17 US US13/588,292 patent/US8805855B2/en not_active Expired - Fee Related
-
2013
- 2013-08-16 CN CN201310357226.2A patent/CN103593387B/zh active Active
- 2013-11-05 US US14/072,602 patent/US9043341B2/en not_active Expired - Fee Related
-
2015
- 2015-04-27 US US14/697,409 patent/US9569518B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101685444A (zh) * | 2008-09-27 | 2010-03-31 | 国际商业机器公司 | 用于实现元数据搜索的系统和方法 |
Non-Patent Citations (1)
Title |
---|
多媒体数据库的元数据存储与检索;杨治平等;《中国期刊全文数据库 重庆师范学院学报(自然科学版)》;20020331;第19卷(第1期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
US20150242482A1 (en) | 2015-08-27 |
US9043341B2 (en) | 2015-05-26 |
US20140059004A1 (en) | 2014-02-27 |
US9569518B2 (en) | 2017-02-14 |
US8805855B2 (en) | 2014-08-12 |
US20140052691A1 (en) | 2014-02-20 |
CN103593387A (zh) | 2014-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103593387B (zh) | 在多个阶段高效地存储和检索数据和元数据的方法和系统 | |
CN103765406B (zh) | 用于远程更新执行进程的方法和装置 | |
CN103473250B (zh) | 用于保存文件系统节点的过去状态的方法与系统 | |
CN104081353B (zh) | 可缩放环境中的动态负载平衡 | |
CN107636601A (zh) | 使用标准dram和整合储存器的处理器与平台辅助的nvdimm解决方案 | |
CN100440214C (zh) | 管理存储子系统中元数据的方法、系统和计算机程序产品 | |
CN103250134B (zh) | 基于流技术的软件映像更新 | |
US8074090B2 (en) | Storage system including plurality of storage apparatuses | |
CN110088733A (zh) | 虚拟机迁移的基于存储层的编排 | |
CN107111631A (zh) | 粒度同步/半同步架构 | |
CN106062742A (zh) | 用于改进快照性能的系统和方法 | |
US20030200394A1 (en) | Cache memory arrangement and methods for use in a cache memory system | |
JP4277873B2 (ja) | トランザクション処理装置、トランザクション処理方法 | |
CN108351752A (zh) | 存储虚拟化卸载 | |
US8726261B2 (en) | Zero downtime hard disk firmware update | |
CN107615255A (zh) | 利用持久存储器的计算装置和方法 | |
JP2006031367A (ja) | 計算機システム、および、記憶装置システムの移行方法 | |
CN103443773A (zh) | 利用多个存储设备减少数据库录入的写延迟的方法和系统 | |
CN103329105B (zh) | 文件系统中的应用恢复 | |
JP2009230577A (ja) | ソフトウェアアップデート管理プログラム、ソフトウェアアップデート管理装置、およびソフトウェアアップデート管理方法 | |
US20120005168A1 (en) | Logical Recovery with Unbundled Transaction Services | |
CN101086717B (zh) | 存储瞬态信息的系统和方法 | |
JP2004334698A (ja) | 計算機システム及び故障計算機代替制御プログラム | |
CN106227463B (zh) | Raid、数据读写及其重建方法 | |
US9513809B2 (en) | Obtaining additional data storage from another data storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |