CN116414612A - 存储节点及其操作方法 - Google Patents

存储节点及其操作方法 Download PDF

Info

Publication number
CN116414612A
CN116414612A CN202210928289.8A CN202210928289A CN116414612A CN 116414612 A CN116414612 A CN 116414612A CN 202210928289 A CN202210928289 A CN 202210928289A CN 116414612 A CN116414612 A CN 116414612A
Authority
CN
China
Prior art keywords
data
file system
distributed file
storage
storage node
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
CN202210928289.8A
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN116414612A publication Critical patent/CN116414612A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/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/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/1088Reconstruction on already foreseen single or plurality of spare disks
    • 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/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/1827Management specifically adapted to 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/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6513Support of multiple code types, e.g. unified decoder for LDPC and turbo codes
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了一种存储节点及其操作方法。所述存储节点包括:存储装置;以及智能NIC,其中,智能NIC被配置为:接收包括将被存储在DFS中的原始数据的写入请求,并且响应于所述接收,通过对原始数据执行纠删编码来生成奇偶校验数据,并且将奇偶校验数据和原始数据直接从智能NIC存储到存储装置;以及从客户端装置或另外的客户端装置接收对存储在DFS中的数据的读取请求,其中,智能NIC还被配置为:响应于接收到读取请求,直接从存储装置获取原始数据的一部分和奇偶校验数据,并且通过使用获取的奇偶校验数据将前向纠错(FEC)解码应用于原始数据的获取的部分来恢复原始数据的另一部分。

Description

存储节点及其操作方法
本申请要求于2021年12月29日在韩国知识产权局提交的第10-2021-0191495号韩国专利申请的权益,所述韩国专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
下面的描述涉及用于分布式文件系统(DFS)中的纠删编码加速的电子装置及其操作方法。
背景技术
通常,分布式文件系统(DFS)使用复制来确保防止数据丢失。例如,存储系统可使用独立磁盘冗余阵列1(RAID-1)来镜像相同的数据,这也可增大存储系统的容量开销。例如,RAID-5/6可需要计算和存储奇偶校验数据,并在发生数据丢失时通过奇偶校验数据重建数据。这里,尽管可通过各种技术减少存储容量开销,但是对于可提高多少重建性能存在限制。
发明内容
提供本发明内容以简化的形式介绍在下面具体实施方式中进一步描述的对构思的选择。本发明内容不意在确定要求保护的主题的关键特征或必要特征,也不意在用作确定要求保护的主题的范围的帮助。
在一个总体方面,一种存储节点,所述存储节点用于经由网络与其他存储节点通信以提供分布式文件系统(DFS),所述存储节点包括:存储装置;以及智能网络接口卡(NIC),包括处理单元,其中,智能NIC被配置为:从客户端装置接收包括将被存储在DFS中的原始数据的写入请求,并且响应于接收到写入请求,由处理单元通过对原始数据执行纠删编码来生成奇偶校验数据,并且将奇偶校验数据和原始数据直接从智能NIC存储到存储装置;以及从客户端装置或另一客户端装置接收对存储在DFS中的数据的读取请求,其中,智能NIC被配置为响应于接收到读取请求,直接从存储装置获取原始数据的部分和奇偶校验数据;以及由处理单元通过使用获取的奇偶校验数据将前向纠错解码(FEC)应用于原始数据的获取的部分来恢复原始数据的另一部分。
存储节点还可被配置为:由智能NIC经由网络将原始数据的获取的部分和原始数据的恢复的另一部分发送给所述客户端装置或所述另一客户端装置。
可从连接到存储节点的网络接收写入请求。
可从连接到存储节点的网络接收读取请求。
存储节点还可包括:存储器;主机处理器,其中,存储节点可被配置为:使主机处理器执行操作系统;以及总线,将主机处理器、存储器、智能NIC和存储装置互连,其中,直接存储奇偶校验数据和原始数据的步骤可包括:经由总线将奇偶校验数据和原始数据从NIC直接发送给存储装置。
智能NIC和存储装置可通过外围组件互连快速(PCIe)交换机连接,并且,原始数据和奇偶校验数据可经由PCIe交换机直接从存储装置被获取到智能NIC。
可基于纠删编码的编码矩阵执行纠删编码。
智能NIC可被配置为:确定已经发生了原始数据中的至少一些的丢失,并基于此来执行FEC解码。
智能NIC可被配置为:确定已经丢失了原始数据中的至少一些,并基于此来获取奇偶校验数据。
存储装置可包括:第二处理单元,被配置:为对存储在或将被存储在存储装置中的DFS的数据执行FEC编码或解码。
存储装置可包括:用于支持计算快速链路(CXL)的存储器池。
在一个总体方面,一种操作存储节点的方法,所述存储节点包括智能NIC和存储装置,所述方法包括:由智能NIC从客户端装置接收DFS数据,智能NIC包括处理单元,DFS数据包括将被存储在DFS中的数据;响应于接收到DFS数据,由处理单元对接收到的DFS数据执行纠删编码来生成奇偶校验数据;以及将DFS数据和奇偶校验数据直接从智能NIC复制到存储装置,其中,DFS数据被存储在作为DFS的一部分的存储装置中。
所述方法还可包括:由智能NIC接收与DFS数据相关联的读取请求,响应于接收到读取请求;将DFS数据的第一部分直接从存储装置复制到智能NIC;由处理单元确定DFS数据的第二部分可能缺失,并且基于此,由处理单元使用奇偶校验数据来恢复DFS数据的第二部分;以及由智能NIC发送DFS数据的第一部分和第二部分。
所述存储节点还可包括:处理器和存储器,被配置为:协作以执行操作系统,其中,存储器和处理器可不用于生成奇偶校验数据或不用于恢复DFS数据的第二部分。
智能NIC和存储装置可通过外围组件互连快速(PCIe)交换机连接,其中,DFS数据可通过PCIe交换机从智能NIC复制到存储装置。
对DFS数据进行纠删编码的步骤可包括:基于纠删编码矩阵的编码操作。
所述方法还可包括:经由网络从第一客户端装置接收写入请求,其中,写入请求可包括DFS数据。
所述方法还可包括:经由网络从客户端装置或第二客户端装置接收读取请求,以及经由网络将DFS数据的第一部分和第二部分发送给客户端装置或第二电子装置。
所述存储节点可以是经由网络进行协作以提供DFS的多个存储节点中的一个存储节点,并且其中,接收的DFS数据可包括:存储在所述多个存储节点中的一个或多个其他存储节点中的数据的一部分。
存储装置可包括:第二处理单元,被配置为:使用奇偶校验数据来对存储在存储装置中的DFS数据进行数据恢复。
在一个总体方面,实施例包括存储指令的非暂时性计算机可读存储介质,所述指令在被处理器执行时,将处理器配置为执行在此描述的操作和/或方法中的任何一个、任何组合或所有。
在一个总体方面,一种存储节点执行的方法,所述存储节点包括智能NIC和存储装置,所述方法包括:由智能NIC接收与DFS相关联的DFS读取请求和DFS写入请求;由智能NIC生成DFS写入请求中的原始DFS数据的DFS奇偶校验数据;通过将原始DFS数据和DFS奇偶校验数据存储在存储装置中,来将原始DFS数据和DFS奇偶校验数据添加到DFS;以及由智能NIC基于DFS读取请求,读取原始DFS数据的至少一些和DFS奇偶校验数据,并且基于此,由智能NIC重构原始DFS数据的至少一些部分。
生成奇偶校验的步骤可包括:对原始DFS数据执行前向纠错编码。
前向纠错编码可:包括纠删编码。
根据以下具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
图1示出根据一个或多个实施例的分布式文件系统的示例。
图2示出根据一个或多个实施例的存储节点的示例。
图3示出根据一个或多个实施例的纠删编码的示例。
图4示出根据一个或多个实施例的基于纠删编码的前向纠错(FEC)解码操作的示例。
图5示出根据一个或多个实施例的存储节点的示例。
图6示了根据一个或多个实施例的写入操作的示例。
图7示出根据一或多个实施例的读取操作的实例。
图8示出根据一个或多个实施例的操作电子装置的方法的示例。
在整个附图和具体实施方式中,除非另外描述或提供,否则相同的附图参考标号将被理解为表示相同或相似的元件、特征和结构。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对大小、比例和描绘可被夸大。
具体实施方式
提供下面的具体实施方式以帮助读者得到对在此描述的方法、设备和/或系统的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或系统的各种改变、修改和等同物将是清楚的。例如,在此描述的操作的顺序仅是示例,并且不限于在此阐述的那些顺序,而是除了必须以特定次序发生的操作之外,可如在理解本申请的公开之后将是清楚地那样改变。
尽管术语“第一”或“第二”用于解释各种组件,但是组件不限于这些术语。这些术语应仅用于将一个组件与另一组件区分开。例如,在根据本公开的构思的权利的范围内,“第一”组件可被称为“第二”组件,或类似地,“第二”组件可被称为“第一”组件。
将理解,当组件被称为“连接到”另一组件时,该组件可直接连接或结合到另一组件,或者可存在中间组件。
如在此使用的,除非上下文另外清楚地指示,否则单数形式也旨在包括复数形式。如在此使用的,术语“和/或”包括相关联的所列项中的任何一个和任何两个或更多个的任何组合。如在此使用的,术语“包括”、“包含”和“具有”表明存在陈述的特征、数量、操作、元件、组件和/或它们组合,但不排除存在或添加一个或多个其他特征、数量、操作、元件、组件和/或它们的组合。
除非另外定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与本公开所属领域的普通技术人员在理解本申请的公开之后通常理解的含义相同的含义。除非在另外定义,否则术语(诸如,在通用词典中定义的术语)应被解释为具有与它们在相关领域和本申请的公开中的上下文中的含义匹配的含义,并且不应以理想化或过于形式化的含义来解释。在此针对示例或实施例使用术语“可”(例如,关于示例或实施例可包括或实现什么)表明存在包括或实现这样的特征的至少一个示例或实施例,而所有的示例不限于此
图1示出根据一个或多个实施例的DFS 100的示例。参照图1,DFS 100可包括客户端节点110、网络120、元数据服务器130和多个存储节点140。DFS 100可将数据分布在或者存储在通过网络120物理分离的多个存储节点140中,使得即使当任何一个节点发生故障时,与单节点环境相比,可相对容易地恢复数据。
客户端节点110可以是执行数据处理的电子装置,并且可被实现为例如各种计算装置(诸如,膝上型计算机、个人计算机(PC)、台式计算机、工作站、服务器等)。客户端节点110可通过网络120访问元数据服务器130和多个存储节点140,并且可将数据存储在多个存储节点140中的一个或多个中或者从多个存储节点140中的一个或多个读取存储的数据。
元数据服务器130可管理与存储在多个存储节点140中的数据相关联的元数据。由于数据被分布并被存储在多个存储节点140中的一个或多个中,因此与每个划分的数据的大小和存储位置相关联的信息可作为元数据来管理。元数据服务器130可存储和管理存储在多个存储节点140中的一个或多个中的数据的元数据。
例如,当客户端节点110将要把数据存储在多个存储节点140中的一个或多个中时,客户端节点110可经由网络120访问元数据服务器130以生成将被存储的数据的元数据,并且可基于生成的元数据将数据存储在多个存储节点140中的一个或多个中。此外,当客户端节点110将要读取分布在多个存储节点140之中的一个或多个节点中的数据时,客户端节点110可经由网络120访问元数据服务器130以检查将被读取的数据的元数据,从而可验证分布的数据的存储位置和大小。
将在下文中详细描述,元数据服务器130可被实现为与多个存储节点140分离的节点。在一个示例中,多个存储节点140的一些部分也可用作元数据服务器130。
多个存储节点140可基于经由网络120来自客户端节点110的请求,存储数据或发送存储的数据。多个存储节点140中的每个可包括存储装置,并且可将分布式数据(例如,DFS数据或对象)存储在存储装置上。存储节点的存储装置可以是用于存储数据的装置,并且可包括例如固态驱动器(SSD)、硬盘驱动器(HDD)等中的一个或多个。
可将纠删编码(erasure coding)应用于DFS 100。纠删编码可通过使用被称为纠删码的编码矩阵对原始数据进行编码,来用于数据恢复。当原始数据的编码形式的一部分丢失时,可通过解码处理恢复原始数据。将在下文中详细描述,纠删编码可设置适合于用户环境的数据块和奇偶校验块,使得数据的可靠性和容量开销可被调整。然而,先前已通过存储节点的主机处理器基于纠删编码执行了编码操作和解码操作,这增大了主机处理器的开销。
在此处描述的示例中,每个存储节点140可包括接口装置。每个接口装置可包括可基于纠删编码执行编码操作和解码操作的处理单元。因此,每个存储节点140可通过其接口装置与存储装置之间的点对点(P2P)通信直接发送和接收编码的数据。因此,可避免主机处理器的纠删编码开销增大,并且可通过使接口装置的处理单元执行纠删编码来加速纠删编码。在下文中将详细描述示例。
图2示出根据一个或多个实施例的存储节点200的示例。参照图2,存储节点200可以是包括主机处理器210、存储器220、接口装置230和存储装置240的电子装置。存储节点200可被实现为各种计算装置(诸如,以膝上型计算机、PC、台式计算机、工作站、虚拟机或服务器为例)。
主机处理器210可以是通过执行操作系统来控制包括在存储节点200中的组件的操作的装置。主机处理器210可包括例如中央处理器(CPU)。主机处理器210可控制由存储节点200执行的操作。
存储器220可包括计算机可读指令。当存储在存储器220中的指令被主机处理器210执行时,主机处理器210可执行操作。存储器220可以是易失性存储器或非易失性存储器。例如,存储器220可以是动态随机存取存储器(DRAM)。
主机处理器210和存储器220可通过存储器总线彼此通信。
接口装置230可以是从另一电子装置(例如,客户端节点、元数据服务器、另一存储节点等)接收数据或将数据发送给另一存储装置(例如,客户端节点、元数据服务器、另一存储节点等)的网络接口卡(NIC)。接口装置230可以是包括处理单元的智能NIC。接口装置230可使用处理单元基于纠删编码执行编码操作或解码操作。例如,处理单元可包括数据处理单元(DPU)231(即,处理器或其他处理电路)。在一些实施例中,接口装置230可以是基于FPGA(现场可编程门阵列)的智能NIC。
图3示出根据一个或多个实施例的纠删编码的示例。纠删编码可被各种DFS(诸如,Hadoop DFS(HDFS)、Ceph、Swift、WekaIO等)采用。DFS 100可被实现为这些示例DFS中的任何一个或者类似于它们的其他DFS。纠删编码可包含生成奇偶校验块并在发生数据丢失时通过奇偶校验块恢复数据,并且可通过设置数据块和奇偶校验块的大小(即,编码率)来基于用户环境调整数据可靠性和容量开销。
纠删编码可通过将一个文件划分为n个块并生成小于或等于n的k个奇偶校验块来提供容错。因此,可需要n+k个块的数据容量来存储编码的文件,并且对多达奇偶校验块的数量(即,k)的块故障的数量进行响应可以是可行的。在图3示出的示例中,n可以是4,k可以是2。
图3示出基于用于纠删编码的编码矩阵320对从另一电子装置接收的原始数据310进行编码的操作的示例。原始数据310可表示将被DFS存储的数据,编码矩阵320可以是用于编码的纠删码,并且可包括单位矩阵和奇偶校验矩阵。编码矩阵320可以被预先确定,并且可由图2中示出的接口装置230的DPU 231预先选择。DPU 231可通过编码矩阵320与原始数据310之间的矩阵乘法来执行编码,从而可输出编码的数据330。编码的数据330可包括原始数据310和奇偶校验块。奇偶校验块可用于在发生原始数据310的丢失时恢复数据。
图4示出根据一个或多个实施例的基于纠删编码的前向纠错(FEC)解码操作的示例。例如,假设与编码的数据中的第三行和第四行对应的数据是缺失数据411。在操作410中,编码矩阵中的与缺失数据411对应的第三行和第四行所对应的部分413也可能已经丢失。在操作420中,可表示移除了缺失数据411和对应矩阵的部分413的行列式。在操作430中,当行列式的两侧乘以已经移除了部分413的编码矩阵的逆矩阵431时,仅原始数据可保留在操作430的左侧。
总之,可通过从编码的数据排除丢失数据411并将编码的数据的左侧乘以编码矩阵的逆矩阵431,来恢复原始数据的一部分。
基于上述编码和解码操作的操作可由DPU 231执行,而不必需要图2中示出的主机处理器210的介入,从而避免主机处理器210的相应开销。
参照图2,存储装置240可存储由接口装置230编码的数据。此外,存储装置240可将向另一电子装置请求的数据直接发送给接口装置230。例如,存储装置240可以是使用非易失性存储器快速(NVMe)协议的SSD。
接口装置230和存储装置240可通过P2P通信发送或接收数据,而不必需要主机处理器210和存储器220的介入。因此,在一个示例中,存储装置240与接口装置230之间的P2P通信没有主机处理器210的实质性介入或交互(尽管在主机处理器210上可能存在一些偶然操作(例如,处理附带中断(handling collateral interrupt)、总线控制等))。例如,P2P通信可基于计算快速链路输入/输出(CXL.io)协议。接口装置230和存储装置240可通过外围组件互连快速(PCIe)交换机等连接。
可通过存储节点200中的存储装置240与接口装置230(例如,智能NIC)之间的直接通信来加速DFS的纠删编码。无论DFS通信是否直接在存储装置240与接口装置230之间传递,DFS通信都不需要通过主机处理器210以由此进行纠删编码。因此,在一个示例中,DFS通信不通过主机处理器210。
例如,当从客户端节点作出写入数据请求时,可不将由接口装置230接收的数据复制到存储器220,例如,接口装置230中的DPU 231可对经由网络120接收的写入数据请求中的数据执行数据编码。接口装置230可例如通过PCIe、P2P通信来直接将接口装置230已经独立于主机处理器210和存储器220编码的数据发送给存储装置240。
类似地,当经由网络120从客户端节点作出数据读取请求时,例如,存储在存储装置240中的相应的编码的数据可独立于主机处理器210和存储器220通过PCIe、P2P通信被发送给接口装置230。DPU 231可确定任何编码的数据是否缺失或不可用。当确定编码的数据没有缺失时,接口装置230可经由网络120将除奇偶校验块之外的原始数据发送给客户端节点。否则,当请求的编码的数据中的一些被确定为缺失或不可用时,DPU 231可通过执行如上所述的解码操作来恢复原始数据。
因此,可在不使用主机存储器220的情况下,而是通过接口装置230中的DPU 231基于纠删编码执行编码操作和解码操作来执行数据复制,从而潜在地减少数据读取/写入延迟并减少主机处理器210的开销。
在一个示例实施例中,存储装置240可支持CXL协议,从而参与存储器池(memorypool),并且DFS可通过使用存储器池被实现。
在另一示例中,存储装置240可包括第二处理单元。第二处理单元可代替DPU 231执行上述编码操作的任何部分,或除了DPU 231之外还执行上述编码操作的任何部分。此外,第二处理单元可代替DPU 231执行上述解码操作的任何部分,或除了DPU 231之外还执行上述解码操作的任何部分。换言之,编码操作和解码操作可分布在DPU 231与第二处理单元之间,因此,可被更有效地执行。
图5示出根据一个或多个实施例的存储节点的示例。参照图5,存储节点500可以是也用作元数据服务器的电子装置。在一些示例中,元数据服务器不在存储节点上实现。当接口装置530从网络120接收到数据时,可将相应数据的元数据发送给存储节点500的缓存511。例如,元数据发送和查找可基于计算快速链路缓存“CXL.cache”协议,并且元数据更新可基于计算快速链路存储“CXL.mem”协议。主机处理器510可处理前述元数据(例如,以确定所请求的数据的位置和大小)。参照图2提供的描述也可应用于图5。因此,为了简洁起见,这里省略了对存储节点500的更详细的描述。
图6示出根据一个或多个实施例的写入操作的示例。在操作610中,客户端节点可请求写入数据(例如,更新存储在DFS中的对象或向DFS添加对象)。在操作620中,当写入请求用于写入新数据(例如,将对象添加到DFS)时,客户端节点可经由网络120访问元数据服务器(例如,也用作元数据服务器的专用装置或存储节点),以请求生成将被写入的新数据的元数据。元数据服务器可通过生成请求写入的数据的新的元数据来进行响应,并且可将生成的元数据返回给客户端节点。当写入请求包含修改(更新)预存储的数据(例如,将对象更新到DFS)时,可检查与预存储的数据相关联的元数据以识别预存储的数据的大小和位置(例如,存储请求写入的数据的存储节点的标识信息等)。在操作630中,客户端节点可访问基于元数据识别的存储节点,并且经由网络120把将被写入识别的存储节点的数据发送给存储节点的接口装置。在操作640中,存储节点的接口装置的处理单元可接收将被写入的数据,并且可对接收的数据执行编码(这可包括生成奇偶校验数据)。在操作650中,编码的数据可从接口装置被直接发送给对编码的数据进行存储的存储节点的存储装置。
图7示出根据一个或多个实施例的读取操作的示例。在操作710中,客户端节点可请求读取数据(例如,存储在DFS中的对象)。在操作720中,客户端节点可请求针对将被读取的数据的元数据检查,并且可通过经由网络120访问元数据服务器(例如,也用作元数据服务器的存储节点)来这样做。作为响应,元数据服务器可通过执行所请求的元数据检查,来验证将被读取的数据的大小和位置(例如,存储数据的存储节点的标识信息等)。在操作730中,客户端节点可访问识别的存储节点,并且可请求将被读取的数据。在操作740中,存储节点的接口单元可从网络120接收对数据的请求,并且可通过将数据从存储节点的存储装置获取到接口单元的处理单元(例如,DPU)来进行响应。在操作750中,接口单元的DPU可对获取的数据执行奇偶校验,以确定请求的数据中的任何数据是否丢失或缺失。在操作760中,当确定请求的数据中的一些缺失时,处理单元可通过对缺失的数据执行解码(例如,FEC解码)来恢复缺失的数据。在操作770中,接口装置可将任何恢复和/或获取的数据发送给客户端节点。
图8示出根据一个或多个实施例的操作电子装置的方法的示例。在下面是的示例中,可以以不同于如示出的次序那样执行操作。例如,可并行执行操作中的至少两个。操作810和820可由电子装置的至少一个硬件组件(例如,处理器等)执行。电子装置可与存储节点对应。
在操作810中,电子装置可通过包括在电子装置中的接口装置中的处理单元对从另一电子装置接收的数据进行编码。电子装置可通过处理单元基于纠删编码的编码矩阵执行对从另一电子装置接收的原始数据进行编码的操作,并且编码的数据可包括原始数据和用于数据恢复的奇偶校验块。包括在接口装置中的处理单元可包括DPU。
在操作820中,电子装置可将由接口装置编码的数据发送并存储到包括在电子装置中的存储装置,而不必需要电子装置的主机处理器和主机存储器的介入。存储装置可通过与接口装置的P2P通信直接接收或发送数据。接口装置和存储装置可通过PCIe交换机连接,并且可经由PCIe交换机交换数据。
电子装置可将另一电子装置请求的数据从它的存储装置传送给它的接口装置,并且可基于确定请求的数据中的一些缺失来利用接口装置的处理单元执行对数据进行解码的操作。解码的数据可由接口装置例如经由网络发送给另一电子装置。当另一电子装置所请求的数据没有缺失时,电子装置可通过它的接口装置发送请求的数据(不包括数据的奇偶校验块)。
电子装置可以是包括在DFS中的多个存储节点中的一个,并且从另一电子装置接收的数据可以是例如存储在多个存储节点中的一个或多个中的DFS数据的一部分。
存储装置可包括第二处理单元。第二处理单元可对从另一电子装置接收的数据执行编码操作的至少一部分。类似地,对于将为另一电子装置取得的数据,可通过第二处理单元执行响应于确定请求的数据中的一些丢失而将要执行的解码操作的至少一部分。
当主机处理器和主机存储器执行编码操作和解码操作(例如,基于纠删编码)时,接口装置与主机存储器之间、以及主机存储器与存储装置之间的数据复制发生多次。在此描述的技术可减少或防止用于编码和解码的这样的基于主机的处理,从而可减少主机处理器的开销。
在此参照图1至图8描述的作为非限制性示例的客户端节点、网络、元数据服务器、存储节点、主机处理器、缓存、存储器、存储器总线、总线适配器、接口装置、数据处理单元(DPU)、存储装置、计算装置、处理装置和其他设备、装置、模块、元件和组件由硬件组件实现。可用于执行本申请中描述的操作的硬件组件的示例在适当的情况下包括:控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器以及被配置为执行本申请中描述的操作的任何其他电子组件。在其他示例中,通过计算硬件(例如,通过一个或多个处理器或计算机)实现执行在本申请中描述的操作的硬件组件中的一个或多个硬件组件。处理器或计算机可通过一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑单元或阵列、微处理器或被配置为以限定的方式响应并执行指令以实现期望结果的任何其他装置或装置的组合)来实现。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行指令或软件(诸如,操作系统(OS)和在OS上运行的一个或多个软件应用),以执行在本申请中描述的操作。硬件组件还可响应于指令或软件的执行而访问、操控、处理、创建和存储数据。为了简明,单数术语“处理器”或“计算机”可用于在本申请中描述的示例的描述中,但是在其他示例中,多个处理器或计算机可被使用,或者处理器或计算机可包括多个处理元件,或多种类型的处理元件,或两者。例如,单个硬件组件、或者两个或更多个硬件组件可由单个处理器、或者两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可通过一个或多个处理器、或者处理器和控制器来实现,并且一个或多个其他硬件组件可通过一个或多个其他处理器、或者另外的处理器和另外的控制器来实现。一个或多个处理器、或者处理器和控制器可实现单个硬件组件、或者两个或更多个硬件组件。硬件组件可具有不同处理配置中的任何一个或多个,不同的处理配置的示例包括:单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理和多指令多数据(MIMD)多处理。
图1至图8中示出的执行在本申请中描述的操作的方法由计算硬件(例如,由一个或多个处理器或计算机)来执行,计算硬件被实现为如上所述执行指令或软件以执行在本申请中描述的由所述方法执行的操作。例如,单个操作、或者两个或更多个操作可由单个处理器、或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可由一个或多个处理器、或者处理器和控制器来执行,并且一个或多个其他操作可由一个或多个其他处理器、或者另外的处理器和另外的控制器来执行。一个或多个处理器、或者处理器和控制器可执行单个操作、或者两个或更多个操作。
用于控制计算硬件(例如,一个或多个处理器或计算机)实现硬件组件并执行如上所述的方法的指令或软件可被编写为计算机程序、代码段、指令或它们的任何结合,以单独地或共同地指示或配置一个或多个处理器或计算机作为机器或专用计算机进行操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的高级代码。可基于附图中示出的框图和流程图以及在此使用的相应描述使用任何编程语言来编写指令或软件,附图中示出的框图和流程图以及在此使用的相应描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。此外,作为非限制性示例,指令可被硬编码到诸如DPU的处理器中(例如,其中,DPU被实现为FPGA)。在一些实施例中,作为非限制性示例,DPU可被配置为例如利用可插拔模块(pluggable module)来执行在此描述的操作和/或方法中的任何一个、任何组合或所有。
用于控制计算硬件(例如,一个或多个处理器或计算机)实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构可被记录、存储或者固定在一个或多个非暂时性计算机可读存储介质中,或者被记录、存储或固定在一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态驱动器(SSD)、闪存、卡型存储器(诸如,多媒体卡或微型卡(例如,安全数字(SD)或极限数字(XD))、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘和被配置为以非暂时性方式存储指令或者软件以及任何相关联的数据、数据文件和数据结构并将所述指令或软件以及任何相关联的数据、数据文件和数据结构提供给一个或多个处理器或计算机使得一个或多个处理器或计算器能够执行指令的任何其他装置。在一个示例中,指令或软件以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得指令和软件以及任何相关联的数据、数据文件和数据结构以分布式方式被一个或多个处理器或计算机存储、访问和执行。
虽然本公开包括特定示例,但是在理解本申请的公开之后将清楚的是,在不脱离权利要求及其等同物的精神和范围的情况下,可在这些示例中进行形式和细节上的各种改变。在此描述的示例应仅被认为是描述性的,而不是出于限制的目的。每个示例中的特征或方面的描述将被认为可适用于其他示例中的相似特征或方面。如果描述的技术以不同的次序被执行,和/或如果描述的系统、架构、装置或电路中的组件以不同的方式被组合、和/或由其他组件或其等同物替代或补充,则可实现合适的结果。

Claims (21)

1.一种存储节点,所述存储节点用于经由网络与其他存储节点通信以提供分布式文件系统,所述存储节点包括:
存储装置;以及
智能网络接口卡,包括处理单元;
智能网络接口卡被配置为:
从客户端装置接收包括将被存储在分布式文件系统中的原始数据的写入请求,并且响应于接收到写入请求,由处理单元通过对原始数据执行纠删编码来生成奇偶校验数据,并且将奇偶校验数据和原始数据直接从智能网络接口卡存储到存储装置;以及
从所述客户端装置或另一客户端装置接收对存储在分布式文件系统中的数据的读取请求,其中,智能网络接口卡被配置为响应于接收到读取请求:直接从存储装置获取原始数据的部分和奇偶校验数据,以及由处理单元通过使用获取的奇偶校验数据将前向纠错解码应用于原始数据的获取的部分来恢复原始数据的另一部分。
2.根据权利要求1所述的存储节点,其中,存储节点还被配置为:由智能网络接口卡经由网络将原始数据的获取的部分和原始数据的恢复的另一部分发送给所述客户端装置或所述另一客户端装置。
3.根据权利要求1所述的存储节点,其中,收写入请求从连接到所述存储节点的网络被接收。
4.根据权利要求1所述的存储节点,其中,读取请求从连接到所述存储节点的网络被接收。
5.根据权利要求1所述的存储节点,还包括:
存储器;
主机处理器,其中,所述存储节点被配置为:使主机处理器执行操作系统;以及
总线,将主机处理器、存储器、智能网络接口卡和存储装置互连,
其中,将奇偶校验数据和原始数据直接从智能网络接口卡存储到存储装置的步骤包括:经由总线将奇偶校验数据和原始数据直接从智能网络接口卡发送给存储装置。
6.根据权利要求1所述的存储节点,其中,智能网络接口卡和存储装置通过外围组件互连快速交换机连接,并且其中,原始数据和奇偶校验数据经由外围组件互连快速交换机从存储装置被直接获取到智能网络接口卡。
7.根据权利要求1所述的存储节点,其中,基于纠删编码的编码矩阵执行纠删编码。
8.根据权利要求1所述的存储节点,其中,智能网络接口卡被配置为:确定已经发生了原始数据中的至少一些的丢失,并且基于确定已经发生了原始数据中的至少一些的丢失来执行前向纠错解码。
9.根据权利要求8所述的存储节点,其中,智能网络接口卡被配置为:确定已经丢失了原始数据中的至少一些,并基于确定已经丢失了原始数据中的至少一些来获取奇偶校验数据。
10.根据权利要求1至权利要求9中的任意一项所述的存储节点,其中,存储装置包括:第二处理单元,被配置为:对存储在或将被存储在存储装置中的分布式文件系统的数据执行前向纠错编码或解码。
11.根据权利要求1至权利要求9中的任意一项所述的存储节点,其中,存储装置包括用于支持计算快速链路的存储器池。
12.一种操作存储节点的方法,所述存储节点包括智能网络接口卡和存储装置,所述方法包括:
由智能网络接口卡从客户端装置接收分布式文件系统数据,智能网络接口卡包括处理单元,分布式文件系统数据包括将被存储在分布式文件系统中的数据;
响应于接收到分布式文件系统数据,由处理单元对接收到的分布式文件系统数据执行纠删编码来生成奇偶校验数据;以及
将分布式文件系统数据和奇偶校验数据直接从智能网络接口卡复制到存储装置,其中,分布式文件系统数据被存储在作为分布式文件系统的一部分的所述存储装置中。
13.根据权利要求12所述的方法,还包括:
由智能网络接口卡接收与分布式文件系统数据相关联的读取请求;
响应于接收到读取请求,将分布式文件系统数据的第一部分直接从存储装置复制到智能网络接口卡;
由处理单元确定分布式文件系统数据的第二部分缺失,并且基于确定分布式文件系统数据的第二部分缺失,由处理单元使用奇偶校验数据来恢复分布式文件系统数据的第二部分;以及
由智能网络接口卡发送分布式文件系统数据的第一部分和第二部分。
14.根据权利要求12所述的方法,其中,所述存储节点还包括:处理器和存储器,被配置为协作以执行操作系统,其中,存储器和处理器不用于生成奇偶校验数据或不用于恢复分布式文件系统数据的第二部分。
15.根据权利要求12所述的方法,还包括:
经由网络从第一客户端装置接收写入请求,写入请求包括分布式文件系统数据。
16.根据权利要求15所述的方法,还包括:
经由网络从第一客户端装置或第二客户端装置接收读取请求;以及
经由网络将分布式文件系统数据的第一部分和第二部分发送给第一客户端装置或第二电子装置。
17.根据权利要求12至权利要求16中的任意一项所述的方法,其中,所述存储节点是经由网络进行协作以提供分布式文件系统的多个存储节点之中的一个存储节点,并且
其中,接收的分布式文件系统数据包括:存储在所述多个存储节点之中的一个或多个其他存储节点中的数据的一部分。
18.一种存储指令的非暂时性计算机可读存储介质,所述指令在被处理器执行时,将处理器配置为执行根据权利要求12所述的方法。
19.一种由存储节点执行的方法,所述存储节点包括智能网络接口卡和存储装置,所述方法包括:
由智能网络接口卡接收与分布式文件系统相关联的分布式文件系统读取请求和分布式文件系统写入请求;
由智能网络接口卡生成分布式文件系统写入请求中的原始分布式文件系统数据的分布式文件系统奇偶校验数据;
通过将原始分布式文件系统数据和分布式文件系统奇偶校验数据存储在存储装置中,来将原始分布式文件系统数据和分布式文件系统奇偶校验数据添加到分布式文件系统;以及
由智能网络接口卡基于分布式文件系统读取请求,读取原始分布式文件系统数据的至少一些和分布式文件系统奇偶校验数据,并且基于原始分布式文件系统数据的至少一些和分布式文件系统奇偶校验数据,由智能网络接口卡重构原始分布式文件系统数据的至少一些部分。
20.根据权利要求19所述的方法,其中,生成奇偶校验的步骤包括:对原始分布式文件系统数据执行前向纠错编码。
21.根据权利要求20所述的方法,其中,前向纠错编码包括:纠删编码。
CN202210928289.8A 2021-12-29 2022-08-03 存储节点及其操作方法 Pending CN116414612A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2021-0191495 2021-12-29
KR1020210191495A KR20230101405A (ko) 2021-12-29 2021-12-29 분산 파일 시스템에서 이레이저 코딩을 가속화하는 전자 장치 및 그 동작 방법

Publications (1)

Publication Number Publication Date
CN116414612A true CN116414612A (zh) 2023-07-11

Family

ID=83232500

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210928289.8A Pending CN116414612A (zh) 2021-12-29 2022-08-03 存储节点及其操作方法

Country Status (4)

Country Link
US (1) US20230208439A1 (zh)
EP (1) EP4206930A1 (zh)
KR (1) KR20230101405A (zh)
CN (1) CN116414612A (zh)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11886308B2 (en) * 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US10073738B2 (en) * 2015-08-14 2018-09-11 Samsung Electronics Co., Ltd. XF erasure code for distributed storage systems
KR102146293B1 (ko) * 2018-05-08 2020-08-28 한국전자통신연구원 분산 파일 시스템 복구 장치 및 방법
JP7355616B2 (ja) * 2019-11-26 2023-10-03 株式会社日立製作所 分散ストレージシステムおよび分散ストレージシステムのパリティ更新方法
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
US11349501B2 (en) * 2020-02-27 2022-05-31 EMC IP Holding Company LLC Multistep recovery employing erasure coding in a geographically diverse data storage system
US11169881B2 (en) * 2020-03-30 2021-11-09 Alibaba Group Holding Limited System and method for facilitating reduction of complexity and data movement in erasure coding merging on journal and data storage drive

Also Published As

Publication number Publication date
US20230208439A1 (en) 2023-06-29
KR20230101405A (ko) 2023-07-06
EP4206930A1 (en) 2023-07-05

Similar Documents

Publication Publication Date Title
US11714718B2 (en) Performing partial redundant array of independent disks (RAID) stripe parity calculations
US10095581B2 (en) Transmission time refinement in a storage system
US11934260B2 (en) Problem signature-based corrective measure deployment
US11784667B2 (en) Selecting optimal responses to errors in a storage system
US10191676B2 (en) Scalable storage protection
US11934681B2 (en) Data migration for write groups
CN109643258B (zh) 使用高速率最小存储再生擦除代码的多节点修复
US10387307B2 (en) Lock-free raid implementation in multi-queue architecture
US20230068106A1 (en) Cloud-Based User Authorization Control For Storage System Access
US9563524B2 (en) Multi level data recovery in storage disk arrays
US11287988B2 (en) Autonomous raid data storage device locking system
US11847071B2 (en) Enabling communication between a single-port device and multiple storage system controllers
US11662955B2 (en) Direct memory access data path for RAID storage
CN116360680A (zh) 用于在存储系统中执行复制恢复操作的方法和系统
CN116414612A (zh) 存储节点及其操作方法
US20240103765A1 (en) Non-volatile storage device offloading of host tasks
US20240103731A1 (en) Non-volatile storage device offloading of host tasks
US20240103756A1 (en) Non-volatile storage device offloading of host tasks
JP2019159416A (ja) データ管理装置、ファイルシステム、データ管理方法、及びプログラム
US11720497B1 (en) Inferred nonsequential prefetch based on data access patterns
US11709636B1 (en) Non-sequential readahead for deep learning training
US20230244569A1 (en) Recover Corrupted Data Through Speculative Bitflip And Cross-Validation
Rosenfeld et al. Using disk add-ons to withstand simultaneous disk failures with fewer replicas
CN117311646A (zh) 固态硬盘配置管理方法、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication