CN112262407A - 分布式文件系统中基于gpu的服务器 - Google Patents

分布式文件系统中基于gpu的服务器 Download PDF

Info

Publication number
CN112262407A
CN112262407A CN201980038773.XA CN201980038773A CN112262407A CN 112262407 A CN112262407 A CN 112262407A CN 201980038773 A CN201980038773 A CN 201980038773A CN 112262407 A CN112262407 A CN 112262407A
Authority
CN
China
Prior art keywords
data
graphics processing
gpu
graphics
memory
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
CN201980038773.XA
Other languages
English (en)
Inventor
马奥尔·本·达彦
奥姆里·帕尔蒙
利兰·兹维贝尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Weka Io Ltd
Original Assignee
Weka Io Ltd
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 Weka Io Ltd filed Critical Weka Io Ltd
Publication of CN112262407A publication Critical patent/CN112262407A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • 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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1847File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1028Distributed, i.e. distributed RAID systems with parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

多个计算装置经由网络彼此通信地耦接,并且多个计算装置中的每一个可操作地耦接至多个存储装置中的一个或多个。多个故障弹性条带分布在多个存储装置上,使得多个故障弹性条带中的每一个跨越多个存储装置。图形处理单元可操作为在旁路内核页高速缓存的同时从故障弹性条带访问数据文件。此外,这些数据文件可以由图形处理单元并行访问。

Description

分布式文件系统中基于GPU的服务器
优先权
本申请要求于2018年6月19日提交的题为“GPU Based Server in a DistributedFile System(分布式文件系统中基于GPU的服务器)”的美国临时专利申请62/686,964以及于2019年2月12日提交的题为“GPU Based Server in a Distributed File System(分布式文件系统中基于GPU的服务器)”的美国专利申请第16/273,749号的优先权。
背景技术
通过将这种方法与本公开的其余部分中参考附图所阐述的本方法和系统的一些方面进行比较,常规的数据存储方法的限制和缺点对于本领域技术人员将变得显而易见。
通过引用并入
通过引用将题为“Distributed Erasure Coded Virtual File System(分布式擦除编码的虚拟文件系统)”的美国专利申请第15/243,519号的全部内容并入本文。
发明内容
提供了用于包括GPU的分布式文件系统的方法和系统,该分布式文件系统基本上如附图中的至少一个所示和/或结合附图中的至少一个附图所描述,如在权利要求中更全面地阐述的。
附图说明
图1示出了根据本公开的各方面的分布式文件系统的各种示例配置。
图2示出了根据本公开的各方面的分布式文件系统节点的示例配置。
图3示出了根据本公开的示例实现方式的分布式文件系统的另一表示。
图4示出了根据本公开的示例实现方式的包括基于GPU的服务器的分布式文件系统的示例。
图5是示出用于使用分布式文件系统中基于GPU的服务器的示例方法的流程图。
图6示出了两个分布式故障弹性地址空间驻留在多个固态存储盘上的示例实现方式。
图7示出了根据本公开的示例实现方式的可以用于保护存储到虚拟文件系统的非易失性存储器的数据的前向纠错方案。
具体实施方式
传统上,文件系统使用对元数据结构(例如,目录、文件、属性、文件内容)的集中控制。如果可从单个服务器访问本地文件系统,并且该服务器故障,则由于没有进一步保护,文件系统的数据可能丢失。为了增加保护,一些文件系统(例如,如由NetApp提供的)已经以主动-被动方式(active-passive manner)使用一对或多对控制器来跨两个或多个计算机复制元数据。其他解决方案已经以集群方式使用多个元数据服务器(例如,如由IBM GPFS、Dell EMC Isilon、Lustre等提供的)。然而,由于传统集群系统中的元数据服务器的数量限于小数量,因此这样的系统无法扩展。
本公开中的系统适用于小集群,并且还可以扩展到许多、数千个节点。讨论了关于非易失性存储器(NVM)(例如,以固态驱动器(SSD)的形式出现的闪存)的示例实施方式。NVM可以被划分为4kB块和128MB数据块(chunks)。扩展区(extents)可以存储在易失性存储器(例如,用于快速访问的RAM)中,也可以由NVM存储备份。扩展区可以存储块的指针,例如,存储在块中的1MB数据的256个指针。在其他实施方式中,还可以使用更大或更小的存储器划分。本公开中的元数据功能可以有效地分布在许多服务器上。例如,在大负载以文件系统的命名空间的特定部分为目标的“热点”的情况下,该负载可以分布在多个节点上。
图1示出了根据本公开的各方面的分布式文件系统的各种示例配置。图1中示出了局域网(LAN)102,其包括一个或多个节点120(对于J≥1,由从1至J的整数索引),并且可选地包括(由虚线指示):一个或多个专用存储节点106(对于M≥1,由从1至M的整数索引)、一个或多个计算节点104(对于N≥1,由从1至N的整数索引)和/或将LAN 102连接至远程网络118的边缘路由器。远程网络118可选地包括一个或多个存储服务114(对于K≥1,由从1至K的整数索引)和/或一个或多个专用存储节点115(对于L≥1,由从1至L的整数索引)。
每个节点120j(j是整数,其中,1≤j≤J)是联网计算装置(例如,服务器、个人计算机等),该联网计算装置包括用于直接在装置104n的操作系统上和/或在装置104n中运行的一个或多个虚拟机中运行进程(例如,客户端进程)的电路。
计算节点104是可以运行虚拟前端而没有虚拟后端的联网装置。计算节点104可以通过将单个根输入/输出虚拟化(SR-IOV)带入网络接口卡(NIC)并且消耗完整的处理器核心来运行虚拟前端。可选地,计算节点104可以通过经由Linux内核网络堆栈路由联网并且使用内核进程调度来运行虚拟前端,因此没有全核心的要求。如果用户不想为文件系统分配完整核心或者如果联网硬件与文件系统要求不兼容,则这是有用的。
图2示出了根据本公开的各方面的节点的示例配置。节点包括前端202和驱动器208、存储器控制器204、后端206和SSD代理214。前端202可以是虚拟前端;存储器控制器204可以是虚拟存储器控制器;后端206可以是虚拟后端;以及驱动器208可以是虚拟驱动器。如本公开中所使用的,虚拟文件系统(VFS)进程是实现前端202、存储器控制器204、后端206和SSD代理214中的一个或多个的进程。因此,在示例实现方式中,节点的资源(例如,处理和存储器资源)可以在客户端进程和VFS进程之间共享。VFS的进程可以被配置为要求相对少量的资源以使对客户端应用的性能的影响最小化。前端202、存储器控制器204和/或后端206和/或SSD代理214可以在主机201的处理器上或在网络适配器218的处理器上运行。对于多核处理器,不同的VFS进程可以在不同的核上运行,并且可以运行服务的不同子集。从客户端进程212的角度来看,与虚拟文件系统的接口独立于VFS进程正在其上运行的特定物理机。客户端进程仅需要驱动器208和前端202存在以便为它们服务。
节点可以被实现为直接在操作系统上运行的单个租户服务器(例如,裸机)或者被实现为裸机服务器内的虚拟机(VM)和/或容器(例如,Linux容器(LXC))。VFS可以在作为VM环境的LXC容器内运行。因此,在VM内部,可以运行的唯一事情是包括VFS的LXC容器。在经典的裸机环境中,存在用户空间应用,并且VFS在LXC容器中运行。如果服务器正在运行其他容器化应用,则VFS可以在容器部署环境(例如,Docker)的管理范围之外的LXC容器内运行。
节点可以由操作系统和/或虚拟机监视器(VMM)(例如,管理程序)服务。VMM可以用于在主机201上创建和运行节点。多个核可以驻留在运行VFS的单个LXC容器内,并且VFS可以使用单个Linux内核在单个主机201上运行。因此,单个主机201可以包括多个前端202、多个存储器控制器204、多个后端206和/或一个或多个驱动器208。驱动器208可以在LXC容器的范围之外的内核空间中运行。
SR-IOV PCIe虚拟功能可以用于在用户空间222中运行联网堆栈210。SR-IOV允许隔离PCI Express,使得单个物理PCI Express可以在虚拟环境上共享,并且不同的虚拟功能可以被提供给单个物理服务器机器上的不同虚拟组件。I/O堆栈210使得VFS节点能够旁路标准TCP/IP堆栈220并且直接与网络适配器218通信。可以通过无锁队列将用于uniX(POSIX)VFS功能的便携式操作系统接口提供给VFS驱动器208。SR-IOV或完整的PCIe物理功能地址还可以用于在用户空间222中运行非易失性存储器快速(NVMe)驱动器214,从而完全旁路Linux IO堆栈。NVMe可以用于访问经由PCI Express(PCIe)总线附接的非易失性存储装置216。非易失性存储装置220可以是例如以固态驱动器(SSD)的形式出现的闪存或可以以SSD或存储器模块(DIMM)的形式出现的存储类存储器(SCM)。其他示例可以包括存储类存储器技术,诸如3D-XPoint。
通过将物理SSD 216与SSD代理214和联网210耦接,SSD可以被实现为联网装置。可选地,SSD可以通过使用诸如NVMe-oF(Fabrics上的NVMe)的网络协议实现为网络附接的NVMe SSD 242或244。NVMe-oF可以允许使用冗余网络链路访问NVMe装置,从而提供更高级别或弹性。网络适配器226、228、230和232可以包括用于连接至NVMe SSD 242和244以将它们转换为联网的NVMe-oF装置而无需使用服务器的硬件加速。NVMe SSD 242和244可以各自包括两个物理端口,并且可以通过这些端口中的任一个来访问所有数据。
每个客户端进程/应用212可以直接在操作系统上运行,或者可以在由操作系统和/或管理程序服务的虚拟机和/或容器中运行。客户端进程212可以在执行其主要功能的过程中从存储读取数据和/或将数据写入存储。然而,客户端进程212的主要功能与存储无关(即,进程仅关注其数据可靠地存储并且在需要时是可检索的,并且不关注数据存储在何处、何时或如何存储)。引起这种进程的示例应用包括:电子邮件服务器、web服务器、办公室生产力应用、客户关系管理(CRM)、动画视频渲染、基因组计算、芯片设计、软件构建和企业资源规划(ERP)。
客户端应用212可以对与VFS驱动器208通信的内核224进行系统调用。VFS驱动器208将对应的请求放在VFS前端202的队列上。如果存在若干VFS前端,则驱动器可以负载平衡对不同的前端的访问,从而确保始终经由同一前端访问单个文件/目录。这可以通过基于文件或目录的ID碎片化前端来完成。VFS前端202提供用于基于负责该操作的桶(bucket)将文件系统请求路由到适当的VFS后端的接口。适当的VFS后端可以在同一主机上或可以在另一主机上。
VFS后端206托管若干桶,它们中的每一个桶服务于文件系统请求,该文件系统请求接收并执行任务,以其他方式管理虚拟文件系统(例如,负载平衡、日志记录、维护元数据、高速缓存、在层之间移动数据、移除陈旧数据、校正损坏数据等)。
VFS SSD代理214处理与相应存储装置216的交互。这可以包括例如转换地址并且生成发布到存储装置(例如,在SATA、SAS、PCIe或其他合适的总线上)的命令。因此,VFS SSD代理214操作为存储装置216与虚拟文件系统的VFS后端206之间的中介。SSD代理214还可以与支持诸如NVMe-oF(Fabrics上的NVMe)的标准协议的标准网络存储装置通信。
图3示出了根据本公开的示例实现方式的分布式文件系统的另一表示。在图3中,元件302表示其上驻留有虚拟文件系统的各种节点(计算、存储和/或VFS)的存储器资源(例如,DRAM和/或其他短期存储器)和处理(例如,x86处理器、ARM处理器、NIC、ASIC、FPGA等)资源,诸如以上关于图2所描述的。元件308表示提供虚拟文件系统的长期存储的一个或多个物理存储装置216。
如图3所示,物理存储被组织为多个分布式故障弹性地址空间(DFRAS)318。其中每一个空间包括多个数据块310,数据块310进而包括多个块312。将块312组织为数据块310仅在一些实现方式中是便利的,并且可能不是在所有实现方式中都完成。每个块312存储提交的数据316(其可以呈现如下讨论的各种状态)和/或描述或引用提交的数据316的元数据314。
将存储308组织为多个DFRAS使得能够从虚拟文件系统的许多(或许所有)节点进行高性能并行提交(例如,图1的所有节点1041至104N、1061至106M和1201至120J可以同时执行并行提交)。在示例实现方式中,虚拟文件系统的节点中的每一个可以拥有多个DFRAS中的相应一个或多个DFRAS,并且具有对其拥有的DFRAS的排他性读取/提交访问。
每个桶都拥有DFRAS,并且因此在向其写入时不需要与任何其他节点协调。每个桶可以在许多不同的SSD上的许多不同数据块上构建条带,因此具有DFRAS的每个桶可以基于许多参数选择当前要写入的“数据块条带”,并且一旦数据块被分配给那个桶就不需要进行协调。所有桶可以有效地写入所有SSD,而不需要进行任何协调。
仅由在特定节点上运行的其拥有者桶拥有和可访问的每个DFRAS允许VFS的节点中的每一个控制存储308的一部分而不必与任何其他节点协调(除了在初始化期间或在节点故障之后保持DFRAS的桶的[重新]分配期间,例如,这可以与对存储308的实际读取/提交异步执行)。因此,在这样的实现方式中,每个节点可以独立于其他节点正在做什么来读取/提交到其桶的DFRAS,而不需要在读取和提交到存储308时达成任何一致性。此外,在特定节点故障的情况下,特定节点拥有多个桶的事实允许将其工作负载更智能且更有效地重新分配给其他节点(而不是必须将整个工作负载分配给单个节点,这可以创建“热点”)。就这一点而言,在一些实现方式中,桶的数量相对于系统中的节点的数量可能较大,使得任何一个桶可以是放置在另一个节点上的相对较小的负载。这允许根据其他节点的能力和容量来细粒度地重新分配故障节点的负载(例如,可以给予具有更多能力和容量的节点更高百分比的故障节点桶)。
为了允许这样的操作,可以维护将每个桶映射到其当前拥有节点的元数据,使得对存储308的读取和提交可以被重定向到适当的节点。
负载分配是可能的,因为整个文件系统元数据空间(例如,目录、文件属性、文件中的内容范围等)可以被分解(例如,切分或碎片化)成小的、均匀的片(例如,“碎片”)。例如,具有30k个服务器的大型系统可以将元数据空间切分为128k或256k个碎片。
每个这样的元数据碎片可以维持在“桶”中。每个VFS节点可以负责若干桶。当桶服务于给定后端上的元数据碎片时,该桶被认为是“主动的(active,有源的)”或者是该桶的“领导者”。通常,存在比VFS节点多得多的桶。例如,具有6个节点的小型系统可以具有120个桶,并且具有1,000个节点的大型系统可以具有8k个桶。
每个桶可以在小的节点集合上是主动的,通常为形成该桶的五元组的5个节点。集群配置保持关于每个桶的五元组分配的所有参与节点最新。
每个五元组监视自身。例如,如果集群具有10k个服务器,并且每个服务器具有6个桶,则每个服务器将仅需要与30个不同的服务器对话以维持其桶的状态(6个桶将具有6个五元组,因此6*5=30)。这是比集中式实体必须监视所有节点并保持集群范围状态的情况小得多的数量。使用五元组允许性能与更大的集群一起扩展,因为当集群大小增加时节点不会执行更多的工作。这可能造成在“哑”模式下小集群实际上可能生成比物理节点更多的通信的缺点,但是该缺点是通过在具有其共享的所有桶的两个服务器之间仅发送单个心跳来克服的(当集群增长时,这将改变为仅一个桶,但是如果你具有小型的5个服务器集群,则仅将所有桶包括在所有消息中并且每个服务器将仅与其他4个服务器对话)。五元组可以使用类似于Raft一致算法的算法来决定(即,达成一致)。
每个桶可以具有可以运行该桶的一组计算节点。例如,五个VFS节点可以运行一个桶。然而,在任何给定时刻,仅组中的节点中的一个节点是控制器/领导者。此外,对于足够大的集群,没有两个桶共享同一组。如果集群中仅存在5个或6个节点,则大多数桶可以共享后端。在相当大的集群中,存在许多不同的节点组。例如,对于26个节点,存在多于64,000
Figure BDA0002828954890000081
个可能的五节点组(即,五元组)。
组中的所有节点知道并同意(即,达成一致)哪个节点是该桶的实际主动控制器(即,领导者)。访问该桶的节点可以记住(“高速缓存”)作为组的(例如,五个)成员中的该桶的领导者的最后一个节点。如果它访问桶领导者,则桶领导者执行所请求的操作。如果它访问不是当前领导者的节点,则该节点指示领导者“重定向”访问。如果存在访问高速缓存的领导者节点的超时,则联系节点可以尝试同一五元组的不同节点。集群中的所有节点共享集群的共有“配置”,这允许节点知道哪个服务器可以运行每个桶。
每个桶可以具有负载/使用值,其指示桶被在文件系统上运行的应用使用的程度。例如,即使所使用的桶的数量将存在不平衡,具有11个轻度使用桶的服务器节点也可以接收元数据的另一个桶以在具有9个重度使用桶的服务器之前运行。可以根据平均响应等待时间、并行运行操作的数量、消耗的存储器或其他度量来确定负载值。
即使当VFS节点没有故障时,也可以发生重新分布。如果系统基于所跟踪的负载度量识别一个节点比其他节点更忙,则系统可以将其桶中的一个桶移动(即,“故障转移”)至不太忙的另一服务器。然而,在实际将桶重新定位到不同的主机之前,可以通过转移写入和读取来实现负载平衡。由于每个写入可以在由DFRAS决定的不同组的节点上结束,因此具有较高负载的节点可能不被选择为处于正被写入数据的条带中。系统还可以选择不服务于来自高负载节点的读取。例如,可以执行“降级模式读取”,其中,从同一条带的其他块重构高负载节点中的块。降级模式读取是经由同一条带中的其余节点执行的读取,并且经由故障保护重构数据。当读取等待时间太高时,可以执行降级模式读取,因为读取的发起者可以假设该节点关闭。如果负载足够高以创建更高的读取等待时间,则集群可以恢复到从其他节点读取该数据,并且使用降级模式读取来重构所需的数据。
每个桶管理其自己的分布式擦除编码实例(即,DFRAS 518),并且不需要与其他桶协作来执行读取或写入操作。可能存在数千个并发的分布式擦除编码实例并发工作,每个擦除编码实例用于不同的桶。这是扩展性能的组成部分,因为它有效地允许任何大型文件系统被划分为不需要协调的独立片,因此无论规模如何都提供高性能。
每个桶处理落入其碎片中的所有文件系统操作。例如,目录结构、文件属性和文件数据范围将落入特定桶的管辖范围。
从任何前端完成的操作开始于找出什么桶拥有该操作。然后,确定该桶的后端领导者和节点。该确定可以通过尝试最近已知的领导者来执行。如果最近已知的领导者不是当前领导者,则该节点可以知道哪个节点是当前领导者。如果最近已知的领导者不再是桶的五元组的一部分,则该后端将让前端知道其应回到用以找到桶的五元组的成员的配置。操作的分布允许复杂的操作由多个服务器而不是由标准系统中的单个计算机来处理。
如果集群的大小较小(例如,5个)并且使用五元组,则将存在共享同一组的桶。随着集群大小增长,重新分配桶,使得没有两个组是相同的。
图形处理单元(GPU)是被设计为快速操纵和更改存储器以加速旨在输出到显示装置的帧缓冲器中的图像的创建的专用电子电路。GPU用于嵌入式系统、移动电话、个人计算机、工作站和游戏机。现代GPU在操纵计算机图形和图像处理方面非常有效,并且它们的高度并行结构使得它们比用于算法的通用CPU更有效,在该算法中,并行完成大数据块的处理。在个人计算机中,GPU可以存在于视频卡上,或者它可以嵌入到主板上或在某些CPU中嵌入到CPU管芯上。
术语GPU由NVIDIA推广。NVIDIA的GPU被呈现为“具有集成变换、照明、三角形设置/裁剪和渲染引擎的单芯片处理器”。
图4示出了根据本公开的示例实现方式的包括基于GPU的服务器409的分布式文件系统的示例。除了基于GPU的服务器409之外,分布式文件系统包括计算装置(例如,基于CPU的服务器401)和非易失性系统存储器419(例如,多个SSD 427a、427b和427c)。
基于CPU的服务器401包括前端403和后端405。后端405包括至少一个桶407。多个SSD 427a、427b和427c可以被配置为多个块,例如,块a、块b和块c。
后端中的每个桶可操作为构建包括多个块的一个或多个故障弹性条带429。例如,对于10个块,可以用2个错误保护/校正块(即,使用8+2条带)来保护8个数据块。同样,对于10个故障域,可以用4个错误保护/校正块(即,使用6+4条带)来保护6个数据块。
为了说明,在图4中示出了3个存储装置和1个条带。在不偏离本公开的情况下,可以使用不同数量的存储装置和条带。桶407可操作为构建包括块a、块b和块c的故障弹性条带429。特定故障弹性条带中的多个存储块中的每一个存储块可以位于多个存储装置中的不同存储装置中。
基于GPU的服务器409可以通过PCIe接口417连接至基于CPU的服务器401,并且可以经由系统存储器总线423访问系统存储器419。然而,当GPU 409执行计算时,GPU 409经由图形存储器总线425使用专用GPU存储器421。例如,NVIDIA的GPU的专用存储器是利用高带宽存储器接口直接连接至GPU的RAM。因此,可以通过PCIe接口417从系统存储器419传送存储在GPU存储器421上的数据。
从SSD 427a、427b和427c传送的数据可以首先被放置在内核页高速缓存431中。然后,可以将数据从内核页高速缓存431复制到系统主存储器419中的应用用户空间存储器433。最后,可以将数据从应用用户空间存储器433复制到GPU存储器421中。由于许多GPU应用不需要访问系统主存储器,因此存在两个浪费的副本。此外,这些GPU应用对性能非常敏感,因此将数据直接传送到GPU存储器是很重要的。
便携式操作系统接口(POSIX)是由IEEE计算机协会为维护操作系统之间的兼容性而指定的一系列标准。当编写标准POSIX应用时,它们假设文件长时间保持打开。标准POSIX进程包括找到索引节点(一系列查找请求)、打开文件、访问文件以及最终关闭。如果文件长时间打开,则标准POSIX进程是有用的。
然而,基于GPU的应用处理GPU存储器中的大量小文件(例如,图像、语音样本、文本片段等)。基于GPU的应用中的POSIX开销相当高。
根据本公开的一个或多个实施方式,当应用使用GPU数据时,可以直接从包括系统存储器419和图形存储器421两者的分布式文件系统读取数据。例如,图形处理装置409可以操作为在旁路内核页高速缓存431的同时将存储块a、b或c传送至易失性存储装置421。可以提供基于GPU的应用以将小文件的内容放置在应用的用户空间存储器433中,从而旁路POSIX协议和内核页高速缓存431并且调整有效的键值访问。此外,图形处理装置409可以操作为经由高带宽接口从SSD 427a、427b和427c并行访问多个存储块。
基于GPU的应用可以提供完整文件名(例如,“/dir1/dir2/…/dirN/文件名”)和存储器位置的字符串。系统将直接与用户空间前端通信并完全旁路内核驱动器。系统可以并行获取基于GPU的应用文件的内容,并且将其放置在GPU存储器421中,从而消除POSIX开销。此外,通过消除复制至内核页高速缓存431和从内核页高速缓存431复制的需要,可以减少等待时间。GPU应用可以通过PCIe接口417将数据复制至GPU存储器421,并且通知GPU 409处理可以开始(例如,通过按响门铃)。例如,计算装置前端403可以向GPU和/或基于GPU的服务器409指示图形操作所需的数据在易失性存储装置421中可用。
一旦前端403验证数据被完全放置在GPU存储器421中,前端403就可以通知GPU应用数据在那里,因此用户应用可以启动GPU程序以作用于该数据。然而,由于唤醒GPU客户端应用也花费时间并且增加等待时间,因此应用可以将GPU程序存储在GPU中,并且GPU可以等待门铃(即,对硬件的指示)所有数据被放置在正确的位置。前端403然后可以按响GPU的门铃以开始处理数据。
数据还可以直接写入GPU存储器421中。代替指示基于CPU的服务器401(例如,在网络接口卡上)将进入分组写入系统存储器419,可以使用GPU直接和RDMA技术将数据分组写入GPU存储器421。通过直接GPU存储器访问,键值访问将数据直接放置在GPU存储器421中。
基于GPU的服务器409可以包括GPU前端411和GPU后端413。GPU后端413可以包括至少一个GPU桶415。GPU后端413上的桶415可以操作为管理易失性存储装置421中的数据。计算装置401和图形处理装置409可以经由网络接口435耦接。GPU前端411可以确定图形操作所需的数据的位置。可以直接通过网络接口435从计算装置接收该数据。例如,GPU前端411可以与前端403通信,前端403可以确定图形操作所需的数据位于由计算装置401的后端405中的桶407引导的故障保护条带429中。GPU前端411可以向图形处理单元(GPU)指示图形操作所需的数据何时在易失性存储装置421中可用。
图5是示出用于使用分布式文件系统中GPU的示例方法的流程图。在框501中,使用计算装置构建多个故障保护条带,使得多个故障保护条带中的每一个包括多个存储块,并且多个存储块中的每一个存储块位于多个闪存装置中的不同闪存装置中。
在框503中,确定用于图形操作的数据的位置。如果用于图形操作的数据位于故障保护条带中,则在框507中,将故障弹性条带的一个或多个块中的图形数据传送至易失性存储装置。可以在旁路内核页高速缓存的高带宽总线上并行传送该数据。在框509中,可以使用图形处理装置对所传送的数据执行图形操作。
如果用于图形操作的数据未位于故障保护条带中,则在框505中,图形数据可以经由网络接口从网络直接传送至易失性存储装置。一旦图形操作所需的数据在易失性存储装置中可用,则向GPU指示可用性。
图6示出了两个分布式故障弹性地址空间驻留在多个固态存储盘上的示例实现方式。
数据块9101,1至910D,C可以被组织为多个数据块条带9201至920S(S是整数)。在示例实现方式中,使用前向纠错(例如,擦除编码)单独地保护每个数据块条带920s(s是整数,其中,1≤s≤S)。因此,可以基于期望的数据保护级别来确定任何特定数据块条带920s中的数据块910d,c的数量。
出于说明的目的,假设每个数据块条带920s包括N=M+K(其中,N、M和K中的每一个都是整数)个数据块910d,c,则N个数据块910d,c中的M个数据块910d,c可以存储数据数位(通常是当前存储装置的二进制数位或“位”)并且N个数据块910d,c中的K个数据块910d,c可以存储保护数位(再次,通常是位)。然后,虚拟文件系统可以将来自N个不同故障域的N个数据块910d,c分配给每个条带920s
如本文所使用的,“故障域”是指一组组件,其中,组件中的任何单个组件的故障(组件失去电力、变得无响应等)可能导致所有组件故障。例如,如果机架具有单个架顶式交换机,则该交换机的故障将使得该机架上的所有组件(例如,计算、存储和/或VFS节点)的连接性降低。因此,对于系统的其余部分,等同于该机架上的所有组件是否一起故障。根据本公开的虚拟文件系统可以包括比数据块910更少的故障域。
在虚拟文件系统的节点以每个这样的节点仅有单个存储装置906的全冗余方式连接并供电的示例实现方式中,故障域可以仅是该单个存储装置906。因此,在示例实现方式中,每个数据块条带920s包括驻留在存储装置9061至906D的N个存储装置中的每一个存储装置上的多个数据块910d,c(因此,D大于或等于N)。在图9中示出这种实现方式的示例。
在图6中,D=7,N=5,M=4,K=1,并且存储被组织为两个DFRAS。这些数字仅用于说明而并非旨在限制。为了说明,任意地调用第一DFRAS的三个数据块条带920。第一数据块条带9201由数据块9101,1、9102,2、9103,3、9104,5和9105,6组成;第二数据块条带9202由数据块9103,2、9104,3、9105,3、9106,2和9107,3组成;并且第三数据块条带9203由数据块9101,4、9102,4、9103,5、9105,7和9107,5组成。
尽管在图6的简单示例中D=7并且N=5,但是在实际实现方式中,D可以比N大得多(例如,大于1的整数的倍数,并且可能高达许多数量级),并且可以选择两个值,使得单个DFRAS的任何两个数据块条带920驻留在N个存储装置906的同一集合上(或更一般地,驻留在N个故障域的同一集合上)的概率低于期望阈值。以这种方式,任何单个存储装置906d(或更一般地,任何单个故障域)的故障将导致(可能基于D和N的所选值、N个存储装置906的大小和故障域的布置确定期望的统计)丢失任何特定条带920s的最多一个数据块910b,c。甚至进一步地,双重故障将导致绝大多数条带丢失至多单个数据块910b,c,并且仅少量条带(基于D和N的值确定的)将丢失任何特定条带920s中的两个数据块(例如,两个故障条带的数量可能成指数地小于一个故障条带的数量)。
例如,如果每个存储装置906d是1TB,并且每个数据块是128MB,则存储装置906d的故障将导致(可能基于D和N的所选值、N个存储装置906的大小以及故障域的布置确定期望的统计)7812(=1TB/128MB)个数据块条带920中丢失一个数据块910。对于每个这种受影响的数据块条带920s,可以使用适当的前向纠错算法和数据块条带920s的其他N-1个数据块来快速重构丢失的数据块910d,c。此外,由于受影响的7812个数据块条带均匀地分布在所有存储装置9061至906D上,重构丢失的7812个块910d,c将涉及(可能基于D和N的所选值、N个存储装置906的大小以及故障域的布置确定期望的统计)从存储装置9061至906D中的每一个读取相同量的数据(即,重构丢失的数据的负担均匀地分布在所有存储装置9061至906D上,以便提供从故障中非常快速的恢复)。
接下来,转到存储装置9061至906D中的两个存储装置的并发故障(或更一般地,两个故障域的并发故障)的情况,由于每个DFRAS的数据块条带9201至920S在所有存储装置9061至906D上的均匀分布,仅非常少量的数据块条带9201至920S将丢失其N个数据块中的两个数据块。虚拟文件系统可以操作为基于指示数据块条带9201至920S与存储装置9061至906D之间的映射的元数据来快速识别这样的两个丢失的数据块条带。一旦识别出这样的两个丢失的数据块条带,虚拟文件系统就可以在开始重构一个丢失的数据块条带之前优先重构那些两个丢失的数据块条带。剩余的数据块条带将仅具有单个丢失的数据块,并且对于它们(绝大多数的受影响的数据块条带),两个存储装置906d的并发故障与仅一个存储装置906d的故障相同。类似的原理适用于第三并发故障(在两个并发故障场景中,具有三个故障块的数据块条带的数量甚至小于具有两个故障块的数据块条带的数量)等。在示例实现方式中,可以基于数据块条带920s中的丢失的数量来控制执行数据块条带920s的重构的速率。例如,这可以通过控制执行用于重构的读取和提交的速率、执行用于重构的FEC计算的速率、传送用于重构的网络消息的速率等来实现。
图7示出了根据本公开的示例实现方式的可以用于保护存储到虚拟文件系统的非易失性存储器的数据的前向纠错方案。示出了DFRAS的块条带9301至9304的存储块9021,1至9027,7。在图7的保护方案中,每个条带的五个块用于存储数据数位,并且每个条带的两个块用于数据存储保护数位(即,M=5并且K=2)。在图7中,使用以下等式(1)至(9)计算保护数位:
Figure BDA0002828954890000161
Figure BDA0002828954890000162
Figure BDA0002828954890000163
Figure BDA0002828954890000164
Figure BDA0002828954890000165
Figure BDA0002828954890000166
Figure BDA0002828954890000167
Figure BDA0002828954890000168
Figure BDA0002828954890000169
因此,图7中的四个条带9301至9304是多条带(在这种情况下为四个条带)FEC保护域的一部分,并且可以使用以上等式(1)至(9)的各种组合来恢复块条带9301至9304中的任一个中的两个或更少块的丢失。为了比较,单条带保护域的示例将是如果D11、D22、D33、D44、D54仅由P1保护,并且D11、D22、D33、D44、D54和P1全部被写入条带9301(9301将是单条带FEC保护域)。
根据本公开的示例实现方式,多个计算装置经由网络彼此通信地耦接,并且多个计算装置中的每一个包括多个存储装置中的一个或多个。多个故障弹性地址空间分布在多个存储装置上,使得多个故障弹性地址空间中的每一个跨越多个存储装置。多个故障弹性地址空间中的每一个被组织为多个条带(例如,图6和图7中的多个930)。多个条带中的每个一个或多个条带是多个前向纠错(FEC)保护域(例如,诸如图6中的多条带FEC域)中的相应一个保护域的一部分。多个条带中的每一个可以包括多个存储块(例如,多个912)。多个条带中的特定条带的每个块可以驻留在多个存储装置中的不同存储装置上。多个存储块的第一部分(例如,由图7的条带9301的9021,2至9021,6组成的五个数量)可以用于存储数据数位,并且多个存储块的第二部分(例如,图7的条带9301的两个9021,1和9021,7的数量)可以用于存储至少部分地基于数据数位计算的保护数位。
多个计算装置可以操作为对多个条带进行排序。该排序可以用于选择多个条带中的哪个条带用于多个故障弹性地址空间中的一个故障弹性地址空间的下一提交操作。该排序可以基于多个条带中的每一个条带中有多少受保护和/或未受保护的存储块。对于多个条带中的任何特定条带,该排序可以基于存储在具有多个条带中的特定条带的多个存储装置上的位图。该排序可以基于多个条带中的每一个条带中有多少当前存储数据的块。该排序可以基于用于提交到多个条带中的每一个条带的读取和写入开销。在任何给定时间,故障弹性地址空间中的每一个可以仅由多个计算装置中的一个计算装置拥有,并且多个故障弹性地址空间中的每一个可以仅由其拥有者读取和写入。计算装置中的每一个可以拥有多个故障弹性地址空间。多个存储装置可以被组织为多个故障域。多个条带中的每一个条带可以跨越多个故障域。故障弹性地址空间中的每一个可以跨越所有多个故障域,使得在多个故障域中的任何特定故障域故障时,将用于重构丢失的数据的工作负荷分布在多个故障域中的其他故障域中的每一个故障域中。多个条带可以分布在多个故障域上,使得在多个故障域中的两个故障域并发故障的情况下,多个条带中的任何特定条带的两个块驻留在多个故障域中的故障的两个故障域上的机会指数地小于多个条带中的任何特定条带的仅一个块驻留在多个故障域中的故障的两个故障域上的机会。
多个计算装置可以操作为首先重构具有两个故障块的多个条带中的任何条带,并且然后重构仅具有一个故障块的多个条带中的任何条带。多个计算装置可以操作为以比仅具有一个故障块的多个条带的重构速率更高的速率(例如,具有专用于重构的更大百分比的CPU时钟周期、专用于重构的更大百分比的网络传送机会等)来执行具有两个故障块的多个条带的重构。多个计算装置可以操作为在一个或多个故障域故障的情况下,基于多个条带中的同一条带的多少其他块已经丢失来确定重构任何特定丢失块的速率。其中,多个故障域中的一个或多个故障域包括多个存储装置。多个FEC保护域中的每一个可以跨越多个条带中的数个条带。
多个条带可以被组织为多个组(例如,如图6中的数据块条带9201至920S),其中,多个组中的每一个组包括多个条带中的一个或多个条带,并且多个计算装置可操作为针对组中的每一个组对该组的多个条带中的一个或多个条带进行排序。多个计算装置可以操作为对多个组中的选定组执行连续提交操作,直到该组中的多个条带中的一个或多个条带不再满足所确定的标准,并且在多个组中的选定组不再满足所确定的标准时,选择多个组中的不同的组。该标准可以基于有多少块可用于要写入的新数据。
尽管已经参考某些实现方式描述了本方法和/或系统,但是本领域技术人员将理解,在不脱离本方法和/或系统的范围的情况下,可以进行各种改变,并且可以替换等同物。另外,在不脱离本公开的范围的情况下,可以进行许多修改以使特定情况或者材料适应本公开的教导。因此,旨在本方法和/或系统不限于所公开的具体实现方式,而是本方法和/或系统将包括落入所附权利要求的范围内的所有实现方式。
如本文所使用的,术语“电路(circuits)”和“电路(circuitry)”是指物理电子组件(即,硬件)以及可以配置硬件、由硬件执行和/或以其他方式与硬件相关联的任何软件和/或固件(“代码”)。如本文所使用的,例如,特定处理器和存储器在执行第一一行或多行代码时可以包括第一“电路”,并且在执行第二一行或多行代码时可以包括第二“电路”。如本文所使用的,“和/或”是指由“和/或”连接的列表中的项中的任何一个或多个。例如,“x和/或y”是指三元素集合{(x),(y),(x,y)}中的任何元素。换句话说,“x和/或y”是指“x和y中的一个或两者”。又例如,“x、y和/或z”是指七元素集合{(x),(y),(z),(x,y),(x,z),(y,z),(x,y,z)}中的任何元素。换句话说,“x、y和/或z”是指“x、y和z中的一个或多个”。如本文所使用的,术语“示例性”是指用作非限制性示例、实例或说明。如本文所使用的,术语“例如(e.g.)”和“例如(for example)”阐述了一个或多个非限制性示例、实例或说明的列表。如本文所使用的,每当电路包括执行功能所需的硬件和代码(如果有必要)时,电路“可操作为”执行该功能,而不管功能的执行是禁用或未启用(例如,通过用户可配置设置、工厂调整等)。

Claims (20)

1.一种系统,包括:
易失性存储装置;
多个非易失性存储装置;
计算装置,能操作地构建多个故障保护条带,使得所述多个故障保护条带中的每一个故障保护条带包括多个存储块,其中,所述多个存储块中的每一个存储块位于多个闪存装置中的不同闪存装置中;以及
图形处理装置,能操作为在旁路内核页高速缓存的同时将所述多个存储块传送至所述易失性存储装置。
2.根据权利要求1所述的系统,其中,所述图形处理装置能操作为并行访问所述多个存储块。
3.根据权利要求1所述的系统,其中,所述计算装置和所述图形处理装置能经由PCIe接口操作地耦接。
4.根据权利要求1所述的系统,其中,所述计算装置和所述图形处理装置能经由网络接口操作地耦接。
5.根据权利要求1所述的系统,其中,所述图形处理装置包括能操作为管理所述易失性存储装置中的数据的后端。
6.根据权利要求1所述的系统,其中,所述图形处理装置包括能操作为确定图形操作所需的数据的位置的前端。
7.根据权利要求1所述的系统,其中,所述图形处理装置操作为经由网络接口接收数据。
8.根据权利要求1所述的系统,其中,所述图形处理装置包括能操作为向图形处理单元(GPU)指示图形操作所需的数据在所述易失性存储装置中可用的前端。
9.根据权利要求1所述的系统,其中,所述计算装置能操作为确定图形操作所需的数据位于由所述计算装置的后端中的桶引导的故障保护条带中。
10.根据权利要求1所述的系统,其中,所述计算装置包括能操作为向图形处理单元(GPU)指示图形操作所需的数据在所述易失性存储装置中可用的前端。
11.一种方法,包括:
使用计算装置构建多个故障保护条带,使得所述多个故障保护条带中的每一个故障保护条带包括多个存储块,其中,所述多个存储块中的每一个存储块位于多个闪存装置中的不同闪存装置中;
在旁路内核页高速缓存的同时将所述多个存储块传送至易失性存储装置;并且
使用图形处理装置对所传送的多个存储块执行图形操作。
12.根据权利要求11所述的方法,其中,传送包括并行传送所述多个存储块。
13.根据权利要求11所述的方法,其中,所述计算装置和所述图形处理装置能经由PCIe接口操作地耦接。
14.根据权利要求11所述的方法,其中,所述计算装置和所述图形处理装置能经由网络接口操作地耦接。
15.根据权利要求11所述的方法,其中,所述图形处理装置包括能操作为管理所述易失性存储装置中的数据的后端。
16.根据权利要求11所述的方法,其中,所述方法包括确定所述图形操作所需的数据的位置。
17.根据权利要求11所述的方法,其中,所述方法包括在所述图形处理装置处经由网络接口接收数据。
18.根据权利要求11所述的方法,其中,所述方法包括向图形处理单元(GPU)指示所述图形操作所需的数据在所述易失性存储装置中可用。
19.根据权利要求11所述的方法,其中,所述方法包括由所述计算装置确定所述图形操作所需的数据位于由所述计算装置的后端中的桶引导的故障保护条带中。
20.根据权利要求11所述的方法,其中,所述方法包括由所述计算装置的前端指示所述图形操作所需的数据在所述易失性存储装置中可用。
CN201980038773.XA 2018-06-19 2019-06-05 分布式文件系统中基于gpu的服务器 Pending CN112262407A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862686964P 2018-06-19 2018-06-19
US62/686,964 2018-06-19
US16/273,749 US11074668B2 (en) 2018-06-19 2019-02-12 GPU based server in a distributed file system
US16/273,749 2019-02-12
PCT/IB2019/000742 WO2019243892A2 (en) 2018-06-19 2019-06-05 Gpu based server in a distributed file system

Publications (1)

Publication Number Publication Date
CN112262407A true CN112262407A (zh) 2021-01-22

Family

ID=68839444

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980038773.XA Pending CN112262407A (zh) 2018-06-19 2019-06-05 分布式文件系统中基于gpu的服务器

Country Status (4)

Country Link
US (9) US11074668B2 (zh)
EP (1) EP3811324A4 (zh)
CN (1) CN112262407A (zh)
WO (1) WO2019243892A2 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11042661B2 (en) * 2018-06-08 2021-06-22 Weka.IO Ltd. Encryption for a distributed filesystem
US11074668B2 (en) 2018-06-19 2021-07-27 Weka.IO Ltd. GPU based server in a distributed file system
US11169961B2 (en) * 2018-06-29 2021-11-09 Weka.IO Ltd. Data migration in a distributive file system
US20200319812A1 (en) * 2020-06-03 2020-10-08 Intel Corporation Intermediary for storage command transfers
CN112181916B (zh) * 2020-09-14 2024-04-09 北京星辰天合科技股份有限公司 基于用户空间文件系统fuse的文件预读方法及装置、电子设备
US11470012B2 (en) 2021-02-25 2022-10-11 Capital One Services, Llc System and method for queue management

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150286438A1 (en) * 2014-04-03 2015-10-08 Lsi Corporation System, Method and Computer-Readable Medium for Dynamically Configuring an Operational Mode in a Storage Controller
CN106462544A (zh) * 2014-03-31 2017-02-22 亚马逊科技公司 分布式存储系统中的会话管理
CN106462545A (zh) * 2014-03-31 2017-02-22 亚马逊科技公司 可缩放文件存储服务
US20170147516A1 (en) * 2015-11-19 2017-05-25 HGST Netherlands B.V. Direct interface between graphics processing unit and data storage unit
US20170337103A1 (en) * 2016-05-19 2017-11-23 Intel Corporation Method and apparatus to provide data redundancy in a solid-state drive
CN107924351A (zh) * 2015-08-22 2018-04-17 维卡艾欧有限公司 分布式纠删编码虚拟文件系统
CN107949842A (zh) * 2015-07-01 2018-04-20 维卡艾欧有限公司 支持多层存储器的虚拟文件系统

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6138126A (en) * 1995-05-31 2000-10-24 Network Appliance, Inc. Method for allocating files in a file system integrated with a raid disk sub-system
US6487636B1 (en) 2000-04-24 2002-11-26 Hewlett-Packard Co. Method and apparatus for mapping data in a heterogeneous disk array storage system
US7681072B1 (en) 2004-08-13 2010-03-16 Panasas, Inc. Systems and methods for facilitating file reconstruction and restoration in data storage systems where a RAID-X format is implemented at a file level within a plurality of storage devices
US7447839B2 (en) * 2005-09-13 2008-11-04 Yahoo! Inc. System for a distributed column chunk data store
US7793146B1 (en) 2007-08-07 2010-09-07 Panasas, Inc. Methods for storing data in a data storage system where a RAID-X format or formats are implemented at a file level
US8645749B2 (en) 2009-02-04 2014-02-04 Micron Technology, Inc. Systems and methods for storing and recovering controller data in non-volatile memory devices
US8458287B2 (en) 2009-07-31 2013-06-04 Microsoft Corporation Erasure coded storage aggregation in data centers
US10838646B2 (en) * 2011-07-28 2020-11-17 Netlist, Inc. Method and apparatus for presearching stored data
US9430324B2 (en) 2013-05-24 2016-08-30 Rambus Inc. Memory repair method and apparatus based on error code tracking
US11182284B2 (en) * 2013-11-07 2021-11-23 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
US10635316B2 (en) * 2014-03-08 2020-04-28 Diamanti, Inc. Methods and systems for data storage using solid state drives
US9087012B1 (en) 2014-06-04 2015-07-21 Pure Storage, Inc. Disaster recovery at high reliability in a storage cluster
US9582363B2 (en) 2014-06-09 2017-02-28 International Business Machines Corporation Failure domain based storage system data stripe layout
US9921910B2 (en) 2015-02-19 2018-03-20 Netapp, Inc. Virtual chunk service based data recovery in a distributed data storage system
TWI616759B (zh) * 2016-08-10 2018-03-01 創義達科技股份有限公司 設備分配控制器以及設備分配方法
US10496319B2 (en) * 2017-02-28 2019-12-03 Sap Se Lifecycle management for data in non-volatile memory including blocking creation of a database savepoint and associating non-volatile memory block identifiers with database column fragments
US10489881B2 (en) * 2017-06-30 2019-11-26 H3 Platform Inc. Direct memory access for co-processor memory
US11074668B2 (en) 2018-06-19 2021-07-27 Weka.IO Ltd. GPU based server in a distributed file system
US10929229B2 (en) * 2018-06-21 2021-02-23 International Business Machines Corporation Decentralized RAID scheme having distributed parity computation and recovery
US10825477B2 (en) * 2018-08-02 2020-11-03 Western Digital Technologies, Inc. RAID storage system with logical data group priority
US11150805B2 (en) * 2019-05-02 2021-10-19 Vast Data Ltd. System and method for using free space to improve erasure code locality

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106462544A (zh) * 2014-03-31 2017-02-22 亚马逊科技公司 分布式存储系统中的会话管理
CN106462545A (zh) * 2014-03-31 2017-02-22 亚马逊科技公司 可缩放文件存储服务
US20150286438A1 (en) * 2014-04-03 2015-10-08 Lsi Corporation System, Method and Computer-Readable Medium for Dynamically Configuring an Operational Mode in a Storage Controller
CN107949842A (zh) * 2015-07-01 2018-04-20 维卡艾欧有限公司 支持多层存储器的虚拟文件系统
CN107924351A (zh) * 2015-08-22 2018-04-17 维卡艾欧有限公司 分布式纠删编码虚拟文件系统
US20170147516A1 (en) * 2015-11-19 2017-05-25 HGST Netherlands B.V. Direct interface between graphics processing unit and data storage unit
US20170337103A1 (en) * 2016-05-19 2017-11-23 Intel Corporation Method and apparatus to provide data redundancy in a solid-state drive

Also Published As

Publication number Publication date
US20210248711A1 (en) 2021-08-12
US20220335564A1 (en) 2022-10-20
US20190385271A1 (en) 2019-12-19
WO2019243892A3 (en) 2020-06-11
US20220076371A1 (en) 2022-03-10
WO2019243892A2 (en) 2019-12-26
US11145026B2 (en) 2021-10-12
US11205244B2 (en) 2021-12-21
US20230214956A1 (en) 2023-07-06
EP3811324A4 (en) 2022-03-02
US20240202863A1 (en) 2024-06-20
US11544812B2 (en) 2023-01-03
US11922537B2 (en) 2024-03-05
US11798124B2 (en) 2023-10-24
US11074668B2 (en) 2021-07-27
US20210248712A1 (en) 2021-08-12
US20240046406A1 (en) 2024-02-08
EP3811324A2 (en) 2021-04-28
US11151686B2 (en) 2021-10-19
US20210248713A1 (en) 2021-08-12

Similar Documents

Publication Publication Date Title
CN111587428B (zh) 分布式存储系统中的元数据日志
CN111587418B (zh) 分布式存储系统的目录结构
CN111587423B (zh) 分布式存储系统的分层数据策略
CN111149081B (zh) 负载平衡分配式存储系统中的元数据控制
CN112262407A (zh) 分布式文件系统中基于gpu的服务器
US11579992B2 (en) Methods and systems for rapid failure recovery for a distributed storage system
CN111587421B (zh) 分布式存储系统电源故障阻抗的方法和系统
JP2023099186A (ja) 複数の故障ドメインに及ぶストレージシステム
CN112292661A (zh) 扩展分布式存储系统
CN113039514A (zh) 分布式文件系统中的数据迁移
CN112005225A (zh) 具有盘上哈希的闪存注册表

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination