CN115454330A - 一种并行管理多个ssd读写的方法 - Google Patents
一种并行管理多个ssd读写的方法 Download PDFInfo
- Publication number
- CN115454330A CN115454330A CN202210930161.5A CN202210930161A CN115454330A CN 115454330 A CN115454330 A CN 115454330A CN 202210930161 A CN202210930161 A CN 202210930161A CN 115454330 A CN115454330 A CN 115454330A
- Authority
- CN
- China
- Prior art keywords
- ssd
- buffer
- read
- file
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000013403 standard screening design Methods 0.000 claims abstract description 354
- 239000000872 buffer Substances 0.000 claims abstract description 214
- 238000012545 processing Methods 0.000 claims abstract description 59
- 238000012544 monitoring process Methods 0.000 claims description 10
- 230000003139 buffering effect Effects 0.000 claims description 6
- 238000013500 data storage Methods 0.000 abstract description 4
- 238000007726 management method Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 101000652500 Homo sapiens Tubulin-specific chaperone D Proteins 0.000 description 5
- 102100030290 Tubulin-specific chaperone D Human genes 0.000 description 5
- 239000013307 optical fiber Substances 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 2
- 230000002035 prolonged effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004132 cross linking Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种并行管理多个SSD读写的方法,涉及数据存储技术领域。该方法的具体实施方式包括:CPU创建一个数据处理线程和多个SSD线程,为每一个SSD分配一个SSD线程;通过数据处理线程接收数据写入请求;在待写入文件的大小达到写入文件阈值的情况下,分别判断每一个SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求;如果是,将待写入文件划分为多个子文件,分别利用多个SSD线程将多个子文件写入与SSD线程对应的SSD。该实施方式能够对多个SSD进行管理,使得多个SSD并行、同步读写同一文件的不同区域,将数据直接写在硬盘物理地址,使得文件的读写速率大大提升,可以满足各种数据格式的读写需求,防止SSD的自身损耗,大大提高SSD的使用寿命。
Description
技术领域
本发明属于数据存储技术领域,具体涉及一种并行管理多个SSD读写的方法。
背景技术
固态硬盘(Solid State Disk/Solid State Drive,简称SSD,又称固态驱动器),是指利用固态电子存储芯片阵列制成的硬盘,使用电子存储芯片作为介质,通常由控制芯片和闪存芯片(也称FLASH芯片)组成。
现有的SSD数据读写过程中,利用多个SSD同时进行数据读写时,常常采用多个SSD组raid(Redundant Arrays of Independent Drives,即磁盘阵列)的方式。然而,一方面,多个SSD磁盘阵列的方式在对同一个文件进行读写时,通常是将文件分为N个部分,多个SSD接续进行读写,也即,一个SSD读写完毕后,下一个SSD才可以接着读写,使得文件的读写速率低下;另一方面,文件的读写速率并不随SSD数量的增多而呈相应的倍速增大趋势,也即,增加SSD的数量可能并不会带来文件读写速率增大的效果,反而使得SSD自身的损耗增加。
发明内容
有鉴于此,本发明提供了一种并行管理多个SSD读写的方法,能够对多个SSD进行管理,使得多个SSD并行、同步读写同一文件的不同区域,将数据直接写在硬盘物理地址,SSD的读写速率可以达到硬盘的理论最大读写速率,使得文件的读写速率大大提升,可以满足各种数据格式的读写需求,防止SSD的自身损耗,大大提高SSD的使用寿命。
实现本发明的技术方案如下:
一种并行管理多个SSD读写的方法,所述方法利用电抗记录设备执行,所述电抗记录设备包括CPU和存储卡,所述存储卡包括多个SSD,所述方法包括:
所述CPU创建一个数据处理线程和多个SSD线程,为每一个所述SSD分配一个SSD线程;
通过所述数据处理线程接收数据写入请求;其中,所述数据写入请求包括待写入文件;
在所述待写入文件的大小达到写入文件阈值的情况下,分别判断每一个所述SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求;其中,所述写入文件阈值是根据所述SSD的单位扇区大小和数量确定的;
如果是,将所述待写入文件划分为多个子文件,分别利用多个所述SSD线程将多个所述子文件写入与所述SSD线程对应的SSD;其中,所述子文件的数量与所述SSD线程的数量相同。
可选地,所述缓冲阈值包括缓冲区最大深度;所述判断每一个所述SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求,包括:
分别判断每一个所述SSD的缓冲区的已缓冲数据是否小于所述缓冲区最大深度;如果是,执行所述将所述待写入文件划分为多个子文件;
将多个所述子文件分别存放至多个所述SSD的缓冲区。
可选地,所述缓冲阈值还包括缓冲写入阈值;所述判断每一个所述SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求,还包括:
通过多个所述SSD线程监控与所述SSD线程对应的SSD的缓冲区,判断所述SSD的缓冲区的已缓冲数据是否大于缓冲写入阈值;
如果是,执行所述分别利用多个所述SSD线程将多个所述子文件写入与所述SSD线程对应的SSD。
一种并行管理多个SSD读写的方法,所述方法利用电抗记录设备执行,所述电抗记录设备包括CPU和存储卡,所述存储卡包括多个SSD,所述方法包括:
所述CPU创建一个数据处理线程和多个SSD线程,为每一个所述SSD分配一个SSD线程;
通过所述数据处理线程接收数据读取请求;其中,所述数据读取请求包括多个所述SSD中的多个待读取子文件和目标用户,所述待读取子文件的数量与所述SSD线程的数量相同;
分别判断每一个所述SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求;
如果是,分别利用多个所述SSD线程读取与所述SSD线程对应的SSD中的多个所述待读取子文件,将多个所述待读取子文件组合成目标读取文件,并发送给所述目标用户。
可选地,所述缓冲阈值包括缓冲区最大深度;所述判断每一个所述SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求,包括:
通过多个所述SSD线程判断与所述SSD线程对应的所述SSD的缓冲区的已缓冲数据是否小于所述缓冲区最大深度;如果是,执行所述分别利用多个所述SSD线程读取与所述SSD线程对应的SSD中的多个所述待读取子文件;
利用多个所述SSD线程分别将与所述SSD线程对应的待读取子文件存放至与所述SSD线程对应的多个SSD的缓冲区。
可选地,所述缓冲阈值还包括缓冲读取阈值;所述判断每一个所述SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求,还包括:
利用所述数据处理线程监控各个所述SSD的缓冲区,分别判断各个所述SSD的缓冲区的已缓冲数据是否大于缓冲读取阈值;
如果是,分别从各个所述SSD的缓冲区读取各个所述待读取子文件,执行所述将多个所述待读取子文件组合成目标读取文件。
可选地,所述SSD的数量为5个,所述SSD的所述写入文件阈值为5M。
可选地,所述缓冲区最大深度为16M,所述缓冲写入阈值为0M。
有益效果:
(1)能够对多个SSD进行管理,使得多个SSD并行、同步读写同一文件的不同区域,提高了多个SSD盘并行读写速率,将数据直接写在硬盘物理地址,SSD的读写速率可以达到硬盘的理论最大读写速率,解决了多个SSD无法并行读写同一个文件的问题,使得文件的读写速率大大提升,可以满足各种数据格式的读写需求。
(2)相较于传统的利用1个线程接续读写文件,本发明基于1个数据处理线程和5个SSD线程的结合,并行读写文件,缩短文件读写时间,大大提高了文件读写速率。
(3)对于5个2TB SSD并行的电抗记录设备,选择设置SSD的单位扇区大小为1M,根据SSD的单位扇区大小和数量,确定写入文件阈值为5M。使得SSD的读写速率保持最优,降低SSD的损耗,大大提高SSD的使用寿命。因此,当待写入文件的大小未达到5M时,等待待写入文件累积至5M,再开始利用5个SSD线程并行写盘,也即,分配给每个SSD的子文件大小累计至1M再利用对应的SSD线程开始写盘,以保证SSD的读写速率最优,不够1M的话则等待文件大小够1M再写盘。
(4)写入时,在待写入文件达到5MB时,通过数据处理线程判断SSD缓冲区的size是否小于LOGIC_BUFF_SIZE,确定是否将待写入文件划分为多个子文件;再利用SSD线程监控SSD的缓冲区的size是否大于0,确定是否将子文件写入SSD硬盘。
(5)读取时,通过SSD线程判断SSD的缓冲区的size是否小于LOGIC_BUFF_SIZE,确定是否读取SSD硬盘中的待读取子文件,并将待读取子文件存放至SSD的缓冲区;再利用数据处理线程监控各个SSD的缓冲区的size是否大于,确定是否从SSD的缓冲区读取待读取子文件,再将多个待读取子文件组合成目标读取文件。
附图说明
图1为根据本发明第一个实施例的并行管理多个SSD读写的方法的主要流程的示意图。
图2(a)为根据本发明实施例的电抗记录设备硬件组成的示意图。
图2(b)为根据本发明实施例的信号流向的示意图。
图3为根据本发明第一个实施例的SSD的缓冲区的已缓冲数据的判断方法的主要流程的示意图。
图4为根据本发明第二个实施例的并行管理多个SSD读写的方法的主要流程的示意图。
图5为根据本发明第二个实施例的SSD的缓冲区的已缓冲数据的判断方法的主要流程的示意图。
具体实施方式
传统的HDD(Hard Disk Drive的缩写,即机械硬盘,也称硬盘驱动器)由高速数据缓存芯片、数据传输芯片、主控制芯片组成,使用磁盘(即磁性介质)作为数据存储介质,在读写时,利用磁头+马达相结合的方式进行机械寻址。由于机械驱动的速度受限,导致HDD的读写性能很差,尤其是其随机读写能力,受制于机械特性无法提升。
本发明利用SSD进行存储,SSD使用Flash芯片(或称闪存芯片)作为存储介质,数据读写通过SSD控制器进行寻址,无需机械操作,故而随机读写能力极优,可应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空、导航设备等诸多领域。
下面结合附图并举实施例,对本发明进行详细描述。
本发明提供了一种并行管理多个SSD读写的方法,如图1所示,本发明第一个实施例的并行管理多个SSD读写的方法包括如下步骤:
步骤101,所述CPU创建一个数据处理线程和多个SSD线程,为每一个所述SSD分配一个SSD线程。
在本发明实施例中,本发明第一个实施例的并行管理多个SSD读写的方法为并行管理多个SSD的写入方法。本发明的并行管理多个SSD读写的方法利用电抗记录设备执行,电抗记录设备是一款用于写入、读取光纤数据、网络数据等数据的数据处理和存储设备,如图2(a)所示,本发明的电抗记录设备包括前面板、后面板和背板,前面板上安装有电源开关、电源指示灯和毁钥按钮,后面板上安装有多个光纤连接器(图中以4个示例)、多个网口连接器(图中以2个示例)、电源线、FUSE(安全设备)和接地线。
在本发明实施例中,背板为IO板,主要负责提供对外接口,包括3个千兆网数据接口、8路光纤接口、系统盘接口(比如,MSATA)和调测接口(用于故障调试),背板上安装有主控板和存储卡,对外接口通过背板与主控板连接,供电后,可以实现主控板、存储卡、前面板、后面板各接口信号的交联以及通信。主控板通过LRM(line replaceable module)接插件插入背板,利用CPU控制数据的访存处理,包括光纤数据、网络数据等数据的读写、存储、毁钥等操作。存储板为数据存储介质,作为存储数据的记录载体,存储板上挂载了5块2TBSSD,其总容量为10TB。存储板上的SSD的接口为M.2接口,采用SATA(Serial ATA,即串行ATA)总线,存储板通过PCIE接口与主控板上的CPU连接并通信,实现主控板向存储卡写入数据、主控板从存储卡读取数据的目的,比如,主控板向存储卡写入数据的信号流向如图2(b)所示。
在本发明实施例中,以处理系统为Linux系统为例,本发明以5个2TB SSD作为存储介质,电抗记录设备的CPU将发送方的待写入文件存储至存储卡的SSD。
在本发明实施例中,电抗记录设备的CPU对存储卡上的5个SSD进行并行管理,控制5个SSD同时写入文件,以满足技术协议的存储带宽要求。其中:
上电后,在处理数据写入请求之前,CPU创建一个数据处理线程和多个SSD线程,分别为每一个SSD分配一个SSD线程,5个SSD线程同时运行以写入文件,大大提高了文件的写入速度。
步骤102,通过所述数据处理线程接收数据写入请求;其中,所述数据写入请求包括待写入文件。
在本发明实施例中,数据处理线程作为综合管理的线程,用于接收各个数据源的数据写入请求,确定与数据写入请求对应的待写入文件。
进一步地,CPU控制数据处理线程接收数据写入请求,确定与数据写入请求对应的待写入文件。
步骤103,在所述待写入文件的大小达到写入文件阈值的情况下,分别判断每一个所述SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求;其中,所述写入文件阈值是根据所述SSD的单位扇区大小和数量确定的。
在本发明实施例中,数据处理线程对待写入文件的大小进行判断,确定待写入文件的大小是否达到写入文件阈值,如果是,则执行分别判断每一个SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求;如果否,则继续等待,直至待写入文件的大小累积至写入文件阈值。
在本发明实施例中,由于SSD的读写速率并非越大越好,读写速率太大反而对SSD的损耗过高,因此,本发明选择设置SSD的单位扇区大小为1M,相应地,写入文件阈值是根据SSD的单位扇区大小和数量确定的,也即,写入文件阈值为1MB*SSD数量=1MB*5=5M。比如,数据处理线程以5MB为单位,确定待写入文件是否达到写入文件阈值,如果是,则进行SSD的缓冲区的已缓冲数据是否满足缓冲阈值的判断;如果否,则继续等待,直至待写入文件的大小累积至5MB。
在本发明实施例中,SSD的单位扇区大小可以根据本发明的实际应用场景进行修改,比如,基于SSD的容量进行修改。
在本发明实施例中,在确定待写入文件的大小达到写入文件阈值的情况下,对SSD的缓冲区的已缓冲数据进行判断,确定每一个SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求,缓冲阈值包括缓冲区最大深度和缓冲写入阈值。数据处理线程对SSD的缓冲区的已缓冲数据是否满足缓冲区最大深度进行判断、各个SSD线程对SSD的缓冲区的已缓冲数据是否满足缓冲写入阈值进行判断。
步骤104,如果是,将所述待写入文件划分为多个子文件,分别利用多个所述SSD线程将多个所述子文件写入与所述SSD线程对应的SSD;其中,所述子文件的数量与所述SSD线程的数量相同。
在本发明实施例中,在数据处理线程确定SSD的缓冲区的已缓冲数据满足缓冲区最大深度要求的情况下,执行将待写入文件划分为多个子文件并存放至对应的SSD的缓冲区;在SSD线程确定SSD的缓冲区的已缓冲数据满足缓冲写入阈值要求的情况下,执行利用多个SSD线程将多个子文件写入与SSD线程对应的SSD。
如图3所示,本发明第一个实施例的SSD的缓冲区的已缓冲数据的判断方法包括如下步骤:
步骤301,数据处理线程分别判断每一个所述SSD的缓冲区的已缓冲数据是否小于所述缓冲区最大深度;如果是,转至步骤302;如果否,转至步骤306。
在本发明实施例中,写文件的缓冲区结构体的定义如下:
//硬盘数量
#define DISK_COUNT (5)
//缓冲区最大深度,或称,逻辑数据缓冲区大小
#define LOGIC_BUFF_SIZE (16)
//写入文件阈值,或称,读写扇区大小(单位:字节)
#define SINGLE_SECTOR_SIZE (UINT64)(5*1024*1024)
struct st_record_dataBuff
{
//head是指缓冲区头指针,用于数据写入
UINT32 head;
//tail是指缓冲区尾指针,用于数据写出,每个SSD单独计算
UINT32 tail[DISK_COUNT];
//size是指SSD的缓冲区中已缓冲数据的大小,每个SSD单独计算
UINT32 size[DISK_COUNT];
//dataBuff是指用于存放实际数据的二维数组
UINT8 dataBuff[LOGIC_BUFF_SIZE][SINGLE_SECTOR_SIZE];
};
在本发明实施例中,缓冲区最大深度为16M是指每一个SSD的缓冲区的容量上限/速率上限为16M。
进一步地,缓冲区最大深度的大小与CPU内存相关,因此,缓冲区最大深度的大小可以根据本发明的实际应用场景进行修改。
在本发明实施例中,在接收数据写入请求之前,对缓冲区结构体进行初始化,包括:
将每一个缓冲区的head、tail设置为0、清空dataBuff数组。
在本发明实施例中,数据处理线程分别判断每一个SSD的缓冲区的已缓冲数据是否小于缓冲区最大深度,包括:
数据处理线程分别判断每一个SSD的缓冲区的size是否小于LOGIC_BUFF_SIZE,也即,数据处理线程分别判断每一个SSD的缓冲区的size是否小于16M。
步骤302,数据处理线程执行所述将所述待写入文件划分为多个子文件。
在本发明实施例中,在SSD的缓冲区的已缓冲数据小于缓冲区最大深度的情况下,数据处理线程将待写入文件划分为多个子文件。比如,数据处理线程将以5MB为单位的待写入文件划分为5个1MB的子文件。
步骤303,数据处理线程将多个所述子文件分别存放至多个所述SSD的缓冲区。
在本发明实施例中,数据处理线程分别将多个子文件存放至多个SSD的缓冲区。比如,数据处理线程分别将5个1MB的子文件存放至5个SSD的缓冲区。具体地:
每一个SSD的缓冲区中,数据处理线程将1个1MB的子文件存放至dataBuff[head]中,相应地,缓冲区的size、head分别加1;对head的值进行监控,如果head等于LOGIC_BUFF_SIZE则将head重置为0。
步骤304,通过多个所述SSD线程监控与所述SSD线程对应的SSD的缓冲区,判断所述SSD的缓冲区的已缓冲数据是否大于缓冲写入阈值,如果是,转至步骤305;如果否,转至步骤306。
在本发明实施例中,分别利用各个SSD线程监控对应的SSD的缓冲区的已缓冲数据,判断SSD的缓冲区的已缓冲数据是否大于缓冲写入阈值。比如,缓冲写入阈值为0,SSD线程监控与其对应的SSD的缓冲区,确定SSD缓冲区的size是否大于0。
步骤305,执行所述分别利用多个所述SSD线程将多个所述子文件写入与所述SSD线程对应的SSD。
在本发明实施例中,在SSD的缓冲区的已缓冲数据大于缓冲写入阈值的情况下,利用SSD线程将对应SSD缓冲区的子文件写入对应的SSD。比如,在SSD的缓冲区的size大于0的情况下,SSD线程将1MB的子文件写入对应的SSD,相应地,5个SSD线程将5MB的待写入文件分别写入各个SSD。具体地:
每一个SSD线程将对应缓冲区的dataBuff[tail]中的子文件写入SSD盘,相应地,缓冲区的size减1、tail加1;对tail的值进行监控,如果tail等于LOGIC_BUFF_SIZE则将tail重置为0。
在本发明实施例中,缓冲写入阈值为0,表明缓冲区一被存放数据,即被SSD线程写入对应的SSD。SSD以1M作为单位扇区,以保证最优的读写速度,也即,SSD以1M为单位读写数据,因此,缓冲写入阈值为0的情况下,只要SSD缓冲区的size大于0,其实质即表明SSD的缓冲区至少包括1M的子文件。
在本发明实施例中,停止接收数据写入请求时,即使待写入文件不满足写入文件阈值(比如,5M),也直接利用多个SSD线程将不满足写入文件阈值的待写入文件写入盘中。
步骤306,延时判断,转至步骤301。
在本发明实施例中,在每一个SSD的缓冲区的已缓冲数据大于等于缓冲区最大深度或者SSD的缓冲区的已缓冲数据小于等于缓冲写入阈值的情况下,延时后重新判断;其中,延时等待过程中,可能存在已缓冲数据被对应的SSD线程读取、已缓冲数据无变化、缓冲区缓冲数据等情况。比如,延时的等待时间为10ms,在数据处理线程确定每一个SSD的缓冲区的size大于等于16M、SSD线程监控到对应的SSD的缓冲区的size小于等于0的情况下,等待10ms后转至步骤301重新判断。
本发明提供了一种并行管理多个SSD读写的方法,如图4所示,本发明第二个实施例的并行管理多个SSD读写的方法包括如下步骤:
步骤401,所述CPU创建一个数据处理线程和多个SSD线程,为每一个所述SSD分配一个SSD线程。
在本发明实施例中,本发明第二个实施例的并行管理多个SSD读写的方法为并行管理多个SSD的读取方法。本发明的并行管理多个SSD读写的方法利用电抗记录设备执行。以处理系统为Linux系统为例,本发明以5个2TB SSD作为存储介质,电抗记录设备的CPU从存储卡的SSD获取多个待读取子文件,组合为目标读取文件后发送给目标用户。
在本发明实施例中,电抗记录设备的CPU对存储卡上的5个SSD进行并行管理,控制5个SSD同时读取文件,以满足技术协议的存储带宽要求。其中:
上电后,在处理数据读取请求之前,CPU创建一个数据处理线程和多个SSD线程,分别为每一个SSD分配一个SSD线程,5个SSD线程同时运行以读取文件,大大提高了文件的读取速度。
步骤402,通过所述数据处理线程接收数据读取请求;其中,所述数据读取请求包括多个所述SSD中的多个待读取子文件和目标用户,所述待读取子文件的数量与所述SSD线程的数量相同。
在本发明实施例中,数据处理线程作为综合管理的线程,用于接收数据读取请求,确定与数据读取请求对应的各个待读取子文件,在各个SSD线程读取对应的待读取子文件后,接收各个SSD线程发送的待读取子文件,将其组合为与数据读取请求对应的目标读取文件并发送给读取方。
步骤403,分别判断每一个所述SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求。
在本发明实施例中,基于与图1实施例的并行管理SSD的写入方法相同的理由,本发明的并行管理SSD的读取方法选择设置SSD的单位扇区大小同样为1M。
在本发明实施例中,对各个SSD的缓冲区的已缓冲数据进行判断,确定每一个SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求,缓冲阈值包括缓冲区最大深度和缓冲读取阈值。各个SSD线程对SSD的缓冲区的已缓冲数据是否满足缓冲区最大深度进行判断、数据处理线程对SSD的缓冲区的已缓冲数据是否满足缓冲读取阈值进行判断。
步骤404,如果是,分别利用多个所述SSD线程读取多个所述待读取子文件,将多个所述待读取子文件组合成目标读取文件,并发送给所述目标用户。
在本发明实施例中,在各个SSD线程确定与其对应的SSD的缓冲区的已缓冲数据满足缓冲区最大深度要求的情况下,执行读取与其对应的SSD中的待读取子文件,并存放至与其对应的SSD的缓冲区;在数据处理线程确定SSD的缓冲区的已缓冲数据满足缓冲读取阈值要求的情况下,分别从各个SSD的缓冲区的获取各个待读取子文件,执行将多个待读取子文件组合成目标读取文件并发送给读取方(即目标用户)。
如图5所示,本发明第二个实施例的SSD的缓冲区的已缓冲数据的判断方法包括如下步骤:
步骤501,通过多个所述SSD线程判断与所述SSD线程对应的所述SSD的缓冲区的已缓冲数据是否小于所述缓冲区最大深度;如果是,转至步骤502;如果否,转至步骤507。
在本发明实施例中,读文件的缓冲区结构体与写文件的缓冲区结构体的定义相同,也即,读文件的缓冲区结构体与写文件的缓冲区结构体的成员变量相同。
在本发明实施例中,基于与图1实施例的并行管理SSD的写入方法相同的理由,本发明的并行管理SSD的读取方法的缓冲区最大深度为16M。
在本发明实施例中,各个SSD线程判断与其对应的SSD的缓冲区的已缓冲数据是否小于缓冲区最大深度,包括:
各个SSD线程判断与其对应的SSD的缓冲区的size是否小于LOGIC_BUFF_SIZE,也即,各个SSD线程判断与其对应的SSD的缓冲区的size是否小于16M。
步骤502,执行所述分别利用多个所述SSD线程读取与所述SSD线程对应的SSD中的多个所述待读取子文件。
在本发明实施例中,在SSD的缓冲区的已缓冲数据小于缓冲区最大深度的情况下,SSD线程读取与其对应的SSD中的待读取子文件。比如,每一个SSD线程读取与其对应的SSD中的1MB的待读取子文件,相应地,5个SSD线程读取5MB的待读取子文件。
步骤503,利用多个所述SSD线程分别将与所述SSD线程对应的待读取子文件存放至与所述SSD线程对应的多个SSD的缓冲区。
在本发明实施例中,各个SSD线程将与SSD线程对应的待读取子文件存放至与SSD线程对应的SSD的缓冲区。比如,每一个SSD线程将读取的1MB的待读取子文件存放至与其对应的SSD的缓冲区。具体地:
每一个SSD的缓冲区中,SSD线程将1MB的待读取子文件存放至dataBuff[tail]中,相应地,缓冲区的size、tail分别加1;对tail的值进行监控,如果tail等于LOGIC_BUFF_SIZE则将tail重置为0。
步骤504,利用所述数据处理线程监控各个所述SSD的缓冲区,分别判断各个所述SSD的缓冲区的已缓冲数据是否大于缓冲读取阈值,如果是,转至步骤505;如果否,转至步骤507。
在本发明实施例中,利用数据处理线程监控各个SSD的缓冲区的已缓冲数据,判断SSD的缓冲区的已缓冲数据是否大于缓冲读取阈值。比如,缓冲读取阈值为0,数据处理线程监控各个SSD的缓冲区,确定各个SSD的缓冲区的size是否大于0。
步骤505,数据处理线程分别从各个所述SSD的缓冲区读取各个所述待读取子文件。
在本发明实施例中,在SSD的缓冲区的已缓冲数据大于缓冲读取阈值的情况下,数据处理线程分别从各个SSD的缓冲区读取各个待读取子文件。比如,在SSD的缓冲区的size大于0的情况下,数据处理线程分别从各个SSD的缓冲区读取各个待读取子文件,相应地,数据处理线程从5SSD的缓冲区读取5个1MB的待读取子文件。具体地:
数据处理线程读取各个dataBuff[head]中的待读取子文件,相应地,缓冲区的size减1、head加1;对head的值进行监控,如果head等于LOGIC_BUFF_SIZE则将head置为0。
在本发明实施例中,缓冲读取阈值为0,表明缓冲区一被存放数据,即被数据处理线程读取。SSD以1M作为单位扇区,以保证最优的读写速度,也即,SSD以1M为单位读写数据,因此,缓冲读取阈值为0的情况下,只要SSD缓冲区的size大于0,其实质即表明SSD的缓冲区至少包括1M的子文件。
步骤506,数据处理线程执行所述将多个所述待读取子文件组合成目标读取文件。
在本发明实施例中,据处理线程将5个1MB的待读取子文件组合成1个5MB的目标读取文件。
步骤507,延时判断,转至步骤501。
在本发明实施例中,在每一个SSD的缓冲区的已缓冲数据大于等于缓冲区最大深度或者SSD的缓冲区的已缓冲数据小于等于缓冲读取阈值的情况下,延时后重新判断;其中,延时等待过程中,可能存在SSD线程暂停从SSD硬盘读取、SSD线程向缓冲区存放、数据处理线程暂停从缓冲区读取等情况。比如,延时的等待时间为10ms,在SSD线程确定每一个SSD的缓冲区的size大于等于16M、数据处理线程监控到对应的SSD的缓冲区的size小于等于0的情况下,等待10ms后转至步骤501重新判断。
在本发明实施例中,或者,电抗记录设备上电初始化时,可以对存储卡上的5个2TBSSD进行标识以便于区分,将五个盘组织成1、2、3、4、5的并行盘。比如,SSD-1、SSD-2、SSD-3、SSD-4、SSD-5,写入数据(以5MB为单位)时SSD-1、SSD-2、SSD-3、SSD-4、SSD-5同时写入,如下所示:
->SSD-1盘写1MB
->SSD-2盘写1MB
->SSD-3盘写1MB
->SSD-4盘写1MB
->SSD-5盘写1MB。
读取数据(以5MB为单位)时SSD-1、SSD-2、SSD-3、SSD-4、SSD-5同时读取,如下所示:
->SSD-1盘读1MB
->SSD-2盘读1MB
->SSD-3盘读1MB
->SSD-4盘读1MB
->SSD-5盘读1MB。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种并行管理多个SSD读写的方法,其特征在于,所述方法利用电抗记录设备执行,所述电抗记录设备包括CPU和存储卡,所述存储卡包括多个SSD,所述方法包括:
所述CPU创建一个数据处理线程和多个SSD线程,为每一个所述SSD分配一个SSD线程;
通过所述数据处理线程接收数据写入请求;其中,所述数据写入请求包括待写入文件;
在所述待写入文件的大小达到写入文件阈值的情况下,分别判断每一个所述SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求;其中,所述写入文件阈值是根据所述SSD的单位扇区大小和数量确定的;
如果是,将所述待写入文件划分为多个子文件,分别利用多个所述SSD线程将多个所述子文件写入与所述SSD线程对应的SSD;其中,所述子文件的数量与所述SSD线程的数量相同。
2.如权利要求1所述的方法,其特征在于,所述缓冲阈值包括缓冲区最大深度;所述判断每一个所述SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求,包括:
分别判断每一个所述SSD的缓冲区的已缓冲数据是否小于所述缓冲区最大深度;如果是,执行所述将所述待写入文件划分为多个子文件;
将多个所述子文件分别存放至多个所述SSD的缓冲区。
3.如权利要求2所述的方法,其特征在于,所述缓冲阈值还包括缓冲写入阈值;所述判断每一个所述SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求,还包括:
通过多个所述SSD线程监控与所述SSD线程对应的SSD的缓冲区,判断所述SSD的缓冲区的已缓冲数据是否大于缓冲写入阈值;
如果是,执行所述分别利用多个所述SSD线程将多个所述子文件写入与所述SSD线程对应的SSD。
4.一种并行管理多个SSD读写的方法,其特征在于,所述方法利用电抗记录设备执行,所述电抗记录设备包括CPU和存储卡,所述存储卡包括多个SSD,所述方法包括:
所述CPU创建一个数据处理线程和多个SSD线程,为每一个所述SSD分配一个SSD线程;
通过所述数据处理线程接收数据读取请求;其中,所述数据读取请求包括多个所述SSD中的多个待读取子文件和目标用户,所述待读取子文件的数量与所述SSD线程的数量相同;
分别判断每一个所述SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求;
如果是,分别利用多个所述SSD线程读取与所述SSD线程对应的SSD中的多个所述待读取子文件,将多个所述待读取子文件组合成目标读取文件,并发送给所述目标用户。
5.如权利要求4所述的方法,其特征在于,所述缓冲阈值包括缓冲区最大深度;所述判断每一个所述SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求,包括:
通过多个所述SSD线程判断与所述SSD线程对应的所述SSD的缓冲区的已缓冲数据是否小于所述缓冲区最大深度;如果是,执行所述分别利用多个所述SSD线程读取与所述SSD线程对应的SSD中的多个所述待读取子文件;
利用多个所述SSD线程分别将与所述SSD线程对应的待读取子文件存放至与所述SSD线程对应的多个SSD的缓冲区。
6.如权利要求5所述的方法,其特征在于,所述缓冲阈值还包括缓冲读取阈值;所述判断每一个所述SSD的缓冲区的已缓冲数据是否满足缓冲阈值的要求,还包括:
利用所述数据处理线程监控各个所述SSD的缓冲区,分别判断各个所述SSD的缓冲区的已缓冲数据是否大于缓冲读取阈值;
如果是,分别从各个所述SSD的缓冲区读取各个所述待读取子文件,执行所述将多个所述待读取子文件组合成目标读取文件。
7.如权利要求1-3中任一项所述的方法,其特征在于,所述SSD的数量为5个,所述SSD的所述写入文件阈值为5M。
8.如权利要求2-3、5-6中任一项所述的方法,其特征在于,所述缓冲区最大深度为16M,所述缓冲写入阈值为0M。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210930161.5A CN115454330A (zh) | 2022-08-03 | 2022-08-03 | 一种并行管理多个ssd读写的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210930161.5A CN115454330A (zh) | 2022-08-03 | 2022-08-03 | 一种并行管理多个ssd读写的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115454330A true CN115454330A (zh) | 2022-12-09 |
Family
ID=84296303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210930161.5A Pending CN115454330A (zh) | 2022-08-03 | 2022-08-03 | 一种并行管理多个ssd读写的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115454330A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101498994A (zh) * | 2009-02-16 | 2009-08-05 | 华中科技大学 | 一种固态硬盘控制器 |
CN107273304A (zh) * | 2017-05-24 | 2017-10-20 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘顺序读性能的方法及固态硬盘 |
CN207833486U (zh) * | 2018-02-26 | 2018-09-07 | 湖南国科微电子股份有限公司 | 一种基于fpga的固态存储系统 |
CN108701081A (zh) * | 2016-01-11 | 2018-10-23 | 美光科技公司 | 用于同时存取非易失性存储器的多个分区的设备和方法 |
CN113111038A (zh) * | 2021-03-31 | 2021-07-13 | 北京达佳互联信息技术有限公司 | 文件存储方法、装置、服务器及存储介质 |
CN113568572A (zh) * | 2021-07-09 | 2021-10-29 | 浙江工业大学 | 一种基于固态硬盘的数据库并行排序连接系统 |
-
2022
- 2022-08-03 CN CN202210930161.5A patent/CN115454330A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101498994A (zh) * | 2009-02-16 | 2009-08-05 | 华中科技大学 | 一种固态硬盘控制器 |
CN108701081A (zh) * | 2016-01-11 | 2018-10-23 | 美光科技公司 | 用于同时存取非易失性存储器的多个分区的设备和方法 |
CN107273304A (zh) * | 2017-05-24 | 2017-10-20 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘顺序读性能的方法及固态硬盘 |
CN207833486U (zh) * | 2018-02-26 | 2018-09-07 | 湖南国科微电子股份有限公司 | 一种基于fpga的固态存储系统 |
CN113111038A (zh) * | 2021-03-31 | 2021-07-13 | 北京达佳互联信息技术有限公司 | 文件存储方法、装置、服务器及存储介质 |
CN113568572A (zh) * | 2021-07-09 | 2021-10-29 | 浙江工业大学 | 一种基于固态硬盘的数据库并行排序连接系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9710168B2 (en) | Storage system | |
US8656099B2 (en) | Storage apparatus and storage control method for the same | |
US7730257B2 (en) | Method and computer program product to increase I/O write performance in a redundant array | |
US7844794B2 (en) | Storage system with cache threshold control | |
US7401252B2 (en) | Apparatus and method to convert data from a first sector format to a second sector format | |
US7076605B1 (en) | Method and apparatus for writing data to a storage device | |
US20070266218A1 (en) | Storage system and storage control method for the same | |
US20090282191A1 (en) | Operating Method for a Memory Subsystem and Devices for Executing the Operating Method | |
US8615625B2 (en) | Disk array system | |
US20230153024A1 (en) | System and method for nand multi-plane and multi-die status signaling | |
CN109074226A (zh) | 一种存储系统中重复数据删除方法、存储系统及控制器 | |
CN104991737B (zh) | 一种基于存储卡阵列架构的硬盘实现方法 | |
US20100235599A1 (en) | Access control device, storage system, and access control method | |
KR101209916B1 (ko) | 파이버 채널 인터페이스 컨트롤러를 갖는 raid 기반 저장소 컨트롤 보드 및 그 구동 방법 | |
US20060140008A1 (en) | Storage apparatus | |
US7240242B2 (en) | Apparatus and method to convert data payloads from a first sector format to a second sector format | |
US20080195832A1 (en) | Storage controller and storage system | |
US9201598B2 (en) | Apparatus and method for sharing resources between storage devices | |
US7984245B2 (en) | Storage system, storage subsystem and storage control method | |
US6925530B2 (en) | Initialization of a storage system | |
CN115454330A (zh) | 一种并行管理多个ssd读写的方法 | |
US20190227712A1 (en) | Event-based dynamic memory allocation in a data storage device | |
CN116136748B (zh) | 基于FPGA实现的高带宽NVMe SSD读写系统与方法 | |
US20060028948A1 (en) | Apparatus and method to overlay (N) first sectors onto (M) second sectors using a data queue | |
US8140800B2 (en) | Storage apparatus |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20221209 |