CN105308574A - 永久主存储器的容错 - Google Patents

永久主存储器的容错 Download PDF

Info

Publication number
CN105308574A
CN105308574A CN201380077638.9A CN201380077638A CN105308574A CN 105308574 A CN105308574 A CN 105308574A CN 201380077638 A CN201380077638 A CN 201380077638A CN 105308574 A CN105308574 A CN 105308574A
Authority
CN
China
Prior art keywords
data
primary memory
permanent primary
memory
permanent
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
CN201380077638.9A
Other languages
English (en)
Inventor
格雷格·B·莱萨日特
达莱·C·莫里斯
加里·戈斯廷
罗斯·W·赫里尔
安德鲁·R·惠勒
布莱纳·D·盖瑟
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN105308574A publication Critical patent/CN105308574A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2069Management of state, configuration or failover
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Hardware Redundancy (AREA)

Abstract

一种计算系统可包括:处理器和包括容错能力的永久主存储器。该计算系统可还包括存储控制器,用于将数据存储在永久主存储器中,并创建冗余数据。该存储控制器可也关于永久主存储器远程存储冗余数据。该存储控制器可还在永久主存储器故障期间访问冗余数据。

Description

永久主存储器的容错
背景技术
当前数据存储设备常常包括容错,以确保如果设备错误或故障则不丢失数据。给当前数据存储设备提供的容错的示例为冗余独立盘阵列。冗余独立盘阵列(RAID)是控制多个盘驱动器并通过存储有冗余的数据提供容错的存储技术。RAID技术可以多种方式存储有冗余的数据。冗余数据存储方法的示例包括复制数据并将数据存储在多个位置和添加位以存储计算出的错误恢复位。
附图说明
在以下详细描述中参照附图描述特定示例,附图中:
图1是包括容错的计算系统的示例的框图;
图2是包括容错的计算系统的示例的框图;
图3是将数据写入具有容错的存储器的方法的示例的过程流示意图;
图4是访问具有容错的存储器的方法的示例的过程流示意图。
具体实施方式
本文描述的技术总体涉及冗余数据存储。更具体地,本文描述的技术涉及永久主存储器中的冗余数据存储。主存储器是直接或间接连接至中央处理单元(CPU)且对CPU而言可直接访问的主要存储器。为了将冗余数据存储到盘中,当前系统提供储存器阵列控制器,拦截块存储以及其关联的数据并将数据冗余地跨多个盘设备存储,以确保如果一个或多个设备故障则可恢复数据。一种方法是计算和存储错误恢复位,例如RAID5奇偶校验,使得在故障设备中丢失的任何数据都能从错误恢复位和来自无故障设备的数据重新创建。另一方法是,例如经由RAID1技术,复制数据并将数据存储在多个位置。可使用多种RAID级别和算法来提供期望级别的保护。其它系统将盘存储器的多个通道附着到系统。然后在系统的储存管理软件中处理数据的复制或RAID化。当数据块要被交付给储存器时,软件启动向多个盘的多传送,以便实施期望的RAID算法。
当块传送到盘时为存储到为块储存设备工作的盘的数据提供冗余的这些当前系统,通过页面调度软件和IODMA机制管理。然而,这些方法并不很好地适应不仅从其短访问延迟,还从块传送IO处理器的缺席获得性能益处的直接访问的储存器,例如永久主存储器。直接访问的储存器还从仅移动实际修改或要求的数据而非整体块的效率而获得性能益处。
当储存器被写入可靠数据时,不管它是在诸如自旋硬盘、固态盘之类的传统设备中,还是在直接访问的模块中,都能更好地保持数据完整性。当在非永久存储器和盘之间传送数据块时,使用低速盘设备,管理该数据完整性。在传送数据块时,提供软件或附着的储存器阵列,用于跨多个设备散播数据。在这个模型下,一个这样的设备故障将导致丢失一部分存储的位,但从其余设备可恢复完整数据。
新系统架构利用密集、永久、低延迟时间存储器设备,来提供由处理器直接访问并在处理器缓存器中缓存的大储存器阵列。具有密度像闪存以及访问时间像DRAM存储器的新固态永久存储器设备允许系统的设计如储存器一样对待该存储器但如存储器一样访问它,即通过直接存储器访问,允许固态永久主存储器用作永久主存储器。为了保护该永久主存储器中存储的数据,除了路由对存储器的写请求外还以镜像或RAID方式将数据路由到分离的永久主存储器中的多个存储位置的能力被整合到访问该存储器的路径中。该路由确保在永久主存储设备故障的情况下的数据恢复,同时保持当前编程样式。
通过以主存储器访问速度,在对小数据单位操作的主存储器访问路径(例如独立的缓存线)中添加容错功能,这种类型的数据保护(例如数据复制或RAID化)可延伸至直接存储器访问,例如永久主存储器,而不注意软件应用级处的保护机制。当前冗余解决方案仅在软件准备好交付数据后将数据移动到盘。在前进之前,系统必须随之等待该操作完成,包括将全部RAID数据写入多个设备所需要的时间。在本发明中,通过在独立缓存线写入发生时对永久主存储器执行RAID更新,可更快完成储存器交付。进一步,通过将存储器页面跨多个永久主存储器扩散,可并行处理多个缓存线的RAID操作。通过并行处理RAID操作,完成交易的时间缩短,并且对系统的要求得到平衡。从电力和数据移动远景来看,整体结果是受保护的数据跨存储设备的更快、更有效的分布。
图1是包括容错的计算系统100的框图。在示例中,计算系统100是服务器集群。计算系统100包括多个节点,例如计算节点102。在进一步的示例中,计算系统100可还包括存储器节点,例如远程存储器节点112,或多个存储器节点。存储器节点是用于存储大量数据的存储器的集合,例如存储器设备的集合。节点102通过诸如服务器集群部署之类的网络104可通信地彼此联接。计算系统100可包括若干计算节点,例如几十个或甚至几千个计算节点。
计算节点102包括用于执行存储的指令的中央处理单元(CPU)106。CPU106可以是单核处理器、多核处理器或任何合适的处理器。在示例中,计算节点102包括单个CPU。在另一示例中,计算节点102包括多个CPU,例如两个CPU、三个CPU或更多。
计算节点102包括永久主存储器108。永久主存储器108可包括具有电池备份的易失性动态随机存取存储器(DRAM)、非易失性相变随机存取存储器(PCRAM)、自旋转移矩磁阻随机存取存储器(STT-MRAM)、电阻随机存储器存储器(reRAM)、忆阻器、FLASH或其它类型的存储器设备。例如,永久主存储器108可以是固态、永久、密集、快速存储器。快速存储器可以是与DRAM存储器具有类似存取时间的存储器。
计算节点102进一步包括存储控制器110。存储控制器110与永久主存储器108通信并控制由CPU106对永久主存储器108的访问。永久存储器是诸如存储设备上的储存器之类的非易失性储存器。在示例中,存储控制器110可以是RAID存储控制器。当存储控制器110接收对永久主存储器108的访问请求时,存储控制器110生成对本地永久主存储器108的事务。
计算系统100还包括远程存储器112。远程存储器112可以是永久存储器,并且可以与永久主存储器108相同。远程存储器112通过诸如网络104可通信地联接至计算节点,如服务器集群部署。远程存储器远离永久主存储器108并与之分离。例如,远程存储器112可以与永久主存储器108物理分离。在示例中,远程存储器可以是划分成存储器地址空间的区域或范围的永久存储器。每个区域可分派给计算节点102。每个区域可附加地由除所分派的计算节点外的计算节点访问。如果所分派的计算节点发生故障,另外的计算节点可访问该区域,或该区域可被再分派,以便保持对远程存储器中数据的访问。
远程存储器112包括冗余数据114。远程存储器112经由冗余数据114为永久主存储器108充当容错能力(即提供数据恢复的系统和/或方法以便确保数据完整性)。当存储控制器110接收对配置用于冗余存储以确保数据的完整性的永久主存储器的写操作时,存储控制器110将生成对远程存储器112的事务,导致在存储控制器110写入永久主存储器108的同时,生成和存储冗余数据114。通过将冗余数据114存储到远程存储器112,数据可有效的跨多个设备散布,以便当设备或甚至多个设备故障时可恢复数据。
在采用RAID1的实施例中,写入的数据被复制或镜像以产生数据的同样的拷贝。在该镜像模式下,数据写入本地永久主存储器108。数据的同样的拷贝写入远程存储器112,成为冗余数据114。在镜像模式下,存储控制器110响应于CPU106的请求访问永久主存储器108。在镜像模式下,远程存储器112足够大以存储在计算系统100中的所有计算节点102的永久主存储器108中存储的所有数据的拷贝。在图1所例示的示例中,远程存储器112至少是永久主存储器108的三倍大,以便有能力存储永久主存储器108中存储的所有数据的拷贝。
然而,如果计算节点102的永久主存储器108例如由于永久主存储器108故障而变得不可访问,则访问冗余数据114。当在从永久主存储器108读取的数据中发生本地不可纠正的错误,即仅使用永久主存储器108的纠错码(ECC)不能纠正永久主存储器108中的错误时,可使用诸如奇偶校验或纠错码(ECC)之类的标准查错或纠错码来检查。查错/纠错码给存储控制器110发信号以从远程存储器112读取冗余数据114。来自远程存储器112的冗余数据114被提供给CPU106以满足访问请求,并在永久主存储器108起作用时拷贝至永久主存储器108,或在永久主存储器108不再起作用时用于在新位置中创建数据的替代冗余拷贝。如果本地计算节点102故障,则也可例如由另外的计算节点102访问冗余数据114。在这样的事件中,新计算节点102将能够访问冗余数据114并在故障节点102停止的位置继续。另外,如果存储到永久主存储器108的数据的拷贝变得遭破坏,则可访问冗余数据114,并将原始数据的拷贝保存到永久主存储器108。在另外的示例中,另外的计算节点102可访问来自远程存储器112的数据的拷贝,而不涉及原始计算节点102。
永久主存储器108通常以诸如读取事务被访问,以便以最低延迟服务请求。结果,远程存储器112很少被访问。可选择一种实施方式以偶尔访问远程存储器112,以确认远程存储器112仍然可访问并能提供正确的数据。通过确认远程存储器112的可访问能力,确保冗余数据114的完整性。在示例中,诸如读取请求之类的存储器访问可偶尔通过访问远程存储器112的冗余数据114而非永久主存储器108服务。通过偶尔服务从远程存储器112的存储器访问,系统100可验证远程存储器112和冗余数据114没有故障。
存储控制器110常常对存储的数据进行清洗,以便检查和纠正在很少访问时段期间可能发生的任何软件错误。在示例中,清洗远程存储器112中的冗余数据114受到存储控制器110的支持。在另一示例中,远程存储器112提供冗余数据114的清洗,而不涉及存储控制器110。
在另一实施例中,采用跨计算节点102的RAID4来确保数据完整性。使用远程存储器112来保持受存储控制器110控制的RAID奇偶校验。在该RAID模式下,存储控制器110为RAID控制器。存储控制器110可包括配置为在访问失败导致数据不可访问后重建数据的数据恢复引擎。数据恢复引擎包括硬件和编程的组合。例如,数据恢复引擎可包括用于存储指令的非瞬时性计算机可读介质、用于执行指令的一个或多个处理器,或其组合。
在接收将数据写入到存储器的请求时,存储控制器110将新数据写入永久主存储器108。另外,存储控制器110发送指令来更新远程存储器112上的冗余数据114。例如,存储控制器110用永久主存储器108中的旧数据对进来的写入数据执行异或(XOR)操作。然后,存储控制器110发送带有XOR操作的结果的写德尔塔(写改变)命令给远程存储器112。远程存储器112将读取构成RAID4奇偶校验的冗余数据114、用写德尔塔数据对其进行XOR,并将结果写回到冗余数据114。在示例中,在数据被写入永久主存储器108的同时更新冗余数据114。当永久主存储器108和远程存储器112完成了所有的存储器写入时,存储控制器110向CPU106发送对系统写事务的响应,指示已完成写入,并可长期使用。在示例中,计算系统100包括单个远程存储器112。在另一示例中,计算系统100包括多个远程存储器112。
当采用RAID4级别的系统中的存储控制器110接收读取数据的请求时,存储控制器尝试从本地永久主存储器108读取数据。如果永久主存储器108中的数据有本地不可纠正的错误,或者本地永久主存储器不可访问,则存储控制器110将从冗余数据114读取RAID4奇偶校验,从所有其它计算节点102的永久主存储器108读取与RAID4奇偶校验关联的数据,然后用所有关联的数据对RAID4奇偶校验进行XOR以重新生成不可纠正的本地数据。重新生成的数据被返回给CPU106。如果本地永久主存储器108可用,则将重新生成的数据保存在永久主存储器108中。如果永久主存储器108不可用,则可将重新生成的数据保存在另一计算节点的永久主存储器中。在进一步的示例中,可将重新生成的数据保存到远程存储器112。然后,重新生成的数据可由具有不可用的永久主存储器108的原始计算节点访问,或由替代计算节点访问。
如果计算节点102故障,则替代计算节点102访问远程存储器112上的冗余数据114,并将数据拷贝至替代计算节点的本地永久主存储器108。
在采用RAID1的进一步示例中,第二计算节点充当包含第一计算节点102的冗余数据的远程存储器。第二计算节点包括联接至永久主存储器的存储控制器。第一计算节点102上的存储控制器110从CPU106接收将数据写入本地永久主存储器108的请求。存储控制器将新数据写入或将所存储的数据更新到第一计算节点102的永久主存储器108。同时,冗余数据被发送到第二计算节点上的存储控制器110。第二计算节点上的存储控制器将冗余数据写入本地永久主存储器108中,然后向第一计算节点上的存储控制器发送响应。当由第一计算节点上的永久主存储器108和第二计算节点上的永久主存储器108完成了所有的存储器写入时,第一计算节点上的存储控制器110向第一计算节点上的CPU106发送对系统写事务的响应。在示例中,多个附加计算节点可充当包含第一计算节点102的冗余数据的远程存储器。在进一步的示例中,第一计算节点102的冗余数据可跨多个计算节点分布。
当采用RAID1级别的系统中的存储控制器110接收读取数据的请求时,存储控制器从本地永久主存储器108读取数据。如果永久主存储器108中的数据具有本地不可纠正的错误,或本地永久主存储器不可访问,则存储控制器110访问第二计算节点102的永久主存储器108中的冗余数据。在这样的故障的事件中,存储控制器110可识别不可访问的数据的存储器位置。存储器位置可以处于存储器地址空间中。在一些实施例中,可建立存储器地址空间表,来加快与不可访问的数据对应的存储器位置的识别。存储器地址空间表可由存储控制器110建立。
应理解,图1的框图不意图指示在每种情况下计算系统100都要包括图1中所示的所有部件。进一步,依据特定实施方式的细节,在计算系统100内可包括任意数目的附加部件。
图2是包括容错的计算系统200的框图。在示例中,计算系统200是服务器集群。计算系统200包括多个节点,例如计算节点202。在进一步的示例中,计算系统200可还包括多个存储器,例如永久主存储器210。永久主存储器210是用于存储大量数据的存储器的集合,例如存储器设备的集合。计算节点202和永久主存储器210通过网络204彼此通信联接。计算系统200可包括若干计算节点,例如几十或甚至几千个计算节点,以及若干永久主存储器。
计算节点202包括用于执行存储的指令的中央处理单元(CPU)206。CPU206可以是单核处理器、多核处理器或任何其它合适的处理器。在示例中,计算节点202包括单个CPU。在另一示例中,计算节点202包括多个CPU,例如两个CPU、三个CPU或更多。
计算节点202进一步包括存储控制器208。存储控制器208与永久主存储器210通信,并控制CPU206对永久主存储器210的访问。在示例中,存储控制器208是RAID存储控制器。当存储控制器208接收对永久主存储器210的写入的请求时,存储控制器208生成对所选择的永久主存储器210的写事务。
每个计算节点202可以与永久主存储器210通信地联接。永久主存储器210可以是具有电池备份的易失性动态随机存取存储器(DRAM)、非易失性相变随机存取存储器(PCRAM)、自旋转移矩磁阻随机存取存储器(STT-MRAM)、电阻随机存储器存储器(reRAM)、忆阻器、FLASH或其它类型的存储器设备。在示例中,永久主存储器210是固态、永久、密集、快速存储器。快速存储器可以是与DRAM存储器具有类似存取时间的存储器。永久主存储器210远离计算节点202并经由诸如通信光纤之类的网络204访问。
永久主存储器210可被组合形成非易失性永久主存储器池。非易失性永久主存储器池的区域被分配给计算系统200内的计算节点202。在特定计算节点202故障的事件中,被分配给故障计算节点的非易失性永久主存储器池的区域可再分配给起作用的计算节点202。以此方式,当计算节点故障时,对非易失性存储器区域中的数据的访问不会丢失。在进一步的示例中,非易失性永久主存储器池的区域可由附加计算节点202访问。
在进一步示例中,计算系统200包括单个永久存储器。永久存储器非划分成区域(存储器地址空间的范围)。每个区域被分派给计算节点以充当计算节点102的永久主存储器210。每个区域也可由附加计算节点访问。在所分派的计算节点故障的事件中,存储器的区域可被再分派给起作用的计算节点。
计算系统200还包括远程存储器212。远程存储器是已由系统200指派为充当远程存储器212的永久主存储器,例如永久主存储器210。在示例中,可指派多个永久主存储器充当远程存储器212。远程存储器212通过诸如通信光纤之类的网络204通信联接至计算节点。
远程存储器212包括冗余数据214。远程存储器212经由冗余数据214给永久主存储器210提供容错能力(即,提供数据恢复的系统和/或方法,以确保数据完整性)。远程存储器212存储的冗余数据可由计算节点102访问。例如在计算节点故障或数据遭破坏的事件中,远程存储器212存储的冗余数据也可由附加计算节点访问。
在实施例中,永久主存储器210和远程存储器212被组织为RAID1组。远程存储器212用于保持由存储控制器208控制的数据。在该实施例中,存储控制器208是RAID控制器。每个存储控制器208独立执行针对非易失性永久主存储器池中的分配给该特定存储控制器208的区域的所有RAID计算。存储控制器208可包括配置为在访问故障导致数据不可访问之后重建数据的数据恢复引擎。数据恢复引擎包括硬件和编程的组合。例如,数据恢复引擎可包括用于存储指令的非瞬时性计算机可读介质、用于执行指令的一个或多个处理器,或其组合。
在接收到来自CPU206的系统写事务时,存储控制器208将新数据写入所选择的永久主存储器210。另外,存储控制器208发送命令来更新远程存储器212中存储的冗余数据214。在示例中,与新数据被写入永久主存储器210的同时,用新数据的拷贝写入冗余数据214。当永久主存储器210和远程存储器212确认了所有的存储器写入时,存储控制器208向CPU206发送对系统写事务的响应,指示写入已经被完成且可长期使用。在示例中,计算系统200包括单个远程存储器212。在另一示例中,计算系统200包括多个远程存储器212。
当采用RAID协议的系统200的计算节点202中的存储控制器208从CPU206接收到读取数据的请求时,存储控制器208从所选择的永久主存储器210读取数据。如果永久主存储器210中的数据具有本地不可纠正的错误,或者永久主存储器不可访问,则存储控制器208访问远程存储器212以读取冗余数据214。在这样的故障的事件中,存储控制器208可识别不可访问的数据的存储器位置。存储器位置可以是存储器地址空间。在一些实施例中,可建立存储器地址空间表,以加快对与不可访问的数据对应的存储器位置的识别。可由存储控制器208建立存储器地址空间表。
存储控制器208,例如用数据恢复引擎,从冗余数据214重新生成数据,并将重新生成的数据发送给CPU206,完成读取请求。如果所选择的永久主存储器210可用,则也将重新生成的数据保存在所选择的永久主存储器210中。如果所选择的永久主存储器210不可用,则可将重新生成的数据保存在附加的永久主存储器中。然后,重新生成的数据可由计算节点202访问。
在另一实施例中,采用跨永久主存储器210的RAID5来确保数据完整性。对于RAID5,奇偶校验跨所有永久主存储器210分布,而非仅放置在远程存储器212中,以便最大化可用存储器带宽。在该RAID模式下,存储控制器208是RAID控制器。RAID控制器可包括配置为在硬件故障导致数据不可访问后重新生成数据的数据恢复引擎。
在接收到来自CPU206的将数据写入存储器的请求时,存储控制器208从由写地址选择的永久主存储器210读取旧数据,并使用旧数据和新写入的数据执行异或(XOR)操作。然后,存储控制器208将新数据写入由写地址选择的永久存储器210。附加地,存储控制器208然后将带有XOR结果的写德尔塔(写改变)命令发送至第二永久主存储器210。第二永久主存储器基于写地址选择,并包括针对特定写地址的RAID5奇偶校验数据。第二永久主存储器210将读取RAID5奇偶校验数据,用写德尔塔数据对其进行XOR,并将结果写回到RAID5奇偶校验数据中。在示例中,在数据被写入永久主存储器210的同时,更新RAID5奇偶校验数据。当永久主存储器210和奇偶校验永久主存储器210已经完成了全部存储器写入时,存储控制器208向CPU206发送对系统写事务的响应,指示写入已经被完成且可长期使用。在示例中,计算系统200包括多个永久主存储器210,以便降低RAID5的存储器容量负载。
当采用RAID5的系统中的存储控制器208从CPU206接收读取数据的请求时,存储控制器尝试从读取地址所选择的第一永久主存储器210读取数据。如果第一永久主存储器210中的数据具有本地不可纠正的错误,或者永久主存储器不可访问,则存储控制器208将读取与不可纠正的数据关联的RAID5奇偶校验,并从其它永久主存储器210读取与RAID5奇偶校验关联的所有其它数据。然后,存储控制器208将计算RAID5奇偶校验与所有关联的数据的XOR,以重新生成不可纠正的本地数据。重新生成的数据被返回给CPU206。如果第一永久主存储器210可用,则将重新生成的数据保存到第一永久主存储器210。如果第一永久主存储器210不可用,则可将重新生成的数据保存到替代永久主存储器。于是,重新生成的数据可由任意的计算节点202从替代永久主存储器访问。
计算系统200可适于采用其它标准RAID级别,即RAID级别2、3、4或6。根据所采用的RAID级别,可使用或不使用远程存储器212。
应理解,图2的框示意图不意图指示在任何示例中计算系统200都要包括图2中示出的所有的部件。另外,根据特定实施方式的细节,在计算系统200中可包括任意数目的附加部件。
图3是将数据写入具有容错的存储器的方法300的过程流示意图。在框302处,在存储控制器中接收要将数据写入非易失性永久主存储器的请求。存储器地址空间为计算系统的诸如永久主存储器108或210之类的非易失性永久主存储器的地址空间。在示例中,存储控制器位于诸如计算节点102或202之类的计算节点中。请求源自诸如CPU106或206之类的处理器。
在框304处,数据被写入永久主存储器。在示例中,永久主存储器位于计算节点中。在另一示例中,永久主存储器远离计算节点并形成永久主存储器池,并且数据写入分配给计算节点的非易失性永久主存储器池的区域。
在框306处,冗余数据被写入远程存储器。在示例中,冗余数据为数据的镜像拷贝。在另一示例中,用计算新写的数据、旧数据和旧RAID奇偶校验的XOR的结果写入冗余数据。在另一示例中,框304和306同时发生。
应理解,图3的过程流示意图不意图指示方法300的步骤要以任何特定的顺序执行,或在每种情况下都要包括方法300的所有步骤。另外,依据具体实施方式的细节,可在方法300中包括图3中未示出的任何数目的附加步骤。
图4是访问具有容错的存储器的方法400的过程流程图。在框402处,在存储控制器中接收用以访问存储在非易失性永久主存储器中的数据的请求。在示例中,存储控制器位于诸如计算节点102或202之类的计算节点中。请求源自诸如CPU106或206之类的处理器。
在框404处,存储控制器尝试访问非易失性永久主存储器。具体而言,存储控制器发起对数据所位于的非易失性永久主存储器的地址空间的访问。在框406处,存储控制器通过或者接收所请求的数据或者接收错误消息或者具有访问时间超时,来确定其是否能够访问永久主存储器。如果在框408处,存储控制器接收所请求的数据,则在框410处,存储控制器将数据返回至CPU。
如果在框406处,存储控制器不能够访问永久主存储器,则在框414处,接收到访问永久主存储器失败的通知。在示例中,失败归因于故障的非易失性永久主存储器。非易失性永久主存储器故障可归因于损坏的存储器设备、故障永久主存储器模块、遭破坏的数据或任何其它故障。在框416处,访问冗余数据。冗余数据可存储在远程存储器上、其它永久主存储器上、附加计算节点上,或者远程存储器、永久主存储器和附加计算节点的组合上。在示例中,冗余数据是当系统处于镜像模式时产生的数据的镜像拷贝。在另一示例中,冗余数据是当系统处于RAID模式时产生的奇偶校验数据和与奇偶校验数据关联的其它数据的组合。在框418处,从冗余数据重构数据。在RAID模式下,可使用数据恢复引擎重构数据。
在框420处,存储控制器确定非易失性永久主存储器是否故障。如果存储控制器确定非易失性永久主存储器没有故障,则在框422处,可将重构的数据保存至永久主存储器。在框410处,可将数据返回至CPU。如果存储控制器确定非易失性永久主存储器已故障,则方法400可前进到框424。在框424处,存储控制器确定是否存在替代永久主存储器。如果不存在替代永久主存储器,则在框410处将数据返回至CPU。如果存在替代永久主存储器,则在框426处,可将重构的数据保存到替代永久主存储器。在示例中,替代永久主存储器可以是远程存储器。在另一示例中,替代永久主存储器可以是另一计算节点的永久主存储器。在框410处,数据可返回至CPU。
应理解,图4的过程流程图不意图指示方法400的步骤要以任何特定的顺序执行,或在每种情况中都包括方法400的所有步骤。另外,依据特定实施方式的细节,可在方法400中包括图4中未示出的任何数目的附加步骤。
示例1
本文描述一种计算系统。计算系统包括处理器和包括容错能力的永久主存储器。计算系统还包括存储控制器。存储控制器用于将数据存储在永久主存储器中,创建冗余数据,以及关于永久主存储器远程存储冗余数据。存储控制器还用于关于永久主存储器远程存储冗余数据。存储控制器进一步用于在永久主存储器故障期间访问冗余数据。
容错能力可包括将数据存储在永久主存储器中,并将数据镜像到远程永久主存储器。容错能力可还包括将数据存储在永久主存储器并基于旧数据和新数据之间的差别更新至少一个奇偶校验远程存储器。计算系统可还包括多个计算节点和多个永久主存储器,每个计算节点包括处理器和响应于处理器的请求与永久主存储器通信的存储控制器,其中永久主存储器远离计算节点放置,永久主存储器包括共享永久主存储器池,共享永久主存储器池的区域被分配给每个计算节点。
示例2
本文描述包括容错的计算系统。计算系统包括用于存储数据的永久主存储器和用于存储冗余数据的远程永久主存储器。计算系统还包括存储控制器。当不能访问永久主存储器中的数据时,存储控制器访问冗余数据。
冗余数据可包括数据的镜像拷贝。计算系统可包括多个节点,每个节点包括用于存储数据的永久主存储器和用于存储冗余数据的远程永久存储器,远程永久存储器充当奇偶校验节点,包括计算系统的节点的永久主存储器中的数据的奇偶校验位的校验和,其中当数据写入节点的永久主存储器时,更新校验和,并且其中在读取数据失败时,读取并组合校验和和对校验和作出贡献的所有其它数据值以重构丢失的数据。计算系统可包括多个计算节点和多个永久主存储器,每个计算节点包括处理器和存储控制器,存储控制器用于响应于处理器的请求与永久主存储器通信。多个永久主存储器可包括由地址选择的用于存储数据的第一永久主存储器、由地址选择的用于存储数据的镜像拷贝的第二永久主存储器,其中写入第一永久主存储器的数据也写入第二永久主存储器,并且其中当读取数据失败时,读取数据的镜像拷贝。计算系统可包括多个计算节点和多个永久主存储器,每个计算节点包括处理器和存储控制器,存储控制器用于响应于处理器的请求与永久主存储器通信。多个永久主存储器包括由地址选择的用于存储数据的第一永久主存储器和由地址选择的用于存储与数据关联的校验和的第二永久主存储器,其中第二永久主存储器中的校验和基于第一永久主存储器中存储的旧数据和新数据之间的差别更新,并且其中读取数据失败时,读取并组合校验和和对校验和作出贡献的所有其它数据值,以重构丢失的数据。永久主存储器可包括共享永久主存储器池,共享永久主存储器池的区域分配给每个计算节点。如果共享永久主存储器池的区域所分配给的原始计算节点故障,则起作用的计算节点访问共享永久主存储器池的区域,以便共享永久的池的区域中的数据始终可用。
示例3
本文描述一种方法。该方法包括在存储控制器中接收将数据写入计算系统的永久主存储器的请求。该方法还包括将数据写入永久主存储器。该方法还包括将冗余数据写入远离永久主存储器的永久存储器。
该方法可还包括同步地将数据写入永久主存储器和将冗余数据写入到远离永久主存储器的永久存储器。写入冗余数据可包括更新计算系统中的数据的奇偶校验位的校验和,其中计算系统中的数据存储在至少两个节点的永久主存储器上。该方法可进一步包括:在存储控制器中接收访问永久主存储器中的数据的请求;尝试访问永久主存储器;接收永久主存储器故障的通知;根据冗余数据重构数据;保存数据;以及返回数据以完成所述请求。
当前示例可易于进行各种修改和替代形式,并且已仅以例示目的示出。例如,当前技术支持对数据结构缓存的读和写操作。另外,要理解,本技术不意图限于本文公开的特定示例。确切地说,所附权利要求的范围视作包括对所公开的主题所属的领域内的技术人员来说显而易见的所有替代、修改和等同。

Claims (15)

1.一种计算系统,包括:
处理器;
包括容错能力的永久主存储器;以及
存储控制器,用于:
将数据存储在所述永久主存储器中;
创建冗余数据;
相对于所述永久主存储器远程地存储所述冗余数据;以及
在所述永久主存储器的故障期间访问所述冗余数据。
2.如权利要求1所述的计算系统,其中所述容错能力包括将数据存储到所述永久主存储器并将所述数据镜像到远程永久存储器。
3.如权利要求1所述的计算系统,其中所述容错能力包括将数据存储到所述永久主存储器,并基于旧数据与新数据之间的差别更新至少一个奇偶校验远程存储器。
4.如权利要求1所述的计算系统,其中所述计算系统包括多个计算节点和多个永久主存储器,每个计算节点包括:
处理器;和
存储控制器,用于响应于所述处理器的请求与所述永久主存储器通信,
其中所述永久主存储器远离所述计算节点放置,所述永久主存储器包括共享永久主存储器池,该共享永久主存储器池的区域被分配给每个计算节点。
5.一种包括容错的计算系统,所述计算系统包括:
用于存储数据的永久主存储器;
用于存储冗余数据的远程永久主存储器;以及
存储控制器,
其中所述存储控制器在所述永久主存储器中的数据不能访问时,访问所述冗余数据。
6.如权利要求5所述的系统,其中所述冗余数据包括所述数据的镜像拷贝。
7.如权利要求5所述的系统,其中所述计算系统包括:
多个节点,每个节点包括用于存储数据的永久主存储器;以及
用于存储冗余数据的远程永久存储器,所述远程永久存储器充当奇偶校验节点,并包括所述计算系统的节点的永久主存储器中的数据的奇偶校验位的校验和,
其中所述校验和在数据被写入一节点的永久主存储器时被更新;并且
其中当读取所述数据失败时,所述校验和以及对所述校验和作出贡献的所有其它数据值被读取并组合,以重构丢失的数据。
8.如权利要求5所述的系统,其中所述计算系统包括多个计算节点和多个永久主存储器,每个计算节点包括:
处理器;和
存储控制器,用于响应于所述处理器的请求与所述永久主存储器通信;
所述多个永久主存储器包括由地址选择的用于存储数据的第一永久主存储器,由地址选择的用于存储所述数据的镜像拷贝的第二永久主存储器,
其中写入到所述第一永久主存储器的数据也写入到所述第二永久主存储器;并且
其中在读取所述数据失败时,读取所述数据的所述镜像拷贝。
9.如权利要求5所述的系统,其中所述计算系统包括多个计算节点和多个永久主存储器,每个计算节点包括:
处理器;和
存储控制器,用于响应于所述处理器的请求与所述永久主存储器通信;
所述多个永久主存储器包括由地址选择的用于存储数据的第一永久主存储器,由地址选择的用于存储与所述数据关联的校验和的第二永久主存储器,
其中基于所述第一永久主存储器中存储的旧数据与新数据之间的差别,更新所述第二永久主存储器中的所述校验和;并且
其中在读取所述数据失败时,读取并组合所述校验和以及对所述校验和作出贡献的所有其它数据值,以重构丢失的数据。
10.如权利要求9所述的系统,其中所述永久主存储器包括共享永久主存储器池,所述共享永久主存储器池的区域被分配给每个计算节点。
11.如权利要求10所述的系统,其中如果所述共享永久主存储器池的一区域所分配给的原始计算节点故障,则起作用的计算节点访问所述共享永久主存储器池的该区域,使得所述共享永久存储器池的该区域中的数据始终可用。
12.一种方法,包括:
在存储控制器中接收将数据写入计算系统的永久主存储器的请求;
将所述数据写入所述永久主存储器;以及
将冗余数据写入远离所述永久主存储器的永久存储器。
13.如权利要求12所述的方法,进一步包括同步地将所述数据写入所述永久主存储器和将所述冗余数据写入到远离所述永久主存储器的所述永久存储器。
14.如权利要求12所述的方法,写入冗余数据包括更新所述计算系统中的数据的奇偶校验位的校验和,其中所述计算系统中的所述数据被存储在至少两个节点的永久主存储器上。
15.如权利要求12所述的方法,进一步包括:
在存储控制器中接收访问所述永久主存储器中的数据的请求;
尝试访问所述永久主存储器;
接收所述永久主存储器的故障的通知;
从所述冗余数据重构所述数据;
保存所述数据;以及
返回所述数据以完成所述请求。
CN201380077638.9A 2013-06-28 2013-06-28 永久主存储器的容错 Pending CN105308574A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/048759 WO2014209394A1 (en) 2013-06-28 2013-06-28 Fault tolerance for persistent main memory

Publications (1)

Publication Number Publication Date
CN105308574A true CN105308574A (zh) 2016-02-03

Family

ID=52142515

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380077638.9A Pending CN105308574A (zh) 2013-06-28 2013-06-28 永久主存储器的容错

Country Status (4)

Country Link
US (1) US10452498B2 (zh)
EP (1) EP3014448A4 (zh)
CN (1) CN105308574A (zh)
WO (1) WO2014209394A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106020975A (zh) * 2016-05-13 2016-10-12 华为技术有限公司 数据操作方法、装置和系统
CN107886692A (zh) * 2017-10-30 2018-04-06 皖西学院 一种生物工程用传感器LoRa无线网络通讯系统
CN112306763A (zh) * 2020-11-03 2021-02-02 中国航空工业集团公司西安航空计算技术研究所 一种对冗余数据源的选择方法及装置

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014092698A1 (en) 2012-12-11 2014-06-19 Hewlett-Packard Development Company Application server to nvram path
JP6489827B2 (ja) * 2014-12-26 2019-03-27 キヤノン株式会社 画像処理装置、画像処理装置の制御方法及びプログラム
US10013171B2 (en) * 2015-06-29 2018-07-03 International Business Machines Corporation Reducing stress on RAIDS under rebuild
WO2017023244A1 (en) * 2015-07-31 2017-02-09 Hewlett Packard Enterprise Development Lp Fault tolerant computing
US10241683B2 (en) * 2015-10-26 2019-03-26 Nxp Usa, Inc. Non-volatile RAM system
KR20180083619A (ko) * 2017-01-13 2018-07-23 삼성전자주식회사 저항 변화 물질을 포함하는 메모리 장치 및 그 구동 방법
US10489304B2 (en) 2017-07-14 2019-11-26 Arm Limited Memory address translation
US10592424B2 (en) 2017-07-14 2020-03-17 Arm Limited Range-based memory system
US10565126B2 (en) 2017-07-14 2020-02-18 Arm Limited Method and apparatus for two-layer copy-on-write
US10534719B2 (en) 2017-07-14 2020-01-14 Arm Limited Memory system for a data processing network
US10467159B2 (en) 2017-07-14 2019-11-05 Arm Limited Memory node controller
US10613989B2 (en) 2017-07-14 2020-04-07 Arm Limited Fast address translation for virtual machines
CN111917656B (zh) * 2017-07-27 2023-11-07 超聚变数字技术有限公司 传输数据的方法和设备
US10884850B2 (en) * 2018-07-24 2021-01-05 Arm Limited Fault tolerant memory system
WO2021010941A1 (en) * 2019-07-12 2021-01-21 Hewlett-Packard Development Company, L.P. Data updates for controllers
US11928497B2 (en) * 2020-01-27 2024-03-12 International Business Machines Corporation Implementing erasure coding with persistent memory
US11544153B2 (en) * 2020-03-12 2023-01-03 International Business Machines Corporation Memory error handling during and/or immediately after a virtual machine migration
RU2766271C1 (ru) * 2021-03-17 2022-02-10 Акционерное общество «Информационные спутниковые системы» имени академика М.Ф.Решетнёва» Способ обеспечения отказоустойчивости элементов памяти
CN114697372B (zh) * 2022-05-31 2022-09-06 深圳市泛联信息科技有限公司 一种分布式系统中数据传输处理与存储方法、系统及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020194530A1 (en) * 1997-09-30 2002-12-19 Santeler Paul A. Fault tolerant memory
US20040268177A1 (en) * 2003-06-06 2004-12-30 Minwen Ji Distributed data redundancy operations
CN1728099A (zh) * 2004-06-18 2006-02-01 微软公司 分布式容错计算系统中复制装置的有效改变
CN101663646A (zh) * 2006-12-22 2010-03-03 惠普发展公司,有限责任合伙企业 计算机系统及其控制方法
CN102483710A (zh) * 2009-08-25 2012-05-30 惠普发展公司,有限责任合伙企业 纠错

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5546558A (en) 1994-06-07 1996-08-13 Hewlett-Packard Company Memory system with hierarchic disk array and memory map store for persistent storage of virtual mapping information
US6785783B2 (en) * 2000-11-30 2004-08-31 International Business Machines Corporation NUMA system with redundant main memory architecture
US6795895B2 (en) * 2001-03-07 2004-09-21 Canopy Group Dual axis RAID systems for enhanced bandwidth and reliability
US7269608B2 (en) * 2001-05-30 2007-09-11 Sun Microsystems, Inc. Apparatus and methods for caching objects using main memory and persistent memory
US7152182B2 (en) * 2003-06-06 2006-12-19 Hewlett-Packard Development Company, L.P. Data redundancy system and method
US7299385B2 (en) * 2004-07-28 2007-11-20 Hewlett-Packard Development Company, L.P. Managing a fault tolerant system
TWI476610B (zh) 2008-04-29 2015-03-11 Maxiscale Inc 同級間冗餘檔案伺服器系統及方法
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
US8694737B2 (en) * 2010-06-09 2014-04-08 Micron Technology, Inc. Persistent memory for processor main memory
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US9037788B2 (en) * 2010-09-30 2015-05-19 Micron Technology, Inc. Validating persistent memory content for processor main memory
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8639968B2 (en) * 2011-01-17 2014-01-28 Hewlett-Packard Development Company, L. P. Computing system reliability
WO2013057764A1 (en) 2011-10-19 2013-04-25 Hitachi, Ltd. Storage system
WO2014092698A1 (en) 2012-12-11 2014-06-19 Hewlett-Packard Development Company Application server to nvram path
US20140195634A1 (en) * 2013-01-10 2014-07-10 Broadcom Corporation System and Method for Multiservice Input/Output

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020194530A1 (en) * 1997-09-30 2002-12-19 Santeler Paul A. Fault tolerant memory
US20040268177A1 (en) * 2003-06-06 2004-12-30 Minwen Ji Distributed data redundancy operations
CN1728099A (zh) * 2004-06-18 2006-02-01 微软公司 分布式容错计算系统中复制装置的有效改变
CN101663646A (zh) * 2006-12-22 2010-03-03 惠普发展公司,有限责任合伙企业 计算机系统及其控制方法
CN102483710A (zh) * 2009-08-25 2012-05-30 惠普发展公司,有限责任合伙企业 纠错

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106020975A (zh) * 2016-05-13 2016-10-12 华为技术有限公司 数据操作方法、装置和系统
CN106020975B (zh) * 2016-05-13 2020-01-21 华为技术有限公司 数据操作方法、装置和系统
CN107886692A (zh) * 2017-10-30 2018-04-06 皖西学院 一种生物工程用传感器LoRa无线网络通讯系统
CN112306763A (zh) * 2020-11-03 2021-02-02 中国航空工业集团公司西安航空计算技术研究所 一种对冗余数据源的选择方法及装置
CN112306763B (zh) * 2020-11-03 2024-04-09 中国航空工业集团公司西安航空计算技术研究所 一种对冗余数据源的选择方法及装置

Also Published As

Publication number Publication date
US20160147620A1 (en) 2016-05-26
WO2014209394A1 (en) 2014-12-31
US10452498B2 (en) 2019-10-22
EP3014448A4 (en) 2017-03-08
EP3014448A1 (en) 2016-05-04

Similar Documents

Publication Publication Date Title
CN105308574A (zh) 永久主存储器的容错
CN111480148B (zh) 具有对等数据恢复的存储系统
CN111133420B (zh) 来自外部阵列副本的raid阵列重建辅助
US8719520B1 (en) System and method for data migration between high-performance computing architectures and data storage devices with increased data reliability and integrity
US8560772B1 (en) System and method for data migration between high-performance computing architectures and data storage devices
US9823876B2 (en) Nondisruptive device replacement using progressive background copyback operation
US7093158B2 (en) Data redundancy in a hot pluggable, large symmetric multi-processor system
CN101288052B (zh) 存储数据的方法和系统
US10140136B2 (en) Distributed virtual array data storage system and method
US7681105B1 (en) Method for lock-free clustered erasure coding and recovery of data across a plurality of data stores in a network
US6154853A (en) Method and apparatus for dynamic sparing in a RAID storage system
US20030084397A1 (en) Apparatus and method for a distributed raid
US7228381B2 (en) Storage system using fast storage device for storing redundant data
CN111465922B (zh) 具有对等数据清理的存储系统
US10353787B2 (en) Data stripping, allocation and reconstruction
US8341342B1 (en) Storage system with incremental multi-dimensional RAID
CN103793182A (zh) 可扩展存储保护
CN106557143B (zh) 用于数据存储设备的装置和方法
CN116134424A (zh) 通过在存储系统中选择性使用降级写入和备用容量来平衡弹性和性能
CN104508644A (zh) 智能存储器缓冲器
US20050193273A1 (en) Method, apparatus and program storage device that provide virtual space to handle storage device failures in a storage system
CN104937576B (zh) 协调存储在基于非易失性存储器的系统中的数据的复制
US7412577B2 (en) Shared data mirroring apparatus, method, and system
CN106919339B (zh) 一种硬盘阵列及硬盘阵列处理操作请求的方法
CN113342258B (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
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20161021

Address after: American Texas

Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP

Address before: American Texas

Applicant before: Hewlett-Packard Development Company, Limited Liability Partnership

WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20160203