CN110431542B - 管理存储网络中的i/o操作 - Google Patents

管理存储网络中的i/o操作 Download PDF

Info

Publication number
CN110431542B
CN110431542B CN201880018722.6A CN201880018722A CN110431542B CN 110431542 B CN110431542 B CN 110431542B CN 201880018722 A CN201880018722 A CN 201880018722A CN 110431542 B CN110431542 B CN 110431542B
Authority
CN
China
Prior art keywords
data object
target
bucket
key
metadata
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201880018722.6A
Other languages
English (en)
Other versions
CN110431542A (zh
Inventor
F·布拉戈耶维奇
C·盖约特
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.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of CN110431542A publication Critical patent/CN110431542A/zh
Application granted granted Critical
Publication of CN110431542B publication Critical patent/CN110431542B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F16/137Hash-based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23103Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion using load balancing strategies, e.g. by placing or distributing content on different disks, different memories or different servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明描述了用于管理存储网络中的输入/输出操作的各方面。例如,方法可以包括对目标数据对象应用散列函数以计算目标数据对象的散列键,以及基于散列键和散列表映射来识别针对目标数据对象的目标存储桶。该方法还可以包括读取存储在目标存储桶中的数据对象的数据对象键,以及比较数据对象键与散列键以确定匹配。该方法还可以包括,如果数据对象键与散列键匹配则确定数据对象是目标数据对象,并且当存在匹配时,从目标存储桶读取目标数据对象。可以使用单个远程直接访问请求来进行一些方法。

Description

管理存储网络中的I/O操作
背景技术
技术领域
本公开涉及计算网络,并且更具体地,涉及管理存储网络或系统中的输入/输出操作。
相关技术的描述
各种计算网络和系统能够存储数据。这些计算网络和系统的子集被配置成将数据存储为数据对象。这些数据对象中的一些能够包含大量数据(例如,至少两个兆兆字节(2TB)数据,尽管可应用经历吞吐量和存储相关问题的其他量)。
通常,当计算系统接收将数据对象写入长期存储装置的输入/输出(I/O)请求时,数据对象最初被写入高速缓存的存储缓冲区。存储缓冲区中的数据对象随后被写入长期存储装置,并且可以在将来经由读取请求和/或读写请求来被访问。
一些存储网络和/或系统可以使得请求存储数据对象的计算设备或节点能够选择要存储数据对象的存储位置。要存储数据对象的选定存储位置被记录在散列表中,并且随后数据对象可以存储在与选定存储位置对应的一个或多个存储设备中。散列表可以提供一个或多个存储设备中的各个存储位置的映射,其可以有助于将I/O操作引导到其中存储的一个或多个数据对象的位置。
在一些情况下,在接收到存储数据对象的请求时,由计算设备/节点选择的存储位置可能是不可用的,并且数据对象最终可以存储到替代存储位置。另外,在确定选定存储位置不可用并将数据对象存储到替代位置之前,数据对象的选定存储位置可能已经被记录在散列表中。例如,数据对象可以存储在与散列表中映射的存储位置不同的存储位置中,在尝试定位数据对象以供将来的I/O操作时,这可能会导致问题。
虽然一些先前的存储网络和系统通常能够存储数据对象,但它们通常无法可靠地和/或有效地这样做,特别是在高容量下和/或处理大数据对象时。这可能会导致影响业务运营并产生大量不必要成本的数据丢失和/或性能问题。例如,在一个或多个I/O请求被引导到未在散列表中正确映射的数据对象的情况下,一些存储系统可能出故障(例如,崩溃等)和/或表现不佳(例如,具有延迟问题等)。
发明内容
本公开描述了用于可靠地且有效地管理各种计算机系统诸如存储网络和/或存储系统中的输入/输出(I/O)操作的各方面。
一般而言,本公开中描述的主题的一个创新方面可以体现在存储网络中,该存储网络包括:第一节点,该第一节点可耦接到第二节点,该第二节点包括一组非易失性存储器设备,该一组非易失性存储器设备包括被划分成多个存储桶以存储数据对象的一组存储段。第一节点包括可被执行以进行以下操作的控制器操作包括:对第一目标数据对象应用第一散列函数以计算第一目标数据对象的第一散列键;基于第一散列键和散列表的第一映射来识别第二节点中的针对第一目标数据对象的第一目标存储桶;读取存储在第一目标存储桶中的第一数据对象的第一数据对象键;比较第一数据对象键与第一散列键以确定匹配;响应于第一数据对象键与第一散列键匹配,确定第一数据对象是第一目标数据对象;响应于确定第一数据对象是第一目标数据对象,从第一目标存储桶读取第一目标数据对象。
这些和其他具体实施可以各自任选地包括以下特征中的一者或多者:控制器与单个远程直接存储器访问操作相关联地进行操作;操作还包括对第二目标数据对象应用第二散列函数以计算第二目标数据对象的第二散列键;操作还包括基于第二散列键和第一映射来识别第二节点中的针对第二目标数据对象的第二目标存储桶;操作还包括读取存储在第二目标存储桶中的第二数据对象的第二数据对象键;操作还包括比较第二数据对象键与第二散列键以确定匹配;操作还包括响应于第二数据对象键与第二散列键不匹配,操作还包括确定第二数据对象和第二目标数据对象是不同的数据对象;操作还包括响应于确定第二数据对象和第二目标数据对象是不同的数据对象,读取第一元数据以识别存储第二目标数据对象的第一组存储桶中的第一替代存储桶,第一存储段包括第一元数据和第一组存储桶,并且第一组存储桶包括第二目标存储桶;第一元数据基于存储在第一组存储桶中的第一数据对象的第一数据对象键提供第一组元数据键的第二映射;并且读取第一元数据还包括:读取第一组元数据键;比较第一组元数据键与第二散列键以确定匹配;响应于与存储在第一替代存储桶中的第三数据对象的第三数据对象键对应的第一元数据键与第二散列键匹配,确定第二目标数据对象存储在第一替代存储桶中;以及响应于确定第二目标数据对象存储在第一替代存储桶中,从第一替代存储桶读取第二目标数据对象;第一存储段包括第一用户配置数量的桶;第二目标存储桶包括第二用户配置数量的字节,第二数据对象键包括第三用户配置数量的字节,并且第二映射包括第四用户配置数量的字节;操作还包括响应于第二散列键与第一组元数据键中的任何一个不匹配:对第二数据对象键应用第三散列函数以计算第二目标数据对象的第三散列键,以及基于第三散列键来识别第二存储段中的第三目标存储桶;操作还包括:读取存储在第三目标存储桶中的第四数据对象的第四数据对象键;比较第四数据对象键与第二散列键以确定匹配;响应于第四数据对象键与第二散列键匹配,确定第四数据对象是第二目标数据对象;以及响应于确定第四数据对象是第二目标数据对象,从第三目标存储桶读取第二目标数据对象;操作还包括,响应于第四数据对象键与第二散列键不匹配,确定第四数据对象和第二目标数据对象是不同的数据对象;响应于确定第四数据对象和第二目标数据对象是不同的数据对象:读取第二元数据中的第二组元数据键;比较第二组元数据键与第二散列键以确定匹配;响应于与存储在第二替代存储桶中的第五数据对象的第五数据对象键对应的第二元数据键与第二散列键匹配,确定第二目标数据对象存储在第二替代存储桶中;以及响应于确定第二目标数据对象存储在第二替代存储桶中,从第二替代存储桶读取第二目标数据对象,第二存储段与第一存储段距离一跳,第二存储段包括第二替代目标存储桶,并且第二元数据基于存储在第二存储段中的第二数据对象的第二数据对象键提供第二组元数据键的第三映射;控制器与五个远程直接存储器访问(RDMA)操作相关联地进行操作;操作还包括:响应于第二散列键与第二组元数据键中的任何一个不匹配,确定第二目标数据对象未存储在第二节点中;
一般而言,本公开中描述的主题的一个创新方面可以体现在方法中,该方法包括:与第一RDMA操作相关联地对目标数据对象应用第一散列函数以计算目标数据对象的第一散列键;与第一RDMA操作相关联地基于第二散列键和散列表的第一映射识别第二节点中的针对目标数据对象的第一目标存储桶;与第一RDMA操作相关联地读取存储在第一目标存储桶中的第一数据对象的第一数据对象键;与第一RDMA操作相关联地比较第一数据对象键与第一散列键以确定匹配;响应于第一数据对象键与第一散列键不匹配,与第一RDMA操作相关联地确定第一数据对象和目标数据对象是不同的数据对象;以及响应于确定第一数据对象和目标数据对象是不同的数据对象,与第一RDMA操作相关联地读取第一元数据以识别存储目标数据对象的第一组存储桶中的第一替代存储桶,第一存储段包括第一元数据和第一组存储桶,并且第一组存储桶包括第一目标存储桶。
这些和其他具体实施可以各自任选地包括以下特征中的一者或多者,包括第一元数据基于存储在第一组存储桶中的第一数据对象的第一数据对象键提供第一组元数据键的第二映射;并且读取第一元数据包括读取第一组元数据键;比较第一组元数据键与第一散列键以确定匹配;响应于与存储在第一替代存储桶中的第二数据对象的第二数据对象键对应的第一元数据键与第一散列键匹配,确定目标数据对象存储在第一替代存储桶中;响应于确定目标数据对象存储在第一替代存储桶中,从第一替代存储桶读取目标数据对象;响应于第一散列键与第一组元数据键中的任何一个不匹配,与第二RDMA操作相关联地对第一数据对象键应用第二散列函数以计算目标数据对象的第二散列键;与第二RDMA操作相关联地基于第二散列键来识别第二存储段中的第二目标存储桶;与第二RDMA操作相关联地读取存储在第二目标存储桶中的第三数据对象的第三数据对象键;与第二RDMA操作相关联地比较第三数据对象键与第一散列键以确定匹配;响应于第三数据对象键与第一散列键匹配,与第二RDMA操作相关联地确定第三数据对象是目标数据对象;响应于确定第三数据对象是目标数据对象,发出第三RDMA操作以从第二目标存储桶读取目标数据对象;响应于第三数据对象键与第一散列键不匹配,发出第二RDMA操作以确定第三数据对象和目标数据对象是不同的数据对象;响应于确定第三数据对象和目标数据对象是不同的数据对象,发出第三RDMA操作以便:读取第二元数据中的第二组元数据键;比较第二组元数据键与第一散列键以确定匹配;响应于与存储在第二替代存储桶中的第四数据对象的第四数据对象键对应的第二元数据键与第一散列键匹配,确定目标数据对象存储在第二替代存储桶中;响应于确定目标数据对象存储在第二替代存储桶中,从第二替代存储桶读取目标数据对象;响应于第一散列键与第二组元数据键中的任何一个不匹配,并且确定目标数据对象未存储在第二节点中,第二存储段与第一存储段距离一跳,第二存储段包括第二替代目标存储桶,并且第二元数据基于存储在第二存储段中的第二数据对象的第二数据对象键提供第二组元数据键的第三映射;将第一数据对象写入另一存储桶还包括将第一数据对象写入第一目标存储段中的第二存储桶;更新第一元数据还包括更新第一目标存储段中的第一元数据,使得第一映射指示第一数据对象存储在第二存储桶中;确定第一目标存储段不可用;确定与第一目标存储段距离一跳的第二目标存储段;将第一数据对象写入另一存储桶还包括将第一数据对象写入第二目标存储段中的第二存储桶;更新第一元数据还包括更新第二目标存储段中的第一元数据,使得第一映射指示第一数据对象存储在第二存储桶中;确定第一目标存储段不可用;确定与第一目标存储段距离一跳的第二目标存储段;确定第二目标存储段不可用;确定与第二目标存储段距离一跳的第三目标存储段;将第二目标存储段中的第二存储桶中的第二数据对象重新定位到第三目标存储段中的第三存储桶以释放第二存储桶;更新第三目标存储段的第二元数据中的第二映射以指示第二数据对象存储在第三存储桶中;将第一数据对象写入另一存储桶还包括将第一数据对象写入第二目标存储段中的第二存储桶;更新第一元数据还包括更新第二目标存储段中的第一元数据,使得第一映射指示第一数据对象存储在第二存储桶中。
一般而言,本公开中描述的主题的一个创新方面可以体现在方法中,该方法包括:由计算节点对第一数据对象执行散列函数,以确定可供第一数据对象存储的第一目标存储段中的第一存储桶;确定第一存储桶不可用;响应于该确定,将第一数据对象写入另一存储桶;以及更新存储段的第一元数据中的第一映射以指示第一数据对象存储在另一存储桶中。
这些和其他具体实施可以各自任选地包括以下特征中的一者或多者:将第一数据对象写入另一存储桶还包括将第一数据对象写入第一目标存储段中的第二存储桶;更新第一元数据还包括更新第一目标存储段中的第一元数据,使得第一映射指示第一数据对象存储在第二存储桶中;确定第一目标存储段不可用;确定与第一目标存储段距离一跳的第二目标存储段;将第一数据对象写入另一存储桶还包括将第一数据对象写入第二目标存储段中的第二存储桶;更新第一元数据还包括更新第二目标存储段中的第一元数据,使得第一映射指示第一数据对象存储在第二存储桶中;确定第一目标存储段不可用;确定与第一目标存储段距离一跳的第二目标存储段;确定第二目标存储段不可用;确定与第二目标存储段距离一跳的第三目标存储段;将第二目标存储段中的第二存储桶中的第二数据对象重新定位到第三目标存储段中的第三存储桶以释放第二存储桶;更新第三目标存储段的第二元数据中的第二映射以指示第二数据对象存储在第三存储桶中;将第一数据对象写入另一存储桶还包括将第一数据对象写入第二目标存储段中的第二存储桶;以及更新第一元数据还包括更新第二目标存储段中的第一元数据,使得第一映射指示第一数据对象存储在第二存储桶中。
本文公开的技术提供了优于现有解决方案的许多优点和益处,包括但不限于:比其他存储网络和/或系统(诸如在背景技术中描述的那些)更可靠和/或更有效,提供具有避免或至少减少与读取未正确和/或准确映射在散列表中的数据对象相关联的可靠性和/或延迟有关的问题的功能的硬件和/或软件,以及消除或减少与将数据写入选择时可能不可用的选定存储位置的请求相关联的延迟问题。应当理解,通过示例的方式提供了前述优点和益处,并且该技术可以具有许多其他优点和益处。另外,应当理解,发明内容描述了本公开的主题的各种示例性方面,并且不旨在涵盖每个发明方面。
应当理解,本公开中使用的语言主要是出于可读性和指导目的而选择的,并不限制本文公开的主题的范围。
附图说明
本公开通过示例而非限制的方式在附图中示出,在附图中,类似的附图标记用于指相似的元件。
图1是用于存储数据的示例性计算网络的示意图;
图2A至图2C是可包括在图1的计算网络中的示例性计算节点的示意图;
图3A和图3B是示例性存储桶的示意图;
图4是示例性或有存储过程的流程图;
图5是示例性写入冲突解决过程的流程图;
图6是示例性溢出过程的流程图;
图7是将数据对象写入存储系统的示例性方法的框图;并且
图8A至图8C是从存储系统读取数据对象的示例性方法的示意图。
具体实施方式
本文公开的创新技术包括各种方面,诸如用于管理针对存储网络和/或系统中的数据对象的输入/输出(I/O)操作(诸如写入和读取操作)的系统、方法、装置、计算机可读介质、计算机程序产品等。
如本文进一步讨论的,下面公开的各种实施方案包括:当用于存储数据对象的选定存储位置可能不可用时,硬件和/或软件可以避免或减少与写入请求相关联的延迟问题。此外,本文公开的各种实施方案可以包括硬件和/或软件,以有利地增加存储网络和系统可靠性和/或减少与读取长期存储装置中的数据对象相关联的延迟问题。这些实施方案有利地比用于存储数据对象的一些先前存储网络和/或系统更有效和/或更可靠,诸如当数据对象可能未正确和/或准确地映射在散列表中时。
现在转到附图,图1是示例性计算网络100的示意图。计算网络100可以是已知或在未来开发并且能够使得多个计算设备和/或节点能够彼此通信和/或共享资源的任何合适类型的计算网络。在各种实施方案中,可以包括:云网络(IAN)、SAN(例如,存储区域网络、小区域网络、服务器区域网络、和/或系统区域网络)、广域网(WAN)、局域网(LAN)、无线局域网(WLAN)、城域网(MAN)、企业专用网(EPN)、虚拟专用网(VPN)和/或个域网(PAN)、以及本文中可能和预期的专用和/或公共计算网络和/或计算设备集合的其他示例。
此外,计算网络100可以包括已知或在未来开发并且能够使得多个计算设备和/或节点能够彼此通信和/或共享资源的任何合适的结构和/或拓扑。合适的结构和/或拓扑的示例包括但不限于交换结构拓扑、网状拓扑、星形拓扑、总线拓扑、环形拓扑和/或树形拓扑等,以及在本文中可能和预期的其他示例性结构和/或拓扑。
另外,计算网络100可以采用已知或在未来开发并且能够使得多个计算设备和/或节点能够彼此通信的任何合适类型的通信架构和/或协议。合适的通信架构和/或协议的示例包括但不限于InfiniBand(IB)、远程直接存储器访问(RDMA)、基于RDMA互联网协议(IP)的IB、传输控制协议/互联网协议(TCP/IP)、以太网、光纤信道(FC)、高级技术附件(ATA)、基于以太网的ATA(AoE)、并行ATA(PATA)、串行ATA(SATA)、小型计算机系统接口(SCSI)、互联网小型计算机系统接口(iSCSI)、光网络、网络文件系统(NFS)、基于IP的FC(FCIP)、非易失性存储器Express(NVMe)、基于RDMA的NVMe、针对RDMA的iSCSI扩展(iSER)、SCSI RDMA协议(SRP)、基于以太网的光纤信道(FCoE)、企业系统连接(ESCON)、光纤连接(FICON)、基于以太网的ATA(AoE)、和/或互联网光纤信道协议(IFCP)等,以及在本文中可能和预期的通信架构和/或协议及其组合的其他示例。
如图1所示,计算网络100可以包括可用于将多个计算节点104彼此耦接并在其间提供一个或多个通信路径和/或信道的一个或多个交换机102,以及其他部件。虽然本文描述的各种实施方案可以指代特定网络协议和/或类型,诸如包括交换结构拓扑的IB网络,但其他合适的结构/拓扑和/或通信架构/协议也是适用的。
交换机102可以包括已知或在未来开发的并且能够将计算设备、节点和/或交换机彼此耦接以在两个或更多个计算设备、节点和/或交换机之间创建通信路径和/或通信信道的任何类型的交换设备和/或系统。计算网络100可以包括任何数量的交换机102以在计算节点104之间创建一个或多个通信路径和/或通信信道,并且不限于图1所示的实施方案,其包括将六(6)个计算节点104彼此耦接的两个(2)交换机102。
计算节点104可以包括能够执行计算机过程、功能和/或算法的任何合适的计算硬件和/或软件。具体地,计算节点104可以被配置成传输RDMA操作以向/从另一个计算节点104中的存储器读取、写入、存储、传送、传播和/或传输指令、数据/数据对象、计算机程序、软件、代码、例程等。计算节点104的示例包括但不限于客户端设备/系统、对等设备/系统和/或计算服务器等,以及在本文中可能和预期的计算硬件和/或软件的其他示例。
作为其相应操作的一部分,一些计算节点104提供客户端设备,该客户端设备向一个或多个其他计算节点104(例如,存储设备/系统、计算服务器等)发送I/O请求诸如,RDMA操作以写入数据、读取数据和/或修改存储的数据。一般而言,计算节点104(例如,存储设备/系统、计算服务器等)可以由其他计算节点104访问,和/或可以利用一个或多个进程间联网技术通过流套接字(未示出)发起计算节点104之间的通信。
现在参考图2A,示出了示例性计算节点104a的示意图。如图所示,计算节点104a可以包括耦接到一个或多个存储器设备204a并与其通信的一个或多个控制器202a,以及其他部件。控制器202a可以包括已知或在未来开发的并且能够执行计算机进程、功能和/或算法,尤其是传输I/O请求和/或进行I/O操作(如本文其他地方所讨论的任何处理硬件和/或软件)。
存储器设备204a可以包括已知或在未来开发的并且能够存储可经由I/O操作读取、写入和/或修改的数据的任何类型的非暂态硬件。在各种实施方案中,存储器设备204a可以存储散列表206a的至少一部分,该散列表可以用于定位数据对象在一个或多个计算节点104中存储的位置。
散列表206a可以包括具有数据结构的数据的任何集合、集、高速缓存、树、表、数据库、索引和/或阵列,该数据结构可提供一个或多个计算节点104中的存储数据对象集的一个或多个位置的映射。在各种实施方案中,散列表206a可以将键分配给每个相应存储段中的每个相应存储桶。键可以用于帮助确定存储在计算网络100中的特定数据对象的位置或地址。也就是说,键可以用于识别存储特定数据对象的计算节点104、存储段和/或存储桶。
在一些实施方案中,散列表206a可以将键映射到数据对象值并使用散列函数来计算到存储桶或存储时隙的集合或阵列中的索引,根据该索引可以计算期望数据对象的数据对象值。可以将所计算的数据对象值与对应于一个或多个存储桶的键进行比较,并且当期望数据对象的所计算的数据对象值与特定存储桶的键彼此匹配时,可以确定期望数据对象的位置/地址。
计算网络100的一些实施方案可以提供分布式散列表206b,如图2B所示。图2B是类似于上面参考图2A讨论的计算节点104a的示例性计算节点104b的示意图,该示例性计算节点可以包括耦接到一个或多个存储器设备204b并与其通信的一个或多个控制器202b,以及其他部件。如图2A和图2B所示,散列表206a的第一部分可以存储在计算节点104a中,并且散列表206b的第二部分可以存储在计算节点104b中,使得散列表(统称为散列表206)分布在多个计算节点104a、104b等上。
虽然图2A和图2B示出了散列表206分布在两(2)个计算节点104之间,但计算网络100的各种其他实施方案可以使散列表206分布在多于两个计算节点104之间。也就是说,计算网络100可以使散列表206分布在任意数量的计算节点104之间,并且不限于将散列表206存储在单个计算节点104上或分布在两个计算节点之间,分别如图2A以及图2A和图2B的组合所示。
在各种实施方案中,散列表(例如,206a和/或206b)的一部分可以提供对以下各项的映射:存储在供散列表206a/206b的部分驻留的计算节点104上的数据对象的存储位置或地址,存储在散列表206a/206b的部分未驻留的计算节点104上的数据对象的存储位置或地址,和/或两者。另外,散列表206a/206b的部分可以相同或不同地配置。在一些实施方案中,散列表206a可以提供对存储在计算节点104a上的数据对象的存储位置或地址的映射,并且散列表206b可以提供对存储在计算节点104a和104b上的数据对象的存储位置或地址的映射。在另外的实施方案中,散列表206a可以提供对存储在计算节点104b上的数据对象的存储位置或地址的映射,并且散列表206b可以提供对存储在计算节点104a上的数据对象的存储位置或地址的映射。在另外的实施方案中,散列表206a可以提供对存储在计算节点104a和104b上的数据对象的存储位置或地址的映射,并且散列表206b可以提供对存储在计算节点104a上的数据对象的存储位置或地址的映射。另外,散列表206a可以提供对存储在计算节点104a上的数据对象的存储位置或地址的映射,并且散列表206b可以提供对存储在计算节点104b上的数据对象的存储位置或地址的映射。除此之外或另选地,散列表206a可以提供对存储在计算节点104b上的数据对象的存储位置或地址的映射,并且散列表206b可以提供对存储在计算节点104a上的数据对象的存储位置或地址的映射。在一些实施方案中,散列表206a可以提供对存储在计算节点104a和104b上的数据对象的存储位置或地址的映射,并且散列表206b还可以提供对存储在计算节点104a和104b上的数据对象的存储位置或地址的映射。
现在参考图2C,示出了示例性计算节点104n。如图所示,计算节点104n可以包括一个或多个控制器202n、可包括散列表206n的至少一部分的一个或多个存储器设备204n、经由有线和/或无线总线210彼此耦接并彼此通信的多个存储设备208a到208n(也可简单地在各个组中单独提及,或统称为一个或多个存储设备208),以及其他部件。一个或多个控制器202n、一个或多个存储器设备204n和散列表206n可以分别类似于本文其他地方讨论的控制器202、存储器设备204和一个或多个散列表206。
在计算节点104n的一些实施方案(诸如计算节点104)中,计算节点104可以从远程源访问数据对象和/或散列表206。例如,代替在本地存储数据或为了补充本地存储的数据,计算节点104n可以远程地检索数据。
存储设备208可以是已知或在将来开发并且能够存储数据和/或数据对象的任何类型的存储设备。在各种实施方案中,存储设备208可以包括一个或多个非暂态计算机可用(例如,可读取、可写入、可修改等)介质,其可以包括可包含、存储、传送、传播和/或传输指令、数据、计算机程序、软件、代码、例程等,以用于通过计算机处理设备处理或与计算机处理设备连接的任何非暂态和/或持久性的装置或设备。
在各种实施方案中,存储设备208可以实现为闪存存储器(例如,固态设备(SSD)或存储持久数据的另一非易失性存储设备或持久性存储设备)。在另外的实施方案中,存储设备208可以包括非暂态存储器,例如,动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、硬盘驱动器(HDD)和/或存储带(例如,磁性和/或虚拟)、以及其他类型(例如,非易失性和/或持久性)的存储器设备。在各种实施方案中,存储设备208可以是相同类型的存储设备,或者至少两个存储设备208可以是不同类型的存储设备。
另外,存储设备208可以包括用于将其物理存储空间划分和/或分割成两个或更多个较小存储单元的硬件和/或软件,这些较小存储单元在本文中可以称为存储段。存储设备可以包括任何数量的存储段,并且每个存储段中提供的空间量可以是相同的空间量,或者至少两个存储段可以包括不同的存储空间量。
存储段中的物理空间可以被划分和/或分割成两个或更多个较小的存储单元,其在本文中可以称为存储桶。存储段可以被划分/分割成任意数量的存储桶,并且存储桶可以包括用于存储被分组在一起的数据的结构,该数据在本文中可以被称为数据对象。在一些实施方案中,一个或多个存储段可以被划分/分割以包括用户配置数量的桶(例如,约256个、512个、1024个存储桶等),但其他变化和/或数量在本文中是可能和预期的。
存储桶可以存储数据对象或数据对象的至少一部分,并且可以包括任何大小或提供任何的存储空间量。在一些实施方案中,存储桶可以包括用户配置大小,诸如大小为256、512、1024等字节,但其他配置变化和/或数量在本文中是可能和预期的。每个存储桶中提供的空间量可以是相同的空间量,或者至少两个存储桶可以包括不同的存储空间量。
另外,存储桶可以存储键,该键可提供数据、数据对象和/或存储在其中的部分的表示,并且可包括任何大小或数量的数据。在一些实施方案中,键可以包括约256位(32字节)的大小,但其他大小在本文中是可能和预期的。
参考图3A,示出了示例性存储桶300a。如图所示,存储桶300a可以包括给定大小(大小Z),并且可以存储标头数据320a以及一个或多个数据对象或一个或多个数据对象的部分。标头数据320a可以包括描述数据对象308和/或存储桶300a的各种数据。例如,标头数据320a可以包括具有第一大小(大小A)的大小数据302、具有第二大小(大小B)的循环冗余校验(CRC)代码304、具有第三大小(大小C)的键数据306,尽管许多其他变化也是可能的和预期的。在非限制性示例中,大小数据302可以包括在约九(9)位到约八(8)字节的范围内的大小,CRC代码304可以包括约三十二(32)字节的大小,并且键数据306可以包括约三十二(32)字节的大小。在该示例中,数据对象308填充存储桶300a的剩余部分。
如图所示,存储桶300a包括允许数据对象308完全存储在存储桶300a内的大小,并且因此,数据对象308可以被认为是相对较小的数据对象。虽然大小数据302、CRC代码304、键数据306和数据对象308被讨论为包括一个和/或多个大小的特定范围,但存储桶300a不限于一个和/或多个大小的此范围。也就是说,存储桶300a的各种其他实施方案可以针对大小数据302、CRC码304、键数据306和/或数据对象308利用一个和/或多个大小的其他可能范围,其中上述每一者在本文中是预期的。
参考图3B,示出了示例性存储桶300b。如图所示,存储桶300b可以包括给定大小(大小Z),并且可以存储标头数据320b以及一个或多个数据对象或一个或多个数据对象的部分。标头数据320b可以包括描述数据对象308和/或存储桶300b的各种数据。例如,标头数据320a可以包括具有第一大小(大小A)的大小数据302、具有第二大小(大小B)的CRC代码304、以及具有第三大小(大小C)的键数据306,类似于存储桶300a,尽管许多其他变化也是可能的和预期的。如图所示,在该示例中,存储桶300a包括不允许数据对象310完全存储在存储桶300b内的大小,并且因此,数据对象310可以被认为是相对较大的数据对象。
除此之外或另选地,存储桶300b的标头数据320b可以包括位置映射312,该位置映射识别存储数据对象310的一个或多个剩余部分的一个或多个其他存储桶,这些存储桶存储数据对象310的一个或多个其他剩余部分。作为另一个示例,数据对象310可以被划分成存储在不同存储桶300中的多个部分(第一部分、第二部分等)。存储桶300b可以存储第一部分,并且位置映射312可以识别其中存储其他部分(例如,第二部分等)的存储桶300。位置映射312可以具有填充存储桶300b的一部分的特定数据大小(大小D)。作为进一步的非限制性示例,位置映射312可以包括约六十四(64)字节的数据大小,但其他数据大小在本文中是可能和预期的。另外,在一些实施方案中,位置映射312可以被认为是包括存储桶300b的存储段的元数据的至少一部分,并且可以用于帮助定位数据对象310的一个或多个部分,如本文其他地方讨论的。
如上所述,虽然大小数据302、CRC代码304、键数据306、数据对象310和位置映射312被讨论为包括一个和/或多个大小的特定范围,但存储桶300b不限于一个和/或多个大小的此范围。也就是说,存储桶300b的各种其他实施方案可以针对大小数据302、CRC码304、键数据306、数据对象310和/或位置映射312利用一个和/或多个大小的其他可能范围,上述每一者在本文中是预期的。
在各种实施方案中,一个或多个存储段可以包括/存储提供与其存储桶相关的信息的元数据。元数据可以存储在特定存储段的任何存储桶中。在一些实施方案中,元数据可以存储在第一物理存储桶或逻辑位置中,以及本文预期的其他可能位置中。
在一些实施方案中,元数据可以包括存储段中的每个存储桶的状态数据。状态数据可以提供存储桶当前是否正在存储数据的指示。在一些实施方案中,状态数据可以包括位映射,其中“1”指示存储桶正在存储数据,并且“0”指示存储桶是空的,反之亦然。例如,包括五百一十二(512)个存储桶的存储段的状态数据可以包括约五百一十二(512)位(64字节)的大小,因为位映射可以为每个存储桶提供一(1)位。
元数据还可以包括写入锁定特征,该写入锁定特征在存储段中进行一个或多个读取操作时防止存储段中的存储桶被写入。写入锁定可以包括约六十四(64)位(8字节)的数据大小,但其他数据大小在本文中是可能和预期的。
在各种实施方案中,元数据可以提供针对存储在每个相应存储桶中的数据对象的键的映射(例如,键映射)。在各种实施方案中,存储在元数据中的键可以各自包括约十六(16)位(2字节)的大小,但其他大小在本文中是可能和预期的。例如,虽然存储在存储桶中的键可以包括第一大小(例如,预定义的、用户配置的等,诸如32字节的大小等),但与存储桶中的键对应的元数据中的键可以包括第二大小(例如,预定义的、用户配置的等,诸如2字节大小等),尽管其他值也是可能的和预期的。
取决于每个存储段的内容和/或特征,各个存储段可以包括不同量和/或大小的元数据。例如,包括五百一十二(512)个存储桶的存储段的元数据可以包括约一千零九十六(1096)字节的大小(例如,对于位映射有64字节,对于写入锁定特征有8字节,并且对于键映射有1024字节),但应当理解,存储桶、位映射、写入锁和/或键映射等的这些特定值是作为示例提供的,并且可以基于用例、需要、系统要求、能力等应用其他值(例如,基于各种要求的用户配置的、预定义的等)。
参考图1到图2C,一个或多个计算节点104可以使用合适的RDMA协议来直接访问一个或多个其他远程计算节点104中的资源。示例性RDMA协议可以包括但不限于虚拟接口架构(VIA)、InfiniBand RDMA、基于聚合以太网的RDMA(RoCE)、基于RDMA的非易失性存储器Express(RDAM上NVMe)、用于RDAM的iSCSI扩展(iSER)、SCSI RDMA协议(SRP)和互联网广域RDMA协议(iWARP)等,尽管其他RDMA协议在本文中是可能和预期的。
在一些实施方案中,计算节点104的控制器202可以通过在一个或多个其他计算节点104上进行RDMA操作(例如,RDMA写入操作和/或RDMA读取操作)来直接访问数据而不涉及一个或多个其他计算节点104中的控制器202。在一些实施方案中,一个或多个计算节点104可以访问计算节点104n中的一个或多个存储设备208(参见图2C),以将数据对象写入一个或多个存储设备208,从一个或多个存储设备读取数据对象,和/或进行与将数据对象写入/读取到一个或多个存储设备相关的其他I/O操作。除此之外或另选地,一个或多个计算节点104可以直接访问一个或多个其他计算节点104中的存储器,以将数据写入散列表206和/或其部分,从其读取数据,和/或进行与在其上写入/读取数据相关的其他I/O操作。例如,计算节点104a中的一个或多个控制器202a(参见图2A)可以进行RDMA操作,以将数据对象直接写入一个或多个存储设备208(参见图2C),从一个或多个存储设备读取数据对象,和/或进行与在一个或多个存储设备上写入/读取数据对象相关的其他I/O操作,并且还可以结合在计算节点104n上进行的RDMA操作来进一步进行RDMA操作,作以在计算节点104b(参见图2B)中的散列表206b上直接读取、写入/更新,和/或进行其他I/O操作。
发起I/O操作的计算节点104(例如,源计算节点)可以利用RDMA写入操作来将数据对象直接写入计算节点104(例如,计算节点104n)中的存储设备208,更新映射数据对象的存储位置的散列表206,和/或更新存储段中的元数据,该元数据将存储在其中的数据对象的键映射到存储与每个键对应的数据对象的存储桶。另外,RDMA操作可以允许源计算节点104利用RDMA读取操作以便从计算节点104(例如,计算节点104n)中的存储设备208直接读取数据对象,读取散列表206,和/或读取存储段中的元数据。各种RDMA操作可以对数据对象执行散列函数,以确定其中可存储数据对象的特定存储段中的存储桶,其可以分别被称为目标存储桶和目标存储段。
一些RDMA写入操作可以更新散列表206,使得数据对象基于散列函数被映射到目标存储桶,该映射可以在数据对象(例如,经由RDMA写入操作)被实际写入可能不是目标存储桶的存储桶之前发生。进一步的RDMA写入操作可以将数据对象直接写入存储桶。在将数据对象写入存储桶之后,一些RDMA操作可以生成数据对象的键,用所生成的键更新存储段中的元数据,并且将所生成的键与存储数据对象的存储桶相关联。
在一些情况下,目标存储段中的目标存储桶当前可以具有映射到它的另一个数据对象或其部分,这使得目标存储桶不可用于存储新数据对象。为了解决这种情况,一些RDMA操作可以包括在或有存储过程400中,如图4所示。
一些或有存储过程400可以开始于源计算节点104发出的RDMA读取操作,其读取目标存储段的元数据中的位映射(Tl)(其可位于存储段402的第一存储桶中)以确定可用的替代存储桶。如本文其他地方所讨论的,位映射可以指示目标存储段中的每个存储桶的可用性状态,并且可以用于确定用于存储数据对象的新的或替代的存储桶。在RDMA读取操作确定可用的替代存储桶之后,从源计算节点104发出的RDMA写入操作可以将数据对象直接写入替代存储桶(T2)。
有时,RDMA写入操作被引导到的目标存储段502(参见图5)可能不可用(例如,目标存储段已满、基本满的、离线的等,或者以其他方式不可用)。为了解决这种类型的情况,一些RDMA操作可被包括在写入冲突解决过程500中,如图5所示。
在各种实施方案中,写入冲突解决过程500可以包括从源计算节点104发出的RDMA操作,其确定数据对象可以被写入到的另一个存储段(T1),该存储段在本文中可以称为下一个存储段504。在各种实施方案中,RDMA操作可以通过利用用于确定目标存储段502的散列函数来重新散列化数据对象,从而确定下一个存储段504。下一个存储段504可以包括存储设备208中的任何可用存储段,并且可能不一定是相对于特定存储段的下一个顺序地或物理上相邻的存储段。在一些实施方案中,下一个存储段504可以包括相对于特定存储段的下一个逻辑存储段。
写入冲突解决过程可以继续进行从源计算节点104发出的RDMA写入操作,其直接将引导到不可用目标存储段502的数据对象写入目标存储段的下一个存储段504的目标存储桶(T2)。在各种实施方案中,如果下一个存储段504中的目标存储桶具有映射到其的数据对象或其部分,则可以执行或有存储过程400(T3)。
在各种实施方案中,计算系统100的存储参数可以阻止写入冲突解决过程将数据对象写入位于超出下一个存储段、相距多于一个存储段或与目标存储段距离多于一跳的存储段。有时,目标存储段及其下一个存储段可能都不可用,这在一个或多个存储参数阻止将数据对象写入比距目标存储段一跳更远时可能出现问题。为了解决这种情况,一些RDMA操作可被包括在溢出过程600中,其示例在图6中描绘。
如图6所示,存储段602可以是目标存储段,存储段604可以是相对于存储段602的下一个存储段,并且存储段606可以是相对于存储段604的下一个存储段。响应于RDMA操作确定目标存储段和下一个存储段(例如,在该示例中分别为存储段602和604)都不可用(例如,已满、离线等)(T1),溢出过程600中的RDMA操作可以识别存储在存储段604(例如,该示例中相对于存储段602的下一个存储段)中的未从存储段602重新定位到存储段604的一个或多个数据对象和/或其部分(T2)。例如,溢出过程600可以在下一个存储段中识别存储在其原始或目标存储段中的一个或多个数据对象和/或其部分(例如,其中存储段604是目标存储段的一个或多个数据对象和/或一个或多个部分)。
RDMA写入操作可以将存储段604中的识别的一个或多个数据对象和/或一个或多个部分重新定位或写入到与下一个存储段距离一跳的存储段(例如,在该示例中为存储段606)中(T3),其可以被视为相对于目标存储段的下一个存储段、或相对于目标存储段的下下个存储段。源计算节点104可以通过发出RDMA操作来继续溢出过程600(例如,T2和T3处的操作),直到下一个存储段能够存储数据,诸如,具有可用存储空间(例如,未满)或经由将一个或多个数据对象和/或一个或多个部分写入其下一个存储段而可以使其内存储空间可用的存储段最终被识别(T4)。另外,各种RDMA操作可以将每个中间的下一个存储段中的一个或多个数据对象和/或一个或多个部分重新定位或写入其相应的下一个存储段以释放相应的存储空间,使得来自先前存储段的一个或多个数据对象和/或一个或多个部分可能以链接回的方式占用相应的一个或多个释放存储空间。这有利地提供了以存储段602为目标的数据对象最终可以存储在存储段604中。在一些实施方案中,溢出过程600可以限制迭代次数,其可以是任何数量和/或等于存储设备208中的存储段的数量。
在使存储空间在存储段604中可用之后,RDMA写入操作可以将数据对象写入存储段604(例如,相对于存储段602的下一个存储段)中的一个或多个存储桶(例如,图3A/3B中的300a/300b)(T5)。溢出过程600可以有效地释放一个或多个下一个存储段中的存储空间,使得先前存储段中的数据对象可以溢出到它们各自的一个或多个下一个存储段。有利地,在该示例中,最终可以将以不可用存储段为目标的数据对象写入存储设备。
写入冲突解决过程500和/或溢出过程600的各种实施方案可能以数据对象为目标以基于数据对象的一个或多个特性来进行重新定位。在一些实施方案中,在重新定位数据对象时,在选择相对较小的数据对象之前,可以选择相对较大的数据对象以用于重新定位,以便释放更大量的存储空间。
重新参考图1至图2C,来自源计算节点104的RDMA操作(例如,RDMA读取操作)可以用于识别和/或直接读取来自另一个计算节点104(例如,计算节点104n)的数据对象。在各种实施方案中,RDMA操作可以对散列表206执行散列函数,该散列表可以位于相同或另一个计算节点104上以生成散列键,该散列键可以用于帮助识别目标数据对象的存储位置。在一些实施方案中,散列键可以包括文件名、值等,或者已知或可以开发并且能够识别数据对象的其他类型的标识符。另外,散列键可以用于识别目标存储设备208的目标存储段内的目标存储桶,该目标存储桶可以存储或不存储目标数据对象,如下面进一步讨论的。
各种RDMA操作可以被进一步引导到目标存储桶,并且将目标数据对象的散列键与存储在目标存储桶中的数据对象或其部分的键进行比较。如果该散列键与存储在目标存储桶中的数据对象或其部分的键匹配,则一些RDMA操作可以进一步确定存储在目标存储桶中的数据对象或其部分是目标数据对象,并且然后可以直接将数据对象读取到源计算节点104。因此,当目标数据对象存储在由散列键识别的目标存储桶中时,可以使用单个RDMA操作来定位和读取目标数据对象,这是基于针对存储在散列表206中的目标数据对象的键的散列函数的计算。
如果该散列键与存储在目标存储桶中的数据对象或其部分的键不匹配,则一些RDMA操作可以确定存储在目标存储桶中的数据对象或其部分不是目标数据对象。各种RDMA操作可以进一步通知源计算节点104可能需要一个或多个附加RDMA操作来定位和/或读取目标数据对象。
可以将附加RDMA操作引导到目标存储段的元数据以读取键映射中的键(例如,双字节键),以便确定键中的一个是否与从散列表206计算的散列键匹配。当键映射中的键中的一个与从散列表206计算的散列键匹配时,附加RDMA操作可以进一步确定存储在与匹配键对应的存储桶中的数据对象是目标数据对象,并且向源计算节点104通知存储目标数据对象的目标存储段中的存储桶的标识。源计算节点104可以发出另一个附加的RDMA操作,以从目标存储段中所识别的存储桶读取目标数据对象。因此,可以使用三(3)个RDMA操作来识别和读取位于目标存储段的并非由散列键识别的目标存储桶的存储桶中的目标数据对象。
当键映射中的键中没有一个与从散列表206计算的散列键匹配时,各种附加的RDMA操作可以确定目标数据对象存储在下一个存储桶中的存储桶中。另外,一些附加的RDMA操作可以向源计算节点104通知可能需要一个或多个另外的附加RDMA操作,以便定位和/或读取来自相对于目标存储段的下一个存储段的目标数据对象。
一些另外的附加RDMA操作可以识别相对于目标存储段的下一个存储段,并且可以被引导到下一个存储段的元数据。另外的附加RDMA操作可以读取元数据的键映射中的键(例如,双字节键)以便确定键中的一个是否与从散列表206计算的散列键匹配。当下一个存储段的键映射中的键中的一个与从散列表206计算的散列键匹配时,另外的附加RDMA操作可以进一步确定存储在与匹配键对应的存储桶中的数据对象是目标数据对象,并且向源计算节点通知存储目标数据对象的下一个存储段中的存储桶的标识。源计算节点104可以发出另一个进一步附加的RDMA操作,以从下一个存储段中的所别的存储桶读取目标数据对象。因此,可以使用五(5)个RDMA操作来识别和读取位于下一个存储段的存储桶中的目标数据对象。在一些实施方案中,如果下一个存储段的元数据中没有一个键与散列键匹配,则另外的附加RDMA操作可以向源计算节点104通知目标数据对象未存储在存储设备208中。
参考图7,示出了用于将数据对象写入存储设备的示例性方法700。如图所示,方法700可以开始于源计算节点104(例如,经由RDMA操作)对第一数据对象执行散列函数以确定其中可存储第一数据对象的第一目标存储段中的第一存储桶(框702)。
在一些实施方案中,源计算节点104可以(例如,经由RDMA操作)确定目标存储桶是否可用(框704),这可以使用位映射来确定,如本文中其他地方所讨论的。如果目标存储桶可用(例如,是),则源计算节点104可以(例如,经由RDMA操作)将第一数据对象写入到目标存储桶(框706)。
如果目标存储桶不可用(例如,否),则源计算节点104可以(例如,经由RDMA和位映射)确定目标存储段中的另一存储桶是否可用(框708)。如果另一存储桶可用(例如,是),则源计算节点104可以(例如,经由RDMA操作)将第一数据对象写入到其他存储桶(框710)。
如果另一存储桶不可用(例如,否),则源计算节点可以(例如,经由RDMA操作)确定相对于目标存储段距离一跳的下一个存储段是否可用(框712)。如果下一个存储段可用(例如,是),则源计算节点104可以(例如,经由RDMA操作)将第一数据对象写入到下一个存储桶中的存储桶(框714)。
如果下一个存储段不可用(例如,否),则源计算节点104可以(例如,经由RDMA操作)确定相对于下一个存储段距离一跳的后续下一个存储段是否可用(框716)。如果后续下一个存储段可用(例如,是),则源计算节点104可以(例如,经由RDMA操作)将下一个存储段中的第二数据对象重新定位或写入到后续下一个存储位置(框718),并且将第一数据对象(例如,经由RDMA操作)写入到通过重新定位第二数据对象而释放的存储桶(框714)。
如果后续下一个存储段不可用(例如,否),则方法700可以针对每个后续下一个存储段返回到框716,直到存储段经由将一个或多个数据对象和/或其部分重新定位到其下一个存储段而可用或可变得可用,并且在任何中间的不可用存储段中的一个或多个数据对象和/或其部分可能以链接回方式写入其相应下一个存储段,直到第一数据对象被写入相对于目标存储段的下一个存储段(返回720)。也就是说,可以释放相对于目标存储段的下一个存储段中的一个或多个存储桶,使得数据对象最终可以存储在相对于目标存储段的下一个存储段中。
现在参考图8,示出了从存储设备读取数据对象的示例性方法800。如图所示,方法800可以开始于源计算节点104发出RDMA操作以从存储设备208读取目标数据对象(框802)。主机计算节点104可以(例如,经由RDMA操作)计算目标对象上的第一散列键(框804),并且基于第一散列键和由散列表206提供的映射(例如,经由RDMA操作)来识别目标存储段中的目标存储桶(框806)。
源计算节点104可以(例如,经由RDMA操作)读取存储在目标存储桶中的数据对象的数据对象键(框808)。从源计算节点发出的RDAM操作可以比较数据对象键与第一散列键(框810)以(例如,经由RDMA操作)确定它们是否匹配(框812)。如果存在匹配(例如,是),则源计算节点104可以(例如,经由RDMA操作)从目标存储桶读取目标数据对象(框814)。
如果没有匹配(例如,否),则源计算节点104可以(例如,经由RDMA操作)读取与存储在目标存储段的存储桶中的数据对象的数据对象键对应的元数据键(框816),并且(例如,经由RDMA操作)比较元数据键与第一散列键(框818)以确定是否存在匹配(框820)。在一些实施方案中,元数据键包括用户配置数量的数据字节(例如,两个字节等),并且数据对象键包括用户配置数量的数据字节(例如,三十二个字节等),以及在本文其他地方讨论的其他示例。如果存在匹配(例如,是),则源计算节点104可以(例如,经由RDMA操作)从目标存储段中的另一存储桶读取数据对象(框822)。
如果不存在匹配(例如,否),则源计算节点104(例如,经由RDMA操作)可以基于用于识别目标存储桶的数据对象键来计算数据对象的第二散列键(框824)。源计算节点104可以使用第二散列键(例如,经由RDMA操作)来识别第二目标存储桶,该第二目标存储桶位于与目标存储段距离一跳的下一个存储段中(框826)。
可以由源计算节点104(例如,经由RDMA操作)读取下一个存储段中的第二存储桶的数据对象键(框828),并且(例如,经由RDMA操作)比较该数据对象键与第一散列键(框830)以确定是否存在匹配(框832)。如果存在匹配(例如,是),则源计算节点104可以(例如,经由RDMA操作)从位于下一个存储段中的第二目标存储桶读取数据对象(框834)。
如果不存在匹配(例如,否),则源计算节点104可以(例如,经由RDMA操作)读取与存储在下一个存储段的存储桶中的数据对象的数据对象键对应的元数据键(框836),并且(例如,经由RDMA操作)比较元数据键与第一散列键(框838)以确定数据对象是否存储在下一个数据对象段中(框840)。如果存在匹配(例如,是),则源计算节点104可以(例如,经由RDMA操作)从下一个存储段中的另一存储桶读取数据对象(框842)。如果不存在匹配(例如,否),则源计算节点104可以确定数据对象未存储在存储设备208和/或计算节点(例如,计算节点104n)中。
尽管在本技术的前述详细描述中已经呈现了至少一个示例性实施方案,但应当理解,可存在大量变化。还应当理解,一个或多个示例性实施方案是示例,并且不旨在以任何方式限制技术的范围、适用性或配置。相反,前面的详细描述将为本领域技术人员提供用于实现本技术的示例性实施方案的便利指导方针,应当理解,在不脱离如所附权利要求及其合法等同物所阐述的技术范围的情况下,可以对示例性实施方案中描述的元件的功能和/或布置进行各种修改。
如本领域普通技术人员将理解的,本技术的各个方面可以体现为系统、方法、或计算机程序产品。因此,本技术的一些方面可以采取完全为硬件的实施方案、完全为软件的实施方案(包括固件、驻留软件、微代码等)、或硬件和软件方面的组合的形式,这些方面通常都可以在本文中称为电路、模块、系统和/或网络。此外,本技术的各个方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,包括在其上体现的计算机可读程序代码。
可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或物理计算机可读存储介质。例如,物理计算机可读存储介质可以是但不限于电子、磁性、光学、晶体、聚合物、电磁、红外或半导体系统、装置或设备等,或前述的任何合适组合。物理计算机可读存储介质的非限制性示例可以包括但不限于包括一个或多个电线的电连接、便携式计算机磁盘、硬盘、RAM、ROM、EPROM、EEPROM、闪存存储器、光纤、CD-ROM、光学处理器、磁处理器等,或前述的任何合适的组合。在本文档的上下文中,计算机可读存储介质可以是可包含或存储用于供指令执行系统、装置、和/或设备使用或与其结合的程序或数据的任何有形介质。
计算机可读介质上体现的计算机代码可以使用任何适当的介质来传输,包括但不限于无线、有线、光纤电缆、射频(RF)等,或者前述的任何合适组合。用于进行本技术的各方面的操作的计算机代码可以用任何静态语言编写,诸如C编程语言或其他类似的编程语言。计算机代码可以完全在用户的计算设备上执行,部分在用户的计算设备上执行,作为独立的软件包,部分在用户的计算设备上并且部分在远程计算设备上执行,或者完全在远程计算设备或服务器上执行。在后一种情况下,远程计算设备可以通过任何类型的网络或通信系统连接到用户的计算设备,包括但不限于,可以对外部计算机(例如,通过使用互联网服务提供商的互联网)建立局域网(LAN)或广域网(WAN)、聚合网络或连接。
以上可以参考方法、装置、系统和计算机程序产品的流程图图示和/或框图来描述本技术的各方面。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由计算机程序指令实现。可以将这些计算机程序指令提供给通用计算机、专用计算机、或其他可编程数据处理装置的处理设备(处理器)以生产机器,使得可经由处理设备或其他可编程数据处理装置执行的指令创建用于实现在流程图和/或框图的一个或多个框中指定的操作/动作的装置。
一些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以指示计算机、其他可编程数据处理装置或一个或多个其他设备以特定方式操作,使得指令存储在计算机可读介质中以产生包括实现在流程图和/或框图的一个或多个框中指定的操作/动作的指令的制品。一些计算机程序指令也可以被加载到计算设备、其他可编程数据处理装置、或一个或多个其他设备上,以致使在计算设备、其他可编程装置、或一个或多个其他设备上执行一系列操作步骤以产生计算机实现的过程,使得由计算机或其他可编程装置执行的指令提供用于实现在流程图和/或框图的框中指定的一个或多个操作/一个或多个动作的一个或多个过程。
以上附图中的流程图和/或框图可以示出根据本技术的各方面的装置、系统、方法和/或计算机程序产品的可能具体实施的架构、功能和/或操作。在这方面,流程图或框图中的框可以表示代码的模块、片段或部分,其可以包括用于实现一个或多个指定逻辑功能的一个或多个可执行指令。还应当指出,在一些另选的方面中,框中示出的一些功能可以不按图中所示的顺序发生。例如,事实上,连续示出的两个框可基本上同时执行,或者这些框有时可以采用相反的顺序执行,这取决于所涉及的操作。还应当注意,框图和/或流程图图示的框或框图和/或流程图图示中的框的组合可以由可进行一个或多个指定操作或动作的基于专用硬件的系统,或专用硬件和计算机指令的组合来实现。
虽然已经详细说明和讨论了本技术的一个或多个方面,但本领域普通技术人员将理解,在不脱离如所附权利要求中阐述的本技术的范围的情况下,可以对各个方面进行修改和/或调整。

Claims (19)

1.一种存储网络,包括:
第一节点,所述第一节点能够耦接到第二节点,其中所述第二节点包括一组非易失性存储器设备,所述一组非易失性存储器设备包括被划分成多个存储桶以存储数据对象的一组存储段,所述第一节点包括控制器,所述控制器能够被执行以进行和所述第二节点上的远程直接存储器访问操作即RDMA操作关联的操作,并且所述控制器被配置为:
与单个RDMA操作相关联地执行第一组操作,所述第一组操作包括:
对第一目标数据对象应用第一散列函数以计算所述第一目标数据对象的第一散列键;
基于所述第一散列键和散列表的第一映射来识别所述第二节点中的针对所述第一目标数据对象的第一目标存储桶;
读取存储在所述第一目标存储桶中的第一数据对象的第一数据对象键;
比较所述第一数据对象键与所述第一散列键以确定匹配;
响应于所述第一数据对象键与所述第一散列键匹配,确定所述第一数据对象是所述第一目标数据对象;
响应于所述确定所述第一数据对象是所述第一目标数据对象,从所述第一目标存储桶读取所述第一目标数据对象;
响应于所述第一数据对象键与所述第一散列键不匹配,确定所述第一数据对象和所述第一目标数据对象是不同的数据对象;以及
响应于确定所述第一数据对象和所述第一目标数据对象是不同的数据对象,执行包括以下项的操作:
读取针对包括所述第一目标存储桶的第一组存储桶的第一元数据;以及
比较所述第一散列键与所述第一元数据,以识别存储所述第一目标数据对象的所述第一组存储桶中的第一替代存储桶。
2.根据权利要求1所述的存储网络,其中:
第一存储段包括所述第一元数据以及所述第一组存储桶;以及
所述第一组存储桶包括所述第一替代存储桶。
3.根据权利要求1所述的存储网络,其中所述控制器还被配置为执行第二组操作,其包括:
对第二目标数据对象应用第二散列函数以计算所述第二目标数据对象的第二散列键;
基于所述第二散列键和所述第一映射来识别所述第二节点中的针对所述第二目标数据对象的第二目标存储桶;
读取存储在所述第二目标存储桶中的第二数据对象的第二数据对象键;
比较所述第二数据对象键与所述第二散列键以确定匹配;
响应于所述第二数据对象键与所述第二散列键不匹配,确定所述第二数据对象和所述第二目标数据对象是不同的数据对象;以及
响应于确定所述第二数据对象和所述第二目标数据对象是不同的数据对象,读取所述第一元数据以识别存储所述第二目标数据对象的所述第一组存储桶中的所述第一替代存储桶,其中:
第一存储段包括所述第一元数据和所述第一组存储桶,并且所述第一组存储桶包括所述第二目标存储桶。
4.根据权利要求3所述的存储网络,其中:
所述第一元数据基于存储在所述第一组存储桶中的第一数据对象的第一数据对象键提供第一组元数据键的第二映射;并且
读取所述第一元数据还包括:
读取所述第一组元数据键;
比较所述第一组元数据键与所述第二散列键以确定匹配;
响应于与存储在所述第一替代存储桶中的第三数据对象的第三数据对象键对应的第一元数据键与所述第二散列键匹配,确定所述第二目标数据对象存储在所述第一替代存储桶中;并且
响应于确定所述第二目标数据对象存储在所述第一替代存储桶中,从所述第一替代存储桶读取所述第二目标数据对象。
5.根据权利要求4所述的存储网络,其中:
所述第一存储段包括第一用户配置数量的桶;
所述第二目标存储桶包括第二用户配置数量的字节;
第二数据对象键包括第三用户配置数量的字节;并且
所述第二映射包括第四用户配置数量的字节。
6.根据权利要求4所述的存储网络,其中所述控制器与三个远程直接存储器访问操作相关联地进行所述第一组操作和所述第二组操作。
7.根据权利要求4所述的存储网络,其中所述第二组操作还包括:
响应于所述第二散列键与所述第一组元数据键中的任何一个不匹配:
对所述第二数据对象键应用第三散列函数以计算所述第二目标数据对象的第三散列键;以及
基于所述第三散列键来识别第二存储段中的第三目标存储桶。
8.根据权利要求7所述的存储网络,其中所述第二组操作还包括:
读取存储在所述第三目标存储桶中的第四数据对象的第四数据对象键;
比较所述第四数据对象键与所述第二散列键以确定匹配;
响应于所述第四数据对象键与所述第二散列键匹配,确定所述第四数据对象是所述第二目标数据对象;以及
响应于确定所述第四数据对象是所述第二目标数据对象,从所述第三目标存储桶读取所述第二目标数据对象。
9.根据权利要求8所述的存储网络,其中所述第二组操作还包括:
响应于所述第四数据对象键与所述第二散列键不匹配,确定所述第四数据对象和所述第二目标数据对象是不同的数据对象;以及
响应于确定所述第四数据对象和所述第二目标数据对象是不同的数据对象:
读取第二元数据中的第二组元数据键;
比较所述第二组元数据键与所述第二散列键以确定匹配;
响应于与存储在第二替代存储桶中的第五数据对象的第五数据对象键对应的第二元数据键与所述第二散列键匹配,确定所述第二目标数据对象存储在所述第二替代存储桶中;以及
响应于确定所述第二目标数据对象存储在所述第二替代存储桶中,从所述第二替代存储桶读取所述第二目标数据对象,所述第二存储段与所述第一存储段距离一跳,所述第二存储段包括所述第二替代目标存储桶,并且所述第二元数据基于存储在所述第二存储段中的第二数据对象的第二数据对象键提供所述第二组元数据键的第三映射。
10.根据权利要求9所述的存储网络,其中所述控制器与五个远程直接存储器访问操作相关联地进行所述第一组操作和所述第二组操作。
11.根据权利要求10所述的存储网络,其中所述第二组操作还包括:
响应于所述第二散列键与所述第二组元数据键中的任何一个不匹配,确定所述第二目标数据对象未存储在所述第二节点中。
12.一种方法,包括:
与第一远程直接存储器访问操作即第一RDMA操作相关联地对目标数据对象应用第一散列函数以计算所述目标数据对象的第一散列键;
与所述第一RDMA操作相关联地基于第二散列键和散列表的第一映射识别第二节点中的针对所述目标数据对象的第一目标存储桶;
与所述第一RDMA操作相关联地读取存储在所述第一目标存储桶中的第一数据对象的第一数据对象键;
与所述第一RDMA操作相关联地比较所述第一数据对象键与所述第一散列键以确定匹配;
响应于所述第一数据对象键与所述第一散列键不匹配,与所述第一RDMA操作相关联地确定所述第一数据对象和所述目标数据对象是不同的数据对象;以及
响应于确定所述第一数据对象和所述目标数据对象是不同的数据对象:
与所述第一RDMA操作相关联地读取针对第一组存储桶的第一元数据并且比较所述第一散列键和所述第一元数据以识别存储所述目标数据对象的第一组存储桶中的第一替代存储桶,其中:
第一存储段包括所述第一元数据和所述第一组存储桶,并且所述第一组存储桶包括所述第一目标存储桶。
13.根据权利要求12所述的方法,其中:
所述第一元数据基于存储在所述第一组存储桶中的第一数据对象的第一数据对象键提供第一组元数据键的第二映射;并且
读取所述第一元数据包括:
读取所述第一组元数据键;
比较所述第一组元数据键与所述第一散列键以确定匹配;
响应于与存储在所述第一替代存储桶中的第二数据对象的第二数据对象键对应的第一元数据键与所述第一散列键匹配,确定所述目标数据对象存储在所述第一替代存储桶中;以及
响应于确定所述目标数据对象存储在所述第一替代存储桶中,从所述第一替代存储桶读取所述目标数据对象。
14.根据权利要求13所述的方法,还包括:
响应于所述第一散列键与所述第一组元数据键中的任何一个不匹配,与第二RDMA操作相关联地对所述第一数据对象键应用第二散列函数以计算所述目标数据对象的第二散列键;
与所述第二RDMA操作相关联地基于所述第二散列键来识别第二存储段中的第二目标存储桶;
与所述第二RDMA操作相关联地读取存储在所述第二目标存储桶中的第三数据对象的第三数据对象键;
与所述第二RDMA操作相关联地比较所述第三数据对象键与所述第一散列键以确定匹配;
响应于所述第三数据对象键与所述第一散列键匹配,与所述第二RDMA操作相关联地确定所述第三数据对象是所述目标数据对象;以及
响应于确定所述第三数据对象是所述目标数据对象,发出第三RDMA操作以从所述第二目标存储桶读取所述目标数据对象。
15.根据权利要求14所述的方法,还包括:
响应于所述第三数据对象键与所述第一散列键不匹配,发出所述第二RDMA操作以确定所述第三数据对象和所述目标数据对象是不同的数据对象;以及
响应于确定所述第三数据对象和所述目标数据对象是不同的数据对象,发出所述第三RDMA操作以便:
读取第二元数据中的第二组元数据键;
比较所述第二组元数据键与所述第一散列键以确定匹配;
响应于与存储在第二替代存储桶中的第四数据对象的第四数据对象键对应的第二元数据键与所述第一散列键匹配,确定所述目标数据对象存储在所述第二替代存储桶中;
响应于确定所述目标数据对象存储在所述第二替代存储桶中,从所述第二替代存储桶读取所述目标数据对象;以及
响应于所述第一散列键与所述第二组元数据键中的任何一个不匹配,确定所述目标数据对象未存储在所述第二节点中,所述第二存储段与所述第一存储段距离一跳,所述第二存储段包括第二替代目标存储桶,并且所述第二元数据基于存储在所述第二存储段中的第二数据对象的第二数据对象键提供所述第二组元数据键的第三映射。
16.一种方法,包括:
由计算节点对第一数据对象执行散列函数,以确定所述第一数据对象能够存储在其中的第一目标存储段中的第一存储桶;
确定所述第一存储桶不可用;
确定所述第一目标存储段是可用还是不可用,以及响应于确定所述第一目标存储段不可用:
确定与所述第一目标存储段距离一跳的第二目标存储段是可用还是不可用;
响应于所述确定所述第二目标存储段可用,将所述第一数据对象写入所述第二目标存储段中的另一存储桶;以及
更新所述第二目标存储段的第一元数据中的第一映射以指示所述第一数据对象存储在所述另一存储桶中。
17.根据权利要求16所述的方法,还包括:
响应于确定所述第一目标存储段可用:
将所述第一数据对象写入所述第一目标存储段中的第二存储桶;并且
更新所述第二目标存储段中的所述第一元数据,使得所述第一映射指示所述第一数据对象存储在所述第二存储桶中。
18.根据权利要求16所述的方法,还包括:
确定所述第二目标存储段不可用;
确定与所述第二目标存储段距离一跳的第三目标存储段;
将所述第二目标存储段中的第二存储桶中的第二数据对象重新定位到所述第三目标存储段中的第三存储桶以释放所述第二存储桶;以及
更新所述第三目标存储段的第二元数据中的第二映射以指示所述第二数据对象存储在所述第三存储桶中。
19.根据权利要求18所述的方法,其中:
将所述第一数据对象写入所述另一存储桶还包括将所述第一数据对象写入所述第二目标存储段中的所述第二存储桶;并且
更新所述第一元数据还包括更新所述第二目标存储段中的所述第一元数据,使得所述第一映射指示所述第一数据对象存储在所述第二存储桶中。
CN201880018722.6A 2017-05-30 2018-03-03 管理存储网络中的i/o操作 Active CN110431542B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/608,945 2017-05-30
US15/608,945 US10540323B2 (en) 2017-05-30 2017-05-30 Managing I/O operations in a storage network
PCT/US2018/020803 WO2018222236A1 (en) 2017-05-30 2018-03-03 Managing i/o operations in a storage network

Publications (2)

Publication Number Publication Date
CN110431542A CN110431542A (zh) 2019-11-08
CN110431542B true CN110431542B (zh) 2023-06-30

Family

ID=61764141

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880018722.6A Active CN110431542B (zh) 2017-05-30 2018-03-03 管理存储网络中的i/o操作

Country Status (4)

Country Link
US (1) US10540323B2 (zh)
CN (1) CN110431542B (zh)
DE (1) DE112018000882T5 (zh)
WO (1) WO2018222236A1 (zh)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10547683B2 (en) * 2017-06-26 2020-01-28 Christopher Squires Object based storage systems that utilize direct memory access
US10503409B2 (en) * 2017-09-27 2019-12-10 Alibaba Group Holding Limited Low-latency lightweight distributed storage system
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US10831404B2 (en) 2018-02-08 2020-11-10 Alibaba Group Holding Limited Method and system for facilitating high-capacity shared memory using DIMM from retired servers
US20210055885A1 (en) * 2018-04-25 2021-02-25 Pure Storage, Inc. Enhanced data access using composite data views
US11379155B2 (en) 2018-05-24 2022-07-05 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
CN111902804B (zh) 2018-06-25 2024-03-01 阿里巴巴集团控股有限公司 用于管理存储设备的资源并量化i/o请求成本的系统和方法
US10986041B2 (en) 2018-08-07 2021-04-20 Futurewei Technologies, Inc. Method and apparatus for virtual network functions and packet forwarding
US10909067B2 (en) * 2018-08-07 2021-02-02 Futurewei Technologies, Inc. Multi-node zero-copy mechanism for packet data processing
US11409892B2 (en) * 2018-08-30 2022-08-09 International Business Machines Corporation Enhancing security during access and retrieval of data with multi-cloud storage
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
CN112559485A (zh) * 2019-09-26 2021-03-26 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
US11042307B1 (en) 2020-01-13 2021-06-22 Alibaba Group Holding Limited System and method for facilitating improved utilization of NAND flash based on page-wise operation
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US10872622B1 (en) 2020-02-19 2020-12-22 Alibaba Group Holding Limited Method and system for deploying mixed storage products on a uniform storage infrastructure
US10923156B1 (en) 2020-02-19 2021-02-16 Alibaba Group Holding Limited Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11144250B2 (en) 2020-03-13 2021-10-12 Alibaba Group Holding Limited Method and system for facilitating a persistent memory-centric system
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
WO2022156902A1 (en) * 2021-01-22 2022-07-28 Huawei Technologies Co., Ltd. Devices and methods for remote direct memory access
US11349670B1 (en) * 2021-01-27 2022-05-31 Garantir LLC Automated hash validation
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
US20240022625A1 (en) * 2022-05-27 2024-01-18 Nvidia Corporation Streaming batcher for collecting work packets as remote descriptors

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104123235A (zh) * 2013-04-26 2014-10-29 国际商业机器公司 访问存储在服务器上高速缓存中的数据记录的设备和方法
CN105612490A (zh) * 2013-10-02 2016-05-25 网络装置公司 用于分布式存储架构的盘区散列技术
CN105683898A (zh) * 2014-01-17 2016-06-15 网络装置公司 对储存系统中数据高效存储与检索的组相关哈希表组织
CN106663052A (zh) * 2014-09-11 2017-05-10 株式会社东芝 文件系统、数据重复排除方法以及用于文件系统的程序

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020032691A1 (en) 2000-05-26 2002-03-14 Infolibria, Inc. High performance efficient subsystem for data object storage
US7272613B2 (en) 2000-10-26 2007-09-18 Intel Corporation Method and system for managing distributed content and related metadata
US7062490B2 (en) 2001-03-26 2006-06-13 Microsoft Corporation Serverless distributed file system
US6999967B1 (en) * 2001-12-26 2006-02-14 Ncr Corp. Semantically reducing the number of partitions involved in a join
US7627693B2 (en) * 2002-06-11 2009-12-01 Pandya Ashish A IP storage processor and engine therefor using RDMA
US7428751B2 (en) 2002-12-05 2008-09-23 Microsoft Corporation Secure recovery in a serverless distributed file system
US7386663B2 (en) 2004-05-13 2008-06-10 Cousins Robert E Transaction-based storage system and method that uses variable sized objects to store data
US7778984B2 (en) 2004-11-19 2010-08-17 Microsoft Corporation System and method for a distributed object store
US8161353B2 (en) 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US8014278B1 (en) * 2007-12-17 2011-09-06 Force 10 Networks, Inc Adaptive load balancing between ECMP or LAG port group members
US8290919B1 (en) 2010-08-27 2012-10-16 Disney Enterprises, Inc. System and method for distributing and accessing files in a distributed storage system
US9104326B2 (en) * 2010-11-15 2015-08-11 Emc Corporation Scalable block data storage using content addressing
US8874505B2 (en) 2011-01-11 2014-10-28 Hitachi, Ltd. Data replication and failure recovery method for distributed key-value store
US8630294B1 (en) 2011-05-11 2014-01-14 Juniper Networks, Inc. Dynamic bypass mechanism to alleviate bloom filter bank contention
US8675672B1 (en) * 2011-12-30 2014-03-18 Emc Corporation Hierarchical cluster tree overlay network
US9165005B2 (en) 2012-02-24 2015-10-20 Simplivity Corporation Method and apparatus utilizing non-uniform hash functions for placing records in non-uniform access memory
US9075710B2 (en) 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
US9378179B2 (en) 2012-11-21 2016-06-28 International Business Machines Corporation RDMA-optimized high-performance distributed cache
US10235404B2 (en) 2014-06-25 2019-03-19 Cohesity, Inc. Distributed key-value store
CN104123359B (zh) 2014-07-17 2017-03-22 江苏省邮电规划设计院有限责任公司 一种分布式对象存储系统的资源管理方法
US20160026672A1 (en) 2014-07-23 2016-01-28 Netapp. Inc. Data and metadata consistency in object storage systems
US9639566B2 (en) * 2014-12-18 2017-05-02 Here Global B.V. Method, apparatus and computer program product for improved storage of key-value pairs
US9386037B1 (en) * 2015-09-16 2016-07-05 RiskIQ Inc. Using hash signatures of DOM objects to identify website similarity

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104123235A (zh) * 2013-04-26 2014-10-29 国际商业机器公司 访问存储在服务器上高速缓存中的数据记录的设备和方法
CN105612490A (zh) * 2013-10-02 2016-05-25 网络装置公司 用于分布式存储架构的盘区散列技术
CN105683898A (zh) * 2014-01-17 2016-06-15 网络装置公司 对储存系统中数据高效存储与检索的组相关哈希表组织
CN106663052A (zh) * 2014-09-11 2017-05-10 株式会社东芝 文件系统、数据重复排除方法以及用于文件系统的程序

Also Published As

Publication number Publication date
US10540323B2 (en) 2020-01-21
US20180349396A1 (en) 2018-12-06
CN110431542A (zh) 2019-11-08
WO2018222236A1 (en) 2018-12-06
DE112018000882T5 (de) 2019-10-31

Similar Documents

Publication Publication Date Title
CN110431542B (zh) 管理存储网络中的i/o操作
US10761933B2 (en) Prefill of raid stripes in a storage system by reading of existing data
JP6302951B2 (ja) コンシステントハッシュ法を用いたグローバルネームスペースのための方法およびシステム
US20200026459A1 (en) Object headers facilitating storage of data in a write buffer of a storage system
US20130013880A1 (en) Storage system and its data processing method
CN113485636B (zh) 一种数据访问方法、装置和系统
EP3796149B1 (en) Method and device for processing i/o request
US10708355B2 (en) Storage node, storage node administration device, storage node logical capacity setting method, program, recording medium, and distributed data storage system
US9842114B2 (en) Peer to peer network write deduplication
US20180373609A1 (en) Identifying System Device Locations
US10031682B1 (en) Methods for improved data store migrations and devices thereof
US11860791B2 (en) Methods for managing input-output operations in zone translation layer architecture and devices thereof
US20230052732A1 (en) Object and sequence number management
CA2941163C (en) Data processing method and apparatus
WO2019127021A1 (zh) 存储系统中存储设备的管理方法及装置
WO2015118865A1 (ja) 情報処理装置、情報処理システム及びデータアクセス方法
US10241950B2 (en) Multipath I/O proxy device-specific module
WO2019127017A1 (zh) 存储系统中存储设备的管理方法及装置
US20210124686A1 (en) Host-based read performance optimization of a content addressable storage system
US10503409B2 (en) Low-latency lightweight distributed storage system
US11467906B2 (en) Storage system resource rebuild based on input-output operation indicator
US20210297500A1 (en) Cache retrieval based on tiered data
US9158735B1 (en) Techniques for generating unique identifiers
US11775202B2 (en) Read stream identification in a distributed storage system
US9639288B2 (en) Host-side acceleration for improved storage grid performance

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
GR01 Patent grant
GR01 Patent grant