CN110140114A - 管理存储系统中数据对象的i/o操作 - Google Patents
管理存储系统中数据对象的i/o操作 Download PDFInfo
- Publication number
- CN110140114A CN110140114A CN201780077890.8A CN201780077890A CN110140114A CN 110140114 A CN110140114 A CN 110140114A CN 201780077890 A CN201780077890 A CN 201780077890A CN 110140114 A CN110140114 A CN 110140114A
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- data object
- cache memory
- data block
- 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
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/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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/0608—Saving storage space on 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/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/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
-
- 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/065—Replication mechanisms
-
- 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/0661—Format or protocol conversion 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/22—Employing cache memory using specific memory technology
- G06F2212/222—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/312—In storage controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/455—Image or video data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/46—Caching storage objects of specific type in disk cache
- G06F2212/462—Track or segment
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)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了用于管理存储系统中的数据对象(例如,大数据对象(LOB))的输入/输出(I/O)操作的各种方面。例如,方法可以包括:接收对数据对象执行I/O操作的I/O请求;确定数据对象的大小;以及相对于高速缓存存储器设备的存储阈值将数据对象确定为不相容数据对象。该方法还可以包括;将不相容数据对象划分为多个数据块,该数据块中的每个数据块具有的大小小于存储阈值;将存储在高速缓存存储器设备的一个或多个存储器空间中的一个或多个数据块移动到长期存储器设备中以空出一个或多个存储器空间;以及将不相容数据对象的数据块中的一个或多个数据块存储在所空出的一个或多个存储器空间中。
Description
背景技术
技术领域
本公开涉及计算系统,并且更具体地涉及管理存储系统中的数据对象。
相关技术的描述
各种计算网络和系统能够存储数据。这些计算网络和系统的子集被配置为将数据存储为数据对象。这些数据对象中的一些数据对象能够包含大量数据(例如,至少两个太字节(2TB)的数据)。
通常,当计算系统接收到将数据对象写入长期存储装置的输入/输出(I/O)请求时,最初将数据对象整体写入高速缓存的存储缓冲区中。存储缓冲区中的数据对象随后被写入长期存储装置并且可在将来进行访问(例如,经由读取请求和/或读写请求),以便可读取或修改(例如,读取并随后用新数据写入)整体数据对象。
为了经由读取请求访问长期存储装置中的数据对象,将整个数据对象读取到存储缓冲区中。也就是说,读取数据对象中的数据的所有读取请求都会导致将整个数据对象读取到存储缓冲区中,即使仅需要读取数据对象中的数据的子集或一小部分。
为了经由读写请求访问长期存储装置中的数据对象(例如,以修改数据对象中的数据),将整个数据对象读取到存储缓冲区中,改变需要修改的数据,以及最终将整个经修改的数据对象写入(重新写入)到长期存储装置中。也就是说,修改数据对象中的数据的所有读写请求都会导致将整个数据对象读取到存储缓冲区中(即使需要修改的数据是整个数据对象的子集或数据对象中的数据的仅一小部分),修改数据对象中的数据,以及最终将整个经修改的数据对象写入(重新写入)到长期存储装置,即使仅数据对象中的数据的子集或一小部分需要修改。
虽然一些先前的计算网络和系统能够存储数据对象,但是这些计算网络和系统不像它们可以的那样可靠和/或有效。在一些情况下,诸如成本、大小限制、存储限制等实际考虑因素限制了存储系统的高速缓存存储器设备的大小。因此,在一个或多个I/O请求(即,读取请求、写入请求,或读写请求)与包括的大小大于存储系统中的高速缓存存储器设备的大小(例如,缓冲区大小)的数据对象对应或相关联的情况下,一些存储系统可能发生故障(例如,崩溃等)和/或性能下降(例如,具有延迟问题等)。一些存储系统遇到的其他问题可根源于高速缓存存储器设备被耗尽(即,装满和/或存储超过数据的预定阈值量的数据量)和/或未存储一个或多个所需的数据对象和/或数据块。如果高速缓存存储器设备不足以满足读取请求和/或已达到其写入请求的高水位标记,则存储系统的性能可能会显著下降。
例如,当数据对象的大小大于计算网络和/或系统中的存储缓冲区的大小时,先前的计算网络和系统可能难以写入数据对象。也就是说,当写入请求中包括的数据对象的大小大于其存储缓冲区的大小时,因为存储缓冲区无法写入大于其存储容量的数据对象,所以至少一些网络和/或系统可能发生故障(例如,崩溃)和/或经历延迟问题。
一些先前的计算网络和/或系统可能会遇到过度延迟问题,因为当仅需要读取数据对象中的数据的子集时,所述先前的计算网络和/或系统通过从长期存储装置读取整个数据对象到其存储缓冲区来执行读取操作。也就是说,这些先前的计算网络和系统可能需要耗费比所需更多的时间来执行读取操作,因为当仅需要读取数据对象中的数据的一部分(即,需要读取的数据或所需数据)时,将整个数据对象读取到存储缓冲区中,这是因为将多余的数据读取到存储缓冲区中而増加了将所需数据读取到存储缓冲区中耗费的时间量。
类似地,一些先前的计算网络和/或系统在修改长期存储装置中的数据时可能会经历过度延迟问题,因为当仅需要修改数据对象中的数据的子集时,所述先前的计算网络和/或系统对整个数据对象执行读写操作。也就是说,一些先前的计算网络和系统在执行读写操作时表现出滞后,因为当仅需要修改数据对象中的数据的一部分(即,需要修改的数据或所需数据)时,将整个数据对象读取到缓冲存储器中。这因为将多余的数据读取到存储缓冲区并随后写入(重新写入)到长期存储装置而增加了修改所需数据所耗费的时间量。
发明内容
描述了管理存储系统中的数据对象(特别是但不限于大数据对象(LOB))的输入/输出(I/O)操作的各种方面。在一个创新方面,系统包括第一非易失性高速缓存存储器设备和存储控制器,该存储控制器耦接到该高速缓存存储器设备。存储控制器包括一个或多个处理设备,该一个或多个处理设备用于在一个或多个应用程序中执行指令,该指令被配置为使存储控制器执行包括以下的操作:接收对数据对象的I/O请求;确定数据对象的大小;以及相对于第一非易失性高速缓存存储器设备的存储阈值将数据对象确定为第一不相容数据对象。在一些实施方案中,存储控制器还执行包括以下的操作:将第一不相容数据对象划分为多个数据块,数据块中的每个数据块具有的大小小于存储阈值;将存储在第一非易失性高速缓存存储器设备的一个或多个存储器空间中的一个或多个数据块移动到长期存储器设备以空出一个或多个存储器空间;以及将第一不相容数据对象的数据块中的一个或多个数据块存储在第一非易失性高速缓存存储器设备的所空出的一个或多个存储器空间中。
在各种实施方案中,I/O请求是写入请求,并且当执行用于存储第一不相容数据对象的一个或多个数据块的操作时,存储控制器还执行包括以下的操作:将第一不相容数据对象的一个或多个数据块中的每个数据块写入第一非易失性高速缓存存储器设备的所空出的一个或多个存储器空间中。在一些实施方案中,I/O请求是读取请求,并且当执行用于存储第一不相容数据对象的一个或多个数据块的操作时,存储控制器还执行包括以下的操作:将存储在长期存储器设备中的一个或多个数据块读取到第一非易失性高速缓存存储器设备中。在另外的实施方案中,I/O请求是读写请求,并且当执行用于存储第一不相容数据对象的数据块中的一个或多个数据块的操作时,存储控制器还执行包括以下的操作:将存储在长期存储器设备中的一个或多个数据块读取到第一非易失性高速缓存存储器设备中;修改读取的一个或多个数据块中的数据以生成一个或多个经修改的数据块;以及将一个或多个经修改的数据块写入长期存储器设备中。
一些系统包括耦接到高速缓存存储器设备的长期存储器设备,其中将数据对象确定为第一不相容对象还基于数据对象的大小超过第一非易失性高速缓存存储器设备的可用存储容量。此外,将第一不相容数据对象的数据块中的一个或多个数据块存储在所空出的一个或多个存储器空间中包括:针对第一不相容数据对象的每个数据块,确定是否存在足够的空间来将每个数据块存储在第一非易失性高速缓存存储器设备中;以及当不存在足够的空间时,将与除了第一不相容数据对象之外的一个或多个数据对象相关联并且当前存储在第一非易失性高速缓存存储器设备中的一个或多个现有数据块写入长期存储器设备中;空出一个或多个现有数据块的一个或多个存储器空间以生成所空出的一个或多个存储器空间;以及将每个数据块写入第一非易失性高速缓存存储器设备中所空出的一个或多个存储器空间中。
在各种实施方案中,系统还包括耦接到第一非易失性高速缓存存储器设备的第二非易失性高速缓存存储器设备,并且存储控制器还执行包括以下的操作:将存储在第一非易失性高速缓存存储器设备中的每个数据块复制到第二非易失性高速缓存存储器设备中。在一些实施方案中,第一非易失性高速缓存存储器设备包括缓冲区大小,并且存储阈值反映缓冲区大小。在另外的实施方案中,第一非易失性高速缓存存储器设备包括闪存存储器设备。
在各种实施方案中,存储控制器被配置为耦接到与一个或多个客户端设备通信的网络。在一些实施方案中,存储控制器在耦接到网络时位于一个或多个客户端设备与第一非易失性高速缓存存储器设备之间。在另外的实施方案中,长期存储器设备是本地存储网络的一部分和/或企业存储服务的一部分。
在另一个创新方面,系统包括:包括缓冲区大小的非易失性高速缓存存储器设备;用于接收对数据对象的I/O请求的装置;用于确定数据对象大小的装置;以及用于相对于非易失性高速缓存存储器设备的缓冲区大小将数据对象确定为不相容数据对象的装置。在各种实施方案中,系统还包括用于将不相容数据对象划分为多个数据块的装置,数据块中的每个数据块具有的大小小于缓冲区大小;用于将存储在非易失性高速缓存存储器设备的一个或多个存储器空间中的一个或多个数据块移动到长期存储器设备以空出一个或多个存储器空间的装置;以及用于将不相容数据对象的数据块中的一个或多个数据块存储在非易失性高速缓存存储器设备的所空出的一个或多个存储器空间中的装置。
在各种实施方案中,I/O请求是写入请求,并且用于存储不相容数据对象的数据块中的一个或多个数据块的装置还包括用于将不相容数据对象的一个或多个数据块中的每个数据块写入非易失性高速缓存存储器设备的所空出的一个或多个存储器空间中的装置。在一些实施方案中,I/O请求是读取请求,并且用于存储不相容数据对象的数据块中的一个或多个数据块的装置还包括用于将存储在长期存储器设备中的一个或多个数据块读取到高速缓存存储器设备中的装置。在另外的实施方案中,I/O请求是读写请求,并且用于存储不相容数据对象的数据块中的一个或多个数据块的装置还包括用于将存储在长期存储器设备中的一个或多个数据块读取到高速缓存存储器设备中的装置,用于修改读取的一个或多个数据块中的数据以生成一个或多个经修改的数据块的装置,以及用于将一个或多个经修改的数据块写入长期存储器设备中的装置。
在一些实施方案中,系统还包括耦接到高速缓存存储器设备的长期存储器设备,并且用于将数据对象确定为不相容对象的装置包括用于将该确定基于数据对象的大小超过缓冲区大小的装置。在一些系统中,用于将不相容数据对象的数据块中的一个或多个数据块存储在一个或多个存储器空间中的装置包括:针对不相容数据对象的每个数据块,用于确定是否存在足够的空间来将每个数据块存储在非易失性高速缓存存储器设备中的装置;以及当不存在足够的空间时,用于将与除了不相容数据对象之外的一个或多个数据对象相关联并且当前存储在非易失性高速缓存存储器设备中的一个或多个现有数据块写入长期存储器设备中的装置;用于空出一个或多个现有数据块的一个或多个存储器空间以生成所空出的一个或多个存储器空间的装置;以及用于将每个数据块写入非易失性高速缓存存储器设备中所空出的一个或多个存储器空间中的装置。
在又一创新方面,用于在包括一组非易失性存储器设备的非易失性存储器系统中操作的方法包括:在耦接到包括存储阈值的非易失性高速缓存存储器设备的存储控制器处接收用于对数据对象执行I/O操作、确定数据对象的大小、确定数据对象的大小,以及相对于高速缓存存储器设备的存储阈值将数据对象确定为不相容数据对象的I/O命令。在各种实施方案中,该方法还包括将不相容数据对象划分为多个数据块,数据块中的每个数据块具有的大小小于缓冲区大小;将存储在非易失性高速缓存存储器设备的一个或多个存储器空间中的一个或多个数据块移动到长期存储器设备以空出一个或多个存储器空间;以及将不相容数据对象的数据块中的一个或多个数据块存储在非易失性高速缓存存储器设备的所空出的一个或多个存储器空间中。
在各种实施方案中,I/O请求是写入请求,并且存储不相容数据对象的数据块中的一个或多个数据块还包括将不相容数据对象的一个或多个数据块中的每个数据块写入非易失性高速缓存存储器设备的所空出的一个或多个存储器空间中。在一些实施方案中,I/O请求是读取请求,并且存储不相容数据对象的数据块中的一个或多个数据块还包括将不相容数据对象的一个或多个数据块中的每个数据块读取到非易失性高速缓存存储器设备的所空出的一个或多个存储器空间中。在另外的实施方案中,I/O请求是读写请求,并且存储不相容数据对象的数据块中的一个或多个数据块还包括将不相容数据对象的一个或多个数据块中的每个数据块读取到非易失性高速缓存存储器设备的所空出的一个或多个存储器空间中;修改读取的一个或多个数据块的每一者中的数据以生成一个或多个经修改的数据块;以及将一个或多个经修改的数据块写入长期存储器设备中。
在一些实施方案中,将数据对象确定为不相容对象还基于数据对象的大小超过高速缓存存储器设备的可用存储容量。在一些方法中,将不相容数据对象的数据块中的一个或多个数据块存储在一个或多个存储器空间中包括:针对不相容数据对象的每个数据块,确定是否存在足够的空间来将每个数据块存储在非易失性高速缓存存储器设备中;以及当不存在足够的空间时,将与除了不相容数据对象之外的一个或多个数据对象相关联并且当前存储在非易失性高速缓存存储器设备中的一个或多个现有数据块写入长期存储器设备中;空出一个或多个现有数据块的一个或多个存储器空间以生成所空出的一个或多个存储器空间;以及将每个数据块写入非易失性高速缓存存储器设备中所空出的一个或多个存储器空间中。
本文所公开的各种实施方案包括用于克服或至少减少上述先前存储网络和/或系统中的问题并因此比其他计算网络和/或网络更可靠和/或更有效的操作。也就是说,本文所公开的各种实施方案包括具有用于避免或至少减少与写入大数据对象(例如,包括的大小大于高速缓存存储器设备的大小或存储容量的数据对象)相关联的可靠性和/或延迟相关问题的功能的硬件和/或软件。此外,本文所公开的各种实施方案包括用于避免或至少减少与读取数据的请求(例如,读取请求)和/或修改数据的请求(例如,读写请求)相关联的延迟问题的硬件和/或软件。因此,其中公开的实施方案提供对存储网络和/或存储系统的各种改进。
应当理解,本公开中使用的语言主要是出于可读性和指导目的而选择的,并不限制本文公开的主题的范围。
附图说明
本公开通过举例而非限制的方式在附图中示出,在附图中,相同的附图标记用于指代类似的元件。
图1A是用于存储数据的示例性计算网络的示意图;
图1B是包括在图1A的计算网络中的示例性存储系统的示意图;
图2是用于存储数据的示例性计算网络的示意图;
图3A至图3C是示出对大数据对象执行的输入/输出(I/O)操作的各种示例的流程图;
图4是示出关于用于将数据对象写入长期存储装置的各种示例性硬件和/或软件的操作的示意图;
图5A至图5G是示出由存储控制器的一个实施方案用来管理高速缓存存储器设备的最近最少使用(LRU)技术的各种示例的示意图;
图6是用于将数据对象写入缓冲存储器的示例性方法的框图;
图7是用于将数据对象读取到缓冲存储器的示例性方法的框图;并且
图8是用于修改长期存储装置中的数据对象的示例性方法的框图。
具体实施方式
本文所公开的创新技术包括用于管理存储系统中的数据对象(特别是大数据对象)的输入/输出(I/O)操作的各种方面,诸如系统、方法、装置、计算机可读介质、计算机程序产品等。该技术有利地比先前计算网络和/或网络更有效和/或更可靠地用于存储数据以及特别地用于存储数据对象,尤其是当数据对象包括大量数据(为大数据对象(LOB))时。LOB包括大于存储设备的临时性非暂态存储介质的数据定量或数据量,如下面进一步详细讨论的。
以下公开的各种实施方案包括用于有利地增加网络和系统可靠性和/或减少与将大数据对象(例如,包括的大小大于缓冲存储器的大小或存储容量的数据对象)写入长期存储装置中相关联的延迟问题的硬件和/或软件。此外,本文所公开的各种实施方案包括用以避免或至少减少与从长期存储装置中读取数据(例如,数据对象)的请求(例如,读取请求)相关联和/或与用于修改长期存储装置中的数据(例如,数据对象)的请求(例如,读写请求)相关联的延迟问题的硬件和/或软件。
现在转到附图,图1A为示例性存储网络10的框图。如图所示,存储网络10可以包括能够经由有线和/或无线网络75(例如,任何数量和/或配置的公用和/或专用计算机网络(例如,互联网、内联网、云网络,等等))耦接到存储系统100并与其通信的多个客户端设备25,以及可以包括一个客户端设备25或两个或更多个客户端设备25(例如,不限于三个客户端设备25)的其他示例。
客户端设备25可以是能够利用网络75访问存储系统100的任何计算硬件和/或软件(例如,胖客户端、瘦客户端,或它们的混合)。作为其相应操作的一部分,每个客户端设备25依赖于向存储系统100发送输入/输出(I/O)请求以写入数据、读取数据,和/或修改数据。具体地,每个客户端设备25可以向存储系统100发送读取、写入、存储、传送、传播和/或传输指令、数据、计算机程序、软件、代码、例程等的I/O请求。客户端设备25和存储系统100可包括客户端-服务器模型的至少一部分。通常,存储系统100可以由客户端设备25访问和/或与存储系统100的通信可以由客户端设备25利用一种或多种进程间联网技术通过网络套接字(未示出)来发起。
参考图1B,示出了示例性存储系统100的框图。如图所示,存储系统100可以包括多个存储设备102a、102b、…102n,以及经由有线和/或无线网络110耦接到存储设备102a、102b、…102n并与之通信的存储控制器104,以及其他部件。
在各种实施方案中,通过利用网络110,存储系统100可以包括云网络(IAN)、SAN(例如,存储区域网络、小区域网络、服务器区域网络和/或系统区域网络)、广域网(WAN)、局域网(LAN)、无线局域网(WLAN)、城域网(MAN)、企业专网(EPN)、虚拟专用网(VPN),和/或个人区域网络(PAN),以及为了共享资源的目的而连接在一起的计算网络和/或计算设备组的其他示例。
存储设备102a、102b、…102n(也单独地简称,以各组形式称为,或统称为存储设备102)可以各自是已知或将来开发的并且能够存储数据和/或数据对象的任何类型的存储设备。在各种实施方案中,存储设备102可以包括一个或多个非暂态计算机可用(例如,可读取、可写入等)介质,该一个或多个非暂态计算机可用介质可以包括可含有、存储、传送、传播和/或传输指令、数据、计算机程序、软件、代码、例程等以便由计算机处理设备进行处理或与计算机处理设备连接的任何非暂态和/或持久性装置或设备。
如图1B所示,存储设备102a、102b、…102n可以实现为闪存存储器(例如,固态设备(SSD),或存储持久性数据的其他非易失性存储设备,或持久性存储设备)。在另外的实施方案中,存储设备102a、102b、…102n可以包括非暂态存储器,诸如动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、硬盘驱动器(HDD)和/或存储磁带(例如,磁性和/或虚拟存储磁带),以及其他类型(例如,非易失性和/或持久性)的存储器设备。
在各种实施方案中,存储设备102a、102b、…102n中的一者或多者可以包括被配置用于执行长期数据存储操作(例如,数据归档、数据备份、数据镜像、复制数据等)的非易失性/持久性硬件和/或软件。例如,存储设备102a、102b、…102n中的每一者可以包括被配置用于执行长期数据存储操作的非易失性和/或持久性硬件和/或软件。此外,存储设备102可以包括用于将数据和/或一个或多个数据对象存储为单个条目(例如,当数据对象具有的大小小于或等于高速缓存存储器设备106的缓冲区大小(例如,缓冲存储器108的大小)时)的硬件和/或软件。
另选地或除此之外,存储设备102可以包括用于存储被划分/分割为多个数据块(例如,多个数据块或两个或更多个数据块)的一个或多个数据对象的硬件和/或软件。示例性数据对象(和数据块)包括但不限于数据的组/分组、数据序列、数据表、索引、过程、例程、视图、快照,和/或类似的数据内容/类别。
在一些实施方案中,存储设备102可包括对象存储系统的至少一部分。在各种实施方案中,存储设备102可以包括用于在组织上平坦(例如,非分层)的容器中存储数据对象(例如,数据文件)并且可以使用唯一标识符(ID)来检索数据对象的硬件和/或软件。在各种实施方案中,存储设备102可以使用元数据来存储和访问数据对象,并将该元数据与其对应的数据对象一起存储。因此,在各种实施方案中,可根据需要在不会显著増加处理开销的情况下将一个或多个附加存储设备102添加到存储系统100,这可向存储系统100提供可扩展性。
数据对象可具有能够存储在存储设备102中的任何大小。存储在存储设备102中的数据对象可包括相同的预定大小、不同的大小,或前述的组合。在一个示例中,数据对象可以具有约两个或更多个太字节(2TB)数据的大小,但是也可以应用大于或小于2TB数据的其他大小。数据对象具有的大小(包括数据定量)可超过缓冲区大小,这可反映高速缓存存储器设备106和/或缓冲存储器108中的可用存储器/存储空间的量(例如,数据对象大小>缓冲区大小),在这种情况下数据对象被认为是LOB。LOB可存储在索引节点中。
索引节点具有存储数据对象和与数据对象相对应的一个或多个数据块的数据结构。数据块是数据对象的组成部分或分区。存储LOB的索引节点在本文中可被称为不相容索引节点。当在存储设备102中存储LOB或从存储设备102检索LOB时,每个不相容索引节点中的LOB可被划分(或分割)为两个或更多个数据块。例如,可将特定的不相容索引节点的一个或多个数据块存储在存储设备102a中,并且可将同一不相容索引节点的一个或多个数据块存储在存储设备102b中,以及存储设备102a、102b、…102n中的数据块分布的其他示例。
可将数据对象被划分为任何所需数量的数据块。在一些实施方案中,数据对象可包括相同数量(或定量)的数据块,而在其他实施方案中,两个或更多个数据对象可包括不同定量的数据块。在一个示例中,数据对象可包括至多约一万(10,000)个数据块(例如,在1个数据块到10,000个数据块的范围内的数量/定量的数据块),以及其他示例性范围和/或定量的数据块。
数据块可具有适用于存储设备102中的长期或非易失性存储和高速缓存存储器设备106中的存储的任何大小,这将在下文中进一步讨论。在一些实施方案中,两个或更多个数据块具有相同或基本上相同的大小。例如,两个或更多个数据块可包括相同定量的字节或基本上相同定量的字节(例如,在彼此的90%或更多内)。在另外的实施方案中,两个或更多个数据块可具有不同的大小(例如,包括不同定量的数据或不同量的数据)。在一些实施方案中,数据对象中的第一数据块和最后一个数据块可具有与数据对象中的其他数据块不同的大小,该其他数据块还可包括相对于彼此相同的大小或不同的大小。
在另外的示例中,每个数据块可包括约两百兆字节(200MB)的数据(例如,约200MB±0%-10%的大小),以及可包括大于或小于约200MB的数据的其他数据块示例;并且每个数据对象可以包括约2TB的数据(例如,为约2TB的数据对象±0%-10%),所述数据被划分为10,000个数据块,每个数据块包括约200MB的数据。此外,第一数据块和最后一个数据块(例如,数据块00001和10000)可以包括与其他数据块不同的大小(例如,其他9,998个数据块可以包括约200MB的数据,而数据块00001和10000可包括小于或大于约200MB的数据块)。
数据对象的索引节点可被分配唯一对象标识符,该唯一对象标识符可包括字母数字字符和/或数码的任何定量和/或组合。每个唯一对象标识符可为随机分配的,或者可以预定的方式或顺序分配。在一些实施方案中,数据对象可包括具有二十五(25)个字母数字数码的唯一对象标识符(例如,数据对象ID),以及可以大于或小于二十五(25)个字母数字数码的其他示例性定量的字母数字数码。包括二十五(25)个字母数字数码的数据对象ID的一个特定示例可为:1234567890123456789012345(即,在该示例中,二十个五(25)个数字数码),或字母字符和/或数字字符(或数字)的其他示例性组合。
包括的数据定量或数据量(例如,数据对象大小)小于或等于高速缓存存储设备106和/或缓冲存储器108中的缓冲区大小或存储器/存储空间量(例如,数据对象大小≤缓冲区大小)的特定数据对象被称为相容数据对象。可在被称为相容索引节点的索引节点中提供相容数据对象。相容索引节点可被分配唯一对象标识符和数据对象中的数据的表示(例如,元数据)。相容索引节点的示例性唯一对象标识符(例如,数据对象ID)可以为:2345678901234567890123456-<元数据>,其中在该示例中包括<元数据>是实际相容索引节点的数据的实际元数据的符号表示。
数据块可以包括唯一数据块标识符,该唯一数据块标识符可以包括字母数字字符/数码的任何定量和/或组合。每个唯一数据块标识符可为随机分配的,或者可以预定的方式或顺序分配。在一些实施方案中,唯一数据块标识符(例如,数据块ID)可以包括标识对应数据对象(例如,在以上示例中为1234567890123456789012345)的部分,标识特定数据块(例如,00001到10000)的部分(例如,一组字母-数字字符/数码),以及表示/描述数据块中的数据的元数据部分(例如,由<元数据>表示),该唯一数据块标识符可以概括为:<数据对象ID>-<数据块ID>-<元数据>。因此,特定数据对象的每个数据块将具有相同的前缀(即,数据对象ID)和不同的后缀(即,数据块ID和元数据)。三个连续数据块的示例可能具有以下数据块ID:
1234567890123456789012345-00001-<元数据>;
1234567890123456789012345-00002-<元数据>;和
1234567890123456789012345-00003-<元数据>,
其中在这些示例中,每个数据块中的数据的元数据由数据块ID之后的<元数据>表示。因此,存储设备102a、102b、…102n可以将相容数据对象作为整体和/或划分为多个数据块的LOB进行存储。
如图所示,存储控制器104可包括一个或多个高速缓存存储器设备106以及其他部件,该一个或多个高速缓存存储器设备106可包括缓冲存储器108,以及其他部件。每个高速缓存存储器设备106可以单独地称为,以各组形式称为,或统称为高速缓存存储器设备106。高速缓存存储器设备106可以是已知或将来开发的并且能够存储一个或多个数据对象和/或数据块以便当在存储系统100处接收到I/O请求(例如,写入请求、读取请求和/或读写请求等)时进行检索的任何类型的硬件和/或软件存储器设备。
高速缓存存储器设备106可以用写通确认或回写确认来响应于写入请求。对于写通确认配置,高速缓存存储器设备106可以将数据对象或数据块写入缓冲存储器108,将数据对象或数据块写入存储设备102a、存储设备102b、…存储设备102n中的一者或多者中,并且在数据对象或数据块驻留在存储设备102上之后确认写入请求。
对于回写确认配置,当数据对象或数据块被存储(例如,缓冲,保持等)在缓冲存储器108中时,高速缓存存储器设备106可以确认写入请求。当长期存储设备具有用于执行I/O操作(例如,读取操作、写入操作,和/或读写操作等)的带宽时,回写确认配置可以允许高速缓存存储器设备106快速地缓冲数据对象和/或数据块,然后将数据对象和/或数据块写入相对较慢的长期存储设备(例如,存储设备102a、102b、…102n中的一个或多个存储设备)。
高速缓存存储器设备106可以通过将一个或多个数据对象和/或一个或多个数据块提供到其缓冲存储器108以进行存储来执行读取请求。例如,高速缓存存储器设备106可以被配置为存储(保持、缓冲、容纳等)先前已经写入和/或读取的数据对象和/或数据块。在一些情况下,这可以执行,而不管存储控制器104可能已经执行的任何预提取活动(例如,预读取操作,如本文其他地方所讨论的)。
在各种实施方案中,高速缓存存储器设备106可以根据最近最少使用(LRU)技术将数据对象和/或数据块存储在其缓冲存储器108中。示例性LRU技术从缓冲存储器108中移除/删除较旧的数据对象和/或数据块以空出缓冲存储器108中的存储/缓冲空间,并用新访问的数据对象和/或数据块填充所空出的存储空间。换句话说,存储控制器104可以在访问数据对象和/或数据块以填充高速缓存存储器设备106的缓冲存储器108中的可用存储空间时缓冲每个数据对象或数据对象的每个数据块(例如,数据块序列)。其他技术和变型也是可能的和可以设想到的。
高速缓存存储器设备106可预料(例如,来自客户端50中的一个或多个客户端的)一个或多个将来读取请求,并在接收到预料的读取请求之前将可对应于读取请求的一个或多个数据对象和/或数据块存储在缓冲存储器108中,这可被称为预读取功能。在一些实施方案中,高速缓存存储器设备106可尝试基于一个或多个先前接收的I/O请求来预测一组特定的数据对象或一组特定的数据块。例如,高速缓存存储器设备106可预测下一个I/O请求将是读取包括数据块ID 1234567890123456789012345-00004-<>的数据块的读取请求,因为先前的三个I/O请求是读取包括连续的数据块ID1234567890123456789012345-00001-<>、1234567890123456789012345-00002-<>和1234567890123456789012345-00003-<>的数据块的读取请求。
存储系统可执行的效率和程度可随其高速缓存存储器设备中的内存量(例如,缓冲区大小)而变。也就是说,较大的高速缓存存储器设备可包括大缓冲存储器,该大缓冲存储器可缓冲更多的数据对象和/或数据块,这通常导致更好的性能(例如,如以每秒I/O操作(IOPS)、吞吐量等测量的)。本文所公开的存储技术有利地解决了I/O请求对应于LOB的情况、高速缓存存储器设备已满或基本上已满(例如,存储的数据量高于数据的预先确定阈值量)的情况,和/或高速缓存存储器设备未存储所需数据(例如,一个或多个数据对象和/或一个或多个数据块)的情况。
在各种实施方案中,存储控制器104可耦接在客户端设备25与高速缓存存储器设备106之间。此外,存储控制器104可包括可确定相关联的高速缓存存储器设备(例如,高速缓存存储器设备106和/或一个或多个缓冲存储器108)的大小(例如,缓冲区大小)并经由网络(例如,网络75)从一个或多个客户端设备(例如,客户端设备25)接收I/O请求(例如,写入请求、读取请求,和读写请求)的硬件或硬件/软件组合。在一些实施方案中,存储控制器104可在接收到将数据对象写入长期存储装置(例如,存储设备102a、102b、…102n)中的I/O请求(例如,写入请求)时确定数据对象的大小(例如,数据对象大小),并将该数据对象大小与高速缓存存储器设备106中的缓冲存储器108的缓冲区大小进行比较。
存储控制器104可以为相容数据对象和不相容数据对象(LOB)分配数据对象标识符。存储控制器104可以将相容数据对象作为整体写入高速缓存存储器设备106中,并且可以通过将LOB划分为数据块或分区来写入LOB,如本文其他地方所讨论的。例如,存储控制器104可以将相容数据对象2345678901234567890123456-<>分配为其数据对象ID,可以不分配数据块ID,并且可以在后缀中包括元数据。
在各种实施方案中,存储控制器104可以基于分配给数据对象的唯一对象标识符来以目录结构组织数据对象。目录结构可以包括适用于定位数据对象的任何数量的层级或结构。在一个示例中,可以基于唯一对象标识符来以三级目录组织数据对象,以及以目录结构实现较少数量的层级或较多数量的层级的其他示例。例如,第一组三个数字(例如,[123])、第二组三个数字(例如,[456])和第三组三个数字(例如,[789])可以分别定义目录的第一层级、第二层级和第三层级,其中剩余数字(例如,十六(16)个数字(例如,0123456789012345))提供对该目录中特定数据对象的标识。因此,该特定实例的数据对象ID可以是:[123][456][789]0123456789012345。因此,针对该特定数据对象创建的每个数据块可以位于定址为:/mnt/ssd/123/456/789/的目录中。
给定划分/分割数据对象中的数据块可以包括唯一对象标识符,诸如数据块ID,该唯一对象标识符可以包括任何定量和/或字母数字和/或其他类型的符号的组合,并且还包括元数据,如上面所讨论的。例如,可以向特定数据对象中的第五数据块分配00005-<>作为其数据块ID,其中00005为其数据块ID(例如,00001-00004已经在使用或分配中)并且元数据在后缀中,该元数据在此示例的数据对象ID中由<>表示。因此,对于分配了数据对象ID1234567890123456789012345的数据对象,此特定数据块的数据块ID将为1234567890123456789012345-00005-<元数据>,其中实际元数据将替换此示例中的符号元数据。
在各种实施方案中,存储控制器104可以将从客户端设备(例如,客户端设备25)接收的数据对象的每个数据块写入高速缓存存储器设备106的缓冲存储器108中。在一些实施方案中,存储控制器104可以继续将数据块写入缓冲存储器108中,直到满足高速缓存存储器设备106的存储阈值。例如,存储阈值可以反映缓冲存储器108的一个方面已满,这可意味着数据块已被写入缓冲存储器108中直到已满足缓冲存储器108的存储容量,缓冲存储器108中的存储器空间的预定阈值(例如,百分之八十(80%),以及可以大于或小于80%的其他示例性阈值)被利用,针对存储该类型的数据对象预分配的存储容量已满足,等等,以及其他示例。
在存储控制器104的各种实施方案中可以包括LRU技术,以减少缓冲存储器108中的存储约束。例如,存储控制器104可以开始将存储在高速缓存存储器设备106(例如,其缓冲存储器108)中的数据块写入存储设备102中的一个存储设备中达最长量的时间(例如,LRU或访问时间),以释放缓冲存储器108中的存储器空间(例如,使该存储器空间可用),使得可将数据对象中的剩余数据块写入高速缓存存储器设备106中。
在各种实施方案中,当经由LRU技术使数据块相应的缓冲存储器108中的存储器空间可用时,存储控制器104可将数据块写入或继续写入高速缓存存储器设备106中。在各种实施方案中,当存储器空间变得可用时将数据块(例如,LRU数据块)写入存储设备102中的一个或多个存储设备中以释放存储器空间,可以被称为对每个数据块进行推送或推送数据块(或者,不相容的索引节点)通过高速缓存存储器设备106到达长期存储装置(例如,存储设备102a、102b、…102n中的一个或多个存储设备)中。例如,存储控制器104可以将不相容索引节点中的数据块推送通过高速缓存存储器设备106到达长期存储装置中,直到将整个数据对象(即,各个和每个数据块)写入(例如,缓冲/存储在)存储系统100(例如,高速缓存存储器设备106(例如,缓冲存储器108)和/或存储设备102中的一个或多个存储设备)中。可以由存储控制器104周期性地(例如,以预定间隔)、基本上连续地和/或连续地执行推送操作,直到不相容索引节点中没有剩余数据块要写入存储系统100中为止。
以这种方式,在一些情况下,存储控制器104可以通过以下方式来将数据对象(例如,不相容索引节点)写入存储系统100中:推送较小量的数据对象(例如,以两个或更多个数据块的形式)通过高速缓存存储器设备106(例如,缓冲存储器108)到达长期存储装置(例如,存储设备102中的一个或多个存储设备),而不是在单个实例处将整个数据对象写入存储系统100中。
将数据对象中的数据块写入(或推送)通过高速缓存存储器设备106到达存储设备102中的一个或多个存储设备比其他方法(诸如在单一时刻将整个数据对象写入存储缓冲区中的方法)更有效。例如,将数据块推送到长期存储器中有利地比在单个操作中写入整个LOB更快,使用更少的开销,需要更少的带宽等,特别是对于大小超过可用缓冲区空间的不相容的索引节点,这是因为以一系列写入来写入较小的数据块可以允许缓冲存储器108随时间推移具有足够的存储空间来容纳每个单独的数据块。换句话说,推送LOB的数据块可以被认为是高速缓存存储器设备106的一些写入操作的附加时间变量,该附加时间变量可以允许高速缓存存储器设备106更有效和/或可靠地写入和/或缓冲LOB。
在各种实施方案中,存储控制器104可以进行或执行将数据对象从一个或多个存储设备102读取到高速缓存存储器设备106(例如,缓冲存储器108)中的I/O请求。在一些实施方案中,当对不相容索引节点内的数据进行读取请求时,可以将整个数据对象(例如,相容索引节点)读取到高速缓存存储器设备106(例如,缓冲存储器108)中。在一些实施方案中,当对相容索引节点或不相容索引节点的数据进行读取请求时,可以将包括所需数据的数据对象(例如,相容索引节点和/或不相容索引节点)的子集(例如,一个或多个数据块、一个或多个部分、一个或多个分区,等等)从存储设备102的一个或多个存储设备读取到高速缓存存储器设备106中。在各种实施方案中,存储控制器104可识别存储在存储设备102的一个或多个存储设备中的包括读取请求中所需的数据的数据块,并将识别的数据块从一个或多个存储设备102读取到高速缓存存储器设备106中。
类似于上文讨论的各种实施方案,当在服务读取请求时缓冲存储器108是满的时,存储控制器104可根据需要实现本文所述的LRU技术以释放高速缓存存储器设备106中的存储器空间,缓冲存储器108是满的可意味着已满足缓冲存储器108的存储容量,缓冲存储器108中的存储器空间的预定阈值正在被利用(例如,百分之八十(80%),以及可能大于或小于80%的其他示例性阈值),已满足针对存储一种类型的数据对象预先分配的存储容量,等等。存储控制器104可以识别出缓冲存储器108已满,并响应于这种识别,而开始根据LRU技术从缓冲存储器108移除/删除一个或多个数据对象和/或一个或多个数据块。
在一些实施方案中,存储控制器104可以确定根据LRU技术从高速缓存存储器设备106的缓冲存储器108中移除的数据对象和/或数据块是否被写入/存储在长期存储装置(例如,存储设备102a、102b、…102n中的一个或多个存储设备)中。在将数据对象和/或数据块从缓冲存储器108中移除/删除之前,存储控制器104可以将要从缓冲存储器108中移除的数据对象和/或数据块写入存储设备102中,这可以进一步包括与下面的讨论一致地在存储设备102中的另外一个或多个存储设备中镜像/复制数据对象和/或数据块。
在一些实施方案中,存储控制器104可以以一个或多个数据块的形式利用较小量的数据,以将存储在存储设备102中的一个或多个存储设备中的数据对象中的数据的子集(例如,所需数据)读取或拉取到缓冲存储器108中,而不是将整个数据对象从存储设备102读取到缓冲存储器108中。从存储设备102a、102b、…102n中的一个或多个存储设备读取(或拉取)数据对象的子集(例如,一个或多个数据块)到缓冲存储器108中可以有利地比将整个数据对象从存储设备102a、102b、…102n读取到缓冲存储器108中更有效,特别是当所需数据位于不相容索引节点中时,因为将数据对象的子集(例如,一个或多个数据块形式的较小量/定量的数据)读取到缓冲存储器108中比背景技术中所述的尝试将数据对象中的所有数据读取到高速缓存的存储缓冲区中的其他存储解决方案或服务更快,使用更少的缓冲存储器开销,和/或需要更少的带宽来传递/传送数据,以及其他优点。
在各种实施方案中,存储控制器104包括用于进行或执行经由高速缓存存储器设备106修改来自存储设备102中的一个或多个存储设备的数据对象(例如,相容索引节点和/或不相容索引节点)的I/O请求的功能。在一些实施方案中,当对不相容索引节点内的数据进行读写请求时,可以将整个数据对象读取到高速缓存存储器设备106中并进行修改。
存储控制器104还可以将高速缓存存储器设备106中的经修改/重写的数据对象重写到存储设备102中的一个或多个存储设备中,所述存储设备可以用经修改的数据对象替换存储设备102中的原始数据对象。然后,可以与下面的讨论一致地在存储设备102的另外一个或多个存储设备中镜像/复制经修改/重写的数据对象。
在其他实施方案中,当对相容索引节点或不相容索引节点的数据进行读写请求时,可以将包括需要修改的数据的数据对象子集从存储设备102的一个或多个存储设备读取到高速缓存存储器设备106中,并进行修改/重写。在各种实施方案中,存储控制器104可以识别存储在存储设备102中的数据块,包括在修改请求(例如,读写请求)中需要修改的数据。可以读取所识别的数据块(例如,从存储设备102读取到高速缓存存储器设备106),并随后进行修改/重写。
与上述各种实施方案类似,当缓冲存储器108为满的时,存储控制器104可根据需要来实现LRU技术,以释放高速缓存存储器设备106中的存储器空间。例如,存储控制器104可以识别出缓冲存储器108为满的,可以根据LRU技术开始从缓冲存储器108中移除一个或多个数据对象和/或一个或多个数据块,如本文其他地方所讨论的。
在一些实施方案中,存储控制器104可以确定要根据LRU技术从高速缓存存储器设备106移除的数据对象和/或数据块是否被写入/存储在存储设备102中。例如,在将数据对象和/或数据块从缓冲存储器108中移除之前,存储控制器104可以将要从缓冲存储器108中移除的数据对象和/或数据块写入存储设备102中,这可以进一步包括在存储设备102中镜像/复制数据对象和/或数据块,如本文其他地方所讨论的。
在一些实施方案中,在高速缓存存储器设备106中对数据对象和/或数据块进行修改/重写之后,存储控制器104可以进一步将修改/重写的数据对象和/或数据块写入(或重写)到存储设备102中。在各种实施方案中,存储控制器104可以同步或异步地将修改/重写的数据对象和/或数据块写入/重写到存储设备102中,如本文其他地方所讨论的。
以这种方式,存储控制器104可以利用一个或多个数据块来读写(拉取-推送)存储在存储设备102中的数据对象中的需要修改的数据的子集,而不是读取整个数据对象,然后写入/重写数据对象中的数据的子集或小部分的其他存储解决方案或服务中的技术。因此,存储控制器104可以有利地比背景技术中所讨论的其他存储解决方案或服务更快,使用更少的缓冲存储器开销,需要更少的带宽,等等,以及其他优点。
存储控制器104可以包括接口,该接口用于接收执行用于管理存储系统(例如,存储系统100)中的存储操作的过程或方法的请求。在各种实施方案中,利用高速缓存存储器设备106中的一个或多个高速缓存存储器设备的应用程序接口(API)来管理存储操作,该API在本文中可被称为高速缓存API。在一些实施方案中,存储控制器104的功能可以提供多个线程(例如,多个线程,两个或更多个线程等)或者被配置为执行上述I/O操作(例如,写入请求、读取请求,和/或读写请求)的线程池。因此,在一些实施方案中,存储控制器104可以被称为多线程存储控制器。在一些实施方案中,存储控制器104可以定义每个线程的配置(例如,任务和/或操作),并且可以在高速缓存存储器设备106实例化时启动多个线程。
存储控制器104还包括针对在高速缓存存储器设备106处接收的(例如,从客户端(例如,客户端设备50)接收的)每个数据对象,来创建高速缓存条目对象(例如,CacheEntry对象)的功能。叙述CacheEntry*Create(…)是可以由存储控制器104用来创建CacheEntry对象的示例性代码。该示例的括号中的“…”可以由实际高速缓存条目对象中的数据对象的表示(例如,数据对象ID)替代。例如,可以使用叙述CacheEntry*Create(数据对象ID1234567890123456789012345)或类似的编码逻辑来创建具有数据对象ID1234567890123456789012345的数据对象的高速缓存条目对象,所述叙述CacheEntry*Create或类似的编码逻辑将高速缓存条目对象分配给以不同计算语言实现的数据对象。因此,向每个数据对象分配至少高速缓存条目ID和数据对象ID(例如,分配至少两个ID)。
存储控制器104可以使用循环(round-robin)技术以及其他示例性分配技术或方法将特定线程分配给特定高速缓存条目对象。此外,存储控制器104可以分配不同的线程来管理每个相应的高速缓存条目对象,使得线程与高速缓存条目对象的比率为1:1。
线程用于管理针对其分配的高速缓存条目对象的I/O操作。也就是说,线程可以接收I/O请求,并且响应于所述I/O请求而在针对其分配的高速缓存条目对象的I/O请求中执行I/O操作。线程可以在其分配的高速缓存条目对象处接收写入请求、读取请求和读写请求,并且响应于这些请求,分别对与其高速缓存条目对象一致的数据对象执行与相应的写入请求、读取请求和读写请求一致的写入操作、读取操作和读写操作。写入请求、读取请求和读写请求(例如,I/O请求)的示例可分别为如下所示:
写入(CacheEntry*,(…));
读取(CacheEntry*,(…));和
读写(CacheEntry*,(…)),
其中这些示例性I/O操作中的“…”表示实际高速缓存条目对象(数据对象)的ID。
线程可以发送已经执行或完成I/O操作的指示或确认。已经执行或完成I/O操作的指示或确认的非限制性示例是:分别针对写入操作、读取操作和读写操作的写入完成确认、读取完成确认和读写完成操作。
线程可以管理与其分配的高速缓存条目对象(或数据对象)相对应或相关联的数据块(如果有的话)。也就是说,管理特定高速缓存条目对象(或数据对象)的同一线程还管理与特定数据对象相关联或对应的任何数据块。例如,分配用于管理划分成10,000个数据块(例如,数据块00001-10000)并且包括数据对象ID 1234567890123456789012345的数据对象的高速缓存条目对象的线程还管理与该数据对象相对应的数据块(例如,已分配数据块ID 1234567890123456789012345-00001-<元数据>至1234567890123456789012345-10000-<元数据>的数据块)。以这种方式,存储控制器104和/或多个线程能够避免或至少减少当线程执行其各种相应操作或任务时可能发生的一个或多个并发惩罚。
在一些实施方案中,存储控制器104可以利用指向高速缓存条目对象的指针来向分配给所述高速缓存条目对象的线程投递I/O操作。指针可以用于将各个写入请求、读取请求和读写请求投递到分配给特定高速缓存条目对象的线程,以便线程能够响应于此而执行与上面的各种讨论一致的各个写入操作、读取操作或读写操作。
在各种实施方案中,存储控制器104可以被配置用于冗余,以提供数据对象和/或数据块可以存储在高速缓存存储器设备106中的两个或更多个位置中。可以使用已知或将来开发的任何合适的冗余和/或复制技术/过程,来跨高速缓存存储器设备106中的一个或多个高速缓存存储器设备同步或异步地拷贝数据对象和/或数据块。此类复写技术的非限制性示例可以包括或被称为:数据重复、拷贝数据、数据复制、备份数据和数据镜像,以及其他示例性复制技术。数据对象和/或数据块可在同一高速缓存存储器设备106中和/或跨两个或更多个高速缓存存储器设备106复制。
存储控制器104还可以被配置用于跨存储设备102a、102b、…102n中的一个或多个存储设备复制数据对象和/或数据块。如上所述,可以使用已知或将来开发的任何合适技术将数据对象和/或数据块同步或异步地拷贝到存储设备102中的一个或多个存储设备中。数据对象和/或数据块可以在同一存储设备102中和/或跨两个或更多个存储设备102复制。
图2是示例性存储网络20的框图,该示例性存储网络20包括一个或多个客户端设备25和企业存储服务50以及其他部件,该企业存储服务50能够经由有线和/或无线网络75耦接到存储系统200并与其通信。每个客户端设备25可以是能够利用网络75访问存储系统200的任何计算硬件和/或软件(例如,胖客户端、瘦客户端,或它们的混合)。作为其相应操作的一部分,客户端设备25可以将I/O请求发送到存储系统200。例如,客户端设备25可以向存储系统200发送读取、写入、存储、传送、传播和/或传输指令、数据、计算机程序、软件、代码、例程等的I/O请求。客户端设备25和存储系统200可包括客户端-服务器模型的至少一部分。通常,存储系统200可以由客户端设备25访问,和/或与存储系统200的通信可以由客户端设备25利用一种或多种进程间联网技术通过网络套接字来发起。
企业存储服务50可以包括已知或将来开发的任何合适的存储服务和/或存储网络。示例性企业存储服务50是由 Web Services提供的简单存储服务(S3),以及企业存储服务的其他示例。在各种实施方案中,企业存储服务50可以提供存储数据对象的存储系统,该存储系统可以被称为对象存储系统。在一些实施方案中,企业存储服务50可以将数据对象存储在容器或桶的扁平组织(例如,非分层)中,并且可以使用唯一ID或密钥来检索数据对象,但是其他变型也是可能和可预期的。在各种实施方案中,企业存储服务50可包括任意数量的存储设备。在一些实施方案中,存储设备可以使用元数据来存储和访问数据对象,并与上述存储设备102a、102b、…102n类似地将元数据与其对应的数据对象一起存储。因此,企业存储服务50可以以与上述存储设备102类似的方式作用和/或操作,并且可以适用于网络20和/或存储系统200。
如图所示,存储系统200可以包括存储控制器204以及其他部件,该存储控制器204包括一个或多个高速缓存存储器设备206,该存储控制器204和高速缓存存储器设备206分别类似于存储系统100中的存储控制器104和高速缓存存储器设备106,但是其他合适的配置也是适用和可预期的。存储控制器204和高速缓存存储器设备206能够经由网络75耦接到客户端设备25和企业存储服务50并与其通信。在各种实施方案中,存储控制器204可耦接在客户端设备25与高速缓存存储器设备206之间。
在各种实施方案中,网络75可以包括已知或将来开发的任何类型的计算网络,该计算网络可以允许客户端设备25、企业存储服务50和存储系统200彼此通信和/或共享资源。网络的非限制性示例包括但不限于云网络(IAN)、SAN(例如,存储区域网络、小区域网络、服务器区域网络和/或系统区域网络)、广域网(WAN)、局域网(LAN)、无线局域网(WLAN)、城域网(MAN)、企业专网(EPN)、虚拟专用网(VPN),和/或个人区域网络(PAN),以及为了共享资源的目的而连接在一起的计算网络和/或计算设备组的其他示例。
网络20的各种实施方案可以包括允许网络20以与上面参考图1A和图1B讨论的网络10类似的方式操作的硬件和/或软件。另外,在网络20中,第三方存储服务(例如,企业存储服务50)可以提供数据对象和/或数据块的长期存储操作和数据复制。另外的实施方式可以包括网络20和网络10的组合,和/或它们的各方面,诸如包括一个或多个第三方存储服务和一个或多个本地或远程存储设备的网络,所述第三方存储服务和本地或远程存储设备各自提供数据对象和/或数据块的长期存储操作和数据复制。
在一些实施方案中,在网络10和/或网络20中,客户端设备25中的一个或多个客户端设备可能不知道其是否是网络10或网络20的一部分。也就是说,存储系统100和/或200的操作对于客户端设备25中的一个或多个客户端设备来说是未知的或不被看到的(未察觉的),但是在另外的实施方式中,客户端设备25中的一些或全部可以知道它们在网络10和/或网络20中的成员资格。
图3A至图3C是根据各种实施方案的用于管理存储的存储控制器(例如,存储控制器104和/或204)的示例操作的流程图。至少在所示实施方案中,操作301(例如,写入操作)可以在时间1(T1)处开始,其中(例如,由存储控制器104或204(例如,经由高速缓存API))创建在存储系统(例如,存储系统100或200)处接收(以及划分/分割)的数据对象的数据对象ID和/或对应的数据块ID,该数据对象ID和/或数据块ID可以以与上面的各种讨论一致的方式分配。可以在时间2(T2)处根据上面的各种讨论(例如,由存储控制器104或204(例如,经由高速缓存API))来创建与数据对象和/或数据块对应的新高速缓存条目对象(例如,CacheEntry)。
在时间3(T3)处,可以(例如,由存储控制器104或204(例如,经由高速缓存API))将线程分配给高速缓存条目对象。将线程分配给高速缓存条目对象可以是分配技术(例如,循环分配技术,以及其他示例性分配技术)的结果。线程用于管理针对高速缓存条目对象的I/O操作。也就是说,线程可以接收I/O请求(例如,写入请求、读取请求,以及读写请求),并且可响应于I/O请求而在I/O请求中执行I/O操作(例如,写入操作、读取操作,以及读写操作)。
在时间4(T4)处,可以(例如,由存储控制器104或204(例如,经由高速缓存API))接收对特定高速缓存条目对象(数据对象)的I/O请求(例如,在该示例中为写入请求)。可以将I/O请求(例如,在该示例中为写入请求)指向(例如,经由指针)到分配给特定高速缓存条目对象(数据对象)的线程,并且该分配的线程可以在时间5(T5)处对该高速缓存条目对象执行I/O操作(例如,在该示例中为写入操作)。
在完成I/O操作(例如,在该示例中为写入操作)之后,线程可以在时间6(T6)处向存储控制器(例如,存储控制器104或204(例如,经由高速缓存API))进行对I/O请求(例如,在该示例中为写入请求)的完成确认(例如,在该示例中为写入完成确认)。
此外,可以针对在存储控制器(例如,存储控制器104或204)处接收到的I/O请求,对各个不同(例如,新的)高速缓存条目对象(例如,不同的数据对象和/或不同的对应数据块)重复时间1到时间6处的操作。可以针对在存储控制器(例如,存储控制器104或204)处接收到的各个I/O请求,对不同高速缓存条目对象(例如,不同的数据对象和/或不同的对应数据块)重复时间4到时间6处的操作。
在时间4(T4)处,可以(例如,由存储控制器104或204(例如,经由高速缓存API))接收对特定高速缓存条目对象(数据对象)的I/O请求(例如,在该示例中为写入请求)。可以将I/O请求(例如,在该示例中为写入请求)指向(例如,经由指针)到分配给特定高速缓存条目对象(数据对象)的线程,并且该分配的线程可以在时间5(T5)处对该高速缓存条目对象执行I/O操作(例如,在该示例中为写入操作)。在完成I/O操作(例如,在该示例中为写入操作)之后,线程可以在时间6(T6)处向存储控制器(例如,存储控制器104或204(例如,经由高速缓存API))进行对I/O请求(例如,在该示例中为写入请求)的完成确认(例如,在该示例中为写入完成确认)。
此外,可以针对在存储控制器(例如,存储控制器104或204)处接收到的I/O请求,对各个不同(例如,新的)高速缓存条目对象(例如,不同的数据对象和/或不同的对应数据块)重复时间1到6处的操作。此外,可以针对在存储控制器(例如,存储控制器104或204)处接收到的各个I/O请求,对不同高速缓存条目对象(例如,不同的数据对象和/或不同的对应数据块)重复时间4到时间6处的操作。
在图3B中,操作302(例如,读取操作)可以在时间1(T1)处开始,其中接收(例如,由存储控制器104或204(例如,经由高速缓存API))对特定高速缓存条目对象(数据对象)的I/O请求(例如,在该示例中为读取请求)。可以将I/O请求(例如,在该示例中为读取请求)指向(例如,经由指针)到分配给特定高速缓存条目对象(数据对象)的线程,并且该分配的线程可以在时间2(T2)处对该高速缓存条目对象执行I/O操作(例如,在该示例中为读取操作)。
在完成I/O操作(例如,在该示例中为读取操作)之后,线程可以在时间3(T3)处向存储控制器(例如,存储控制器104或204(例如,经由高速缓存API))进行对I/O请求(例如,在该示例中为读取请求)的完成确认(例如,在该示例中为读取完成确认)。可以针对在时间3之后在存储控制器(例如,存储控制器104或204)处接收到的各个读取请求,来重复时间1到3处的操作。
在图3C中,操作303(例如,读写操作)可以在时间1(T1)处开始,其中接收(例如,由存储控制器104或204(例如,经由高速缓存API))修改特定高速缓存条目对象(数据对象)的数据的I/O请求(例如,在该示例中为读写请求)。可以将I/O请求(例如,在该示例中为读写请求)指向(例如,经由指针)到分配给特定高速缓存条目对象(数据对象)的线程,并且该分配的线程可以在时间2(T2)处对该高速缓存条目对象执行I/O操作(例如,在该示例中为读写操作)。
在完成I/O操作(例如,在该示例中为读写操作)之后,线程可以在时间3(T3)处向存储控制器(例如,存储控制器104或204(例如,经由高速缓存API))进行对I/O请求(例如,在该示例中为读写请求)的完成确认(例如,在该示例中为读写完成确认)。可以针对在时间3之后在存储控制器(例如,存储控制器104或204)处接收到的各个读写请求,来重复时间1到3处的操作。
在图3A至图3C的示例中,在完成各个相应示例中讨论的I/O操作(例如,写入操作、读取操作、读写操作)时,可以由线程(例如,线程1、2到n)与图3A至图3C一致地执行后续I/O请求。也就是说,在线程确认(例如,写入完成确认、读取完成确认,或读写完成确认)之后,下一个I/O请求(其可以为相同类型的I/O请求或不同类型的I/O请求)可以由存储控制器接收并由线程1、2到n中的一个线程服务。
参考图4,示出了表示存储系统(例如,存储系统100或200)的示例性存储操作的示意图400。如图所示,可以在时间1(T1)处向新接收的数据对象提供索引节点(例如,不相容索引节点或相容索引节点),该索引节点可以(与上面讨论的各种实施方案一致地)分配有数据对象ID。时间1还可以包括将每个数据对象划分为多个数据块(例如,在1个数据块到10,000个数据块的范围内的一定量的数据块,以及其他示例性范围和/或定量),每个数据块被(与上面讨论的各种实施方案一致地)分配相应的数据块ID。可以将索引节点组织成包括分层次序的文件树(例如,由存储控制器104/204与上面讨论的各种实施方案一致地实现多层或多层级系统(例如,三个层级))。
在时间2(T2)处,可以针对高速缓存存储器设备106/206中的每个索引节点(与上面讨论的各种实施方案一致地)创建高速缓存条目对象,使得每个索引节点与对应的高速缓存条目对象相关联。换句话说,每个高速缓存条目对象可以对应于不同的数据对象及其对应的数据块(如果有的话)。
可以在时间3(T3)处将每个数据块写入高速缓存存储器设备106/206中的缓冲存储器108/208中,并随后在时间4(T4)处写入(例如,存储)在一个或多个存储设备和/或企业存储服务中。在一些实施方案中,可以将写入数据块连续地传输到缓冲存储器108/208中,直到缓冲存储器108/208为满的或基本上满的。在缓冲存储器108/208为满的之后,可以利用LRU技术来在缓冲存储器108/208中释放空间或腾出空间,以便可以继续将数据块写入缓冲存储器108/208中。也就是说,可以将存储在缓冲存储器108/208中达最长时间量的数据块写入长期存储装置和/或企业存储服务75中,从缓冲存储器108/208删除,以及在缓冲存储器108/208中用剩余的数据块替换。在一些情况下,如果已经将数据块写入/重写到(例如,存储在)长期存储装置(例如,存储设备102、企业存储服务50,等等)中,则LRU技术可以避免在从缓冲存储器108/208删除/移除数据块之前,将数据块写入(或重写)到长期存储装置中。以这种方式,可以将数据块推送通过存储系统(例如,高速缓存存储器设备)以进行长期存储。
可以在时间5(T5)处将数据块从长期存储装置读取到缓冲存储器108/208中。在一些实施方案中,可以将写入数据块连续地读取到缓冲存储器中,直到缓冲存储器108/208为满的。在缓冲存储器108/208为满的之后,可以利用LRU技术来在缓冲存储器108/208中释放空间或腾出空间,以便可以继续将数据块读取到缓冲存储器108/208中。以这种方式,可从长期存储装置中拉取数据块。
在时间6(T6)处,可以与读写操作一致地,对在时间5处从长期存储装置读取的一个或多个数据块进行修改并随后重新写入高速缓存存储器设备106/206(例如,缓冲存储器108/208)中。可以在时间7(T7)处将重写的数据块写入(重写)到长期存储装置中。在缓冲存储器中的重写数据块变为LRU数据块并且尚未写入(重写)到长期存储装置中的情况下,可以将重写的数据块在从缓冲存储器108/208中删除/移除之前写入(重写)到长期存储装置中。
在不同时间(表示为时间!(例如,T!)),可以在不同的长期存储位置中复制或镜像长期存储装置中的数据对象和/或数据块。当数据对象和/或数据块被写入(重写)到长期存储装置中时,可以同步或异步地复制/镜像该数据对象和/或数据块。因此,T!可以表示等于或晚于时间4的任何时间,包括在时间7之后的时间。
现在参考图5A到图5G,图5A是示出实施例500的框图,该实施例500表示在LRU技术的初始位置(例如,位置512a到512d)中示出的多个数据块(例如,数据块510a到510d)。该实施方案包括四个数据块(例如,数据块510a到510d,所述数据块可以统称为数据块510),但是另外的实施方案可以包括其他定量的数据块510(例如,两个或更多个数据块)。在实施例500中,最左侧位置512a(例如,最初由数据块510a占据的位置)是最近使用的(MRU)位置,并且最右侧位置512d(例如,最初由数据块510d占据的位置)是LRU位置,其中位置512b和512c是中间位置(例如,分别为LRU+2和LRU+1)并且最初分别由数据块510b和数据块510c占据。
在各种实施方案中,每次访问数据块510中的一个数据块(例如,经受I/O操作(例如,写入操作、读取操作,或读写操作)),访问过的数据块可移动到位置512a(例如,MRU位置),并且剩余数据块可以根据需要朝向LRU位置(例如,位置512d)向右移动一个位置。图5B至图5G中的以下实施例是继续参考图5A而作出的,并且可以提供对本文所讨论的各种LRU技术的更深入的洞察和理解;然而,本文所讨论的各种LRU技术不限于图5A至图5G中的实施例。
图5B中的实施例501:访问数据块510b,这导致数据块510b从位置512b移动到位置512a,数据块510a从位置512a移动到512b,并且数据块510c和510d分别保持在位置512c和512d中。
图5C中的实施例502:访问数据块510c,这导致数据块510c从位置512c移动到位置512a,数据块510a从位置512a移动到位置512b,数据块510b从位置512b移动到位置512c,并且数据块510d保持在位置512d中。
图5D中的实施例503:访问数据块510d,这导致数据块510d从位置512d移动到位置512a,数据块510a从位置512a移动到512b,数据块510b从位置512b移动到位置512c,并且数据块510c从位置512c移动到位置512d。
图5E中的实施例504:访问数据块510a,这导致数据块510a、510b、510c和510d分别保留在位置510、512b、512c和512d中。
图5F中的实施例505:访问数据块510c,这导致数据块510c从位置512c移动到位置512a,数据块510a从位置512a移动到512b,数据块510b从位置512b移动到位置512c,并且数据块510d保持在位置512d中。随后,访问数据块510d,这导致数据块510d从位置512d移动到位置512a,数据块510c从位置512a移动到位置512b,数据块510a从位置512b移动到位置512c,并且数据块510b从位置512c移动到位置512d。
图5E中的实施例506:当访问新数据块(例如,数据块510e)时,数据块510e替换MRU位置中的数据块(在由图5的示意图500所示的实施例中为位置512a中的数据块510a),并且从缓冲存储器(例如,缓冲存储器108)中删除或移除LRU位置中的数据块(例如,在图5中为位置512d中的数据块510d)。此外,其他数据块(例如,图5中的数据块510a、510b和510c)各自向右移动一个位置,或者移动到更靠近LRU位置(图5中的位置512d)的一个位置。具体地,数据块510a从位置512a移动到512b,数据块510b从位置512b移动到位置512c,并且数据块510c从位置512c移动到位置512d。
图5F中的实施例507:随后新访问的数据块(例如,数据块510f)将导致数据块510f移动到MRU位置(例如,位置512a),删除/移除数据块510c,并且数据块510e、510a和510b分别移动到位置512b、512c和512d。图5G是图5F的继续说明性实施例,其中在数据块510f之后访问数据块510b,数据块510b从LRU位置(例如,位置512d)移动到MRU位置(例如,位置512a),数据块510f移动到位置512b,数据块510e移动到位置512c,并且数据块510a移动到LRU位置(例如,位置512d)。
现在参考图6,示出了用于将数据对象写入高速缓存存储器设备106/206的缓冲存储器108/208中的示例性方法600。如图所示,方法600可以通过由存储控制器104/204接收存储数据对象的I/O请求(例如,写入请求)来开始(框602),并且可以确定数据对象的大小(框604)。
可以将数据对象大小与缓冲存储器108/208的存储阈值和/或大小进行比较,以确定数据对象大小是否大于存储阈值和/或缓冲区大小(框606)。如果/当数据对象大小小于存储阈值和/或缓冲区大小时(例如,框606中的否),则可以确定数据对象是相容数据对象,并且可以整体写入缓冲存储器108/208中(框608)。随后可以将相容数据对象写入存储设备102和/或企业存储服务50中的一者或多者中(框620)。
如果/当数据对象大小大于缓冲区大小时(例如,框606中的是),则可以将数据对象确定为不相容数据对象,并且可以将数据对象划分(分割)为多个数据块(框610)。可以将数据对象划分为任何所需数量的数据块,并且每个数据块可以包括适合于存储在缓冲存储器108/208、存储设备102中的一个或多个存储设备和/或企业存储服务50中的任何大小,如在本文其他地方所讨论的。
方法600还可包括确定缓冲存储器108/208是否可用于存储(缓冲)数据块(框612)。如果/当缓冲存储器未满时,可以认为缓冲存储器108/208可用;否则,可认为缓冲存储器108/208不可用。
如果/当缓冲存储器108/208不可用时(例如,框612中的否),则可以将缓冲存储器108/208中缓冲的一个或多个数据对象和/或一个或多个数据块写入存储设备102和/或企业存储服务50中的一者或多者中,以释放缓冲存储器108/208中的空间(框614),并且可再次确定缓冲存储器108/208的可用性(框612)。在各种实施方案中,可通过利用LRU技术推送一个或多个数据块通过缓冲存储器108/208来空出缓冲存储器108/208中的空间,如本文其他地方所讨论的。如果/当缓冲存储器108/208可用时(例如,框612中的是),则可以将一个或多个数据块写入缓冲存储器108/208中(框616)。
方法600还可以包括确定是否/何时在数据对象中有一个或多个剩余数据块要写入缓冲存储器108/208中(框618)。如果/当有至少一个剩余数据块要写入缓冲存储器108/208中时(例如,框618中的是),则可以确定缓冲存储器108/208的可用性(框612),并且可以重复框612到618,直到不再有剩余数据块要写入缓冲存储器108/208中。
如果/当没有剩余数据块要写入缓冲存储器108/208中时(例如,框618中的否),则可以将未存储在存储设备102或企业存储服务50中的数据块写入存储设备102和/或企业存储服务50中(框620)。在一些实施方案中,可以在进行修改的短时间段之后或之内立即将任何剩余数据块写入存储设备102或企业存储服务50中,而在其他实施方案中,可以在进行修改的预定时间处或之后将任何剩余数据块写入存储设备102或企业存储服务50中。可以根据LRU技术将一些剩余数据块写入存储设备102和/或企业存储服务50中。
现在参考图7,示出了用于将存储设备102或企业存储服务50中的数据对象读取到高速缓存存储器设备106/206的缓冲存储器108/208中的示例性方法700。如图所示,方法700可以通过以下方式开始:由存储控制器104/204接收读取数据对象中的数据的I/O请求(例如,读取请求)(框702),以及确定包括数据的存储设备102a、102b、…102n和/或企业数据服务50中的一个或多个数据块(框704)。在一些实施方案中,包括需要读取的数据的数据块可以存储或定位于相同或不同的存储设备102中,如本文其他地方所讨论的。
方法700还可以包括确定要将数据块读取到的缓冲存储器108/208是否可用于存储(缓冲)数据块(框706)。如果/当缓冲存储器未满时,可以认为缓冲存储器108/208可用;否则,可认为缓冲存储器108/208不可用。
如果/当缓冲存储器108/208不可用时(例如,框706中的否),则可以从缓冲存储器108/208中删除缓冲存储器108/208中缓冲的一个或多个数据对象和/或一个或多个数据块以释放缓冲存储器108/208中的空间(框708),并且可以再次确定缓冲存储器108/208的可用性(框706)。在各种实施方案中,可以通过利用LRU技术从缓冲存储器108/208中删除一个或多个数据对象和/或数据块来空出缓冲存储器108/208中的空间,如本文其他地方所讨论的。从缓冲存储器108/208删除一个或多个数据对象和/或数据块还可以包括将未存储在存储设备102和/或企业存储服务50中或在移除之前先前未写入存储设备102和/或企业存储服务50中的任何数据对象和/或数据块写入存储设备102和/或企业存储服务50中。
如果/当缓冲存储器108/208可用时(例如,框612中的是),则可以将包括所需数据的至少一部分的一个或多个数据块读取到缓冲存储器108/208中(框710)。方法700还可以包括确定是否/何时有包括所需数据的至少一部分的一个或多个剩余数据块要读取到缓冲存储器108/208中(框712)。
如果/当存在至少一个剩余数据块要读取到缓冲存储器108/208中时(例如,框712中的是),则可以确定缓冲存储器108/208的可用性(框706),并且可以重复框706到712,直到不再有包括所需数据的剩余数据块要读取到缓冲存储器108/208中(例如,框712中的否)。方法700还可以包括等待后续I/O请求(框714),并且可以根据需要和/或按需重复框702至框714。
现在参考图8,示出了用于修改存储设备102或企业存储服务50中的数据对象的数据的示例性方法800。如图所示,方法800可以通过以下方式开始:由存储控制器104/204接收修改数据对象中的数据的I/O请求(例如,读写请求)(框802),以及确定包括所需数据的存储设备102和/或企业数据服务50中的一个或多个数据块(框804)。在一些实施方案中,包括需要修改的数据的数据块可以存储或定位于相同或不同的存储设备102中,如本文其他地方所讨论的。
方法800还可以包括确定包括所需数据的数据块要读取到的高速缓存存储器设备106/206的缓冲存储器108/208是否可用于存储(缓冲)该数据块(框806)。如果/当缓冲存储器未满时,可以认为缓冲存储器108/208可用;否则,可认为缓冲存储器108/208不可用。
如果/当缓冲存储器108/208不可用时(例如,框806中的否),则可以从缓冲存储器108/208中移除缓冲存储器108/208中缓冲的一个或多个数据对象和/或一个或多个数据块以释放缓冲存储器108/208中的空间(框808),并且可以再次确定缓冲存储器108/208的可用性(框806)。在各种实施方案中,可以通过利用LRU技术从缓冲存储器108/208中删除一个或多个数据对象和/或数据块来空出缓冲存储器108/208中的空间,如本文其他地方所讨论的。从缓冲存储器108/208删除一个或多个数据对象和/或数据块还可以包括将未存储在存储设备102和/或企业数据服务50中或在移除之前先前未写入存储设备102和/或企业数据服务50中的任何数据对象和/或数据块写入存储设备102和/或企业数据服务50中。
如果/当缓冲存储器108/208可用时(例如,框612中的是),则可以将包括需要修改的数据的至少一部分的一个或多个数据块读取到缓冲存储器108/208中(框810)。可以随后修改读取到缓冲存储器108/208中的数据块(例如,可以从数据块中删除数据和/或可以将新数据写入数据块中)(框812)。
方法800还可以包括确定是否存在包括需要修改的数据的至少一部分的一个或多个剩余数据块(框814)。如果/当存在至少一个剩余数据块要进行修改时(例如,框814中的是),则可以再次确定缓冲存储器108/208的可用性(框806),并且可以重复框806到814,直到不再有包括需要修改的数据的剩余数据块(例如,框814中的否)。
最终可以将经修改的一个或多个数据块写入(重写)到存储设备102和/或企业数据服务50中(框816)。在一些实施方案中,可以在进行修改的短时间段之后或之内立即将经修改的数据块写入存储设备102和/或企业数据服务50中,而在其他实施方案中,可以在进行修改的预定时间处或之后将经修改的数据块写入存储设备102和/或企业数据服务50中。如本文其他地方所讨论的,可以根据LRU技术将一些经修改的数据块写入存储设备102和/或企业数据服务50中。
综上所述,上面讨论的各种网络、系统和方法可以包括用于通过将数据对象划分为更小的数据块并将各个数据块连续写入缓冲存储器108/208中来增加可靠性和/或减少与写入数据对象(尤其是LOB)相关的延迟问题的硬件和/或软件。也就是说,本文所讨论的各种实施方案可以表征为在一段时间内对LOB执行多个写入操作。
此外,上面讨论的各种网络、系统和方法可以包括用于通过将一个或多个较小的数据块从存储设备102或企业数据服务50连续读取到缓冲存储器108/208中来减少与读取数据对象(尤其是LOB)中的数据相关联的延迟问题的硬件和/或软件。也就是说,本文所讨论的各种实施方案可以表征为在一段时间内对LOB执行多个读取操作。
此外,上面讨论的各种网络、系统和方法可以包括用于通过将一个或多个较小的数据块从存储设备102和/或企业数据服务50连续读取到缓冲存储器108/208中,修改数据块,以及将经修改的数据块写入/重写到存储设备102和/或企业数据服务50中,来减少与修改数据对象(尤其是LOB)中的数据相关联的延迟问题的硬件和/或软件。也就是说,本文所讨论的各种实施方案可以表征为在一段时间内对LOB执行多个读写操作。
虽然在本技术的前述详细描述中已经呈现了至少一个示例性实施方案,但是应当理解,可存在大量变型。还应当理解,一个或多个示例性实施方案是示例,并且不旨在以任何方式限制技术的范围、适用性或构型。相反,前面的详细描述将为本领域技术人员提供用于实现本技术的示例性实施方案的便利路线图,应当理解,可以在不脱离所附权利要求及其合法等同物所阐述的技术范围的情况下,对示例性实施方案中描述的元件的功能和/或布置进行各种修改。
如本领域普通技术人员将理解的,本技术的各个方面可以体现为系统、方法或计算机程序产品。因此,本技术的一些方面可采取完全为硬件的实施方案、完全为软件的实施方案(包括固件、常驻软件、微代码等)或软件和硬件方面的组合的形式,这些方面在本文中可全部统称为电路、模块、系统和/或网络。此外,本技术的各个方面可以采取体现为一个或多个计算机可读介质(包括在该一个或多个计算机可读介质上包含的计算机可读程序代码)的计算机程序产品的形式。
可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可为计算机可读信号介质或物理计算机可读存储介质。例如,物理计算机可读存储介质可为但不限于电子、磁性、光学、晶体、聚合物、电磁、红外或半导体系统、装置或设备,等等,或前述的任何合适组合。物理计算机可读存储介质的非限制性示例可包括但不限于包括一个或多个导线的电连接、便携式计算机磁盘、硬盘、RAM、ROM、EPROM、EEPROM、闪存存储器、光纤、CD-ROM、光学处理器、磁处理器等,或前述的任何合适的组合。在本文档的上下文中,计算机可读存储介质可以是可包含或存储用于供指令执行系统、装置和/或设备使用或与其结合的程序或数据的任何有形介质。
可以使用任何适当的介质来传输在计算机可读介质上体现的计算机代码,该适当的介质包括但不限于无线、有线、光纤电缆、射频(RF)等,或者前述的任何合适的组合。用于执行本技术的各方面的操作的计算机代码可以用任何静态语言编写,该静态语言为诸如C编程语言或其他类似的编程语言。计算机代码可以完全在用户的计算设备上执行,部分地在用户的计算设备上执行,作为独立的软件包执行,部分地在用户的计算设备上执行并且部分地在远程计算设备上执行,或者完全在远程计算设备或服务器上执行。在后一种情况下,远程计算设备可以通过任何类型的网络或通信系统(包括但不限于局域网(LAN)或广域网(WAN)、统合式网络)连接到用户的计算设备,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。
上文可以参照方法、装置、系统和计算机程序产品的流程图和/或框图描述本技术的各个方面。应当理解,流程图图示和/或框图的每个框,以及流程图图示和/或框图中的各个框的组合,可以用计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理设备(处理器)以产生机器,使得可以经由处理设备或其他可编程数据处理装置执行的指令,创建用于实现在流程图和/或框图的框中指定的操作/动作的装置。
一些计算机程序指令还可以存储在计算机可读介质中,这些计算机程序指令可指导计算机、其他可编程数据处理装置或其他设备以特定方式操作,使得存储在计算机可读介质中的产生制品的指令包括实现在流程图和/或框图的框中指定的操作/动作的指令。一些计算机程序指令还可以被加载到计算设备、其他可编程数据处理装置或其他设备上,以使得要在计算设备、其他可编程装置或其他设备上执行一系列操作步骤来产生计算机实现的过程,使得由计算机或其他可编程装置执行的指令提供用于实现在流程图和/或框图的框中指定的操作/动作的一个或多个过程。
上述附图中的流程图和/或框图可示出根据本技术的各个方面的装置、系统、方法和/或计算机程序产品的可能实现的架构、功能性和/或操作。就此而言,流程图或框图中的框可以表示模块、区段或代码的部分,该模块、区段或代码的部分可包括用于实现一个或多个指定逻辑功能的一个或多个可执行指令。还应当指出,在一些另选的方面中,框中示出的一些功能可以不按图中所示的顺序发生。例如,事实上,连续示出的两个框可基本上同时执行,或者这些框有时可以采用相反的顺序执行,具体取决于所涉及的操作。还将注意到,框图和/或流程图图示中的框以及框图和/或流程图图示中的各个框的组合,可以由可执行一个或多个指定操作或动作的基于硬件的专用系统,或专用硬件和计算机指令的组合来实现。
虽然已经详细说明和讨论了本技术的一个或多个方面,但是本领域普通技术人员将理解,在不脱离如在以下权利要求中阐述的本技术的范围的情况下,可以对各个方面进行修改和/或改编。
Claims (20)
1.一种非易失性存储器系统,包括:
第一非易失性高速缓存存储器设备,所述第一非易失性高速缓存存储器设备包括存储阈值;和
存储控制器,所述存储控制器耦接到所述第一非易失性高速缓存存储器设备,所述存储控制器包括一个或多个处理设备,所述一个或多个处理设备用于在一个或多个应用程序中执行指令,所述指令被配置为使所述存储控制器执行包括以下的操作:
接收对数据对象的输入/输出(I/O)请求,
确定所述数据对象的大小,
相对于所述第一非易失性高速缓存存储器设备的所述存储阈值将所述数据对象确定为不相容数据对象,
将所述不相容数据对象划分为多个数据块,所述数据块中的每个数据块具有的大小小于所述存储阈值,
将存储在所述第一非易失性高速缓存存储器设备的一个或多个存储器空间中的一个或多个数据块移动到长期存储器设备以空出所述一个或多个存储器空间,以及
将所述不相容数据对象的一个或多个数据块存储在所述第一非易失性高速缓存存储器设备的所空出的一个或多个存储器空间中。
2.根据权利要求1所述的系统,其中:
所述I/O请求是写入请求;并且
当执行用于存储所述不相容数据对象的所述一个或多个数据块的所述操作时,所述存储控制器还执行包括以下的操作:将所述不相容数据对象的所述一个或多个数据块中的每个数据块写入所述第一非易失性高速缓存存储器设备的所空出的一个或多个存储器空间中。
3.根据权利要求1所述的系统,其中:
所述I/O请求是读取请求;并且
当执行用于存储所述不相容数据对象的所述一个或多个数据块的所述操作时,所述存储控制器还执行包括以下的操作:将存储在所述长期存储器设备中的一个或多个数据块读取到所述第一非易失性高速缓存存储器设备中。
4.根据权利要求1所述的系统,其中:
所述I/O请求是读写请求;并且
当执行用于存储所述不相容数据对象的所述一个或多个数据块的所述操作时,所述存储控制器还执行包括以下的操作:
将存储在所述长期存储器设备中的一个或多个数据块读取到所述第一非易失性高速缓存存储器设备中,
修改读取的所述一个或多个数据块中的数据以生成一个或多个经修改的数据块,以及
将所述一个或多个经修改的数据块写入所述长期存储器设备中。
5.根据权利要求1所述的系统,还包括所述长期存储器设备,所述所述长期存储器设备耦接到所述第一非易失性高速缓存存储器设备,其中:
将所述数据对象确定为不相容数据对象还基于所述数据对象的所述大小超过所述第一非易失性高速缓存存储器设备的可用存储容量;以及
将所述不相容数据对象的所述一个或多个数据块存储在所空出的一个或多个存储器空间中包括:针对所述不相容数据对象的每个数据块:
确定是否存在足够的空间来将每个数据块存储在所述第一非易失性高速缓存存储器设备中,以及
当不存在足够的空间时:
将一个或多个现有数据块写入所述长期存储器设备中,所述一个或多个现有数据块与除了所述不相容数据对象之外的一个或多个数据对象相关联并且当前存储在所述第一非易失性高速缓存存储器设备中,
空出所述一个或多个现有数据块的所述一个或多个存储器空间以生成所空出的一个或多个存储器空间,以及
将每个数据块写入所述第一非易失性高速缓存存储器设备中所空出的一个或多个存储器空间中。
6.根据权利要求1所述的系统,其中:
所述第一非易失性高速缓存存储器设备包括缓冲区大小;并且
所述存储阈值反映了所述缓冲区大小。
7.根据权利要求1所述的系统,还包括:
第二非易失性高速缓存存储器设备,所述第二非易失性高速缓存存储器设备耦接到所述第一非易失性高速缓存存储器设备,其中:
所述存储控制器还执行包括以下的操作:将存储在所述第一非易失性高速缓存存储器设备中的每个数据块复制到所述第二非易失性高速缓存存储器设备中。
8.根据权利要求1所述的系统,其中所述长期存储器设备是以下中的一者:
本地存储网络的一部分;和
企业存储服务的一部分。
9.根据权利要求1所述的系统,其中所述第一非易失性高速缓存存储器设备包括闪存存储器设备。
10.根据权利要求1所述的系统,其中:
所述存储控制器被配置为耦接到与一个或多个客户端设备通信的网络;并且
所述存储控制器在耦接到所述网络时位于所述一个或多个客户端设备与所述第一非易失性高速缓存存储器设备之间。
11.一种系统,包括:
非易失性高速缓存存储器设备,所述非易失性高速缓存存储器设备包括缓冲区大小;
用于接收对数据对象的输入/输出(I/O)请求的装置;
用于确定所述数据对象的大小的装置;
用于相对于所述非易失性高速缓存存储器设备的所述缓冲区大小将所述数据对象确定为不相容数据对象的装置;
用于将所述不相容数据对象划分为多个数据块的装置,所述数据块中的每个数据块具有的大小小于所述缓冲区大小;
用于将存储在所述非易失性高速缓存存储器设备的一个或多个存储器空间中的一个或多个数据块移动到长期存储器设备以空出所述一个或多个存储器空间的装置;和
用于将所述不相容数据对象的一个或多个数据块存储在所述非易失性高速缓存存储器设备的所空出的一个或多个存储器空间中的装置。
12.根据权利要求11所述的系统,其中:
所述I/O请求是写入请求;并且
所述用于存储所述不相容数据对象的所述一个或多个数据块的装置还包括用于将所述不相容数据对象的所述一个或多个数据块中的每个数据块写入所述非易失性高速缓存存储器设备的所空出的一个或多个存储器空间中的装置。
13.根据权利要求11所述的系统,其中:
所述I/O请求是读取请求;并且
所述用于存储所述不相容数据对象的所述一个或多个数据块的装置还包括用于将存储在所述长期存储器设备中的一个或多个数据块读取到所述非易失性高速缓存存储器设备中的装置。
14.根据权利要求11所述的系统,其中:
所述I/O请求是读写请求;并且
所述用于存储所述不相容数据对象的所述一个或多个数据块的装置还包括:
用于将存储在所述长期存储器设备中的一个或多个数据块读取到所述非易失性高速缓存存储器设备中的装置,
用于修改读取的所述一个或多个数据块中的数据以生成一个或多个经修改的数据块的装置,和
用于将所述一个或多个经修改的数据块写入所述长期存储器设备的装置。
15.根据权利要求11所述的系统,还包括所述长期存储器设备,所述所述长期存储器设备耦接到所述非易失性高速缓存存储器设备,其中:
所述用于将所述数据对象确定为不相容数据对象的装置包括用于将所述确定基于所述数据对象的所述大小超过所述缓冲区大小的装置,并且
所述用于将所述不相容数据对象的所述一个或多个数据块存储在所空出的一个或多个存储器空间中的装置包括:针对所述不相容数据对象的每个数据块:
用于确定是否存在足够的空间来将每个数据块存储在所述非易失性高速缓存存储器设备中的装置,以及
当不存在足够的空间时:
用于将一个或多个现有数据块写入所述长期存储器设备中的装置,所述一个或多个现有数据块与除了所述不相容数据对象之外的一个或多个数据对象相关联并且当前存储在所述非易失性高速缓存存储器设备中,
用于空出所述一个或多个现有数据块的所述一个或多个存储器空间以生成所空出的一个或多个存储器空间的装置,和
用于将每个数据块写入所述非易失性高速缓存存储器设备中所空出的一个或多个存储器空间中的装置。
16.一种在包括一组非易失性存储器设备的非易失性存储器系统中操作的方法,所述方法包括:
在存储控制器处接收用于对数据对象执行I/O操作的输入/输出(I/O)请求,所述存储控制器耦接到包括存储阈值的非易失性高速缓存存储器设备;
确定所述数据对象的大小;
相对于所述非易失性高速缓存存储器设备的所述存储阈值将所述数据对象确定为不相容数据对象;
将所述不相容数据对象划分为多个数据块,所述数据块中的每个数据块具有的大小小于所述存储阈值;
将存储在所述非易失性高速缓存存储器设备的一个或多个存储器空间中的一个或多个数据块移动到长期存储器设备以空出所述一个或多个存储器空间;以及
将所述不相容数据对象的一个或多个数据块存储在所述非易失性高速缓存存储器设备的所空出的一个或多个存储器空间中。
17.根据权利要求16所述的方法,其中:
所述I/O请求是写入请求;并且
存储所述不相容数据对象的所述一个或多个数据块还包括将所述不相容数据对象的所述一个或多个数据块中的每个数据块写入所述非易失性高速缓存存储器设备的所空出的一个或多个存储器空间中。
18.根据权利要求16所述的方法,其中:
所述I/O请求是读取请求;并且
存储所述不相容数据对象的所述一个或多个数据块还包括将所述不相容数据对象的所述一个或多个数据块中的每个数据块读取到所述非易失性高速缓存存储器设备的所空出的一个或多个存储器空间中。
19.根据权利要求16所述的方法,其中:
所述I/O请求是读写请求;并且
存储所述不相容数据对象的所述一个或多个数据块还包括:
将所述不相容数据对象的所述一个或多个数据块中的每个数据块读取到所述非易失性高速缓存存储器设备的所空出的一个或多个存储器空间中,
修改读取的所述一个或多个数据块中的每个数据块中的数据以生成一个或多个经修改的数据块,以及
将所述一个或多个经修改的数据块中的每个数据块写入所述长期存储器设备中。
20.根据权利要求16所述的方法,其中:
将所述数据对象确定为不相容数据对象还基于所述数据对象的所述大小超过所述非易失性高速缓存存储器设备的可用存储容量,以及
将所述不相容数据对象的所述一个或多个数据块存储在所空出的一个或多个存储器空间中包括:针对所述不相容数据对象的每个数据块:
确定是否存在足够的空间来将每个数据块存储在所述非易失性高速缓存存储器设备中,以及
当不存在足够的空间时:
将一个或多个现有数据块写入所述长期存储器设备中,所述一个或多个现有数据块与除了所述不相容数据对象之外的一个或多个数据对象相关联并且当前存储在所述非易失性高速缓存存储器设备中,
空出所述一个或多个现有数据块的所述一个或多个存储器空间以生成所空出的一个或多个存储器空间,以及将每个数据块写入所述非易失性高速缓存存储器设备中所空出的一个或多个存储器空间中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/470,787 | 2017-03-27 | ||
US15/470,787 US10289315B2 (en) | 2017-03-27 | 2017-03-27 | Managing I/O operations of large data objects in a cache memory device by dividing into chunks |
PCT/US2017/064368 WO2018182802A1 (en) | 2017-03-27 | 2017-12-02 | Managing i/o operations for data objects in a storage system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110140114A true CN110140114A (zh) | 2019-08-16 |
Family
ID=60991511
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780077890.8A Pending CN110140114A (zh) | 2017-03-27 | 2017-12-02 | 管理存储系统中数据对象的i/o操作 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10289315B2 (zh) |
CN (1) | CN110140114A (zh) |
DE (1) | DE112017005868T5 (zh) |
WO (1) | WO2018182802A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11816465B2 (en) | 2013-03-15 | 2023-11-14 | Ei Electronics Llc | Devices, systems and methods for tracking and upgrading firmware in intelligent electronic devices |
US11734396B2 (en) | 2014-06-17 | 2023-08-22 | El Electronics Llc | Security through layers in an intelligent electronic device |
US10958435B2 (en) | 2015-12-21 | 2021-03-23 | Electro Industries/ Gauge Tech | Providing security in an intelligent electronic device |
US10705911B2 (en) * | 2017-04-24 | 2020-07-07 | Hewlett Packard Enterprise Development Lp | Storing data in a distributed storage system |
US10268417B1 (en) * | 2017-10-24 | 2019-04-23 | EMC IP Holding Company LLC | Batch mode object creation in an elastic cloud data storage environment |
KR20200104601A (ko) | 2019-02-27 | 2020-09-04 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 |
KR102456173B1 (ko) * | 2017-10-27 | 2022-10-18 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US11686594B2 (en) * | 2018-02-17 | 2023-06-27 | Ei Electronics Llc | Devices, systems and methods for a cloud-based meter management system |
US11754997B2 (en) | 2018-02-17 | 2023-09-12 | Ei Electronics Llc | Devices, systems and methods for predicting future consumption values of load(s) in power distribution systems |
US11734704B2 (en) | 2018-02-17 | 2023-08-22 | Ei Electronics Llc | Devices, systems and methods for the collection of meter data in a common, globally accessible, group of servers, to provide simpler configuration, collection, viewing, and analysis of the meter data |
US10901906B2 (en) * | 2018-08-07 | 2021-01-26 | International Business Machines Corporation | Write data allocation in storage system |
CN111858144A (zh) * | 2019-04-25 | 2020-10-30 | 伊姆西Ip控股有限责任公司 | 存储管理的方法、设备和计算机程序产品 |
US11863589B2 (en) | 2019-06-07 | 2024-01-02 | Ei Electronics Llc | Enterprise security in meters |
US11368285B2 (en) | 2019-12-05 | 2022-06-21 | International Business Machines Corporation | Efficient threshold storage of data object |
US11556540B1 (en) * | 2020-03-25 | 2023-01-17 | Amazon Technologies, Inc. | Transmission format cache for database reads |
US11599463B2 (en) * | 2020-03-25 | 2023-03-07 | Ocient Holdings LLC | Servicing queries during data ingress |
US20220405253A1 (en) * | 2021-06-22 | 2022-12-22 | Samsung Electronics Co., Ltd. | Mechanism for managing a migration of data with mapped page and dirty page bitmap sections |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499036A (zh) * | 2008-01-30 | 2009-08-05 | 株式会社东芝 | 信息存储设备及其控制方法 |
US20130185488A1 (en) * | 2012-01-12 | 2013-07-18 | Fusion-Io, Inc. | Systems and methods for cooperative cache management |
CN103562843A (zh) * | 2011-05-23 | 2014-02-05 | 国际商业机器公司 | 在具有多个高速缓存的存储系统中高速缓存数据 |
CN103797770A (zh) * | 2012-12-31 | 2014-05-14 | 华为技术有限公司 | 一种共享存储资源的方法和系统 |
US20160239204A1 (en) * | 2015-02-17 | 2016-08-18 | Fujitsu Limited | Storage control apparatus and control method |
CN106156289A (zh) * | 2016-06-28 | 2016-11-23 | 北京百迈客云科技有限公司 | 一种读写对象存储系统中的数据的方法以及装置 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6128623A (en) | 1998-04-15 | 2000-10-03 | Inktomi Corporation | High performance object cache |
US7398312B1 (en) * | 2000-03-29 | 2008-07-08 | Lucent Technologies Inc. | Method and system for caching streaming multimedia on the internet |
US7360053B2 (en) | 2004-09-23 | 2008-04-15 | International Business Machines Corporation | Facilitating non-contiguous allocation of a large object within a java heap |
US8458236B2 (en) | 2008-07-16 | 2013-06-04 | Oracle International Corporation | File system interface for CIM |
GB2481187B (en) * | 2010-06-04 | 2014-10-29 | Plastic Logic Ltd | Processing substrates |
US9086883B2 (en) * | 2011-06-10 | 2015-07-21 | Qualcomm Incorporated | System and apparatus for consolidated dynamic frequency/voltage control |
US8849759B2 (en) | 2012-01-13 | 2014-09-30 | Nexenta Systems, Inc. | Unified local storage supporting file and cloud object access |
US8661479B2 (en) * | 2011-09-19 | 2014-02-25 | International Business Machines Corporation | Caching large objects with multiple, unknown, and varying anchor points at an intermediary proxy device |
US8782441B1 (en) | 2012-03-16 | 2014-07-15 | Google Inc. | Methods and systems for storage of large data objects |
US8856445B2 (en) | 2012-05-24 | 2014-10-07 | International Business Machines Corporation | Byte caching with chunk sizes based on data type |
US9785438B1 (en) * | 2012-10-11 | 2017-10-10 | Seagate Technology Llc | Media cache cleaning based on workload |
US9268652B1 (en) * | 2012-10-31 | 2016-02-23 | Amazon Technologies, Inc. | Cached volumes at storage gateways |
US9274956B1 (en) | 2012-10-31 | 2016-03-01 | Amazon Technologies, Inc. | Intelligent cache eviction at storage gateways |
US8924425B1 (en) | 2012-12-06 | 2014-12-30 | Netapp, Inc. | Migrating data from legacy storage systems to object storage systems |
BR112015022828A2 (pt) * | 2013-03-12 | 2017-07-18 | 3M Innovative Properties Co | remoção de cloro e/ou cloramina de soluções aquosas |
US9569260B2 (en) * | 2013-05-31 | 2017-02-14 | Microsoft Technology Licensing, Llc | Efficient priority-aware thread scheduling |
US10296597B2 (en) | 2013-07-15 | 2019-05-21 | International Business Machines Corporation | Read ahead of digests in similarity based data deduplicaton |
US9811531B2 (en) | 2013-08-26 | 2017-11-07 | Vmware, Inc. | Scalable distributed storage architecture |
US10187358B2 (en) | 2013-12-03 | 2019-01-22 | Amazon Technologies, Inc. | Data transfer optimizations |
US9223800B1 (en) | 2013-12-23 | 2015-12-29 | Emc Corporation | Cluster file system providing object store and functionality for transformation of metadata files into objects |
US9141486B2 (en) | 2014-01-15 | 2015-09-22 | Avago Technologies General Ip (Singapore) Pte Ltd | Intelligent I/O cache rebuild in a storage controller |
US9405483B1 (en) | 2014-03-11 | 2016-08-02 | Amazon Technologies, Inc. | Optimized write performance at block-based storage during volume snapshot operations |
KR102336528B1 (ko) * | 2014-07-07 | 2021-12-07 | 삼성전자 주식회사 | 캐시 메모리를 가지는 전자 장치 및 그의 운용 방법 |
KR102255152B1 (ko) * | 2014-11-18 | 2021-05-24 | 삼성전자주식회사 | 가변적인 크기의 세그먼트를 전송하는 컨텐츠 처리 장치와 그 방법 및 그 방법을 실행하기 위한 컴퓨터 프로그램 |
US10534714B2 (en) * | 2014-12-18 | 2020-01-14 | Hewlett Packard Enterprise Development Lp | Allocating cache memory on a per data object basis |
US9842052B2 (en) * | 2015-04-20 | 2017-12-12 | Sap Se | Selective allocation of CPU cache slices to database objects |
US9760458B2 (en) * | 2015-06-02 | 2017-09-12 | Netapp, Inc. | Dynamic mirroring |
TWI530785B (zh) * | 2015-07-30 | 2016-04-21 | 宏碁股份有限公司 | 電腦系統及非揮發性記憶體的控制方法 |
US9864686B2 (en) * | 2015-10-14 | 2018-01-09 | International Business Machines Corporation | Restriction of validation to active tracks in non-volatile storage during a warmstart recovery |
US10972574B2 (en) * | 2016-04-27 | 2021-04-06 | Seven Bridges Genomics Inc. | Methods and systems for stream-processing of biomedical data |
US10467195B2 (en) * | 2016-09-06 | 2019-11-05 | Samsung Electronics Co., Ltd. | Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system |
-
2017
- 2017-03-27 US US15/470,787 patent/US10289315B2/en active Active
- 2017-12-02 WO PCT/US2017/064368 patent/WO2018182802A1/en active Application Filing
- 2017-12-02 CN CN201780077890.8A patent/CN110140114A/zh active Pending
- 2017-12-02 DE DE112017005868.6T patent/DE112017005868T5/de active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499036A (zh) * | 2008-01-30 | 2009-08-05 | 株式会社东芝 | 信息存储设备及其控制方法 |
CN103562843A (zh) * | 2011-05-23 | 2014-02-05 | 国际商业机器公司 | 在具有多个高速缓存的存储系统中高速缓存数据 |
US20130185488A1 (en) * | 2012-01-12 | 2013-07-18 | Fusion-Io, Inc. | Systems and methods for cooperative cache management |
CN103797770A (zh) * | 2012-12-31 | 2014-05-14 | 华为技术有限公司 | 一种共享存储资源的方法和系统 |
US20160239204A1 (en) * | 2015-02-17 | 2016-08-18 | Fujitsu Limited | Storage control apparatus and control method |
CN106156289A (zh) * | 2016-06-28 | 2016-11-23 | 北京百迈客云科技有限公司 | 一种读写对象存储系统中的数据的方法以及装置 |
Also Published As
Publication number | Publication date |
---|---|
DE112017005868T5 (de) | 2019-08-08 |
US20180275898A1 (en) | 2018-09-27 |
US10289315B2 (en) | 2019-05-14 |
WO2018182802A1 (en) | 2018-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110140114A (zh) | 管理存储系统中数据对象的i/o操作 | |
CN106407040B (zh) | 一种远程数据复制方法及系统 | |
CN106662981B (zh) | 存储设备、程序和信息处理方法 | |
CN103635900B (zh) | 基于时间的数据分割 | |
US9471248B2 (en) | Snapshots and clones of volumes in a storage system | |
US9569458B2 (en) | Preserving a state using snapshots with selective tuple versioning | |
CN101743546B (zh) | 用于提供快照的文件系统的分层存储管理 | |
US11656803B2 (en) | Tiering data strategy for a distributed storage system | |
US8135907B2 (en) | Method and system for managing wear-level aware file systems | |
CN107180092B (zh) | 一种文件系统的控制方法、装置及终端 | |
US8095728B2 (en) | Method and system for power aware I/O scheduling | |
US7584229B2 (en) | Method and system for priority-based allocation in a storage pool | |
CN108009008A (zh) | 数据处理方法和系统、电子设备 | |
CN109800185B (zh) | 一种数据存储系统中的数据缓存方法 | |
US10997153B2 (en) | Transaction encoding and transaction persistence according to type of persistent storage | |
CN109725840A (zh) | 利用异步冲刷对写入进行节流 | |
CN105718217A (zh) | 一种精简配置存储池数据一致性维护的方法及装置 | |
US10346362B2 (en) | Sparse file access | |
CN111190537B (zh) | 一种追加写场景下顺序存储磁盘管理的方法及系统 | |
CN111435286B (zh) | 一种数据存储方法、装置和系统 | |
US7424574B1 (en) | Method and apparatus for dynamic striping | |
US11144243B2 (en) | Method and device for managing redundant array of independent disks and computer program product | |
JP7421078B2 (ja) | 情報処理装置、情報処理システムおよびデータ再配置プログラム | |
CN109983452A (zh) | 用于连续可用的网络文件系统(nfs)状态数据的系统和方法 | |
CN103970671B (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 |