CN107430494A - 远程直接存储器访问 - Google Patents
远程直接存储器访问 Download PDFInfo
- Publication number
- CN107430494A CN107430494A CN201680022775.6A CN201680022775A CN107430494A CN 107430494 A CN107430494 A CN 107430494A CN 201680022775 A CN201680022775 A CN 201680022775A CN 107430494 A CN107430494 A CN 107430494A
- Authority
- CN
- China
- Prior art keywords
- data
- ssd
- affairs
- record
- layout
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- 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/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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/0688—Non-volatile semiconductor memory arrays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
这里公开的示例涉及一种使用存储空间的乐观分配的存储器具。在示例性系统中,多个存储驱动器通过存储网络耦合到存储控制器和RNIC (远程直接存储器访问(RDMA)网络接口卡(NIC))。RNIC包括布局模板选择器和多个模板,其中布局模板选择器至少部分地基于从主机接收的逻辑块地址(LBA)选择模板。模板识别与由LBA表示的数据的各部分关联的所述多个存储驱动器中的每个存储驱动器。
Description
背景技术
数据存储要求和速度要求都在增加。因此,可增加数据访问的速度的新的存储技术已被投入使用。这些存储技术经常基于采用固态驱动器(SSD)的形式的非易失性存储器(NVM)。SSD可通过称为矩阵(fabric)的连接技术彼此互连以及与主机(例如,服务器系统)互连。
附图说明
在下面的详细描述中并且参照附图描述某些示例性实施例,其中:
图1是使用固态驱动器的示例性计算系统的方框图;
图2是直接从服务器向固态驱动器的阵列存储数据的能够实现远程直接存储器访问的网络接口卡(RNIC)的示意性示例;
图3是使用乐观存储分配的从服务器向固态驱动器的阵列直接存储数据的RNIC的示意性示例;
图4A是使用SSD的示例性乐观存储器具的方框图;
图4B是使用SSD的示例性乐观存储器具的方框图;
图5A和5B是用于数据的乐观存储的示例性方法的过程流程图;
图5C是用于数据的乐观存储的示例性方法的过程流程图;
图6是用于从乐观SSD存储器具进行读取的示例性方法600的过程流程图;
图7A是具有强健冗余的示例性乐观存储器具的方框图;
图7B是具有强健冗余的示例性乐观存储器具的方框图;
图8A和8B是在强健冗余情况下用于数据的乐观存储的示例性方法的过程流程图;
图8C是在强健冗余情况下用于数据的乐观存储的示例性方法的过程流程图;
图9是用于从多状态SSD恢复数据的示例性方法900的过程流程图;
图10A是具有动态布局的示例性乐观存储器具的方框图;
图10B是具有动态布局的示例性乐观存储器具的方框图;
图11A和11B是在动态布局的情况下用于数据的乐观存储的示例性方法的过程流程图;
图11C是在动态布局的情况下用于数据的乐观存储的示例性方法的过程流程图;
图12是包括可由处理器经总线访问的代码的示例性非易失性计算机可读介质的方框图;
图13是包括可由处理器经总线访问的代码的示例性非易失性计算机可读介质的方框图;和
图14是包括可由处理器经总线访问的代码的示例性非易失性计算机可读介质的方框图。
具体实施方式
图1是使用固态驱动器102的示例性计算系统100的方框图。对于高性能计算应用,固态驱动器(SSD) 102已变得更加常见。SSD使用非易失性存储器(NVM)作为存储装置104(诸如,闪存、非易失性RAM (NVRAM)、电池支持动态RAM等)以存储数据并且在没有电力的情况下保留数据。存储装置104被用于数据缓冲器、日志文件、高速缓存和这里描述的其它存储库。因此,可保护这些存储库中的数据免受电力故障和可导致数据丢失的其它故障的影响。
因为SSD技术已发展,所以用于硬盘驱动器的接口技术(诸如,串行AT附件(SATA)、串行附接SCSI (SAS)和光纤信道)已变为对SSD性能(诸如,数据传送速率、延时和软件开销)的限制因素。因此,已使用其它接口技术(诸如PCIe和以太网)开发新的接口协议。例如,已发布用于经快速外围部件互连(PCIe)总线或网络106访问SSD 102的快速NVM (NVMe)协议。另外,已发布用于使用远程直接存储器访问(RDMA)经以太网108传播NVMe协议的经矩阵的NVM(NVMf)协议。
在用于访问连接到PCIe总线106或以太网108的SSD 102的高速协议可用的情况下,使用能够实现远程直接存储器访问的网络接口卡(RNIC) 112和经PCIe总线106互连的多个SSD 102构造简单的全闪存存储器具110变得可行。迄今为止,这种子系统已严重依赖于用于命令处理的例如存储控制器116或维护单元中的CPU 114。
存储控制器116可例如是网络环境中的刀片服务器、个人计算机、工作站等。CPU114可包括任何处理资源,诸如单核处理器、双核处理器、多核处理器、多个处理器、计算群集、云服务器等。CPU 114可通过总线被耦合到存储装置118,其中所述总线可以是在存储控制器116的各种部件之间传送数据的通信系统。在示例中,所述总线可包括外围部件互连(PCI)总线、工业标准架构(ISA)总线、快速PCI(PCIe)总线、高性能链路(诸如,Intel®直接媒体接口(DMI)系统)等。
存储装置118可包括:随机存取存储器(RAM),例如静态RAM(SRAM)、动态RAM(DRAM)、零电容器RAM、嵌入式DRAM (eDRAM)、扩展数据输出RAM (EDO RAM)、双倍数据速率RAM (DDR RAM)、电阻性RAM (RRAM)和参数RAM (PRAM);只读存储器(ROM),例如掩模ROM、可编程ROM (PROM)、可擦除可编程ROM (EPROM)和电可擦除可编程ROM(EEPROM);闪存;或任何其它合适的存储器系统。另外,存储装置118可包括较长期存储装置,例如非易失性存储装置,诸如固态驱动器、硬盘驱动器、磁带驱动器、光盘驱动器、闪存驱动器、驱动器阵列或其任何组合。在一些示例中,存储装置118可包括非易失性存储器装置,诸如非易失性RAM(NVRAM)、电池支持DRAM等。
在示例中,SSD 102可与存储控制器116一起位于插入到机架中的刀片上以形成存储器具110。在另一示例中,存储器具110可包括安装在PCIe卡上的SSD模块,PCIe卡被插入到存储控制器116的母板上的槽中。
已提出改进或优化以允许数据从RNIC 112直接流动至PCIe连接的SSD 102,而不访问由CPU 114控制的存储器(存储装置)118。然而,对于除最简单的存储器具110之外的所有器具,这种技术可能产生虚拟化功能的问题,所述虚拟化功能需要在CPU 114上运行的软件处理命令。
虽然这里描述的示例涉及固态驱动器,但可以理解,可使用其它结构。例如,替代于SSD,经PCIe总线106通信的一组硬盘驱动器或阵列可被用于形成存储器具。
概述
如这里描述的示例中详细讨论的,RNIC 112和SSD 102具有增加的功能:使数据、命令和响应能够在RNIC 112和SSD 102之间直接流动,同时软件密集虚拟化功能归于例如存储控制器116中的CPU 114。CPU 114保持控制数据布局、地址转换、奇偶性(parity)一致性和故障恢复。这帮助实现加速的正常处理与不能由CPU 120(诸如,驻留于RNIC 112上的专用集成电路(ASIC))容纳的复杂虚拟化的组合。
另外,通过避免针对直接在主机122中的RNIC 124和例如仅盘簇(JBOD)的阵列126之间流动的数据的存储器跳跃,SSD 102和RNIC 112之间的直接数据传送可提高性能。即使大多数正常操作在涉及虚拟化功能之前完成,CPU 114也可保持负责所有虚拟化功能。
在示例中,为了促进直接通信,RNIC 112在存储装置128中包括一组布局模板和布局选择器,如参照图4进一步讨论的。布局选择器从在来自主机122的事务中提供的逻辑块地址(LBA)选择布局模板。例如,选择器可计算主机LBA的字段相关散列值以获得与布局模板对应的编号。
当选择了所述布局时,每个布局模板列出一组SSD 102,并且指示LBA的每个部分的数据的哪个部分去往每个SSD 102。每个SSD也可具有一作用,诸如奇偶性与数据(如这里所使用的“主”与“从”)。这可根据布局模板而不同,一些SSD针对一些LBA用作奇偶性盘或主盘,而针对其它LBA用作数据盘或从盘。
当事务(IO)(例如,写入事务)到达时,它们根据选择的布局模板而被划分或分解,并且各部分被直接发送给SSD。每个数据部分伴随有具有唯一标识符的意图记录,使得关联的部分能够由中央控制器处理器跟踪。意图记录包括原始主机LBA的属于正被写入到所述SSD 102或从所述SSD 102读取的数据的部分,但不包括SSD 102上的物理地址。每个SSD102将它接收的事务的部分以及意图记录放置在SSD 102内的存储装置104中。SSD 102还对LBA部分进行高速缓存,从而读取命中能够由SSD 102处理,并且冲突能够被标记以便由CPU114解决。
当事务的所有部分成功完成时,RNIC 112对主机122做出响应以指示成功。此时,不管发送给个体SSD 102的事务的各部分是成功还是失败,意图记录被传递给例如存储控制器116中的CPU 114,其中虚拟化引擎确定数据应该驻留于的每个SSD 102上的物理地址。
为了管理布局模板选择器已知的布局模板的数量,虚拟化计算受到限制,以使得当LBA驱动的计算产生给定数字结果时,总是选择同一组的SSD 102。换句话说,这意味着通过LBA计算的参数来预设子存储区。当系统100增长时,这些参数可能变化,然而这意味着布局变化和数据重新组织。在没有这些限制的情况下,布局模板选择将会需要与由存储控制器116中的CPU 114管理的元数据相等的大量元数据。
存储控制器116随后联系每个SSD 102以将物理地址分派给SSD 102已在最近接收的数据,并且处理错误或解决由SSD 102标记的写入冲突。可在控制器处理器或SSD 102内(例如,在存储奇偶性带的主SSD 102中)计算冗余(例如,奇偶性)。SSD 102一被存储控制器116告知正确的物理地址,SSD 102就被允许冲刷数据并且停止跟踪新的数据。
在一些示例中,如参照图5进一步所讨论的,通过将另外的状态添加到由每个布局模板指定的主SSD 102和从SSD 102中的意图记录,具有奇偶性一致性的形式的另外的冗余考虑因素可被添加到上述示例。利用所述另外的冗余,来自分派物理地址的CPU 114的通信将从SSD 102放置在多版本状态中,所述多版本状态指示将保持最近写入的数据的旧版本和新版本直至能够提交一致的奇偶性。因此,如果电力在所述过程期间发生故障,则可计算奇偶性。
由布局模板仲裁的主SSD 102还可具有另外的状态,以使得主SSD 102上的单个状态转变表示新的奇偶性的提交点。从CPU 114到主SSD 102和从SSD 102的消息以这种方式对它们的状态进行排序:数据的旧版本不被破坏,直至提交一致的奇偶性。在冗余盘组前面,在冗余高速缓存之后,可建模从故障的恢复。高速缓存类似于跨SSD 102的数据的初始镜像拷贝,而盘组类似于跨相同SSD 102的RAID数据。
在一些示例中,通过将实时修改布局的能力添加到上述示例,可缓解管理布局模板的复杂性。可在每个事务完成之前在没有强加过多CPU 114干预的情况下执行这一点。例如,事务由RNIC 112分派布局,但当CPU 114对事务进行后处理时,它可以发现针对所述LBA存在新的或优选的布局,所述新的或优选的布局不是由RNIC 112选择的布局。在这种情况下,CPU 114将由RNIC 112提供的布局中的SSD 102视为高速缓存,并且在奇偶性的计算之前或在奇偶性的计算期间将数据复制到所述新的布局。
给定用于管理新的布局的这个方案,布局模板选择器能够在任何点被以原子级更新,只要给定事务仅服从一个选择器或例如由接收到事务的时间所确定的另一个选择器。RNIC 102中的模板变化不需要等待运行中的事务结束,因为它们将会被CPU 114校正。这可提高数据流的性能,因为数据不需要在完成之前被保留在存储控制器116的存储装置118中或涉及CPU 114。
图2是从主机122向固态驱动器102的阵列126直接存储数据的RNIC 112的示意性示例200。相同编号的项如参照图1所描述。主机(启动器) 122使用RNIC 124连接到以太网网络108。同样地,固态盘(SSD)器具110(目标)包含RNIC 112,RNIC 112可具有直接访问能力以便例如经PCIe总线106到达SSD 102。在SSD器具110内,RNIC 112、SSD 102和例如存储控制器或本地维护系统中的CPU 114全都连接到PCIe总线106(示出为云以简化附图)。所述另外的能力可允许RNIC 112通过分析来自主机122的读取或写入命令来确定哪些SSD 102保存正在由所述命令操纵的数据。RNIC 112能够随后使用PCIe总线106将关联的数据发送给SSD 102或从SSD 102接收关联的数据,直接使用PCIe总线106而不中断CPU 114。可通过使用卷路由器来执行这一点,所述卷路由器将数据的特定卷与特定SSD 102关联。通常,来自主机122的命令包括可被定位和解释的卷号。当快速NVM (NVMe)协议被用在RNIC 112和PCIe总线106上时,它尤其方便,因为需要即使有也很少的转换。
参照附图中编号的线,RNIC 112可如下那样执行直接访问。如线202所指示的,位于SSD器具110本地的CPU 114对卷路由器204进行初始化以表示卷到SSD 102的映射。使用诸如连结或条带化的技术,给定卷可跨越多个SSD 102。如线206所指示的,来自主机122的命令由RNIC 112检查以对通过卷路由器索引的卷进行定位从而找到SSD 102并且计算物理SSD地址。
如线208所指示的,基于卷路由器中的信息与特定SSD 102交换数据。对于写入事务,根据需要跨SSD 102划分数据。对于读取事务,数据由RNIC 112合并以识别正确地到主机122的每个字节。数据210可随后被正常读取或写入。如线212所指示的,当所有SSD 102已完成它们的事务的各部分时,RNIC 112产生对主机122的响应,所述响应表示整个操作的成功或失败。
尽管这种类型的直接访问可以实现数据跨SSD 102的分布,但它不适应需要目标中的CPU 114进行干预的更复杂的虚拟化功能和服务。这种干预可被用于在线配置变化、多个RNIC 112的协调或计算密集数据管理自动化。另外,许多虚拟阵列提供数据的细粒度映射和移动。这需要可能未与RNIC 112的硬件资源(存储器或处理)调准的大量元数据。
乐观SSD存储器具
图3是使用乐观存储分配从主机122向固态驱动器102的阵列126直接存储数据的RNIC112的示意性示例。如这里所使用的,乐观分配指示:做出存储决定,并且在最后将数据提交给阵列126中的存储位置之前,向主机122确认所述事务完成。用于阵列126中的数据存储的物理地址由CPU 114确定。相同编号的项如参照图1描述。
图3示出与图2相同的总体硬件架构,具有用于提供直接通信的多项增强。卷路由器被更复杂的布局模板选择器302替换,布局模板选择器302能够与来自由CPU 114确定的虚拟化的物理布局策略调准。所选择的布局模板确定数据至正确SSD 102的路由,但它不确定任何SSD 102上数据放置的物理地址。作为CPU 114干预的结果,稍后确定物理地址。当逻辑块地址(LBA)出现在主机122的地址空间中时,SSD 102具有用于对逻辑块地址(LBA)进行高速缓存的增加功能。这是SSD 102中示出的LBA高速缓存304的目的之一。虽然CPU 114在这里被单独示出,但在一些示例中,CPU 114可被包括在RNIC 112中。在其它示例中,多个CPU 114可共享SSD器具110内的工作。
参照带有标记的线描述数据流。如线306所指示的,从主机122接收的读取或写入命令被路由至布局模板选择器302,并且被安排传送给CPU 114。布局模板选择器302对命令中的卷和LBA执行函数。所述函数可以是散列函数或掩蔽和移位函数以将卷和地址转换成布局编号。函数的结果提供布局编号,布局编号可被用于为命令中的数据308选择布局模板。与布局编号关联的布局模板指示在数据传送的每个部分中应该涉及哪些SSD 102。
对于数据传送的每个部分,创建描述该部分的具有唯一标识符的意图记录310。意图记录310包括原始主机地址、数据的该部分的长度和由布局指定的SSD 102在数据传送中起到的作用(例如,主或从)。意图记录310也被安排传送给CPU 114。
对于写入事务,意图记录310和数据308被合并312以形成数据流314。数据流314随后基于由布局模板选择器302提供的布局模板(如线318所指示的)被发送给相应的SSD 102(如线316所指示的)。因此,对于写入事务,针对每个SSD 102的数据传送的每个部分既包括数据308又包括意图记录310。对于读取事务,仅针对每个部分的意图记录310被发送给相应SSD 302。
SSD 102接收意图记录310,对于写入事务,还接收数据308。对于写入事务,SSD102将数据的主机地址添加到它的LBA高速缓存304,并且将数据存储在非易失性数据缓冲器320中。它随后将意图记录310放置在意图日志322中以指示哪个数据316正在执行,并且将意图记录310链接到数据316。如果在意图日志322中已经存在针对重叠主机地址的意图记录310,则新记录被链接到在先记录,并且写入事务被标记为未完成。
对于读取事务,每个SSD 102针对主机LBA的记录检查它的LBA高速缓存304。如果找到主机LBA的记录,则主机LBA的记录可能指代数据缓冲器320或闪存324的区域。如果找到所述地址,则响应于满足读取请求而返回所述数据,并且作为响应326的一部分,所述数据由RNIC 112传送给主机122。否则,在所述读取可以完成之前,SSD 102将会需要等待CPU114的干预。在所述后者情况下,或在未完成写入事务的情况下,SSD 102对RNIC 112做出响应,指示事务尚未能被完成。
所有SSD 102的响应326由RNIC 112收集。在此时,命令306、来自所有SSD 102的组合意图记录310和指示结果的状态信息被传送给CPU 114,如线328所指示的。另外,如果所有部分都成功,例如未发生错误或未完成的事务,则RNIC 112针对主机122产生肯定响应,指示事务的完成。在错误或未完成事务的情况下,在对主机122做出响应之前,RNIC 112等待CPU 114干预。
在功能方面由CPU 114执行的虚拟化计算模块330接收命令306、意图记录310和状态信息,并且在所有SSD 102上为数据的所有部分确定正确的物理地址。这可涉及将SSD102上的以前未分配的空间指定用于写入事务中的数据308。已分派物理地址的情况下,虚拟化计算模块330将控制传递给冗余引擎332。
通过将事务的每个部分的物理地址的指示传送给负责该部分的SSD 102,冗余引擎332向SSD 102确认事务,如线334所指示的。如果写入事务由于存储在用于SSD 102的意图日志322中的意图记录中的冲突而未被完成并且对应数据被递送给超过一个SSD 102,则冗余引擎332可在确认过程期间颠倒一些SSD 102中的意图日志322中的写入事务的次序,从而全部反映相同的最终结果。
如果奇偶性SSD 102中的RAID计算需要来自数据SSD 102的旧数据以便完成奇偶性计算,则在确认事务之前,冗余引擎332可使用专用通读命令将该数据从数据SSD 102复制到奇偶性SSD 102。通读命令忽略与还未被冗余引擎332确认的向SSD 102的写入事务关联的数据。冗余引擎332可在向SSD 102的单次通信中确认多个事务。
对于写入事务,所述确认允许SSD 102将例如最近仲裁的正确数据从它的数据缓冲器320传递到与闪存324中的物理地址对应的物理位置,如线333所指示的。SSD 102随后被允许从意图日志322去除意图记录。在读取时,物理地址允许不能完成所述读取的任何SSD 102对它们的数据进行定位。在此时,SSD 102可从LBA高速缓存304去除主机LBA。例如,只要存在存储空间,高速缓存的LBA就可被保留在LBA高速缓存304中,因为如果保留高速缓存的LBA,则随后的读取事务能够更快速地完成。对照意图日志322中的意图记录检查所有读取事务并且保存所有读取事务,直至相关写入事务在它们能够被完成之前被冗余引擎332确认。
一个SSD 102被示出为在数据路径中具有变换模块336,变换模块336将SSD 102识别为主或奇偶性SSD 338。变换模块336可被包括以执行另外的数据操纵,诸如RAID奇偶性计算。SSD存储器具110中的任何或所有SSD 102可包括变换模块336,因为不同SSD 102可在不同布局模板中用作数据或奇偶性存储库。除了其它SSD 102之外,数据传送的多个部分可被发送给奇偶性SSD 338以便实现完整的变换。冗余引擎332可通过将物理地址发送给各种SSD 102来选择确认事务的次序,以确保运行中的数据的正确跟踪。例如,冗余引擎332可选择在所有其它SSD 102已被允许把数据从数据缓冲器320冲刷到闪存324之后确认奇偶性SSD 338上的事务。这帮助确保:至少一个SSD 102将会具有运行中的数据的记录,直至奇偶性跨在事务中所涉及的所有SSD 102是一致的。
在一些示例中,一个或多个SSD 102可能由于故障而无法对请求做出响应。在这种情况下,冗余引擎332检查每个SSD 102的状态和它的意图日志322的内容。如果数据丢失,则可使用RAID技术恢复数据。如果故障是失去电力,则可能需要重新计算由所有SSD 102中的意图日志322所指示的运行中的数据的奇偶性。
在故障或配置变化的情况下,可由RNIC 112或主机122部分地或完全重试正在由RNIC 112跟踪的未完成的命令。冗余引擎332(经响应326)对SSD 102、RNIC 112和主机122中的恢复操作进行排序,以基于故障的性质实现尽可能完整的恢复。
强健冗余
这个部分描述这样的示例:当使用具有布局模板选择器112的RNIC 112和在SSD 102的数据缓冲器320中进行高速缓存的进行中的工作时实现企业级高可用性。这可提供容许硬件故障同时失去电力的能力。前一示例可能未执行这种操作,因为在失去电力期间进行中的工作可能导致奇偶性不一致,意味着所述系统处于将不会实现从另一故障完全恢复的状态。在前一示例中,所述状态可持续,直至从数据的内容恢复受到在失去电力期间进行中的写入事务影响的奇偶性。
通过在意图日志322中添加意图日志条目状态,可增强冗余。意图日志条目状态指示:保持数据的旧版本和新版本,直至从冗余引擎332接收到指示数据可被从数据缓冲器320冲刷到闪存324从而覆盖旧数据的信号。
根据SSD 102是主还是从(例如,存储奇偶性带的驱动器与存储数据带的驱动器),使用各种状态指示。对于用作从的驱动器,“运行中”状态指示处于正被写入的过程中但可能跨所有SSD 102不一致的数据。来自主机122的数据读取命令不返回处于运行中模式的数据。从驱动器的第二状态可被称为“多版本”,并且指示应该保留闪存324中的数据的旧版本和数据缓冲器320中的新版本。利用通读命令访问较旧版本,并且可利用正常读取命令访问新版本。将会从数据缓冲器320中的数据的新版本完成来自主机122的读取命令。
主SSD 102的新状态包括也用于从SSD 102的运行中状态。主SSD 102具有称为“镜像”的另外的状态。在镜像状态中,跨所有SSD 102的数据是一致的并且冗余的,但冗余(奇偶性)计算仍然在进行中。一旦冗余计算完成,主SSD 102 (例如,奇偶性SSD 338)的意图状态能够被改变为“提交”。提交状态表示冗余的提交形式,并且是所有其它SSD 102可被释放以将新数据从数据缓冲器320冲刷到闪存324从而替换闪存324中的旧数据(如线333所指示的)的点。所有状态可随后被改变为“未跟踪”,因为没有数据处于运行中,并且奇偶性计算完成。
在这个示例中,如针对前一示例所述的,由布局模板选择器302选择的布局模板可被用于为来自主机122的写入命令的每个部分创建具有唯一标识符的意图记录。意图记录包括哪些SSD 102是主SSD 102的指示。各数据部分和意图记录被传送给在布局模板中指示的SSD 102。所述数据由SSD 102存储在其数据缓冲器320中。另外,在这个示例中,主机LBA被高速缓存并且与放置在SSD 102的意图日志322中的意图记录以及在“运行中”状态中被记录的意图日志条目状态关联。意图日志322中的冲突引起对智能RNIC 112的响应,以指示未完成的请求。向“运行中”的转变发生在主SSD 102和从SSD 102二者上。
对于来自SSD 102的响应指示成功的事务的任何部分,RNIC 112向布局模板中所定义的所有主SSD 102通知所述部分成功。这可使主SSD 102中的意图记录状态转变为“镜像”,直到两个或更多个SSD 102上的相同部分成功。如果所有SSD 102上的事务的所有部分成功,则RNIC 112对主机122做出响应,指示事务的成功。不管是否成功,当所有SSD 102已作出响应时,RNIC 112将意图记录和SSD响应发送给虚拟化计算模块330。
如上所述,虚拟化计算模块330分派物理地址,然后将事务的控制转交给冗余引擎332。冗余引擎332解决写入次序冲突,然后将物理地址递送给所有SSD 102。同时,从SSD102的意图日志322中的意图日志转变为多版本状态,并且主SSD 102转变为镜像状态(如果未在以前转变的话)。因此,在多版本状态下与意图日志条目关联的数据将不会覆盖未跟踪的数据版本。
如果未检测到未解决的错误并且主机122未被通知事务的成功完成,则冗余引擎332此时经RNIC 112提供这种通知。如果错误仍然存在,则冗余引擎332中的故障恢复算法可使用用于RAID或由镜像回写高速缓存面对的擦除编码介质的技术重新产生丢失的数据。
冗余引擎332可使用保留在SSD 102中的数据的旧版本和新版本计算RAID或擦除代码奇偶性块。可使用用于获得旧数据的通读命令和用于获得新数据的读取命令来获得这些数据的旧版本和新版本。旧的奇偶性块此时不被覆盖。替代地,新的奇偶性块被保留在数据缓冲器308中,例如保留在主或奇偶性SSD 338中。一旦所有奇偶性修改被完成并且放置在数据缓冲器308中,冗余引擎332就把主SSD 102中的所有意图日志条目状态转变为事务的提交状态。在所有主SSD 102已转变之后,冗余引擎332把从SSD 102的所有意图日志条目状态中的状态转变为未跟踪状态。在从SSD记录未被跟踪之后,冗余引擎332也把主记录转变为未跟踪。由于事务中涉及的所有数据现在未被跟踪,所以数据缓冲器320中的对应数据现在替换SSD中的数据的旧版本并且能够被冲刷到闪存,如线333所指示的。
动态布局变化
在上述示例中,布局变化可在事务能够完成之前引起可能延长的CPU 114干预的时段。在这个示例中,使用在虚拟化计算模块330中用于在从主机122的角度事务已完成之后校正数据放置的方法,动态数据放置可被用于解决该问题。这允许乐观分配的事务完成正常进行,而不管任何布局变化,只要最初用于所述事务的布局模板没有遇到硬件错误即可。
当发生布局异常时,这可提供改进。布局异常可由硬件故障、数据局部性的优化、数据移动的最小化、有效增值服务(诸如,快照)中数据的暂时参与或数据的长期再定位等等引起。动态数据方式可针对相同数据使用多个布局,布局之一由RNIC 112实时地用于给定事务。初始布局可被暂时保持为正被移动到不同布局的数据的高速缓存。
根据这个示例,事务的初始发展使用由RNIC 112在事务到达时选择的模板正常地进行,如针对乐观SSD器具所述的。事务进行至虚拟化计算模块330被给予控制的点。在此时,CPU 114可继续分配数据,直至从主机122的视角事务完成的点。在此时,虚拟化计算模块330确定用于事务的布局模板是否与数据的期望布局匹配。如果它匹配,则工作流程以与在没有动态数据放置的情况下它本来的相同方式继续进行。
否则,对于写入事务,SSD 102中的事务数据被视为好像它被存储在非易失性镜像高速缓存中。对于写入事务,当虚拟化计算模块330已在RNIC 112中创建替代布局模板时,它继续将镜像数据复制到新布局中的镜像位置。随后它根据新布局完成原始分配。在某个时间段期间,数据可位于由两个布局模板指示的SSD 102中的数据缓冲器320中。
对于读取事务,CPU 114完全执行事务,就好像它已使用新布局模板发生,因为旧布局中的SSD 102被以这种方式管理,即它们不能解析已被重新定位到新布局的数据的物理地址。通过强行使针对该数据在新布局中未涉及的LBA高速缓存304中的LBA无效来管理在布局变化期间的读取事务。在每个重新引导的事务完成之后,但在它被复制到新布局中的SSD 102之前,发生无效。即使那些数据的LBA不在SSD 102的LBA高速缓存304中,数据也可保持在SSD 102的意图日志322和数据缓冲器320中,直至它们被成功地镜像到新布局中。读取和最近的写入之间的冲突可能需要在冲突的读取能够完成之前由CPU 114将使用旧布局的写入转变到新布局。
这允许布局信息在任何时间被添加到由RNIC 112的布局模板选择器302使用的布局模板或在由RNIC 112的布局模板选择器302使用的布局模板中被修改,只要任何事务从存储在选择器表中的一致版本的布局模板选择布局模板即可。这可通过例如使用摆动缓冲器(swing buffer)或类似物使布局模板的更新原子化来实现。
根据实现方式,可对这里讨论的所有示例实现各种变化。例如,如果多个RNIC 112全都将它们的通知发送给同一CPU 114或发送到在逻辑上作用像单个CPU一样的CPU群集中,则所述多个RNIC 112能够访问相同的SSD 102。在大系统中,可能希望在每个RNIC 112中具有多个布局模板选择器302,RNIC 112的通知能够由CPU 114独立地处理。在这种情况下,卷号可被用于选择布局模板选择器302和CPU 114。
如果多个RNIC 112能够访问相同的SSD 102,则需要在它们之间协调布局变化。这能够通过暂停新事务流动到所有RNIC 112中并且在全部暂停之后改变布局模板选择器302来实现。在一个示例中,RNIC 102可能不需要在经协调的布局变化期间等待进行中的事务完成。
图4A是使用SSD 102的示例性乐观存储器具400的方框图。相同编号的项如参照图1和3描述。在这个示例中,RNIC 112的CPU 120被示出为专用集成电路(ASIC)。在这个示例中,每个SSD 102可用作主或从,例如用作针对特定布局模板404的数据存储库或奇偶性存储库。因此,每个SSD 102包括变换模块336以执行针对存储的数据的奇偶性计算。
RNIC CPU (ASIC) 120操作布局模板选择器302,布局模板选择器302保持包括布局模板404的布局模板表402。可由布局模板选择器302使用的方案的一个示例包括选择器表,选择器表包括LBA Mask,LBA Mask是指示用于布局编号计算的LBA的子集的位掩模。这与LBA Shift一起计及布局的条带化或连结参数。所述表包括LBA Shift,LBA Shift是将掩蔽的LBA右移的位数。另外,选择器表包括掩蔽的LBA模数,所述掩蔽的LBA模数是应用于与卷号连结的掩蔽的移位的LBA以计及奇偶性旋转的模数。
来自事务的LBA被掩蔽,移位并且连结到卷号。所述模数被应用于结果以产生布局模板编号。虽然这个示例被简化,但可使用更复杂的计算,例如涉及多个掩模或更复杂的散列函数等。这些可被以这种方式组合:在与布局模板表402关联的逻辑中被编码。
布局编号被用于从布局模板表402选择布局模板404,例如T1-T4。布局模板表402包括多个参数,所述多个参数能够确定哪些SSD 102保存数据和奇偶性的各部分。在这个示例中,所述参数可包括PCIe总线106上的SSD 102的地址的列表。所述参数还可包括每个SSD102的作用,诸如,数据(从)或奇偶性(主)。
第二LBA掩模、移位和模数可被以类似于得出布局编号的方式被应用以基于布局的细节选择个体SSD 102。所述两个掩模、移位和模数集合可以是不同的。在选择的第二布局模板404中指示的SSD 102的作用可触发用于冗余目的的向另外的SSD的数据传送。
在一些示例中,布局编号可不指代任何SSD地址。这是如下指示:具有该编号的布局必须由CPU 114处置。使用传统方法(诸如通过可由PCIe总线106访问的存储器406缓冲数据)处理这种命令。
在又其它示例中,布局模板404中的SSD地址可具有专用值,所述专用值指代PCIe总线106可访问的存储器406。遇到这种地址的写入命令可在向CPU 114通知已接收到该命令之前将数据放置在从存储器406中的自由存储区域的存储区取出的缓冲器408中。在这种情况下,利用该命令将数据缓冲器408的地址递送给CPU 114。当存储区域在从主机的读取事务、向SSD 102的写入事务或消耗存储器的其它操作完成时变为自由时,自由存储区域的存储区可由CPU 114或RNIC 112恢复。在这个示例中,遇到指代存储器的SSD地址的事务可能并不完全由RNIC 112完成。
在其它示例中,可经另一网络(可能是事务到达的同一网络,例如以太网网络108)访问SSD 102。在这些情况下,CPU 114可管理附接到在物理上与第一控制器分开的另一控制器的SSD 102。这种配置可被用于增加故障耐受性。
图4B是使用SSD 102的示例性乐观存储器具400的方框图。相同编号的项如参照图1和3描述。所述系统不限于具有图4A中示出的全部块,而是可具有更少的块,如参照图4B所示。
图5A和5B是用于数据的乐观存储的示例性方法500的过程流程图。方法500可由图4的系统执行。方法500开始于块502,其中从主机启动器接收的写入命令被路由至布局模板选择器并且被安排传送给控制器CPU。
在块504,布局模板选择器对命令中的卷和LBA执行函数以便为命令中的数据选择布局模板。所述函数可以是散列函数或掩蔽和移位函数以将卷和地址转换成布局编号。与布局编号关联的布局模板指示在数据传送的每个部分中应该涉及哪些SSD。数据基于布局模板而被划分为多个部分以传送给SSD。
在块506,对于数据传送的每个部分,创建描述该部分的具有唯一标识符的意图记录。意图记录包括原始主机地址和该部分的长度以及由布局模板所指定的SSD在数据传送中起到的作用。意图记录也被安排传送给控制器CPU。在块508,意图记录和数据被合并并且发送给相应SSD,从而针对每个SSD的数据传送的每个部分既包括数据又包括意图记录。在一些示例中,在数据的传送之前,意图日志可被作为命令的一部分传送给SSD。
在块510,SSD接收意图记录和数据,并且进行检查以查看是否在意图日志中已经存在针对重叠主机地址的意图记录。如果是,则在块512,新记录被链接到在先记录,并且写入事务被标记为未完成。另外,在块514,或在未完成的写入事务的情况下,SSD对RNIC做出响应,指示事务尚未能被完成。
如果不存在重叠,则在块516,SSD将数据的主机地址添加到它的LBA高速缓存并且将数据添加到它的数据缓冲器。它还将意图记录放置在意图日志中以指示哪个数据在运行中,并且将意图记录链接到数据。
在块518,所有SSD的响应由RNIC搜集。此时,命令、意图记录和指示结果的状态信息被传送给控制器CPU。在块520,如果所有部分成功,例如未发生错误或未完成的事务,则在块522,RNIC对主机产生肯定响应,以指示事务的完成。在错误或未完成的事务的情况下,在对主机做出响应之前,RNIC等待控制器CPU干预。
在块524,控制器中的虚拟化计算模块接收命令、意图记录和状态信息,并且在所有SSD上为数据的所有部分确定正确的物理地址。这可涉及将SSD上的以前未分配的空间指定用于数据。
在块526,在已分派物理地址的情况下,虚拟化计算将控制传递给冗余引擎。如果在块528,冗余引擎确定写入事务由于SSD的意图日志中的冲突而未被完成并且对应数据被递送给超过一个SSD,则在块530,冗余引擎可在确认过程期间颠倒一些SSD中的意图日志中的写入事务的次序,以便全部反映相同的最终结果。
在块532,如果奇偶性SSD中的RAID计算需要来自数据SSD的旧数据以便完成奇偶性计算,则冗余引擎使用专用通读命令将该数据从数据SSD复制到奇偶性驱动器。通读命令忽略与尚未被冗余引擎确认的向SSD的写入事务关联的数据。SSD中的变换模块可随后执行另外的数据操纵。如这里所述,任何或所有SSD可包含这种模块。数据传送的多个部分可被发送给奇偶性SSD以及其它SSD以便实现完整的变换。
在块534,通过将针对事务的每个部分的物理地址的指示传送给负责该部分的SSD,冗余引擎向SSD确认事务。冗余引擎可在向SSD的单次通信中确认多个事务。
冗余引擎可针对各种SSD选择执行块532和534的次序以确保运行中的数据的正确跟踪。例如,在其它SSD上完成块532和534之后,冗余引擎可选择在奇偶性SSD上执行块532。这确保:至少一个SSD将会具有运行中的数据的记录,直至奇偶性跨在事务中所涉及的所有SSD是一致的。
在块536,冗余引擎确定是否一个或多个SSD由于故障而无法对请求做出响应。这可能发生在冗余引擎与SSD之一通信的过程中的任何点。如果一个或多个SSD由于故障而无法对请求做出响应,则在块538,控制器CPU中的冗余引擎模块检查每个SSD的状态和它的意图日志的内容。如果数据丢失,则可使用RAID技术恢复数据。如果故障是失去电力,则可能需要重新计算由所有SSD中的意图日志所指示的运行中的数据的奇偶性。
在块540,可由RNIC或主机部分或完全地重试正在由RNIC跟踪的未完成的命令。冗余引擎对SSD、RNIC中的恢复操作进行排序,并且基于故障的性质实现尽可能完整的恢复。在块542,确定恢复是否成功。如果冗余引擎未成功进行恢复,则在块544,报告错误状况的响应被返回给主机。
在块546,所述确认允许SSD将正确的数据从它的数据缓冲器传递给闪存中的指示的物理位置,并且从意图日志去除所述意图记录。SSD可从它的高速缓存去除主机LBA,例如,另外的事务需要空间。需要注意的是,保留高速缓存的LBA存在益处,因为如果保留高速缓存的LBA,则随后的读取事务能够更快速地完成。
图5C是用于数据的乐观存储的示例性方法的过程流程图。相同编号的项如参照图5A和5B所描述。所述系统不限于具有图5A和5B中示出的全部块,而是可具有更少的块,如参照图4C所示。
图6是用于从乐观SSD存储器具进行读取的示例性方法600的过程流程图。在块602,从主机启动器接收的读取被路由至布局模板选择器并且被安排传送给控制器CPU。在块604,布局选择器对命令中的卷和LBA执行函数以便为命令选择用于对数据进行定位的布局。所述函数可以是散列函数或掩蔽和移位函数以将卷和地址转换成布局编号。与布局编号关联的布局指示哪些SSD可与数据存储的每个部分关联。
在块606,对于数据传送的每个部分,创建描述该部分的具有唯一标识符的意图记录。意图记录包括原始主机地址和该部分的长度以及布局所指定的SSD在数据传送中起到的作用。意图记录也被安排传送给控制器CPU。
在块608,针对每个部分的意图记录被发送给相应SSD。在一些示例中,这可以是向SSD的读取命令的一部分。在块610,SSD接收意图记录,并且每个SSD针对主机LBA的记录检查它的LBA高速缓存。在块612,SSD确定是否意图记录指代数据缓冲器或闪存的区域。如果在块614找到地址,则在块616,数据响应于读取而被返回并且被传送给RNIC。如果未找到地址,则在块618,SSD对RNIC做出响应,指示事务尚未能被完成。
在块620,所有SSD的响应由RNIC搜集。此时,命令、意图记录和指示结果的状态信息被传送给控制器CPU。在块622,RNIC确定是否所有部分都成功,例如,未发生错误或未完成的事务。如果是,则在块624,数据被发送给主机,并且在块626,RNIC对主机产生肯定响应,指示事务的完成。当使用远程直接访问存储器(RDMA)协议发送数据时,可在SSD对数据进行定位时以递增方式发送响应。当肯定响应被发送给主机时,响应随后被关闭,例如被指示为结尾。在错误或未完成的事务的情况下,在对主机做出响应之前,RNIC等待控制器CPU干预。
在块628,控制器CPU中的虚拟化计算模块接收命令、意图记录和状态信息,并且为数据的所有部分在所有SSD上确定正确的物理地址。在为数据确定物理地址之后,在块630,虚拟化计算将控制传递给冗余引擎。
在块632,通过将事务的每个部分的物理地址的指示传送给负责该部分的SSD,冗余引擎向SSD确认事务。在块634,物理地址允许不能完成所述读取的任何SSD对它们的数据进行定位。在块636,数据随后被返回给主机。
关于读取事务的故障恢复以类似于写入事务的方式工作,例如,如参照图5B的块538-544所讨论的。例如,控制器CPU中的冗余引擎模块检查每个SSD的状态和它的意图日志的内容。如果数据丢失,则可使用RAID技术恢复数据。
图7A是具有强健冗余的示例性乐观存储器具700的方框图。相同编号如参照图1、3和4所述。在这个示例中,对于强健冗余,意图日志存储添加意图状态,以给出组合的意图/状态日志702。如这里所述,意图状态可取决于SSD是主驱动器还是从驱动器。对于用作从的驱动器,“运行中”状态指示处于正被写入的过程中但可能在所有SSD之间不一致的数据。从驱动器的另一状态可被称为“多版本”,并且指示要保留数据的旧版本新版本二者。
主SSD 102的状态也包括用于从SSD的运行中状态。主SSD 102具有称为“镜像”的另外的状态。在镜像状态下,数据在所有SSD之间是一致的并且冗余的(镜像),但另外的冗余计算(例如奇偶性计算、擦除代码计算等)仍然在进行中。一旦冗余计算完成,主驱动器的意图状态能够被改变为“提交”。提交状态表示冗余的提交形式,并且是所有其它SSD可被释放以将新数据从数据缓冲器冲刷到闪存的点。所有状态可随后被改变为“未跟踪”,因为没有数据处于运行中,并且奇偶性计算完成。
图7B是具有强健冗余的示例性乐观存储器具的方框图。相同编号的项如参照图1、3、4和7A所述。所述系统不限于具有图7A中示出的全部块,而是可具有更少的块,如参照图7B所示。
图8A和8B是在强健冗余情况下用于数据的乐观存储的示例性方法800的过程流程图。方法800可由图7的系统执行。相同编号的项如参照图5所述。
与图5的方法相比,在块802,当数据由SSD存储在它的数据缓冲器中并且主机LBA被高速缓存时,意图记录在“运行中”状态下被放置在SSD意图日志中。至“运行中”的转变发生在主SSD和从SSD二者上。
对于所有SSD响应指示成功的事务的任何部分,RNIC向所有布局主驱动器通知所述部分成功。在块802,主驱动器中的意图记录状态转变为“镜像”。如果所有SSD上的事务的所有部分成功,则RNIC对主机做出响应,指示事务的成功。不管是否成功,当所有SSD已作出响应时,智能RNIC将意图记录和SSD响应发送给虚拟化计算模块。
如参照图5所述的,虚拟化计算模块分派物理地址,然后将事务的控制转交给冗余引擎。在块806, 冗余引擎解决写入次序冲突,并且然后将物理地址递送给所有SSD。同时,从驱动器中的意图日志转变为多版本状态,并且主驱动器转变为镜像状态(如果它们尚未处于镜像状态的话)。如果未检测到未解决的错误并且主机未被通知事务的成功完成,则冗余引擎此时经RNIC提供这种通知。
在块808,执行奇偶性计算,并且跟踪进展。多版本的状态指示防止与数据缓冲器中的意图日志条目关联的数据覆盖较旧的未跟踪的数据版本。如果错误仍然存在,则冗余引擎中的故障恢复算法使用诸如当由镜像回写高速缓存面对RAID或擦除编码介质时的技术接管,如这里所述的。冗余引擎或主SSD中的变换模块使用保留在SSD中的数据的旧版本和新版本计算RAID或擦除代码奇偶性块。旧的奇偶性块此时不被覆盖。替代地,新的奇偶性块被保留在数据缓冲器中。
一旦所有奇偶性修改完成并且放置在数据缓冲器中,则在块810,冗余引擎将事务中的所有主意图记录转变为提交状态。在所有主意图记录已转变之后,在块812,冗余引擎将事务中的所有从意图记录的状态转变为未跟踪状态。在从记录不被跟踪之后,在块814,冗余引擎也将主记录转变为未跟踪。
在块816,确定是否发生了任何继续存在的错误。例如,由于电力故障、SSD故障或二者,可能在所述过程期间在任何点进行所述确定。如果未发生错误并且事务中所涉及的所有数据现在未被跟踪,则在块546,数据缓冲器中的对应数据可被冲刷到闪存以替换SSD中的数据的旧版本。如果已发生任何错误,则在块818,过程流程可前进至图9中的过程以进行错误恢复。如果图9的恢复过程成功,则在块820,过程流程返回到块546。如果不成功,则过程流程前进至块822以向主机报告错误,并且实现降级的模式恢复(如果存在的话)。
图8C是在强健冗余情况下用于数据的乐观存储的示例性方法的过程流程图。方法800可由图7A和7B的系统执行。相同编号的项如参照图5和8A所述。所述系统不限于具有图8A和8B中示出的全部块,而是可具有更少的块,如参照图8C所示。
图9是用于从多状态SSD恢复数据的示例性方法900的过程流程图。多版本状态确保:在事务期间,在故障的情况下,能够恢复未被事务修改并且与被事务修改的数据共享奇偶性的SSD上的数据。如这里所述的,缓冲器和意图日志是非易失性的,使得即使在失去电力期间发生故障,也能够实现从数据的稳定版本恢复。在这个示例中,一旦所有非故障SSD都是可访问的,则如下面那样进行从失去电力的恢复。
方法900开始于块902,识别针对任何SSD中的每个意图日志条目的最高评级的非故障主状态。在块904,对于其在该主状态中的状态是“提交”的每个记录,过程流程前进至块910。
在块906,其最高评级非故障主状态是“镜像”的每个意图日志条目使关联的从意图记录转变为“多版本”状态。在块908,执行奇偶性的产生,如这里所述的。那些意图记录随后被转变为这里描述的“未跟踪”状态。
在块910,类似于来自主机的新事务,处理针对处于“镜像”状态的每个记录的事务。如上所述那样执行奇偶性产生和意图日志状态转变,不同之处在于:不发生与主机的交互。在块912,去除任何SSD的意图日志中的任何继续存在的记录以及数据缓冲器中的关联的数据和所有SSD中的高速缓存的LBA。在块914,如果确定所有记录完成,则过程流程返回到图8B的块818。
所述系统的状态可被恢复并且准备好重新开始正常操作。如果在恢复过程期间或恢复过程之前的任何时间发生另外的故障,则与处于镜像和多版本状态中的意图记录关联的数据被用于影响降级的模式恢复。
参照图5-9描述的乐观SSD器具相对于从参照图6A和6B讨论的那些乐观SSD器具的读取函数具有最小变化。如果在状态为“运行中”的同时读取获得成功,则例如在“未跟踪”状态下的闪存上的旧数据被返回给主机。如果状态已在从驱动器上改变为“多版本”或在主驱动器上改变为“镜像”,则从数据缓冲器返回新数据。
图10A是具有动态布局的示例性乐观存储器具1000的方框图。相同编号的项如参照前面附图所讨论。在参照图4-6讨论的乐观直接访问的基础示例中,布局变化可在事务能够完成之前引起控制器CPU干预的可能延长的时段。在从主机的视角事务已乐观地完成之后,使用在虚拟化计算模块中用于校正数据放置的方法,动态数据放置示例可解决该问题。这允许乐观事务完成正常进行,而不管任何布局变化,只要最初用于该事务的布局不遇到任何硬件错误即可。
能够注意的是,图10中示出的示例包括参照图7-9描述的意图日志和状态702。然而,它可被实现在参照图4-6描述的基本器具上。
在这个示例中,多个布局模板(例如T3O 1002和T3N 1004)被用于相同数据。第一T3O 1002是由RNIC针对给定事务使用的初始或旧布局模板。第二T3N 1004是最初在控制器116中的CPU 114的控制下的新布局模板。虽然新布局模板T3N 1004被示出为位于控制器116的存储装置118中,但新布局模板T3N 1004可位于RNIC 112中。初始布局模板T3O 1002被视为正在进入不同布局的数据的高速缓存。
图10B是具有动态布局的示例性乐观存储器具的方框图。相同编号的项如参照前面附图所讨论。所述系统不限于具有图10A中示出的全部块,而是可具有更少的块,如参照图10B所示。
图11A和B是在动态布局情况下用于数据的乐观存储的示例性方法1100的过程流程图。相同编号的块如参照图5所述。根据这个示例,事务的初始发展使用由RNIC在事务到达时选择的模板(例如,图10的T3O 1002)正常地进行。事务进行至虚拟化计算模块获得控制的点,例如遵循块502-522。在该点处,CPU 114继续执行基础分配,直至从主机的视角事务完成(如果它尚未完成的话)的点。
在块1102,虚拟化计算模块确定用于事务的布局模板是否与用于数据的期望布局匹配。如果匹配,则过程流程前进至块526以便以它在没有动态布局的情况下本来具有的相同方式完成。
如果不匹配,则对于写入事务,在块1104,针对该事务的SSD中的数据被视为非易失性镜像高速缓存。因此,当虚拟化计算模块330具有用于数据集的替代布局模板T3N 1004时,在块1106,它继续将镜像数据复制到新布局模板T3N 1004中的镜像位置。在块1108,虚拟化计算模块330随后计算新布局模板中的数据的物理地址,在块106,根据新布局完成原始算法。在某个时间段期间,数据可位于由两个布局指示的SSD中的数据缓冲器中。
这个示例允许布局信息在任何时间被添加到布局模板选择器或在布局模板选择器中被修改,只要任何事务从一致版本的选择器表选择布局即可。这可通过使用诸如摆动缓冲器的技术使布局模板的更新原子化来实现。
另外,读取事务可被执行为就好像数据被完全保存在新布局中。这可通过管理旧布局中的SSD使得它们不能解析新布局的物理地址来执行。例如,通过强行使针对该数据的期望布局中未涉及的SSD数据高速缓存中的LBA无效来管理在这种状态下的读取事务。在每个重新引导的事务完成之后,但在它被复制到新布局中的SSD之前,发生无效。即使那些数据的LBA不在SSD的高速缓存中,数据也可保持在SSD的意图日志和数据缓冲器中,直至它们被成功地镜像到新布局中。
这里描述的技术可被实现在硬编码系统中,或者可被实现在非暂态计算机可读介质中。计算机可读介质可包括存储器(诸如RAM、静态RAM或NV存储器或硬盘驱动器)的任何组合。
图11C是在动态布局情况下用于数据的乐观存储的示例性方法的过程流程图。相同编号的块如参照图11B所述。所述系统不限于具有图8A和8B中示出的全部块,而是可具有更少的块,如参照图8C所示。
图12是包括可由处理器1202经总线1204访问的代码的示例性非易失性计算机可读介质1200的方框图。所述代码可包括代码块1206用于引导处理器1202至少部分地基于逻辑块地址(LBA)从多个布局模板选择布局模板。另一代码块1208可引导处理器1202至少部分地基于布局模板识别与由主机发送的数据的一部分关联的多个存储驱动器中的每个存储驱动器。
图13是包括可由处理器1302经总线1304访问的代码的示例性非易失性计算机可读介质1300的方框图。所述代码可包括代码块1306用于引导处理器1302确定从驱动器、主驱动器或二者中的数据的物理地址。另一代码块1308可引导处理器1302确认事务并且改变从驱动器、主驱动器或二者的意图记录状态。
图14是包括可由处理器1402经总线1404访问的代码的示例性非易失性计算机可读介质1400的方框图。所述代码可包括代码块1406用于引导处理器1402确定用于事务的当前布局模板是否与用于数据的期望布局匹配。另一代码块1408可引导处理器1402将当前布局模板识别为旧布局模板。也可以包括代码块1410用于引导处理器1402创建新布局模板。
尽管本技术可能容许各种修改和替代形式,但仅作为示例示出以上讨论的示例性示例。应该理解,本技术并不意图局限于这里公开的特定示例。实际上,本技术包括落在本技术的范围内的所有替代物、修改和等同物。
Claims (15)
1.一种系统,包括:
多个存储驱动器,通过存储网络耦合到存储控制器和RNIC (远程直接存储器访问(RDMA)网络接口卡(NIC));
所述RNIC包括布局模板选择器和多个模板,其中布局模板选择器至少部分地基于从主机接收的逻辑块地址(LBA)从所述多个模板选择模板,并且其中所述模板识别与由LBA表示的数据的各部分关联的所述多个存储驱动器中的每个存储驱动器。
2.如权利要求1所述的系统,其中所述存储驱动器包括固态驱动器。
3.如权利要求1所述的系统,包括控制器,其中所述控制器包括:
中央处理单元;和
存储单元,包括:
虚拟化计算模块,用于确定存储驱动器中的数据的物理地址;和
冗余引擎,用于向所述存储驱动器确认事务。
4.如权利要求1所述的系统,所述存储驱动器包括:
数据缓冲器,用于存储数据部分;
意图日志文件,用于存储意图记录,所述意图记录包括原始主机地址、数据部分的长度和存储驱动器的作用;
LBA高速缓存,用于存储与所述数据部分关联的LBA的部分;和
数据存储库。
5.如权利要求4所述的系统,其中所述存储驱动器是包括用于计算奇偶性的变换模块的主驱动器。
6.如权利要求4所述的系统,其中所述数据存储库包括闪存驱动器。
7.如权利要求4所述的系统,其中所述作用是存储奇偶性带。
8.如权利要求1所述的系统,其中存储器能够由数据总线访问。
9.一种用于远程直接存储器访问的方法,所述方法包括:
对来自主机的事务中的逻辑块地址(LBA)执行函数以计算布局编号;
至少部分地基于布局编号选择布局模板;
基于布局模板将事务划分成多个部分;
创建意图记录,所述意图记录包括原始主机地址、数据部分的长度和固态驱动器(SSD)的作用;以及
将所述意图记录发送给SSD。
10.如权利要求9所述的方法,包括:
合并针对写入事务的部分的意图记录和数据;以及
将合并的记录发送给SSD。
11.如权利要求9所述的方法,包括:
从处于所述布局模板中的所有SSD收集响应;以及如果,则所有SSD报告成功,
向主机生成肯定响应。
12.如权利要求11所述的方法,包括:
将意图记录和结果转交给控制器;
确定所述控制器中的虚拟化计算中的数据的物理地址;以及
向每个SSD发送包括所述SSD上的数据的物理地址的确认。
13.如权利要求12所述的方法,包括:
接收包括所述SSD中的物理地址的所述确认;以及
至少部分地基于所述物理地址将数据从数据缓冲器冲刷到一位置处的闪存驱动器。
14.一种非暂态计算机可读介质,包括用于引导处理器进行如下操作的代码:
至少部分地基于逻辑块地址(LBA)从多个布局模板中选择布局模板;以及
至少部分地基于所述布局模板识别与由主机发送的数据的一部分关联的多个存储驱动器中的每一个。
15.如权利要求14所述的非暂态计算机可读介质,包括用于引导处理器进行如下操作的代码:创建意图记录,所述意图记录包括原始主机地址、数据部分的长度和所述多个存储驱动器中每一个的作用。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2016/015668 WO2017131749A1 (en) | 2016-01-29 | 2016-01-29 | Remote direct memory access |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107430494A true CN107430494A (zh) | 2017-12-01 |
CN107430494B CN107430494B (zh) | 2020-09-15 |
Family
ID=59398449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680022775.6A Active CN107430494B (zh) | 2016-01-29 | 2016-01-29 | 用于远程直接存储器访问的系统、方法和介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10831386B2 (zh) |
EP (1) | EP3286631A4 (zh) |
CN (1) | CN107430494B (zh) |
WO (1) | WO2017131749A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112130755A (zh) * | 2019-06-25 | 2020-12-25 | 美光科技公司 | 具有多个主机接口的聚合和虚拟化固态驱动器 |
WO2022218160A1 (zh) * | 2021-04-14 | 2022-10-20 | 华为技术有限公司 | 一种数据访问系统、方法、设备以及网卡 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107430494B (zh) | 2016-01-29 | 2020-09-15 | 慧与发展有限责任合伙企业 | 用于远程直接存储器访问的系统、方法和介质 |
CN107533537B (zh) | 2016-01-29 | 2021-02-26 | 慧与发展有限责任合伙企业 | 存储系统、用于存储的方法和非暂时性计算机可读介质 |
WO2017131751A1 (en) | 2016-01-29 | 2017-08-03 | Hewlett Packard Enterprise Development Lp | Remote direct memory access |
US10733137B2 (en) * | 2017-04-25 | 2020-08-04 | Samsung Electronics Co., Ltd. | Low latency direct access block storage in NVME-of ethernet SSD |
KR20200037376A (ko) * | 2017-08-10 | 2020-04-08 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 데이터 액세스 방법, 디바이스 및 시스템 |
KR102683711B1 (ko) * | 2018-07-16 | 2024-07-09 | 삼성전자주식회사 | PCIe EP 및 네트워크 인터페이스를 통해 동시에 듀얼 라인 SSD 장치에 액세스하는 방법 |
US12117956B2 (en) * | 2019-03-04 | 2024-10-15 | Intel Corporation | Writes to multiple memory destinations |
US11914519B2 (en) | 2021-01-22 | 2024-02-27 | Nyriad, Inc. | Affinity-based cache operation for a persistent storage device |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100211737A1 (en) * | 2006-12-06 | 2010-08-19 | David Flynn | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
US20140215127A1 (en) * | 2013-01-31 | 2014-07-31 | Oracle International Corporation | Apparatus, system, and method for adaptive intent logging |
US20150193338A1 (en) * | 2014-01-08 | 2015-07-09 | Netapp, Inc. | Flash optimized, log-structured layer of a file system |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6687765B2 (en) | 2001-01-16 | 2004-02-03 | International Business Machines Corporation | System, method, and computer program for explicitly tunable I/O device controller |
US20030149756A1 (en) | 2002-02-06 | 2003-08-07 | David Grieve | Configuration management method and system |
US7577707B2 (en) | 2004-04-21 | 2009-08-18 | International Business Machines Corporation | Method, system, and program for executing data transfer requests |
US7464189B2 (en) | 2005-05-23 | 2008-12-09 | International Business Machines Corporation | System and method for creation/deletion of linear block address table entries for direct I/O |
US9813283B2 (en) | 2005-08-09 | 2017-11-07 | Oracle International Corporation | Efficient data transfer between servers and remote peripherals |
US7921178B2 (en) | 2008-12-04 | 2011-04-05 | Voltaire Ltd. | Device, system, and method of accessing storage |
US9122579B2 (en) | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
WO2011143628A2 (en) | 2010-05-13 | 2011-11-17 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
GB2496798B (en) | 2010-07-27 | 2016-10-12 | Ibm | Logical to physical address mapping in storage systems comprising solid state memory devices |
US8463991B2 (en) | 2010-09-28 | 2013-06-11 | Pure Storage Inc. | Intra-device data protection in a raid array |
CN101980137B (zh) * | 2010-10-19 | 2012-05-30 | 成都市华为赛门铁克科技有限公司 | 廉价磁盘冗余阵列重构方法、装置及系统 |
US9331955B2 (en) | 2011-06-29 | 2016-05-03 | Microsoft Technology Licensing, Llc | Transporting operations of arbitrary size over remote direct memory access |
US10089017B2 (en) | 2011-07-20 | 2018-10-02 | Futurewei Technologies, Inc. | Method and apparatus for SSD storage access |
US8799523B2 (en) | 2011-09-21 | 2014-08-05 | Kevin Mark Klughart | Data storage architecture extension system and method |
US9026717B2 (en) * | 2011-09-30 | 2015-05-05 | SanDisk Technologies, Inc. | Apparatus, system, and method for a persistent object store |
US9158540B1 (en) | 2011-11-14 | 2015-10-13 | Emc Corporation | Method and apparatus for offloading compute resources to a flash co-processing appliance |
US9467512B2 (en) * | 2012-01-17 | 2016-10-11 | Intel Corporation | Techniques for remote client access to a storage medium coupled with a server |
US8719540B1 (en) | 2012-03-15 | 2014-05-06 | Pure Storage, Inc. | Fractal layout of data blocks across multiple devices |
US8327185B1 (en) | 2012-03-23 | 2012-12-04 | DSSD, Inc. | Method and system for multi-dimensional raid |
US8938584B2 (en) | 2012-04-30 | 2015-01-20 | Dell Products, Lp | System and method to keep parity consistent in an array of solid state drives when data blocks are de-allocated |
US9542101B2 (en) * | 2013-01-22 | 2017-01-10 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System and methods for performing embedded full-stripe write operations to a data volume with data elements distributed across multiple modules |
US20150095555A1 (en) | 2013-09-27 | 2015-04-02 | Avalanche Technology, Inc. | Method of thin provisioning in a solid state disk array |
US9311110B2 (en) | 2013-07-08 | 2016-04-12 | Intel Corporation | Techniques to initialize from a remotely accessible storage device |
US20150242133A1 (en) * | 2014-02-21 | 2015-08-27 | Lsi Corporation | Storage workload hinting |
US9887008B2 (en) | 2014-03-10 | 2018-02-06 | Futurewei Technologies, Inc. | DDR4-SSD dual-port DIMM device |
US9696942B2 (en) | 2014-03-17 | 2017-07-04 | Mellanox Technologies, Ltd. | Accessing remote storage devices using a local bus protocol |
US9727503B2 (en) | 2014-03-17 | 2017-08-08 | Mellanox Technologies, Ltd. | Storage system and server |
CN107430494B (zh) | 2016-01-29 | 2020-09-15 | 慧与发展有限责任合伙企业 | 用于远程直接存储器访问的系统、方法和介质 |
-
2016
- 2016-01-29 CN CN201680022775.6A patent/CN107430494B/zh active Active
- 2016-01-29 WO PCT/US2016/015668 patent/WO2017131749A1/en active Application Filing
- 2016-01-29 EP EP16888478.1A patent/EP3286631A4/en not_active Ceased
- 2016-01-29 US US16/072,040 patent/US10831386B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100211737A1 (en) * | 2006-12-06 | 2010-08-19 | David Flynn | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
US20140215127A1 (en) * | 2013-01-31 | 2014-07-31 | Oracle International Corporation | Apparatus, system, and method for adaptive intent logging |
US20150193338A1 (en) * | 2014-01-08 | 2015-07-09 | Netapp, Inc. | Flash optimized, log-structured layer of a file system |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112130755A (zh) * | 2019-06-25 | 2020-12-25 | 美光科技公司 | 具有多个主机接口的聚合和虚拟化固态驱动器 |
WO2022218160A1 (zh) * | 2021-04-14 | 2022-10-20 | 华为技术有限公司 | 一种数据访问系统、方法、设备以及网卡 |
Also Published As
Publication number | Publication date |
---|---|
WO2017131749A1 (en) | 2017-08-03 |
EP3286631A4 (en) | 2018-05-30 |
US10831386B2 (en) | 2020-11-10 |
EP3286631A1 (en) | 2018-02-28 |
US20190034103A1 (en) | 2019-01-31 |
CN107430494B (zh) | 2020-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107430494A (zh) | 远程直接存储器访问 | |
CN107430585A (zh) | 远程直接存储器访问 | |
TWI709073B (zh) | 分佈式儲存系統、分佈式儲存方法及分佈式設施 | |
CN101291347B (zh) | 一种网络存储系统 | |
CN107533537B (zh) | 存储系统、用于存储的方法和非暂时性计算机可读介质 | |
US11301159B2 (en) | Storage system and data transfer method | |
US20030158999A1 (en) | Method and apparatus for maintaining cache coherency in a storage system | |
CN111587423A (zh) | 分布式存储系统的分层数据策略 | |
US10564865B2 (en) | Lockless parity management in a distributed data storage system | |
JP2002323959A (ja) | 磁気ディスク制御装置のログ主体不揮発性書き込みキャッシュ・システム及び方法 | |
CN102147713B (zh) | 一种网络存储系统的管理方法及装置 | |
JPH06202817A (ja) | ディスクアレイ装置及びそのデータ更新方法 | |
CN109344090A (zh) | 数据中心中kvm虚拟机的虚拟硬盘系统及数据中心 | |
TW200401975A (en) | Method and system for upgrading drive firmware in a non-disruptive manner | |
US11003558B2 (en) | Systems and methods for sequential resilvering | |
CN111857540B (zh) | 数据存取方法、装置和计算机程序产品 | |
JP2013156977A (ja) | 冗長キャッシュデータのエラスティックキャッシュ | |
CN111587425A (zh) | 分布式存储系统中的文件操作 | |
US10620868B1 (en) | Storage system and data transfer method | |
CN111587420A (zh) | 分布式存储系统快速故障恢复的方法和系统 | |
CN111587421A (zh) | 分布式存储系统电源故障阻抗的方法和系统 | |
US20210271393A1 (en) | Method and apparatus for performing data access management of all flash array server | |
JP2003131818A (ja) | クラスタ構成ストレージにおけるクラスタ間raid構成 | |
US20040160975A1 (en) | Multicast communication protocols, systems and methods | |
US12019917B2 (en) | Peer RAID control among peer data storage devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |