CN112748854B - 对快速存储设备的优化访问 - Google Patents
对快速存储设备的优化访问 Download PDFInfo
- Publication number
- CN112748854B CN112748854B CN201911045028.6A CN201911045028A CN112748854B CN 112748854 B CN112748854 B CN 112748854B CN 201911045028 A CN201911045028 A CN 201911045028A CN 112748854 B CN112748854 B CN 112748854B
- Authority
- CN
- China
- Prior art keywords
- storage device
- data
- type
- request
- data cache
- 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 claims abstract description 47
- 238000004590 computer program Methods 0.000 claims abstract description 21
- 238000007726 management method Methods 0.000 claims abstract description 8
- 239000000872 buffer Substances 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 20
- 230000008569 process Effects 0.000 claims description 16
- 238000013507 mapping Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 18
- 238000004088 simulation Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 230000008901 benefit Effects 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 238000013459 approach Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例提供了一种存储管理方法、电子设备和计算机程序产品。该方法包括:根据确定接收到存储系统的I/O请求,确定I/O请求针对的目标存储设备。该方法还包括:根据确定目标存储设备为第一类型的存储设备,通过访问存储系统的存储器来处理I/O请求。该方法进一步包括:根据确定目标存储设备为与第一类型不同的第二类型的存储设备,处理I/O请求而避免访问存储器,第二类型的存储设备具有比第一类型的存储设备快的访问速度。本公开的实施例可以改进存储系统的性能。
Description
技术领域
本公开的实施例一般地涉及计算机系统或存储系统,并且更特别地,涉及一种存储管理方法、电子设备和计算机程序产品。
背景技术
通常,存储系统中可以具有多种类型的存储设备,诸如非易失性存储设备。这些存储设备可能包括传统的存储设备,例如,硬盘驱动器(HDD)存储设备、固态驱动器(SSD)存储设备、NAND闪存存储设备,等等。此外,存储系统中的存储设备还可能包括采用新兴技术的存储设备。例如,3D XPoint是近几年出现的一种非易失性存储器(NVM)技术。在3D XPoint存储设备中,位存储基于体电阻的变化以及可堆叠的交叉网格数据访问阵列。
作为一种存储级的存储器(SCM),3D XPoint存储设备与动态随机存取存储器(DRAM)相比具有断电时数据不丢失的优点。此外,与传统的存储设备相比,它不仅读写速度更快,而且还支持字节级访问。而传统的存储设备通常需要以页面为单位进行读取和写入,因此可能基于数百页面的数据块进行擦除。因此,3D XPoint存储设备可以用于实现高性能和高灵活性的数据存储。理论上,3D XPoint存储设备比传统的NAND闪存存储设备的访问速度快大约1000倍,从而其访问延迟可以非常低,大约仅为100纳秒。
然而,传统的存储系统没有针对这种支持快速访问的存储设备(例如,3D XPoint存储设备,下文简称快速存储设备)来进行设计和优化,从而无法充分发挥这种存储设备的性能优势,在许多场景下造成不良的用户体验。
发明内容
本公开的实施例涉及一种存储管理方法、电子设备和计算机程序产品。
在本公开的第一方面,提供了一种存储管理方法。该方法包括:根据确定接收到存储系统的I/O请求,确定I/O请求针对的目标存储设备。该方法还包括:根据确定目标存储设备为第一类型的存储设备,通过访问存储系统的存储器来处理I/O请求。该方法进一步包括:根据确定目标存储设备为与第一类型不同的第二类型的存储设备,处理I/O请求而避免访问存储器,第二类型的存储设备具有比第一类型的存储设备快的访问速度。
在本公开的第二方面,提供了一种电子设备。该电子设备包括至少一个处理器以及存储有计算机程序指令的至少一个存储器。至少一个存储器和计算机程序指令被配置为,与至少一个处理器一起,使得电子设备:根据确定接收到存储系统的I/O请求,确定I/O请求针对的目标存储设备。至少一个存储器和计算机程序指令还被配置为,与至少一个处理器一起,使得电子设备:根据确定目标存储设备为第一类型的存储设备,通过访问存储系统的存储器来处理I/O请求。至少一个存储器和计算机程序指令进一步被配置为,与至少一个处理器一起,使得电子设备:根据确定目标存储设备为与第一类型不同的第二类型的存储设备,处理I/O请求而避免访问存储器,第二类型的存储设备具有比第一类型的存储设备快的访问速度。
在本公开的第三方面,提供了一种计算机程序产品。该计算机程序产品被有形地存储在非易失性计算机可读介质上并且包括机器可执行指令。机器可执行指令在被执行时使机器执行根据第一方面的方法的步骤。
应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其他特征通过以下的描述将变得容易理解。
附图说明
通过参考附图阅读下文的详细描述,本公开的实施例的上述以及其他目的、特征和优点将变得容易理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施例。
图1示出了本公开的实施例可以在其中实现的存储系统的示意图。
图2示出了根据本公开的实施例的存储管理方法的流程图。
图3示出了根据本公开的实施例的访问第一类型的存储设备的模块化系统架构。
图4示出了根据本公开的实施例的访问第二类型的存储设备的模块化系统架构。
图5示出了根据本公开的实施例的从第二类型的存储设备读取数据时文件系统的对象之间的交互过程的示意图。
图6A示出了根据本公开的实施例的存储系统的顺序读取性能的仿真图。
图6B示出了根据本公开的实施例的存储系统的顺序写入性能的仿真图。
图6C示出了根据本公开的实施例的存储系统的随机读取性能的仿真图。
图6D示出了根据本公开的实施例的存储系统的随机写入性能的仿真图。
图7示出了一种可以被用来实施本公开的实施例的设备的示意性框图。
贯穿所有附图,相同或者相似的参考标号被用来表示相同或者相似的组件。
具体实施方式
下面将参考附图中所示出的若干示例性实施例来描述本公开的原理和精神。应当理解,描述这些具体的实施例仅是为了使本领域的技术人员能够更好地理解并实现本公开,而并非以任何方式限制本公开的范围。
如上文提到的,传统的存储系统没有针对快速存储设备(例如,3D XPoint存储设备)来进行设计和优化,从而无法充分发挥这种存储设备的性能优势,在许多场景下造成不良的用户体验。具体地,在存储系统中,快速存储设备可以直接附接到存储器总线,从而减小访问延迟。此外,存储系统的处理器还可以通过存储器加载/存储指令来访问快速存储设备以存储数据。因此,与传统的存储设备相比,快速存储设备通常具有更短的I/O延迟和更大的带宽。但是,传统的存储系统的文件系统假定底层的存储设备是I/O总线连接的块设备,并且文件系统未针对快速存储设备来设计。
通常,快速存储设备(例如,3D XPoint存储设备)在存储系统中被视为类似于存储盘的块设备,因此可以在快速存储设备上创建文件系统,使其看起来像普通存储盘。但是,快速存储设备的具体物理属性与传统存储盘是不同的。例如,在读写延迟方面,快速存储设备可以达到接近于动态随机存取存储器的水平。因此,快速存储设备与传统的存储系统是不匹配的,这给传统的存储系统的文件系统带来了问题。传统的文件系统(例如,UFS64文件系统)是针对存储盘和固态驱动器存储设备设计的。
鉴于传统方案中存在的上述问题以及潜在的其他问题,本公开的实施例提出了一种快速存储设备的优化访问的技术方案。具体地,提出了在统一的存储系统中为快速存储设备(例如,3D XPoint存储设备)实现优化的文件系统(例如,优化的UFS64文件系统)。在一些实施例中,快速存储设备(例如,3D XPoint存储设备)可以直接通过存储器总线来访问,可以是字节寻址的,可以是非易失性的,并且可以以接近于随机存取存储器的速度来访问。
本公开的实施例可以允许在不通过存储器中的数据缓存区的情况下访问快速存储设备中的文件数据,因此减少了不必要的缓冲区或缓存区的访问(包括哈希计算和查找操作等)的开销,避免了无效的缓存复制操作并节省了处理器周期。与传统的设计相比,本公开的实施例的存储系统具有更大的带宽和更低的延迟,同时减少了I/O堆栈层并避免了不必要的存储器复制开销。总之,本公开的实施例可以改进存储系统的性能。下面结合图1至图5来详细地描述本公开的一些示例实施例。
图1示出了本公开的实施例可以在其中实现的存储系统100的示意图。如图1所示,存储系统100可以包括控制和管理存储系统100的计算设备110。例如,计算设备110可以处理对存储系统100中存储的数据的访问请求,组织和管理存储系统100中的数据(或文件),控制和访问存储系统100中的其他设备或组件,等等。更一般地,计算设备110可以实现与存储系统100有关的任何计算功能、控制功能、或处理功能。
存储系统100还可以包括第一类型的存储设备120,其可以用于存储各种数据(或文件)。在一些实施例中,存储设备120可以包括慢速的或传统的存储设备。也就是说,计算设备110直接访问存储设备120的访问速度是较慢的,例如,慢于计算设备110访问存储器140的访问速度。因此,在访问存储设备120时,计算设备110可以使用存储器140(例如,在存储器140中设置数据缓存区)来缓存与存储设备120相关联的数据,以便提高对存储设备120的访问性能。为此,计算设备110可以经由通信链路115连接到存储器140,而存储器140进而经由通信链路135连接到存储设备120。在一些实施例中,通信链路115可以包括存储系统100中的存储器总线,而通信链路135可以包括存储系统100中的I/O总线。
存储系统100还可以包括第二类型的存储设备130,其也可以用于存储各种数据(或文件)。在一些实施例中,存储设备130可以包括快速的或新兴的存储设备。也即,计算设备110直接访问存储设备130的速度是较快的,例如,等于或接近于计算设备110访问存储器140的访问速度。因此,在访问存储设备130的过程中,计算设备110可以无需使用存储器140来缓存与存储设备130相关联的数据。因此,计算设备110可以经由通信链路125直接连接到存储设备130。在一些实施例中,通信链路125可以包括存储系统100中的存储器总线。
在一些实施例中,计算设备110可以包括任何能够实现计算功能和/或控制功能的设备,包括但不限于,专用计算机、通用计算机、通用处理器、微处理器、微控制器、或状态机。计算设备110还可以实施为个体计算设备或计算设备的组合,例如,数字信号处理器(DSP)和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP核心、或者任何其他这样的配置。在一些实施例中,计算设备110还可以包括处理器以及与处理器配合操作的存储器,该存储器可以不同于存储系统100的存储器140。另外要指出的是,在本公开的上下文中,计算设备110也可以称为电子设备110,这两个术语在本文中可以互换地使用。
在一些实施例中,第一类型的存储设备120可以是能够通过存储器140的数据缓存功能来增强其访问性能的任何具有存储功能的设备,包括但不限于,硬盘(HDD)、固态盘(SSD)、可移除盘、紧致盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘、蓝光盘、串行附接小型计算机系统接口(SCSI)存储盘(SAS)、串行高级技术附接(SATA)存储盘、任何其他磁性存储设备和任何其他光学存储设备、或它们的任何组合。
在一些实施例中,第二类型的存储设备130可以是任何能够支持快速访问(例如,等于或接近于存储器140的访问速度)的存储设备。也即,第二类型的存储设备130具有比第一类型的存储设备120快的访问速度。作为一种示例,存储设备130可以包括3D XPoint存储设备。将理解,本公开的实施例可以适用于任何已有的或未来开发的具有比传统的存储设备更快的访问速度的存储设备。例如,该更快的访问速度可以等同或接近于计算设备(例如,中央处理器)访问存储器(例如,随机存取存储器)的访问速度。
在一些实施例中,存储器140可以是计算设备110(例如,通过存储器总线115)可以快速访问的用于实现短期存储目的的存储器件,包括但不限于,动态随机存取存储器(DRAM)、快速页面模式(FPM)DRAM、扩展数据输出(EDO)DRAM、同步动态随机存取存储器(SDRAM)等。此外,存储器140也可以是类似于DRAM那样的任何高速随机访问存储器。如果没有对可访问上限次数的实质性限制,则存储器140也可以采用磁阻随机存取存储器(MRAM)、铁电随机存取存储器(FeRAM)等非易失性半导体存储器。
在一些实施例中,通信链路115、125和135可以是能够实现存储系统100的各种组件之间的数据通信或控制信号通信的任何形式的连接或耦合,包括但不限于,同轴电缆、光纤电缆、双绞线、或无线技术(诸如红外、无线电和微波)。在一些实施例中,通信链路115、125和135还可以包括但不限于,网卡、集线器、调制解调器、中继器、网桥、交换机、路由器等用于网络连接的设备、以及各种网络连接线路、无线链路等。在一些实施例中,通信链路115、125和135可以包括各种类型的总线。在其他实施例中,通信链路115、125和135可以包括计算机网络、通信网络、或者其他有线或无线网络。
应当理解,图1仅示意性地示出了存储系统100中的与本公开的实施例相关的单元、模块或组件。在实践中,存储系统100还可以包括用于其他功能的其他单元、模块或组件。此外,图1中示出的单元、模块或组件的特定数目仅是示意性的,无意以任何方式限制本公开的范围。在其他实施例中,存储系统100可以包括任何适当数目的计算设备、第一类型的存储设备、第二类型的存储设备、更多类型的存储设备和存储器,等等。因此,本公开的实施例不限于图1所描绘的具体设备、单元、模块或组件,而是一般性地适用于任何具有数据或文件存储功能的存储系统的环境。下面参考图2来描述本公开的实施例的存储管理方法。
图2示出了根据本公开的实施例的存储管理方法200的流程图。在一些实施例中,方法200可以由存储系统100中的计算设备110来实现,例如可以由计算设备110的处理器或处理单元来实现,或者由计算设备110的各种功能模块来实现。在其他实施例中,方法200也可以由独立于存储系统100的计算设备来实现,或者可以由存储系统100中的其他单元或模块来实现。为了便于讨论,将结合图1来描述方法200。
在210处,计算设备110确定接收到针对存储系统100的I/O请求。在一些实施例中,该I/O请求可以由存储系统100的用户发出。将理解,存储系统100的用户可以是使用存储系统100的人,也可以是使用存储系统100提供的存储服务的其他网络设备或系统,等等。在一些实施例中,用户可以通过存储系统100的文件系统来发出I/O请求。一般地,在本公开的实施例中,用户可以使用任何适合的文件系统来访问存储系统100中的文件或数据,包括但不限于,UNIX文件系统、FAT文件系统、NTFS文件系统、网络文件系统(NFS)、通用互联网文件系统(CIFS),等等。
仅作为示例,用户发出的I/O请求可以是从存储系统100读取数据(例如,文件)的请求,也可以是向存储系统100写入数据(例如,文件)的请求。更一般地,用户发出的I/O请求可以是涉及到存储系统100进行输入操作或输出操作的任何请求或指令。特别地,用户发出的I/O请求可以是访问第一类型的存储设备120的请求,例如,从存储设备120读取数据或向存储设备120写入数据,等等。替换地,用户发出的I/O请求可以是访问第二类型的存储设备130的请求,例如,从存储设备130读取数据或向存储设备130写入数据,等等。
继续参考图2,在220处,计算设备110确定存储系统100的I/O请求所针对的目标存储设备。也就是说,在存储系统100接收到I/O请求之后,计算设备110可以确定该I/O请求所针对的目标存储设备是第一类型的存储设备120还是第二类型的存储设备130。例如,如果I/O请求是要从存储设备120读取数据或向存储设备120写入数据,则计算设备110可以确定目标存储设备是第一类型的存储设备120。又例如,如果I/O请求是要从存储设备130读取数据或向存储设备130写入数据,则计算设备110可以确定目标存储设备是第二类型的存储设备130。
一般地,计算设备110可以使用任何适当的方式来确定I/O请求的目标存储设备。例如,I/O请求中可能已经指定了要访问的存储设备。在这种情况下,计算设备110可以直接从I/O请求中确定目标存储设备。又例如,I/O请求可以指定要访问的文件或数据,然后计算设备110可以基于该文件或数据来确定I/O请求的目标存储设备。在其他实施例中,计算设备110还可以通过I/O请求所针对的目标数据的标识符来确定I/O请求的目标存储设备。
例如,计算设备110可以生成与第二类型的存储设备130中的数据相关联的标识符,以指示数据存储在存储设备130中。通过这样的方式,本公开的实施例的存储系统100可以通过对已有的存储系统的较少改变来实现。例如,在包括第一类型的存储设备120的已有存储系统中增加第二类型的存储设备130的情况下,计算设备110仅需要标识出需要特别处理的数据,也即,存储在第二类型的存储设备130中的数据,即可以对这些数据进行特殊处理,而无需改变已有存储系统的其他硬件和软件配置。具体地,在数据被存储在存储设备130中时,其可以通过文件的方式来组织和管理。为此,存储系统100可以为该文件生成索引节点(inode)来记录与该文件有关的信息。因此,计算设备110可以在存储设备130中的文件的索引节点中标识该文件存储在存储设备130中。
在一些实施例中,计算设备110可以在存储设备130中的文件的索引节点中引入新的索引节点标志,以指示针对该文件的I/O请求涉及存储设备130上分配的文件(或其后备存储文件)。在后文中,可以将这样的I/O请求称为直接访问I/O请求。为了确定将I/O请求发送到存储设备130时要采用的代码路径,索引节点通过这种标志的区分将是有利的。例如,当检测到针对新索引节点的I/O请求时,计算设备110可以采取若干步骤以确保直接访问存储设备130,而避免访问存储器140,例如,不执行缓冲写入或数据缓存区的更新。在存储设备130为3D Xpoint存储设备的情况下,计算设备110可以通过在索引节点的i_flags中设置S_3DXPOINT标志,来将索引节点标记为绕过存储器140中的数据缓存区。
计算设备110可以在每次分配索引节点时设置索引节点的上述标志,并且在创建索引节点时确定是否设置该标志。如果在启用绕过存储器140中的数据缓存区的文件系统中创建索引节点,则需要设置索引节点标志。安装具有该扩展功能的文件系统将确保在文件系统上创建的每个索引节点(以及相应的)文件都将设置此新的绕过存储器140中的数据缓存区的标志。新标志将帮助计算设备110在处理I/O请求时确定要调用的正确函数,并且避免调用不必要的函数,例如,缓冲的写入和执行缓存操作。此外,为了对存储设备130上的文件和目录的索引节点进行标识,还可以向存储系统100的文件系统添加其他访问方法和宏指令。在一些实施例中,计算设备110可以通过文件系统安装参数来关闭和打开该扩展功能,但是为了易于实现,可以在默认情况下启用该扩展功能。
在第二类型的存储设备130中的数据带有上述标识符(其指示数据存储在存储设备130中)的情况下,计算设备110可以确定存储系统100的I/O请求针对的目标数据是否具有该标识符。如果目标数据不具有该标识符,则计算设备110可以确定I/O请求的目标存储设备为第一类型的存储设备120。反之,如果目标数据具有标识符,则计算设备110可以确定I/O请求的目标存储设备为第二类型的存储设备130。以此方式,计算设备110可以仅需要针对一种类型的存储设备来设置标识符,从而最小化用于设置数据标识符的开销。
将明白,本公开的实施例不限于设置与第二类型的存储设备130中的数据相关联的标识符,其他的标识符设置方式也是可能的。例如,存储系统100可以通过设置与第一类型的存储设备120中的数据相关联的标识符,来实现识别I/O请求的目标存储设备的目的。又例如,存储系统100还可以针对存储设备120中的数据和存储设备130中的数据分别设置相应的标识符。这种方式可以简单地且便利地扩展到存储系统100还包括更多类型的存储设备的情况。
继续参考图2,在230处,如果I/O请求的目标存储设备为第一类型的存储设备120,则计算设备110通过访问存储系统100的存储器140来处理I/O请求。如上文提到的,第一类型的存储设备120可以包括访问速度较慢的非易失性存储设备,例如,固态驱动器(SSD)存储设备、硬驱动器(HDD)存储设备、NAND闪存存储设备,等等。因此,通过在存储器140中缓存与存储设备120相关联的数据,来处理针对存储设备120的I/O请求可以改进I/O性能。总的来说,计算设备110可以将存储设备120中的近期频繁访问的“热数据”缓存在存储器140中的数据缓存区中。通过这样的方式,当用户需要访问某个数据时,如果该数据缓存在存储器140中,则计算设备110可以从存储器140中快速读取该数据,从而避免了从慢速的存储设备120中读取数据。
更具体地,如果存储系统100的I/O请求是从第一类型的存储设备120读取数据,则计算设备110可以首先在存储器140中查找该数据,以确定该数据是否缓存在存储器140中。如果在存储器140中查找到该数据,则计算设备110可以从存储器140中读取数据,而避免从存储设备120中读取该数据。如此,计算设备110可以更快速地向用户提供所需要的数据,从而缩短I/O请求的处理延迟。另一方面,如果在存储器140中未查找到该数据,则计算设备110可以从第一类型的存储设备120中读取数据。然后,计算设备110可以将读取到的数据缓存在存储器140中,以便用户短时间内再次访问该数据时可以直接从存储器140中读取该数据。
在一些实施例中,为了保证写入的数据在存储设备120和存储器140中的一致性,计算设备110在向存储设备120写入数据时也要相应地在存储器140中执行查找和更新操作。具体地,如果存储系统100的I/O请求是向第一类型的存储设备120写入数据的更新版本,则计算设备110可以首先在存储器140中查找该数据的先前版本。如果在存储器140中未查找到先前版本,则计算设备110可以将数据的更新版本缓存在存储器140中,以便用户短时间内再次访问该数据时可以从存储器140中快速读取数据的最新版本。然后,计算设备110可以将该数据的更新版本写入到第一类型的存储设备120中。
另一方面,如果在存储器140中查找到该数据的先前版本,则计算设备110可以使用该数据的更新版本来替换存储器140中的该数据的先前版本,以便用户短时间内再次访问该数据时可以从存储器140中快速读取数据的最新版本。然后,计算设备110可以将该数据的更新版本写入到第一类型的存储设备120中。通过这样的方式,计算设备110可以保证该数据在存储设备130和存储器140中均为最新版本。
在一些实施例中,为了在存储器140中缓存与第一类型的存储设备120相关联的数据,存储系统100可以在存储器140中设置数据缓存区,该数据缓存区可以包括多个组件或模块。下面结合图3来描述用于访问第一类型的存储设备120的系统架构的一种模块化实现。
图3示出了根据本公开的实施例的访问第一类型的存储设备120的模块化系统架构300。应当明白,图3中示出的具有各种模块的存储系统100的系统架构300仅是示例性的,无意以任何方式限制本公开的范围。在其他实施例中,存储系统100可以采用任何其他适当的系统架构,其可以包括更多或更少的模块,或者包括与所示出的模块不同的模块。
如图3所示,系统架构300可以包括文件系统客户端310、文件数据缓存320、全局数据块缓存330、块缓冲器340、映射层350和数据卷层360。在一些实施例中,文件数据缓存320、全局数据块缓存330和块缓冲器340可以设置在存储系统100的存储器140中,并且组成前述的数据缓存区。
在一些实施例中,文件数据缓存320可以是提供应用程序接口来访问和管理文件的层,它可以将<FS,file,offset>映射到缓存在动态随机存取存储器中的脏数据块或稳定数据块的全局数据块缓存330的描述符,其中FS表示文件系统,file表示文件,offset表示文件的偏移量。全局数据块缓存330可以是缓存中的数据块描述符的管理器,它可以维护缓存中数据块的一致性访问,引用计数,单实例化和有效性。
块缓冲器340可以是被缓存的缓冲器(buffer cached)的超类,它隐藏了缓冲区管理器:文件的缓冲器和数据块的SP缓存之间的实现差异。它为动态随机存取存储器中的全局数据块缓存330或映射层350和数据日志提供了通用应用程序接口。映射层350可以是文件系统管理器,它提供应用程序接口来访问、管理文件,并维护文件映射的一致性。数据卷层360可以提供数据路径容器卷级别的语义,这些语义被转换为块级I/O请求。数据卷层360可以用作上层文件系统的网络附接存储(NAS)卷层接口。
在通过访问存储器140来处理针对存储设备120的I/O请求的过程中,用户通过文件系统客户端310发出的I/O请求可以发送给文件数据缓存320,然后文件数据缓存320可以与全局数据块缓存330和块缓冲器340进行交互,以便确定用户要访问的数据是否缓存在文件数据缓存320、全局数据块缓存330和块缓冲器340中的一个或多个缓存中。
如果用户要访问的数据缓存在文件数据缓存320、全局数据块缓存330和块缓冲器340中的一个或多个缓存中,则计算设备110可以从这些缓存中向文件系统客户端310返回用户要访问的数据,而无需访问映射层350和数据卷层360。反之,如果用户要访问的数据未缓存在文件数据缓存320、全局数据块缓存330和块缓冲器340中的一个或多个缓存中,则计算设备110需要通过映射层350和数据卷层360来从第一类型的存储设备120中读取或写入数据。
返回参考图2,在240处,如果存储系统100的I/O请求的目标存储设备为第二类型的存储设备130,则计算设备110处理I/O请求而避免访问存储器140。如上文所指出的,第二类型的存储设备130具有比第一类型的存储设备120快的访问速度。例如,存储设备130的访问速度可以等同于或接近于存储器140的访问速度。
在这种情况下,计算设备110可以无需通过存储器140来缓存与存储设备130相关联的数据,而是例如经由存储系统100的存储器总线125,直接从存储设备130读取数据或向存储设备130写入数据。以此方式,计算设备110可以实现对存储设备130的接近于存储器140的高速访问。应当理解,计算设备110通过存储器总线来访问存储设备130仅是示例性的,无意以任何方式限制本公开的范围。在其他实施例中,计算设备110也可以通过任何其他适当的总线或任何通信链路或链接来高速地访问存储设备130。
如上文提到的,为了改进第一类型的存储设备120的访问性能,计算设备110可以在存储器140中设置数据缓存区(例如,文件数据缓存320、全局数据块缓存330和块缓冲器340等)来缓存与存储设备120相关联的数据,并且使用如图3中示出的系统架构300来访问第一类型的存储设备120。在一些实施例中,由于计算设备110在访问第二类型的存储设备130时不需要访问存储器140,所以计算设备110可以使用单独的、与系统架构300完全不同的系统架构来访问第二类型的存储设备130。
但是,在其他实施例中,为了使第一类型的存储设备120和第二类型的存储设备130能够尽可能地共用存储系统100的系统架构的相同模块或组件,以降低存储系统100的系统架构的复杂性,计算设备110可以通过存储器140中的用于存储设备120的数据缓存区,来接收针对第二类型的存储设备130的I/O请求,而避免在数据缓存区中缓存与存储设备130相关联的数据。
也就是说,类似于针对存储设备120的I/O请求,针对存储设备130的I/O请求也可以发送给存储器140中的数据缓存区(例如,文件数据缓存320),然后通过该数据缓存区将I/O请求传递到底层的物理存储设备130来访问其中存储的数据,但是并不在该数据缓存区中缓存与存储设备130相关联的数据。下面结合图4来描述用于访问第二类型的存储设备130的系统架构的一种模块化实现,以进一步说明和解释上述方式。
图4示出了根据本公开的实施例的访问第二类型的存储设备130的模块化系统架构400。应当明白,图4中示出的具有各种模块的存储系统100的系统架构400仅是示例性的,无意以任何方式限制本公开的范围。在其他实施例中,存储系统100可以采用任何其他适当的系统架构,其可以包括更多或更少的模块,或者包括与所示出的模块不同的模块。
如图4所示,在访问第二类型的存储设备130时,用户通过文件系统客户端310发出的I/O请求可以类似地发送给文件数据缓存320,而文件数据缓存320可以绕过图3中的全局数据块缓存330和块缓冲器340,而直接与映射层350交互。具体地,针对存储设备130的读取操作可以在文件数据缓存320和映射层350之间进行处理。下面以在文件系统上读取8KB的数据为例从高层次描述读取操作以及文件系统的各个组件之间的交互。首先,文件系统客户端310向文件数据缓存320发送对存储设备130的数据的读取请求,例如,Read(PF,offset=0,8KB,…),其中PF表示文件系统的名称,offset表示文件的逻辑偏移量,8KB表示要读取的数据块大小。接着,文件数据缓存320通过传递文件数据缓存(FDC)条目对映射层350进行读操作,例如,Read(FDCEntry,offset=0,8KB,…)。
然后,映射层350执行读取映射以将文件的逻辑位置映射到物理位置并返回文件的数据块范围,例如,MFR(PF,FDCEntry,…)=>Extent List::<off:0,fsbn>,其中fsbn表示文件系统块编号。然后,基于文件系统块编号,映射层350向数据卷层360发送读取请求,例如,Read(fsbn,Buf:X,…)。最后,映射层350向文件系统客户端310返回读取的数据并确认读取请求,例如,Ack(Buf:X)。可见,在针对存储设备130的读取操作的过程中,文件数据缓存320仅用作功能接口,而不用作数据缓存。
类似地,针对存储设备130的写入操作也可以在文件数据缓存320和映射层350层之间处理。下面以在文件系统上写入8KB的数据为例从高层次描述写入操作以及文件系统的各个组件之间的交互。首先,文件系统客户端310向文件数据缓存320发送数据写入请求,例如,Write(PF,offset=0,8KB,…),其中PF表示文件系统的名称,offset表示文件的逻辑偏移量,8KB表示要读取的数据块大小。然后,文件数据缓存320通过传递FDC条目对映射层350进行写操作,例如,Write(FDCEntry,offset=0,8KB,…)。
接着,映射层350执行写入映射以将文件的逻辑位置映射到物理位置并返回文件的数据块范围,例如,MFW(PF,FDCEntry,…)=>Extent List::<off:0,fsbn>,其中fsbn表示文件系统块编号。然后,基于文件系统块编号,映射层350向数据卷层360发送数据写入请求,例如,Write(fsbn,Buf:X,…)。最后,映射层350向文件系统客户端310确认数据写入请求,例如,Ack(Buf:X)。类似地,在针对存储设备130的写入操作的过程中,文件数据缓存320也仅用作功能接口,而不用作数据缓存。
图5示出了根据本公开的实施例的从第二类型的存储设备130读取数据时文件系统的对象之间的交互过程500的示意图。应当明白,图5中示出的各种对象仅是存储系统100的示例文件系统中的各种对象的示例,无意以任何方式限制本公开的范围。在其他实施例中,存储系统100的文件系统可以具有任何适当的对象,可以包括更多或更少的对象,或者包括与所示出的对象不同的对象。
如图5所示,在一些实施例中,由文件系统客户端310从第二类型的存储设备130中读取数据所涉及到的对象可以包括对象“OfcacheEntry”520、对象“File_OpenFile”530、对象“File_Fork64”540和对象“VFS-Vnode”550,其中对象“OfcacheEntry”520是协议层与文件系统层的接口,负责解释来自协议的请求,提取出读写请求的偏移量和长度并发送至文件系统接口。对象“File_OpenFile”530属于类File_OpenFile,其具有类型指针的成员变量forkPtr指向File_Fork。对象“File_Fork64”540属于File_Fork类,其具有指向vFS_Vnode对象的指针vnodePtr。对象“VFS-Vnode”550是内核中文件的表示,它封装了文件状态和可用于对该文件执行操作的方法。Vnode代表文件系统中的文件,隐藏它所驻留的文件系统的实现,并将文件系统无关的数据和方法暴露给内核的其余部分。
在从第二类型的存储设备130读取数据的过程中,在文件系统客户端310发出读取请求之后,文件系统的存储端可以调用502函数readMsg()以接收来自文件系统客户端310的协议消息。接着,对象“OfcacheEntry”520解析出相应的协议信息,并调用504函数readData()从文件系统接口读出数据。然后,对象“File_OpenFile”530首先对要读取的存储区域加锁,即调用506函数Ranglock(),防止别的线程访问该数据,之后其调用508函数readBlockinternal()将读取请求发送给对象“File_Fork64”540,其是文件数据在存储器中的缓存接口。然后,对象“File_Fork64”540调用512块读写接口函数blcoksRead(),输入文件系统的起始地址和长度,从而输出对应的缓存内容。
然后,对象“VFS-Vnode”550调用514函数Map_for_read()来获取映射信息。由于读写数据之前需要读取相应的元数据,所以之后对象“VFS-Vnode”550调用516函数readExtentListAsync()用来构建读写元数据I/O并下发至数据卷层。接着,对象“VFS-Vnode”550调用518函数waitforcallback()用来等待发送到数据卷层的元数据I/O完成,之后调用522函数Commit_map_for_read()来释放相应的资源。当获取到相应的映射信息后,对象“File_Fork64”540直接读取524底层的卷数据,从而读取数据,然后返回526给对象“File_OpenFile”530。接着,对象“File_OpenFile”530调用528函数Rangunlock()解除对访问区域的锁定,然后将数据返回532给对象“OfcacheEntry”520。最后,对象“OfcacheEntry”520将数据返回534给客户端510。
从图5示出的读取过程可以看出,存储系统100针对第二类型的存储设备130的读取过程避免了用于在存储器140的数据缓存区中进行查找和缓存所涉及到的各种对象之间的交互和确认过程,从而减少了I/O堆栈的层数,以充分发挥出第二类型的存储设备130的访问速度快的性能优势。此外,将理解,向第二类型的存储设备130写入数据时文件系统的对象交互过程与图5中示出的读取过程是类似的,因此文本不再赘述。
本公开的实施例的存储系统100的优化性能已经通过仿真得到测试和验证。例如,在示例仿真中,使用存储容量大小为256G的3D XPoint存储设备作为第二类型的存储器130的示例来实现用于测试的原型机,并执行了一些基准测试来评估其性能。因为3D XPoint存储设备的主要目的是减少总体I/O延迟,所以在执行的测试中设置的原则是完成特定队列深度的一个单线程同步I/O请求。在该测试中使用的I/O性能测试工具是“灵活I/O测试器(FIO)”,通过该工具创建一个大文件,并对该文件发出不同种类的读/写请求。为了本仿真测试的目的,仿真执行了各种数据块大小的顺序读取、顺序写入、随机读取和随机写入过程。下面的图6A至图6D示出了相关的仿真结果。
图6A示出了根据本公开的实施例的存储系统100的顺序读取性能的仿真图。在图6A中,横轴表示存储系统100中的数据块的大小,单位为千字节(KB),而纵轴表示访问速度,单位为千兆字节每秒(GB/s),柱形610表示数据块大小为16KB时从第一类型的存储设备120读取数据的速度,而柱形620表示数据块大小为16KB时从第二类型的存储设备130读取数据的速度。类似地,在数据块为其他大小的情况下,左边的柱形表示第一类型的存储设备120的读取速度,而右边的柱形表示第二类型的存储设备130的读取速度。
图6B示出了根据本公开的实施例的存储系统100的顺序写入性能的仿真图。在图6B中,横轴表示存储系统100中的数据块的大小,单位为千字节(KB),而纵轴表示访问速度,单位为千兆字节每秒(GB/s),柱形630表示数据块大小为16KB时向第一类型的存储设备120写入数据的速度,而柱形640表示数据块大小为16KB时向第二类型的存储设备130写入数据的速度。类似地,在数据块为其他大小的情况下,左边的柱形表示第一类型的存储设备120的写入速度,而右边的柱形表示第二类型的存储设备130的写入速度。
图6C示出了根据本公开的实施例的存储系统100的随机读取性能的仿真图。在图6C中,横轴表示存储系统100中的数据块的大小,单位为千字节(KB),而纵轴表示访问速度,单位为千兆字节每秒(GB/s),柱形650表示数据块大小为16KB时从第一类型的存储设备120读取数据的速度,而柱形660表示数据块大小为16KB时从第二类型的存储设备130读取数据的速度。类似地,在数据块为其他大小的情况下,左边的柱形表示第一类型的存储设备120的读取速度,而右边的柱形表示第二类型的存储设备130的读取速度。
图6D示出了根据本公开的实施例的存储系统100的随机写入性能的仿真图。在图6D中,横轴表示存储系统100中的数据块的大小,单位为千字节(KB),而纵轴表示访问速度,单位为千兆字节每秒(GB/s),柱形670表示数据块大小为16KB时向第一类型的存储设备120写入数据的速度,而柱形680表示数据块大小为16KB时向第二类型的存储设备130写入数据的速度。类似地,在数据块为其他大小的情况下,左边的柱形表示第一类型的存储设备120的写入速度,而右边的柱形表示第二类型的存储设备130的写入速度。
从图6A至图6D示出的仿真结果可以看出,本公开的实施例的存储系统可以提供更好的存储性能,特别是充分发挥出第二类型的存储设备130的性能优点。例如,本公开的实施例的存储系统可以提供更大的带宽和更低的延迟,减少了I/O堆栈层并避免了不必要的存储器复制开销。仿真结果表明,相比于传统的存储系统,本公开的实施例的存储系统至少可以提供10%-15%的更好性能。
图7示意性地示出了一种可以被用来实施本公开的实施例的设备700的框图。在一些实施例中,设备700可以是电子设备,其可以用于实施图1中的计算设备110。如图7中所示出的,设备700包括中央处理单元(CPU)701,其可以根据存储在只读存储设备(ROM)702中的计算机程序指令或者从存储单元708加载到随机访问存储设备(RAM)703中的计算机程序指令,来执行各种适当的动作和处理。在RAM 703中,还可存储设备700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法200可由处理单元701来执行。例如,在一些实施例中,方法200可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序被加载到RAM 703并由CPU 701执行时,可以执行上文描述的方法200的一个或多个步骤。
如本文所使用的,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。本文还可能包括其他明确的和隐含的定义。
如本文所使用的,术语“确定”涵盖各种各样的动作。例如,“确定”可以包括运算、计算、处理、导出、调查、查找(例如,在表格、数据库或另一数据结构中查找)、查明等。此外,“确定”可以包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)等。此外,“确定”可以包括解析、选择、选取、建立等。
应当注意,本公开的实施例可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。
此外,尽管在附图中以特定顺序描述了本公开的方法的操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤组合为一个步骤执行,和/或将一个步骤分解为多个步骤执行。还应当注意,根据本公开的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
虽然已经参考若干具体实施例描述了本公开,但是应当理解,本公开不限于所公开的具体实施例。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等效布置。
Claims (24)
1.一种存储管理方法,包括:
根据确定接收到存储系统的输入/输出I/O请求,确定所述I/O请求针对的目标存储设备;
根据确定所述目标存储设备为第一类型的存储设备,通过访问所述存储系统的存储器中的数据缓存区来处理所述I/O请求;以及
根据确定所述目标存储设备为与第一类型不同的第二类型的存储设备,通过绕过所述数据缓存区以便直接访问所述目标存储设备而避免访问所述数据缓存区,以及通过绕过被可通信地耦合到所述数据缓存区的块缓冲器以便直接访问所述目标存储设备而避免访问所述块缓冲器,来处理所述I/O请求,所述第二类型的存储设备具有比所述第一类型的存储设备快的访问速度。
2.根据权利要求1所述的方法,其中确定所述目标存储设备包括:
确定所述I/O请求针对的目标数据是否具有标识符,所述标识符指示所述目标数据存储在所述第二类型的存储设备中;
根据确定所述目标数据不具有所述标识符,确定所述目标存储设备为所述第一类型的存储设备;以及
根据确定所述目标数据具有所述标识符,确定所述目标存储设备为所述第二类型的存储设备。
3.根据权利要求2所述的方法,其中所述I/O请求针对的所述目标数据包括文件;并且
其中指示所述目标数据被存储在所述第二类型的所述存储设备中的所述标识符包括所述文件的索引节点中的标志。
4.根据权利要求3所述的方法,其中所述标志指示所述文件被分配在所述第二类型的所述存储设备上。
5.根据权利要求3所述的方法,其中所述目标存储设备上的数据作为文件被组织和管理。
6.根据权利要求1所述的方法,还包括:
生成与所述第二类型的存储设备中的数据相关联的标识符,以指示所述数据存储在所述第二类型的存储设备中。
7.根据权利要求1所述的方法,其中通过访问所述数据缓存区来处理所述I/O请求包括:
根据确定所述I/O请求是从所述第一类型的存储设备读取数据的请求,在所述数据缓存区中查找所述数据;以及
根据确定在所述数据缓存区中查找到所述数据,从所述数据缓存区中读取所述数据。
8.根据权利要求1所述的方法,其中通过访问所述数据缓存区来处理所述I/O请求包括:
根据确定所述I/O请求是从所述第一类型的存储设备读取数据的请求,在所述数据缓存区中查找所述数据;
根据确定在所述数据缓存区中未查找到所述数据,
从所述第一类型的存储设备中读取所述数据;以及
将所述数据缓存在所述数据缓存区中。
9.根据权利要求1所述的方法,其中通过访问所述数据缓存区来处理所述I/O请求包括:
根据确定所述I/O请求是向所述第一类型的存储设备写入数据的更新版本的请求,在所述数据缓存区中查找所述数据的先前版本;
根据确定在所述数据缓存区中未查找到所述先前版本,
将所述更新版本缓存在所述数据缓存区中;以及
将所述更新版本写入到所述第一类型的存储设备中。
10.根据权利要求1所述的方法,其中通过访问所述数据缓存区来处理所述I/O请求包括:
根据确定所述I/O请求是向所述第一类型的存储设备写入数据的更新版本的请求,在所述数据缓存区中查找所述数据的先前版本;
根据确定在所述数据缓存区中查找到所述先前版本,
使用所述更新版本替换所述数据缓存区中的所述先前版本;以及
将所述更新版本写入到所述第一类型的存储设备中。
11.根据权利要求1所述的方法,其中处理所述I/O请求而避免访问所述数据缓存区包括:
经由所述存储系统的存储器总线,从所述第二类型的存储设备读取数据,或者向所述第二类型的存储设备写入数据。
12.根据权利要求1所述的方法,其中针对所述第二类型的所述存储设备的I/O请求初始被发送到所述存储器中的文件数据缓存区,其中所述文件数据缓存区还被用于缓存与所述数据缓存区中的所述第一类型的所述存储设备相关联的数据,其中所述文件数据缓存区仅作为在处理针对所述第二类型的所述存储设备的所述I/O请求时的功能接口而被使用,并且其中针对所述第二类型的所述存储设备的所述I/O请求随后在所述第二类型的所述存储设备上被执行而避免访问所述数据缓存区。
13.根据权利要求1所述的方法,其中所述第二类型的存储设备包括3D XPoint存储设备。
14.一种电子设备,包括:
至少一个处理器;以及
存储有计算机程序指令的至少一个存储器,所述至少一个存储器和所述计算机程序指令被配置为,与所述至少一个处理器一起,使得所述电子设备:
根据确定接收到存储系统的输入/输出I/O请求,确定所述I/O请求针对的目标存储设备;
根据确定所述目标存储设备为第一类型的存储设备,通过访问所述存储系统的存储器中的数据缓存区来处理所述I/O请求;以及
根据确定所述目标存储设备为与第一类型不同的第二类型的存储设备,通过绕过所述数据缓存区以便直接访问所述目标存储设备而避免访问所述数据缓存区,以及通过绕过被可通信地耦合到所述数据缓存区的块缓冲器以便直接访问所述目标存储设备而避免访问所述块缓冲器,来处理所述I/O请求,所述第二类型的存储设备具有比所述第一类型的存储设备快的访问速度。
15.根据权利要求14所述的电子设备,其中所述至少一个存储器和所述计算机程序指令被配置为,与所述至少一个处理器一起,使得所述电子设备通过以下来确定所述目标存储设备:
确定所述I/O请求针对的目标数据是否具有标识符,所述标识符指示所述目标数据存储在所述第二类型的存储设备中;
根据确定所述目标数据不具有所述标识符,确定所述目标存储设备为所述第一类型的存储设备;以及
根据确定所述目标数据具有所述标识符,确定所述目标存储设备为所述第二类型的存储设备。
16.根据权利要求14所述的电子设备,其中所述至少一个存储器和所述计算机程序指令还被配置为,与所述至少一个处理器一起,使得所述电子设备:
生成与所述第二类型的存储设备中的数据相关联的标识符,以指示所述数据存储在所述第二类型的存储设备中。
17.根据权利要求14所述的电子设备,其中所述至少一个存储器和所述计算机程序指令被配置为,与所述至少一个处理器一起,使得所述电子设备通过以下而通过访问所述数据缓存区来处理所述I/O请求:
根据确定所述I/O请求是从所述第一类型的存储设备读取数据的请求,在所述数据缓存区中查找所述数据;以及
根据确定在所述数据缓存区中查找到所述数据,从所述数据缓存区中读取所述数据。
18.根据权利要求14所述的电子设备,其中所述至少一个存储器和所述计算机程序指令被配置为,与所述至少一个处理器一起,使得所述电子设备通过以下而通过访问所述数据缓存区来处理所述I/O请求:
根据确定所述I/O请求是从所述第一类型的存储设备读取数据的请求,在所述数据缓存区中查找所述数据;
根据确定在所述数据缓存区中未查找到所述数据,
从所述第一类型的存储设备中读取所述数据;以及
将所述数据缓存在所述数据缓存区中。
19.根据权利要求14所述的电子设备,其中所述至少一个存储器和所述计算机程序指令被配置为,与所述至少一个处理器一起,使得所述电子设备通过以下而通过访问所述数据缓存区来处理所述I/O请求:
根据确定所述I/O请求是向所述第一类型的存储设备写入数据的更新版本的请求,在所述数据缓存区中查找所述数据的先前版本;
根据确定在所述数据缓存区中未查找到所述先前版本,
将所述更新版本缓存在所述数据缓存区中;以及
将所述更新版本写入到所述第一类型的存储设备中。
20.根据权利要求14所述的电子设备,其中所述至少一个存储器和所述计算机程序指令被配置为,与所述至少一个处理器一起,使得所述电子设备通过以下而通过访问所述数据缓存区来处理所述I/O请求:
根据确定所述I/O请求是向所述第一类型的存储设备写入数据的更新版本的请求,在所述数据缓存区中查找所述数据的先前版本;
根据确定在所述数据缓存区中查找到所述先前版本,
使用所述更新版本替换所述数据缓存区中的所述先前版本;以及
将所述更新版本写入到所述第一类型的存储设备中。
21.根据权利要求14所述的电子设备,其中所述至少一个存储器和所述计算机程序指令被配置为,与所述至少一个处理器一起,使得所述电子设备通过以下来处理所述I/O请求而避免访问所述数据缓存区:
经由所述存储系统的存储器总线,从所述第二类型的存储设备读取数据,或者向所述第二类型的存储设备写入数据。
22.根据权利要求14所述的电子设备,其中针对所述第二类型的所述存储设备的I/O请求初始被发送到所述存储器中的文件数据缓存区,其中所述文件数据缓存区还被用于缓存与所述数据缓存区中的所述第一类型的所述存储设备相关联的数据,其中所述文件数据缓存区仅作为在处理针对所述第二类型的所述存储设备的所述I/O请求时的功能接口而被使用,并且其中针对所述第二类型的所述存储设备的所述I/O请求随后在所述第二类型的所述存储设备上被执行而避免访问所述数据缓存区。
23.根据权利要求14所述的电子设备,其中所述第二类型的存储设备包括3D XPoint存储设备。
24.一种非易失性计算机可读介质,所述非易失性计算机可读介质存储机器可执行指令,所述机器可执行指令在被执行时使机器执行根据权利要求1-13中任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911045028.6A CN112748854B (zh) | 2019-10-30 | 2019-10-30 | 对快速存储设备的优化访问 |
US16/880,271 US11586353B2 (en) | 2019-10-30 | 2020-05-21 | Optimized access to high-speed storage device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911045028.6A CN112748854B (zh) | 2019-10-30 | 2019-10-30 | 对快速存储设备的优化访问 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112748854A CN112748854A (zh) | 2021-05-04 |
CN112748854B true CN112748854B (zh) | 2024-04-26 |
Family
ID=75640639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911045028.6A Active CN112748854B (zh) | 2019-10-30 | 2019-10-30 | 对快速存储设备的优化访问 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11586353B2 (zh) |
CN (1) | CN112748854B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115981547A (zh) * | 2021-10-14 | 2023-04-18 | 华为技术有限公司 | 一种数据系统、数据访问方法、装置及数据处理单元 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111805A (zh) * | 2014-07-15 | 2014-10-22 | 华为技术有限公司 | 一种i/o请求处理方法及存储系统 |
US10075551B1 (en) * | 2016-06-06 | 2018-09-11 | Amazon Technologies, Inc. | Request management for hierarchical cache |
CN110007877A (zh) * | 2019-04-16 | 2019-07-12 | 苏州浪潮智能科技有限公司 | 主机与双控存储设备间数据传输方法、装置、设备及介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7159076B2 (en) * | 2003-06-24 | 2007-01-02 | Research In Motion Limited | Cache operation with non-cache memory |
US20050044321A1 (en) * | 2003-08-18 | 2005-02-24 | Jan Bialkowski | Method and system for multiprocess cache management |
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US9473527B1 (en) * | 2011-05-05 | 2016-10-18 | Trend Micro Inc. | Automatically generated and shared white list |
US10289547B2 (en) * | 2014-02-14 | 2019-05-14 | Western Digital Technologies, Inc. | Method and apparatus for a network connected storage system |
JP2017138853A (ja) * | 2016-02-04 | 2017-08-10 | 株式会社東芝 | 情報処理装置およびプログラム |
CN107515724B (zh) | 2016-06-16 | 2021-04-02 | 伊姆西Ip控股有限责任公司 | 用于再现存储系统的输入输出的方法和设备 |
US10359954B2 (en) * | 2017-05-31 | 2019-07-23 | Alibaba Group Holding Limited | Method and system for implementing byte-alterable write cache |
CN110058964B (zh) | 2018-01-18 | 2023-05-02 | 伊姆西Ip控股有限责任公司 | 数据恢复方法、数据恢复系统和计算机可读介质 |
US11334287B2 (en) * | 2018-02-09 | 2022-05-17 | Micron Technology, Inc. | Data stream identification and processing in data storage device |
US10636455B2 (en) * | 2018-07-12 | 2020-04-28 | International Business Machines Corporation | Enhanced NVDIMM architecture |
-
2019
- 2019-10-30 CN CN201911045028.6A patent/CN112748854B/zh active Active
-
2020
- 2020-05-21 US US16/880,271 patent/US11586353B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111805A (zh) * | 2014-07-15 | 2014-10-22 | 华为技术有限公司 | 一种i/o请求处理方法及存储系统 |
US10075551B1 (en) * | 2016-06-06 | 2018-09-11 | Amazon Technologies, Inc. | Request management for hierarchical cache |
CN110007877A (zh) * | 2019-04-16 | 2019-07-12 | 苏州浪潮智能科技有限公司 | 主机与双控存储设备间数据传输方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
US20210132801A1 (en) | 2021-05-06 |
US11586353B2 (en) | 2023-02-21 |
CN112748854A (zh) | 2021-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101944876B1 (ko) | 파일 액세스 방법 및 장치 및 스토리지 디바이스 | |
US10606803B2 (en) | Data cloning in memory-based file systems | |
KR101445481B1 (ko) | 파일 시스템 힌팅 | |
US8176233B1 (en) | Using non-volatile memory resources to enable a virtual buffer pool for a database application | |
US20200364148A1 (en) | Method, device and computer program product for implementing file system | |
US10782904B2 (en) | Host computing arrangement, remote server arrangement, storage system and methods thereof | |
EP3382557B1 (en) | Method and apparatus for persistently caching storage data in a page cache | |
US20150067283A1 (en) | Image Deduplication of Guest Virtual Machines | |
CN105183839A (zh) | 一种基于Hadoop的小文件分级索引的存储优化方法 | |
TW201220197A (en) | for improving the safety and reliability of data storage in a virtual machine based on cloud calculation and distributed storage environment | |
US9928000B2 (en) | Memory mapping for object-based storage devices | |
CN109804359A (zh) | 用于将数据回写到存储设备的系统和方法 | |
US10606500B2 (en) | Direct access to de-duplicated data units in memory-based file systems | |
Lee et al. | iLSM-SSD: An intelligent LSM-tree based key-value SSD for data analytics | |
Wu et al. | Totalcow: Unleash the power of copy-on-write for thin-provisioned containers | |
CN115794669A (zh) | 一种扩展内存的方法、装置及相关设备 | |
Li et al. | Enabling efficient updates in KV storage via hashing: Design and performance evaluation | |
CN112748854B (zh) | 对快速存储设备的优化访问 | |
Chen et al. | A unified framework for designing high performance in-memory and hybrid memory file systems | |
US11520818B2 (en) | Method, apparatus and computer program product for managing metadata of storage object | |
US20170286442A1 (en) | File system support for file-level ghosting | |
CN113243008A (zh) | 具有共享页面高速缓存的分布式vfs | |
CN111143418B (zh) | 一种数据库读取数据方法、装置、设备及存储介质 | |
KR102456017B1 (ko) | 응용 프로그램간 파일 공유 장치 및 방법 | |
US11853319B1 (en) | Caching updates appended to an immutable log for handling reads to the immutable log |
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 | ||
GR01 | Patent grant |