CN113590376B - 一种多线程并行编/解码方法、编/解码器、用户端 - Google Patents
一种多线程并行编/解码方法、编/解码器、用户端 Download PDFInfo
- Publication number
- CN113590376B CN113590376B CN202110796828.2A CN202110796828A CN113590376B CN 113590376 B CN113590376 B CN 113590376B CN 202110796828 A CN202110796828 A CN 202110796828A CN 113590376 B CN113590376 B CN 113590376B
- Authority
- CN
- China
- Prior art keywords
- data blocks
- user data
- decoding
- file
- check data
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 230000001502 supplementing effect Effects 0.000 claims description 6
- 230000011218 segmentation Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 7
- 230000000295 complement effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种多线程并行编/解码方法、编/解码器、用户端,属于计算机存储技术领域。包括:根据指定的编码规则对文件进行编码得到编码文件;对于容错范围内的多个数据块失效,可以根据现存的有效数据块恢复出原始数据;根据设置,使用不同线程数量并行完成数据编解码和文件读取过程,实现具有纠错能力的高速文件并发读写过程。
Description
技术领域
本发明属于计算机存储技术领域,更具体地,涉及一种多线程并行编/解码方法、编/解码器、用户端。
背景技术
存储系统中为了保证数据可靠性,通常使用多副本、可擦除编码的方式存储数据。通常使用的副本存储会导致磁盘使用空间的升高,以及随之而来的存储成本的增加。为了降低磁盘空间的使用,文件编码在数据可靠性方面的应用逐渐广泛。
使用文件编码保证数据可靠性的存储系统性能受限于编码过程的吞吐率。用户需要持久化保存的数据需要通过编码得到一定长度的校验数据,将校验数据和用户数据都保存在磁盘上,当一部分数据出现错误,使用剩余的无错数据,通过解码过程恢复出用户数据。可见,编解码过程出现在数据读写的关键路径上,编解码的速度决定了系统性能,低速的编解码性能将成为系统瓶颈。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了一种多线程并行编/解码方法、编/解码器、用户端,其目的在于通过多线程编解码提高编解码速度,缩短文件读写关键路径,同时保证用户数据的可靠性。
为实现上述目的,按照本发明的第一方面,提供了一种多线程并行编码方法,包括以下步骤:
使用多个I/O线程从存储设备读取源文件;
将所述源文件分割为n*z个用户数据块,其中包含z个数量为n的用户数据条带,使用T个编码线程,第t个编码线程按照每n个用户数据块得到k个校验数据块的编码规则对ti个数据条带进行编码,其中,1≤t≤T,当t≤z%T时,当t>z%T时,
使用多个I/O线程,将编码文件进行布局写入存储设备。
优选地,分割的规则为:
若用户数据块的大小是m,对于长度为x的源文件:
(a)若x能被n*m整除,那么用户数据块的总量为x/m,分为n*z个用户数据块;
(b)若x不能被n*m整除,那么用户数据块的总量为通过补零或者补充预设数据的方法补全为n*z个用户数据块。
优选地,布局方法包括:
用户数据块与校验数据块的垂直布局方法:n*z个用户数据块,编码得到k*z个校验数据块,将用户数据块连续存放在编码文件的前部,然后在编码文件尾部对应地连续存放校验数据块;
或者用户数据块与校验数据块的水平布局方法:用户数据块与校验数据块按照条带次序放置,每个条带中的数据块连续存放,同时,用户数据块连续存放在条带前部,校验数据块连续存放在条带后部。
或者用户数据块与校验数据块的水平交叉布局方法:用户数据块与校验数据块按照条带次序放置,但条带内部用户数据块与校验数据块间隔分布,用户数据块与校验数据块按照约定间隔存放。
本发明第二方面提供了一种多线程并行解码方法,编码文件包括z个条带,每个条带包括n个用户数据块和k个校验数据块;解码包括以下步骤:
使用多个I/O线程从存储设备读取编码文件到内存中;
使用T个线程从内存中读取条带,第t个线程读取ti个条带,对于每个条带,如果成功地读取了n个用户数据块,则解码结束;当y个用户数据块存在错误或者丢失时,如果y>k,则失效数据块过多,该条带中的用户数据不可恢复,则解码结束;否则读取x个校验数据块,如果不能成功读出y个校验数据块,则用户数据也不可恢复,解码结束;如果成功读出y个校验数据块,根据有效的用户数据块和y个校验数据块恢复出n个用户数据块,解码结束;其中,1≤t≤T,当t≤z%T时,当t>z%T时,
本发明第三方面提供了一种多线程并行编码器,包括:计算机可读存储介质和处理器;
所述计算机可读存储介质用于存储可执行指令;
所述处理器用于读取所述计算机可读存储介质中存储的可执行指令,执行本发明第一方面所述的多线程并行编码方法。
本发明第四发明提供了一种多线程并行解码器,包括:计算机可读存储介质和处理器;
所述计算机可读存储介质用于存储可执行指令;
所述处理器用于读取所述计算机可读存储介质中存储的可执行指令,执行本发明第二方面所述的多线程并行解码方法。
本发明第五发明提供了一种用户端,所述用户端同时包含本发明第三方面所述的多线程并行编码器和本发明第四方面所述的多线程并行解码器,当用户端作为发送端时,将多线程并行编码器的编码结果发送给接收端;当用户端作为接收端时,接收发送端的编码结果并进行多线程并行解码。
通过本发明所构思的以上技术方案,与现有技术相比,本发明将数据的读写与编码、解码过程解耦合,数据读写和数据的编码与解码由不同线程执行,从而充分发挥各个阶段地吞吐性能。与通过副本保证数据可靠性相比,本发明通过编码存储文件降低存储开销,降低成本,同时通过一种多线程并行编/解码方法、编/解码器、用户端保证了数据读写性能。
附图说明
图1为本发明实施例提供的一种不需要补全的文件分割方法的示意图。
图2为本发明实施例提供的一种需要在结尾补全无效数据的文件分割方法的示意图。
图3为本发明实施例提供的一种文件数据块垂直布局的示意图。
图4为本发明实施例提供的一种文件数据块水平布局的示意图。
图5为本发明实施例提供的一种文件数据块水平交叉布局的示意图。
图6为本发明实施例提供的一种文件多线程并行编码的流水线示意图。
图7为本发明实施例提供的一种文件多线程并行编码的流程示意图。
图8为本发明实施例提供的一种文件多线程并行解码的流水线示意图。
图9为本发明实施例提供的一种文件多线程并行解码的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
在本发明中,本发明及附图中的术语“1”、“2”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
为了保证数据可靠性的同时,提高磁盘的整体读写性能,本发明提供了一种多线程并行编/解码方法、一种编/解码器、客户端,如图1所示,多线程并行编码方法包括以下步骤:
使用多个I/O线程从存储设备读取源文件。
将所述源文件分割为n*z个用户数据块,其中包含z个数量为n的用户数据条带,使用T个编码线程,第t个编码线程按照每n个用户数据块得到k个校验数据块的编码规则对ti个数据条带进行编码,其中,1≤t≤T,当t≤z%T时,当t>z%T时,如图2所示。
使用多个I/O线程,将编码文件进行布局写入存储设备。
具体地,分割的规则为:
若用户数据块的大小是m,对于长度为x的源文件:
(a)如图3所示,若x能被n*m整除,那么用户数据块的总量为x/m,分为n*z个用户数据块;
(b)如图4所示,若x不能被n*m整除,那么用户数据块的总量为通过补零或者补充预设数据的方法补全为n*z个用户数据块。
具体地,布局方法包括:
用户数据块与校验数据块的垂直布局方法:n*z个用户数据块,编码得到k*z个校验数据块,将用户数据块连续存放在编码文件的前部,然后在编码文件尾部对应地连续存放校验数据块。如图5所示。
或者用户数据块与校验数据块的水平布局方法:用户数据块与校验数据块按照条带次序放置,每个条带中的数据块连续存放,同时,用户数据块连续存放在条带前部,校验数据块连续存放在条带后部。如图6所示。
或者用户数据块与校验数据块的水平交叉布局方法:用户数据块与校验数据块按照条带次序放置,但条带内部用户数据块与校验数据块间隔分布,用户数据块与校验数据块按照约定间隔存放。如图7所示。
本实施例中,使用本发明第二方面提供的一种多线程并行解码方法,编码文件包括z个条带,每个条带包括n个用户数据块和k个校验数据块;如图8所示,解码包括以下步骤:
使用多个I/O线程从存储设备读取编码文件到内存中。
使用T个线程从内存中读取条带,第t个线程读取ti个条带,对于每个条带,如果成功地读取了n个用户数据块,则解码结束;当y个用户数据块存在错误或者丢失时,如果y>k,则失效数据块过多,该条带中的用户数据不可恢复,则解码结束;否则读取x个校验数据块,如果不能成功读出y个校验数据块,则用户数据也不可恢复,解码结束;如果成功读出y个校验数据块,根据有效的用户数据块和y个校验数据块恢复出n个用户数据块,解码结束;其中,1≤t≤T,当t≤z%T时,当t>z%T时,如图9所示。
本实施例中,使用本发明第三方面提供的一种多线程并行编码器,包括:计算机可读存储介质和处理器;
所述计算机可读存储介质用于存储可执行指令;
所述处理器用于读取所述计算机可读存储介质中存储的可执行指令,执行本发明第一方面所述的多线程并行编码方法。
本实施例中,使用本发明第四发明提供的一种多线程并行解码器,包括:计算机可读存储介质和处理器;
所述计算机可读存储介质用于存储可执行指令;
所述处理器用于读取所述计算机可读存储介质中存储的可执行指令,执行本发明第二方面所述的多线程并行解码方法。
本实施例中,使用本发明第五发明提供的一种用户端,所述用户端同时包含本发明第三方面所述的多线程并行编码器和本发明第四方面所述的多线程并行解码器,当用户端作为发送端时,将多线程并行编码器的编码结果发送给接收端;当用户端作为接收端时,接收发送端的编码结果并进行多线程并行解码。
总的来说,本发明提供的一种多线程并行编/解码方法、编/解码器、用户端,可以由用户指定编码规则以及编解码过程中并行计算的线程数量,实现高速的文件编解码过程,进而实现使用数据编码作为数据保护手段的文件系统的快速读写,以及存在失效数据时,文件的快速解码,也即数据恢复。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种多线程并行编码方法,其特征在于,包括以下步骤:
使用多个I/O线程从存储设备读取源文件;
将所述源文件分割为n*z个用户数据块,其中包含z个数量为n的用户数据条带,使用T个编码线程,第t个编码线程按照每n个用户数据块得到k个校验数据块的编码规则对ti个数据条带进行编码,其中,1≤t≤T,当t≤z%T时,当t>z%T时,
使用多个I/O线程,将编码文件进行布局写入存储设备。
2.如权利要求1所述的多线程并行编码方法,其特征在于,所述分割的规则为:
若用户数据块的大小是m,对于长度为x的源文件:
(a)若x能被n*m整除,那么用户数据块的总量为x/m,分为n*z个用户数据块;
(b)若x不能被n*m整除,那么用户数据块的总量为通过补零或者补充预设数据的方法补全为n*z个用户数据块。
3.如权利要求1所述的多线程并行编码方法,其特征在于,所述将编码文件进行布局写入存储设备包括:
用户数据块与校验数据块的垂直布局方法:n*z个用户数据块,编码得到k*z个校验数据块,将用户数据块连续存放在编码文件的前部,然后在编码文件尾部对应地连续存放校验数据块;
或者用户数据块与校验数据块的水平布局方法:用户数据块与校验数据块按照条带次序放置,每个条带中的数据块连续存放,同时,用户数据块连续存放在条带前部,校验数据块连续存放在条带后部;
或者用户数据块与校验数据块的水平交叉布局方法:用户数据块与校验数据块按照条带次序放置,但条带内部用户数据块与校验数据块间隔分布,用户数据块与校验数据块按照约定间隔存放。
4.一种多线程并行解码方法,其特征在于,编码文件包括z个条带,每个条带包括n个用户数据块和k个校验数据块;包括以下步骤:
使用多个I/O线程从存储设备读取编码文件到内存中;
使用T个线程从内存中读取条带,第t个线程读取ti个条带,对于每个条带,如果成功地读取了n个用户数据块,则解码结束;当y个用户数据块存在错误或者丢失时,如果y>k,则失效数据块过多,该条带中的用户数据不可恢复,则解码结束;否则读取x个校验数据块,如果不能成功读出y个校验数据块,则用户数据也不可恢复,解码结束;如果成功读出y个校验数据块,根据有效的用户数据块和y个校验数据块恢复出n个用户数据块,解码结束;其中,1≤t≤T,当t≤z%T时,当t>z%T时,
5.一种多线程并行编码器,其特征在于,包括:计算机可读存储介质和处理器;
所述计算机可读存储介质用于存储可执行指令;
所述处理器用于读取所述计算机可读存储介质中存储的可执行指令,执行权利要求1至3任一项所述的多线程并行编码方法。
6.一种多线程并行解码器,其特征在于,包括:计算机可读存储介质和处理器;
所述计算机可读存储介质用于存储可执行指令;
所述处理器用于读取所述计算机可读存储介质中存储的可执行指令,执行权利要求4所述的多线程并行解码方法。
7.一种用户端,其特征在于,所述用户端同时包含如权利要求5所述的多线程并行编码器和如权利要求6所述的多线程并行解码器,当用户端作为发送端时,将多线程并行编码器的编码结果发送给接收端;当用户端作为接收端时,接收发送端的编码结果并进行多线程并行解码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110796828.2A CN113590376B (zh) | 2021-07-14 | 2021-07-14 | 一种多线程并行编/解码方法、编/解码器、用户端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110796828.2A CN113590376B (zh) | 2021-07-14 | 2021-07-14 | 一种多线程并行编/解码方法、编/解码器、用户端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113590376A CN113590376A (zh) | 2021-11-02 |
CN113590376B true CN113590376B (zh) | 2024-07-02 |
Family
ID=78247431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110796828.2A Active CN113590376B (zh) | 2021-07-14 | 2021-07-14 | 一种多线程并行编/解码方法、编/解码器、用户端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590376B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104539972A (zh) * | 2014-12-08 | 2015-04-22 | 中安消技术有限公司 | 一种多核处理器中视频并行解码的控制方法和装置 |
CN106454354A (zh) * | 2016-09-07 | 2017-02-22 | 中山大学 | 一种avs2并行编码处理系统及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10447474B2 (en) * | 2009-04-20 | 2019-10-15 | Pure Storage, Inc. | Dispersed data storage system data decoding and decryption |
JP6679874B2 (ja) * | 2015-10-09 | 2020-04-15 | 富士通株式会社 | 符号化プログラム、符号化装置、符号化方法、復号化プログラム、復号化装置および復号化方法 |
-
2021
- 2021-07-14 CN CN202110796828.2A patent/CN113590376B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104539972A (zh) * | 2014-12-08 | 2015-04-22 | 中安消技术有限公司 | 一种多核处理器中视频并行解码的控制方法和装置 |
CN106454354A (zh) * | 2016-09-07 | 2017-02-22 | 中山大学 | 一种avs2并行编码处理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113590376A (zh) | 2021-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11531593B2 (en) | Data encoding, decoding and recovering method for a distributed storage system | |
US8661225B2 (en) | Data processing apparatus and method for handling vector instructions | |
CN101031887B (zh) | 在冗余多线程环境中执行检验指令的方法、设备和系统 | |
EP2370899B1 (en) | Poison bit error checking code scheme | |
CN109901946A (zh) | 一种纠删码操作方法、装置、设备及存储介质 | |
US20090249034A1 (en) | Processor and signature generation method, and multiple system and multiple execution verification method | |
CN114710224A (zh) | 帧同步方法及装置、计算机可读介质、电子设备 | |
WO2022218337A1 (zh) | 一种弱内存序架构下的代码检查方法及相应设备 | |
CN108228382A (zh) | 一种针对evenodd码单盘故障的数据恢复方法 | |
CN113590376B (zh) | 一种多线程并行编/解码方法、编/解码器、用户端 | |
CN118210455B (zh) | 超长字段数据读写性能优化方法、装置、电子设备和存储介质 | |
CN106531224B (zh) | 一种基于sram型fpga的ram数据可靠性加固装置及方法 | |
US20120059997A1 (en) | Apparatus and method for detecting data race | |
US9252804B2 (en) | Re-aligning a compressed data array | |
CN116737241B (zh) | 一种指令融合方法、处理器核、处理器和计算机系统 | |
CN117349235A (zh) | 一种基于LSM-Tree的KV存储系统、电子设备、介质 | |
US11157330B2 (en) | Barrier-free atomic transfer of multiword data | |
CN115469818B (zh) | 一种磁盘阵列写处理方法、装置、设备及介质 | |
CN110008236B (zh) | 一种数据分布式自增编码方法、系统、设备及介质 | |
CN114064346B (zh) | 一种纠删码数据一致性保障方法及系统 | |
CN105824583A (zh) | 纠删码集群文件系统提高顺序写效率的处理方法及装置 | |
CN110908835B (zh) | 一种分布式系统中支持私有标签的数据冗余方法及系统 | |
JP2016537708A (ja) | メモリへの同時アクセス | |
US6928599B2 (en) | Method and apparatus for decoding data | |
CN112820343A (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 | ||
GR01 | Patent grant |