CN102053929A - 一种基于Linux系统DM层的IO缓存操作方法和系统 - Google Patents
一种基于Linux系统DM层的IO缓存操作方法和系统 Download PDFInfo
- Publication number
- CN102053929A CN102053929A CN201010598543XA CN201010598543A CN102053929A CN 102053929 A CN102053929 A CN 102053929A CN 201010598543X A CN201010598543X A CN 201010598543XA CN 201010598543 A CN201010598543 A CN 201010598543A CN 102053929 A CN102053929 A CN 102053929A
- Authority
- CN
- China
- Prior art keywords
- buffer memory
- data
- user
- write
- read
- 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
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种基于Linux系统DM层的IO缓存操作方法和系统,采用Linux内核实现,包括读过程和写过程,本发明增加了一个高速的存储设备作为物理设备的缓存,通过将常用的数据放入高速存储设备,用户对磁盘的访问性能得到了提升。
Description
技术领域
本发明涉及对慢速磁盘设备的读写优化技术,具体涉及一种基于Linux系统DM层的对IO缓存操作方法和系统。
背景技术
早期的计算机系统只包含很有限的常用存储设备,通过将这些存储设备mount到不同的地方来访问它们,这些不同mount点的存储空间是不能互通的,在使用有限的存储设备之前必须对它们有一个明确的规划,否则使用过程中可能出现无法预料的问题,比如空间不足等。随着越来越多的存储设备加入到系统中,这种一对一的结构明显不能满足用户的需求,甚至无法创建一个超过磁盘大小的分区,即使磁盘总量远大于该分区的大小。Linux系统中的DM(Device Mapper)技术可以解决这类问题,它是Linux 2.6内核提供的一种从逻辑设备到物理设备的映射框架机制,在该机制下,用户可以很方便的根据自己的需要制定实现存储资源的管理策略,错误!未找到引用源。给出了Linux DM层的结构图。
在Linux内核中通过模块化的target driver插件实现对IO请求的过滤或者重新定向等工作,当前已经实现的target driver插件包括软raid、软加密、逻辑卷条带、多路径、镜像、快照等,图中linear、mirror、snapshot、multipath表示的就是这些target driver。DM层的引入进一步体现了在Linux内核设计中策略和机制分离的原则,将所有与策略相关的工作放到用户空间完成,内核中主要提供完成这些策略所需要的机制。用户空间相关部分主要负责配置具体的策略和控制逻辑,比如逻辑设备和哪些物理设备建立映射,怎么建立这些映射关系等等,而具体过滤和重定向IO请求的工作由内核中相关代码完成。因此整个DM机制由两部分组成:内核空间的DM驱动和用户空间的DM库以及它提供的DMsetup工具。
对于前面提到的创建一个比单个磁盘大的分区的问题,DM技术可以完美地解决,一个简单的例子如图所示。用户可以通过DM技术将两块150GB的物理磁盘虚拟成一个300GB的块设备,这个虚拟块设备可以作为一个分区使用,所有的接口与传统的使用方法完全一样,DM层负责将数据写往合适的物理块设备并且负责将用户请求的数据从正确的地方读出。本发明基于Linux系统DM层通过使用更快速的设备对慢速设备的数据进行缓存来提高系统的整体性能。
磁盘的访问速度对包含很多IO操作的应用程序影响较大,如果能够加快读磁盘的读写访问将会显著提升应用程序的性能。但是,由于磁盘采用机械设备,导致其速度提升远远不如采用集成电路的处理器和内存的速度,所以必须采用一些特殊的机制来提升系统的IO性能。
发明内容
本发明提出了一种基于Linux系统DM层将容量大但是速度慢的存储设备用容量小但是速度快的存储设备作为缓存来提高大容量磁盘的IO速度的方法。
一种基于Linux系统DM层的对IO缓存操作方法,采用Linux内核实现,包括读过程和写过程,
其中,读过程为:
A、用户发出读请求时,判断用户是否允许缓存;
B、如果用户允许缓存则在高速存储设备上根据之前存储的管理信息来查找是否已缓存了此IO所包含的数据,如果找到则直接从高速存储设备读出并返回;
C、如果用户不允许缓存或者在高速存储设备中找不到包含此IO的数据块,则只能从慢速的存储设备读出;
D、读出数据以后分为两种情况,一是用户不允许对读进行缓存,则直接返回即可,二是用户允许对读进行缓存,则在高速存储设备上分配相当的空间,同时另分配合适的管理空间,如果都成功,则将从慢速存储设备中读出的数据写往高速存储设备中;否则,直接返回;写过程为:
E、判断用户设置的选项是否需要对写数据进行缓存,如果不需要则直接写往慢速存储设备;
F、如果需要读写数据进行缓存,则在高速存储设备上分配一段空间,此空间需要存下此IO所包含的数据,另外还需要一些额外的管理信息,如果没有这么大的空间则不做缓存,直接写往慢速存储设备即可;如果空间足够,则写往高速存储设备,做好标记后返回。
本发明的一种优选技术方案在于:所述IO请求中包括一段内存中的数据以及这段数据需要写入的磁盘地址,并且这段地址在磁盘上是连续的。
一种基于Linux系统DM层的IO缓存系统,在物理磁盘设备之上增加一个有大量内存模块组成的高速PCIE存储设备,该设备通过PCIE接口连接到系统中。
本发明的一种优选技术方案在于:所述存储设备在安装驱动后,在系统中呈现给用户的是一个标准的块设备。
本发明通过增加了一个高速的存储设备作为物理设备的缓存,通过将常用的数据放入高速存储设备,用户对磁盘的访问性能得到了提升。
附图说明
图1为Linux DM层结构图
图2为Device Mapper使用举例
图3为只有一个磁盘标准使用方式
图4磁盘使用新方式
图5为本发明流程图
具体实施方式
本发明提出了一种基于Linux系统DM层将容量大但是速度慢的存储设备用容量小但是速度快的存储设备作为缓存来提高大容量磁盘的IO速度的方法。只有一个磁盘的标准使用方式如图所示,虚拟块设备与物理设备一一对应;本发明的优化在于增加了一个高速的存储设备作为物理设备的缓存,该高速存储设备是一块高速PCI-E设备,由大量的内存模块组成,通过高速的PCI-E接口连接到系统中,具有大容量、高带宽和低延迟的特性。在Linux系统中安装好此设备的驱动程序以后,呈现给用户的是一个标准的块设备,使用方法与普通磁盘完全一样,但是性能要远远高于普通磁盘。这里使用这样一个高速设备来作为慢速磁盘的缓存,从而可以提高整个系统的IO性能。通过将常用的数据放入高速存储设备,用户对磁盘的访问性能得到了提升。
写数据:
在打开缓存的前提下,如果配置运行写入缓存,则系统首先在高速存储设备中分配一个缓存块,然后将数据写入此缓存块,而不是直接写入慢速的磁盘设备。
读数据:
如果在缓存中找到数据,则直接从缓存中读取即可;如果不在缓存中,则需要从慢速磁盘读出,并根据需求进一步存储在高速存储设备中。
本发明以内核模块的方式实现,通过向Linux系统的DM层注册一系列函数来完成需要的功能,其中最主要的函数用来处理从用户发送来的IO请求,每个IO包括一段内存中的数据以及这段数据需要写入的磁盘地址,需要说明的是这段地址在磁盘上是连续的,这是为了减少磁盘头的移动而做的优化。拿到这个IO以后,内核模块就可以对其进行处理。
为了方便用户的使用,可以提供多种缓存方式:
1、不缓存,这种方式下与标准的Linux系统的DM实现方式完全一样,所有的IO读写都直接对物理存储设备进行操作,不存在任何的缓存情况,高速存储设备完全没有使用;
2、仅读缓存,这种方式仅缓存用户从磁盘读取的数据,而对用户写的数据采取直接写往物理存储设备的方式,在用户第二次读取某一块数据时,此模块可以直接从高速存储设备读出,从而可以提高读数据的性能,这种方式对存在大量读操作的应用程序尤其有效;
3、仅写缓存,这种方式仅缓存用户写往磁盘的数据,而用户直接从磁盘读出的数据不做缓存,这样,用户只要读取以前曾经写过的数据,性能就会获得显著提升,这种方式对生产者消费者模式的应用程序效果显著;
4、读写均缓存,这是最复杂的一种方式,也是最常用的方式,无论读写均在高速存储设备里做缓存,从而适应更加广泛的情况;
用户在做读写操作时,此内核模块必须根据以上四种情况来做适当的缓存操作,错误!未找到引用源。给出了整个执行过程。
在写数据的情况下:首先判断用户设置的选项是否需要对写数据进行缓存,如果不需要则直接写往慢速存储设备;如果需要读写数据进行缓存,则在高速存储设备上分配一段空间,此空间需要存下此IO所包含的数据,另外还需要一些额外的管理信息,如果没有这么大的空间则不做缓存,直接写往慢速存储设备即可;如果空间足够,则写往高速存储设备,做好标记后返回。
在读数据的情况下:用户发出读请求时,首先判断用户是否允许缓存,如果用户允许缓存则在高速存储设备上根据之前存储的管理信息来查找是否已缓存了此IO所包含的数据,如果找到则直接从高速存储设备读出并返回;如果用户不允许缓存或者在高速存储设备中找不到包含此IO的数据块,则只能从慢速的存储设备读出;读出数据以后分为两种情况,一种是用户不允许对读进行缓存,则直接返回即可,如果允许对读进行缓存,则在高速存储设备上分配相当的空间,同时另分配合适的管理空间,如果都成功,则将从慢速存储设备中读出的数据写往高速存储设备中;否则,直接返回。
Claims (4)
1.一种基于Linux系统DM层的IO缓存操作方法,其特征在于:采用Linux内核实现,包括读过程和写过程,
其中,读过程为:
A、用户发出读请求时,判断用户是否允许缓存;
B、如果用户允许缓存则在高速存储设备上根据之前存储的管理信息来查找是否已缓存了此IO所包含的数据,如果找到则直接从高速存储设备读出并返回;
C、如果用户不允许缓存或者在高速存储设备中找不到包含此IO的数据块,则只能从慢速的存储设备读出;
D、读出数据以后分为两种情况,一是用户不允许对读进行缓存,则直接返回即可,二是用户允许对读进行缓存,则在高速存储设备上分配相当的空间,同时另分配合适的管理空间,如果都成功,则将从慢速存储设备中读出的数据写往高速存储设备中;否则,直接返回;写过程为:
E、判断用户设置的选项是否需要对写数据进行缓存,如果不需要则直接写往慢速存储设备;
F、如果需要读写数据进行缓存,则在高速存储设备上分配一段空间,此空间需要存下此IO所包含的数据,另外还需要一些额外的管理信息,如果没有这么大的的空间则不做缓存,直接写往慢速存储设备即可;如果空间足够,则写往高速存储设备,做好标记后返回。
2.如权利要求1所述一种基于Linux系统DM层的IO缓存操作方法,其特征在于:所述IO请求中包括一段内存中的数据以及这段数据需要写入的磁盘地址,并且这段地址在磁盘上是连续的。
3.一种基于Linux系统DM层的IO缓存系统,其特征在于:在物理磁盘设备之上增加一个有大量内存模块组成的高速PCIE存储设备,该设备通过PCIE接口连接到系统中。
4.如权利要求3所述一种基于Linux系统DM层的IO缓存系统,其特征在于:所述存储设备在安装驱动后,在系统中呈现给用户的是一个标准的块设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010598543XA CN102053929A (zh) | 2010-12-17 | 2010-12-17 | 一种基于Linux系统DM层的IO缓存操作方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010598543XA CN102053929A (zh) | 2010-12-17 | 2010-12-17 | 一种基于Linux系统DM层的IO缓存操作方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102053929A true CN102053929A (zh) | 2011-05-11 |
Family
ID=43958272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010598543XA Pending CN102053929A (zh) | 2010-12-17 | 2010-12-17 | 一种基于Linux系统DM层的IO缓存操作方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102053929A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609485A (zh) * | 2012-01-20 | 2012-07-25 | 无锡众志和达存储技术有限公司 | 基于文件系统的nfs数据i/o加速方法 |
CN103064762A (zh) * | 2012-12-25 | 2013-04-24 | 华为技术有限公司 | 重删备份数据的恢复方法和装置 |
CN104407990A (zh) * | 2014-12-08 | 2015-03-11 | 北京星网锐捷网络技术有限公司 | 一种磁盘访问方法及装置 |
US9176890B2 (en) | 2013-06-07 | 2015-11-03 | Globalfoundries Inc. | Non-disruptive modification of a device mapper stack |
CN106326036A (zh) * | 2016-08-17 | 2017-01-11 | 浪潮(北京)电子信息产业有限公司 | 一种基于linux系统的COW快照数据刷写方法及其系统 |
CN106528001A (zh) * | 2016-12-05 | 2017-03-22 | 北京航空航天大学 | 一种基于非易失性存储器和软件raid的缓存系统 |
WO2021103020A1 (zh) * | 2019-11-29 | 2021-06-03 | 华为技术有限公司 | 缓存存储器和分配写操作的方法 |
CN116136826A (zh) * | 2021-11-17 | 2023-05-19 | 华为技术有限公司 | 内存访问方法、芯片、电子设备及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101673188A (zh) * | 2008-09-09 | 2010-03-17 | 上海华虹Nec电子有限公司 | 一种固态硬盘的数据存取方法 |
CN101710270A (zh) * | 2009-11-27 | 2010-05-19 | 西安奇维测控科技有限公司 | 一种基于闪存的高速大容量存储器及芯片数据管理方法 |
-
2010
- 2010-12-17 CN CN201010598543XA patent/CN102053929A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101673188A (zh) * | 2008-09-09 | 2010-03-17 | 上海华虹Nec电子有限公司 | 一种固态硬盘的数据存取方法 |
CN101710270A (zh) * | 2009-11-27 | 2010-05-19 | 西安奇维测控科技有限公司 | 一种基于闪存的高速大容量存储器及芯片数据管理方法 |
Non-Patent Citations (1)
Title |
---|
尹洋等: "一种基于磁盘介质的网络存储系统缓存", 《软件学院》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609485A (zh) * | 2012-01-20 | 2012-07-25 | 无锡众志和达存储技术有限公司 | 基于文件系统的nfs数据i/o加速方法 |
CN102609485B (zh) * | 2012-01-20 | 2013-11-13 | 无锡众志和达数据计算股份有限公司 | 基于Linux文件系统的NFS数据I/O加速方法 |
CN103064762A (zh) * | 2012-12-25 | 2013-04-24 | 华为技术有限公司 | 重删备份数据的恢复方法和装置 |
US9176890B2 (en) | 2013-06-07 | 2015-11-03 | Globalfoundries Inc. | Non-disruptive modification of a device mapper stack |
CN104407990A (zh) * | 2014-12-08 | 2015-03-11 | 北京星网锐捷网络技术有限公司 | 一种磁盘访问方法及装置 |
CN104407990B (zh) * | 2014-12-08 | 2017-08-15 | 北京星网锐捷网络技术有限公司 | 一种磁盘访问方法及装置 |
CN106326036A (zh) * | 2016-08-17 | 2017-01-11 | 浪潮(北京)电子信息产业有限公司 | 一种基于linux系统的COW快照数据刷写方法及其系统 |
CN106528001A (zh) * | 2016-12-05 | 2017-03-22 | 北京航空航天大学 | 一种基于非易失性存储器和软件raid的缓存系统 |
CN106528001B (zh) * | 2016-12-05 | 2019-08-23 | 北京航空航天大学 | 一种基于非易失性存储器和软件raid的缓存系统 |
WO2021103020A1 (zh) * | 2019-11-29 | 2021-06-03 | 华为技术有限公司 | 缓存存储器和分配写操作的方法 |
CN116136826A (zh) * | 2021-11-17 | 2023-05-19 | 华为技术有限公司 | 内存访问方法、芯片、电子设备及计算机可读存储介质 |
CN116136826B (zh) * | 2021-11-17 | 2024-07-30 | 华为技术有限公司 | 内存访问方法、芯片、电子设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102053929A (zh) | 一种基于Linux系统DM层的IO缓存操作方法和系统 | |
CN101833424B (zh) | 基于fpga的高速存储与传输装置 | |
US8806112B2 (en) | Meta data handling within a flash media controller | |
CN101334708B (zh) | 具有写屏障敏感命令和写屏障不敏感命令的存储设备 | |
JP2017091546A (ja) | 多重モード動作のための多重パーティションを含む格納装置、及びその動作方法 | |
EP2546755A2 (en) | Flash controller hardware architecture for flash devices | |
CN1761935A (zh) | 半导体存储卡、半导体存储器控制装置以及半导体存储器控制方法 | |
CN106716334A (zh) | 文件系统卷内的高效数据移动 | |
KR20170056414A (ko) | 사용자 데이터에 대해 선별 잠재 노출 맵핑을 수행하기 위한 장치, 방법, 및 다중 모드 저장 장치 | |
KR20170056411A (ko) | 저장 매체를 다중 모드로 동작시키는 관리 시스템, 그것을 포함하는 저장 시스템, 및 그것을 이용하여 저장 매체를 관리하는 방법 | |
US20070041050A1 (en) | Memory management method and system | |
CN105849669A (zh) | 用于单个通道内的dram空间联合的方法和装置 | |
CN103226448B (zh) | 固态硬盘的驱动方法及装置 | |
CN114489475B (zh) | 分布式存储系统及其数据存储方法 | |
JP2005190036A5 (zh) | ||
CN102929813A (zh) | 一种pci-e接口固态硬盘控制器的设计方法 | |
CN106371773A (zh) | Ssd单元、ssd设备以及基于ssd设备的数据处理方法 | |
KR20090098275A (ko) | 플래시 메모리 시스템 | |
US8447925B2 (en) | Home storage device and software including management and monitoring modules | |
CN101350217B (zh) | 数据写入存储器的装置及其方法 | |
CN114518842A (zh) | 多流存储器系统和在多流存储器系统中处理输入流的方法 | |
US20180089082A1 (en) | Cooperative write-back cache flushing for storage devices | |
CN102681795A (zh) | 一种Linux系统的SCSI Target模式的数据I/O写入方法 | |
CN102073459B (zh) | 基于固态硬盘的计算机系统及固态硬盘 | |
US8990494B2 (en) | Home storage system and method with various controllers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110511 |