CN105159609A - 一种基于虚拟磁盘层的io流控制方法及装置 - Google Patents

一种基于虚拟磁盘层的io流控制方法及装置 Download PDF

Info

Publication number
CN105159609A
CN105159609A CN201510549101.9A CN201510549101A CN105159609A CN 105159609 A CN105159609 A CN 105159609A CN 201510549101 A CN201510549101 A CN 201510549101A CN 105159609 A CN105159609 A CN 105159609A
Authority
CN
China
Prior art keywords
queue
write
virtual disk
read
cached
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
CN201510549101.9A
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.)
Shenzhen science and Technology Co., Ltd. digital cloud data
Original Assignee
Divine Land Beijing Yun Ke Data Technologies 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 Divine Land Beijing Yun Ke Data Technologies Co Ltd filed Critical Divine Land Beijing Yun Ke Data Technologies Co Ltd
Priority to CN201510549101.9A priority Critical patent/CN105159609A/zh
Publication of CN105159609A publication Critical patent/CN105159609A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明涉及计算机技术领域,具体涉及一种基于虚拟磁盘层的IO流控制方法及装置。本发明提供的一种基于虚拟磁盘层的IO流控制方法及装置,通过引入虚拟磁盘,在所述虚拟磁盘中设置读IO队列和写IO队列;执行读IO时,将读IO缓存到读IO队列中,执行写IO时,将写IO缓存到写IO队列中。可以实现应用于下层的任何类型的磁盘驱动,都不会产生阻塞进程导致的性能问题,使得IOPS性能在磁盘驱动上不产生瓶颈。同时,降低了读写并发情况下读IO的响应时间,提高了读IO响应时间的稳定性。

Description

一种基于虚拟磁盘层的IO流控制方法及装置
技术领域
本发明涉及计算机技术领域,具体涉及一种基于虚拟磁盘层的IO流控制方法及装置。
背景技术
传统的磁盘驱动建立在通用块设备层之下,当外部发送到块设备接口的OutstandingIO(未完成的IO)超出磁盘硬件处理能力时,缓存到块设备队列Queue中,队列的深度QueueDepth可以设置,当块设备队列Queue中缓存的IO个数超出QueueDepth长度时,阻塞IO进程,直到因为下层IO处理完毕使得队列长度小于QueueDepth,才能重新唤醒IO进程。
但是,传统的磁盘驱动缓存队列方法有以下缺陷:第一,当缓存的IO个数超出QueueDepth长度时,导致执行IO的进程阻塞。在中高端存储设备上对随机IOPS(Input/OutputOperationsPerSecond,即每秒进行读写操作的次数)的要求很高,要求达到10-100万级别,若发生进程阻塞-唤醒,会对IOPS处理能力造成极大影响,导致性能不达标;第二,单个缓存队列会造成读IO等待写IO的情况,使得读IO的响应时间增大并且不稳定。
发明内容
针对现有技术中存在的容易导致执行IO的进程阻塞以及在读写并发情况下读IO的相应时间大且不稳定的缺陷,本发明提供了一种基于虚拟磁盘层的IO流控制方法及装置。
一方面,本发明提供的一种基于虚拟磁盘层的IO流控制方法,包括:
建立虚拟磁盘;
在所述虚拟磁盘中设置读IO队列和写IO队列;
执行IO读时,将读IO缓存到读IO队列中,执行写IO时,将写IO缓存到写IO队列中。
进一步地,所述虚拟磁盘,将磁盘的几何空间划分为保留区和数据区。
进一步地,所述保留区包括:超级块区、位图bitmap索引区、坏块重定向索引区以及坏块重定向数据区。
进一步地,所述将读IO缓存到读IO队列中,将写IO缓存到写IO队列中的步骤之前,还包括:
针对每一个所述队列设定最大正在处理IO个数的值threshold;
判断所述队列的正在处理IO个数是否大于threshold值,若是,则不执行,否则,依次发送待执行的IO到所述队列中,直到所述队列的正在处理IO个数等于threshold值。
进一步地,所述队列接收发送待执行的IO时,相应的正在处理IO个数加1,完成IO时,相应的正在处理IO个数减1。
另一方面,本发明还提供一种基于虚拟磁盘层的IO流控制装置,包括:
建立模块,用于建立虚拟磁盘;
设置模块,用于在所述虚拟磁盘中设置读IO队列和写IO队列;
存储模块,用于执行IO读时,将读IO缓存到读IO队列中,执行写IO时,将写IO缓存到写IO队列中。
进一步地,所述建立模块具体用于:所述虚拟磁盘,将磁盘的几何空间划分为保留区和数据区。
进一步地,所述建立模块具体用于:所述保留区包括:超级块区、位图bitmap索引区、坏块重定向索引区以及坏块重定向数据区。
进一步地,所述存储模块还用于:
针对每一个所述队列设定最大正在处理IO个数的值threshold;
判断所述队列的正在处理IO个数是否大于threshold值,若是,则不执行,否则,依次发送待执行的IO到所述队列中,直到所述队列的正在处理IO个数等于threshold值。
进一步地,所述存储模块还用于:所述队列接收发送待执行的IO时,相应的正在处理IO个数加1,完成IO时,相应的正在处理IO个数减1。
本发明提供的一种基于虚拟磁盘层的IO流控制方法及装置,通过引入虚拟磁盘,在所述虚拟磁盘中设置读IO队列和写IO队列;执行读IO时,将读IO缓存到读IO队列中,执行写IO时,将写IO缓存到写IO队列中。可以实现应用于下层的任何类型的磁盘驱动,都不会产生阻塞进程导致的性能问题,使得IOPS性能在磁盘驱动上不产生瓶颈。同时,降低了读写并发情况下读IO的响应时间,提高了读IO响应时间的稳定性。
附图说明
通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
图1是本发明一个实施例中一种基于虚拟磁盘层的IO流控制方法的流程示意图;
图2是本发明一个实施例中发送bio的队列接口函数流程示意图;
图3是本发明一个实施例中一种基于虚拟磁盘层的IO流控制装置的结构示意图。
具体实施方式
现结合附图和实施例对本发明技术方案作进一步详细阐述。
图1示出了本实施例中一种基于虚拟磁盘层的IO流控制方法的流程示意图,如图1所示,本实施例提供的一种基于虚拟磁盘层的IO流控制方法,包括:
S1,建立虚拟磁盘;
S2,在所述虚拟磁盘中设置读IO队列和写IO队列;
S3,执行IO读时,将读IO缓存到读IO队列中,执行写IO时,将写IO缓存到写IO队列中。
在本实施例中,为了让RAID(RedundantArraysofindependentDisks,磁盘阵列)更好的记录各种状态,适应各种磁盘,我们引入了虚拟磁盘VirtualStorageDisk(简称VSD)层。VSD将磁盘的几何空间做了重新划分,分为保留区和数据区。保留区由超级块区,bitmap索引区,坏块重定向索引区,坏块重定向数据区等组成。
上层的IO要到达Disk,要通过VSD层转发,在VSD层做流控,就可以针对下层的各种Disk驱动做流控,与具体OS,Disk无关,具有很高的兼容性和扩展性。
我们在VSD设定了两个队列,读IO的r_queue和写IO的w_queue。
对每个队列上的IO,若需要缓存,则缓存到队列,每个Queue结构中有最大正在处理IO(pendingIO)个数的设定值threshold,该值通过自测试程序产生,pendingIO个数低于这个值不会造成底层的Disk驱动阻塞进程。
本实施例的具体工作流程:
执行IO时,排队到对应的Queue(读IO对应r_queue,写IO对应w_queue):若Queue的pendingIO大于threshold,则不执行;否则依次下发pendingIO到Queue中,直到Queue的pendingIO等于threshold;
发送IO时,相应Queue的pending_io_num++;
完成IO时,相应Queue的pending_io_num--;
本发明提供的一种基于虚拟磁盘层的IO流控制方法,通过引入虚拟磁盘,在所述虚拟磁盘中设置读IO队列和写IO队列;执行读IO时,将读IO缓存到读IO队列中,执行写IO时,将写IO缓存到写IO队列中。可以实现应用于下层的任何类型的磁盘驱动,都不会产生阻塞进程导致的性能问题,使得IOPS性能在磁盘驱动上不产生瓶颈。同时,降低了读写并发情况下读IO的响应时间,提高了读IO响应时间的稳定性。
如图2所示,本实施例中发送bio的queue接口函数流程:
bio_q_make_request(bio_queue_t*q,structbio*bio)–->try_submit_queue_bio(q,bio)
其中try_submit_queue_bio具体如下:
S01,判断bio是读还是写,选择对应的队列对象
S02,对选择的队列,根据正在处理的IO个数和threshold值计算出可取出多少个IO,移动相应个数的IO到临时的work_queue中
S03,遍历work-queue,发送其中的IO到下层接口(_submit_q_bio_no_acct)。
另一方面,如图3所示,本实施例还提供一种基于虚拟磁盘层的IO流控制装置,包括:
建立模块101,用于建立虚拟磁盘;
设置模块102,用于在所述虚拟磁盘中设置读IO队列和写IO队列;
存储模块103,用于执行读IO时,将读IO缓存到读IO队列中,执行写IO时,将写IO缓存到写IO队列中。
进一步地,所述建立模块101具体用于:所述虚拟磁盘,将磁盘的几何空间划分为保留区和数据区。
进一步地,所述建立模块101具体用于:所述保留区包括:超级块区、位图bitmap索引区、坏块重定向索引区以及坏块重定向数据区。
进一步地,所述存储模块103还用于:
针对每一个所述队列设定最大正在处理IO个数的值threshold;
判断所述队列的正在处理IO个数是否大于threshold值,若是,则不执行,否则,依次发送待执行的IO到所述队列中,直到所述队列的正在处理IO个数等于threshold值。
进一步地,所述存储模块103还用于:所述队列接收发送待执行的IO时,相应的正在处理IO个数加1,完成IO时,相应的正在处理IO个数减1。
本发明提供的一种基于虚拟磁盘层的IO流控制装置,通过引入虚拟磁盘,在所述虚拟磁盘中设置读IO队列和写IO队列;执行读IO时,将读IO缓存到读IO队列中,执行写IO时,将写IO缓存到写IO队列中。可以实现应用于下层的任何类型的磁盘驱动,都不会产生阻塞进程导致的性能问题,使得IOPS性能在磁盘驱动上不产生瓶颈。同时,降低了读写并发情况下读IO的响应时间,提高了读IO响应时间的稳定性。
虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

Claims (10)

1.一种基于虚拟磁盘层的IO流控制方法,其特征在于,所述方法包括:
建立虚拟磁盘;
在所述虚拟磁盘中设置读IO队列和写IO队列;
执行读IO时,将读IO缓存到读IO队列中,执行写IO时,将写IO缓存到写IO队列中。
2.根据权利要求1所述的方法,其特征在于,所述虚拟磁盘,将磁盘的几何空间划分为保留区和数据区。
3.根据权利要求2所述的方法,其特征在于,所述保留区包括:超级块区、位图bitmap索引区、坏块重定向索引区以及坏块重定向数据区。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述将读IO缓存到读IO队列中,将写IO缓存到写IO队列中的步骤之前,还包括:
针对每一个所述队列设定最大正在处理IO个数的值threshold;
判断所述队列的正在处理IO个数是否大于threshold值,若是,则不执行,否则,依次发送待执行的IO到所述队列中,直到所述队列的正在处理IO个数等于threshold值。
5.根据权利要求4所述的方法,其特征在于,所述队列接收发送待执行的IO时,相应的正在处理IO个数加1,完成IO时,相应的正在处理IO个数减1。
6.一种基于虚拟磁盘层的IO流控制装置,其特征在于,所述装置包括:
建立模块,用于建立虚拟磁盘;
设置模块,用于在所述虚拟磁盘中设置读IO队列和写IO队列;
存储模块,用于执行读IO时,将读IO缓存到读IO队列中,执行写IO时,将写IO缓存到写IO队列中。
7.根据权利要求6所述的装置,其特征在于,所述建立模块具体用于:所述虚拟磁盘,将磁盘的几何空间划分为保留区和数据区。
8.根据权利要求7所述的装置,其特征在于,所述建立模块具体用于:所述保留区包括:超级块区、位图bitmap索引区、坏块重定向索引区以及坏块重定向数据区。
9.根据权利要求6至8任一项所述的装置,其特征在于,所述存储模块还用于:
针对每一个所述队列设定最大正在处理IO个数的值threshold;
判断所述队列的正在处理IO个数是否大于threshold值,若是,则不执行,否则,依次发送待执行的IO到所述队列中,直到所述队列的正在处理IO个数等于threshold值。
10.根据权利要求9所述的装置,其特征在于,所述存储模块还用于:所述队列接收发送待执行的IO时,相应的正在处理IO个数加1,完成IO时,相应的正在处理IO个数减1。
CN201510549101.9A 2015-08-31 2015-08-31 一种基于虚拟磁盘层的io流控制方法及装置 Pending CN105159609A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510549101.9A CN105159609A (zh) 2015-08-31 2015-08-31 一种基于虚拟磁盘层的io流控制方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510549101.9A CN105159609A (zh) 2015-08-31 2015-08-31 一种基于虚拟磁盘层的io流控制方法及装置

Publications (1)

Publication Number Publication Date
CN105159609A true CN105159609A (zh) 2015-12-16

Family

ID=54800483

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510549101.9A Pending CN105159609A (zh) 2015-08-31 2015-08-31 一种基于虚拟磁盘层的io流控制方法及装置

Country Status (1)

Country Link
CN (1) CN105159609A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107422986A (zh) * 2017-05-10 2017-12-01 郑州云海信息技术有限公司 一种云存储系统并发读写请求的控制装置及方法
CN116560842A (zh) * 2023-05-12 2023-08-08 无锡众星微系统技术有限公司 一种sas存储业务中的i/o队列调度方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110196996A1 (en) * 2010-02-08 2011-08-11 Red Hat, Inc. Methods for accounting seek time of disk accesses
CN103336669A (zh) * 2013-05-21 2013-10-02 华中科技大学 一种基于固态盘内部并行性的i/o调度方法及调度器
CN103823636A (zh) * 2012-11-19 2014-05-28 苏州捷泰科信息技术有限公司 Io调度方法及装置
CN104794011A (zh) * 2015-02-04 2015-07-22 北京神州云科数据技术有限公司 基于虚拟磁盘的坏块重定向方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110196996A1 (en) * 2010-02-08 2011-08-11 Red Hat, Inc. Methods for accounting seek time of disk accesses
CN103823636A (zh) * 2012-11-19 2014-05-28 苏州捷泰科信息技术有限公司 Io调度方法及装置
CN103336669A (zh) * 2013-05-21 2013-10-02 华中科技大学 一种基于固态盘内部并行性的i/o调度方法及调度器
CN104794011A (zh) * 2015-02-04 2015-07-22 北京神州云科数据技术有限公司 基于虚拟磁盘的坏块重定向方法及装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107422986A (zh) * 2017-05-10 2017-12-01 郑州云海信息技术有限公司 一种云存储系统并发读写请求的控制装置及方法
CN116560842A (zh) * 2023-05-12 2023-08-08 无锡众星微系统技术有限公司 一种sas存储业务中的i/o队列调度方法
CN116560842B (zh) * 2023-05-12 2024-04-16 无锡众星微系统技术有限公司 一种sas存储业务中的i/o队列调度方法

Similar Documents

Publication Publication Date Title
US11630766B2 (en) Memory system and operating method thereof
CN109992201B (zh) 数据存储设备及其操作方法
US20150149741A1 (en) Storage System and Control Method Thereof
US10255955B2 (en) Multi-port memory device and a method of using the same
US20180143922A1 (en) Data inversion circuit
US10048899B2 (en) Storage device, computing system including the storage device, and method of operating the storage device
US20190286370A1 (en) Memory controller and memory system having the same
CN111209232A (zh) 访问静态随机存取存储器的方法、装置、设备和存储介质
JP2021043975A (ja) インターフェース回路並びにメモリ装置及びその動作方法
US11837277B2 (en) Dual slc/qlc programming and resource releasing
KR20190110360A (ko) 컨트롤러, 이를 포함하는 시스템 및 그 동작 방법
CN105159609A (zh) 一种基于虚拟磁盘层的io流控制方法及装置
CN110174995A (zh) 存储器控制器及其操作方法
US9152348B2 (en) Data transmitting method, memory controller and data transmitting system
KR20130089324A (ko) 데이터 입출력 컨트롤러 및 이를 포함하는 시스템
CN107943413B (zh) 一种固态硬盘提升读性能的方法
US7831741B2 (en) Indexing device and method for data storage system
CN104598453A (zh) 基于数据缓冲的数据迁移方法
CN113495850A (zh) 管理垃圾回收程序的方法、装置及计算机可读取存储介质
CN102200926B (zh) 一种存储器读操作功能的仿真验证方法
WO2022217637A1 (zh) 存储装置及其数据处理方法
TWI835027B (zh) 更新主機與閃存位址對照表的方法及電腦程式產品及裝置
TWI818762B (zh) 排程和執行主機資料更新命令的方法及電腦程式產品及裝置
CN117406932B (zh) 数据处理方法、装置、服务器和存储介质
TWI822516B (zh) 執行主機寫入命令的方法及電腦程式產品及裝置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20170331

Address after: Nanshan District Guangdong streets, Shenzhen city 518131 Guangdong Province Road No. 8 financial services technology innovation base 1 building 11 floor F3

Applicant after: Shenzhen science and Technology Co., Ltd. digital cloud data

Address before: 100085 Beijing, Haidian District, No. 9 on the ground floor of the digital science and Technology Plaza, 9

Applicant before: Divine Land, Beijing Yun Ke data technologies co., ltd

TA01 Transfer of patent application right
RJ01 Rejection of invention patent application after publication

Application publication date: 20151216

RJ01 Rejection of invention patent application after publication