CN110096223A - 与容器的空闲空间有关的跟踪信息 - Google Patents
与容器的空闲空间有关的跟踪信息 Download PDFInfo
- Publication number
- CN110096223A CN110096223A CN201811589207.1A CN201811589207A CN110096223A CN 110096223 A CN110096223 A CN 110096223A CN 201811589207 A CN201811589207 A CN 201811589207A CN 110096223 A CN110096223 A CN 110096223A
- Authority
- CN
- China
- Prior art keywords
- data
- container
- capsule
- page
- free space
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
- 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/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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/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/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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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/313—In storage device
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/461—Sector or disk block
-
- 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/466—Metadata, control data
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及与容器的空闲空间有关的跟踪信息。在一些示例中,一种系统包括存储器,该存储器用于存储与数据容器以及每个数据容器的空闲空间有关的跟踪信息。处理器用于确定数据容器中的第一数据容器的空闲空间,并且基于所确定的第一数据容器的空闲空间来更新跟踪信息,该第一数据容器存储压缩数据。
Description
背景技术
存储系统可包括存储设备或存储设备阵列,包括以下中的任何或者一些组合:存储器设备(易失性存储器设备或非易失性存储器设备)、基于磁盘的持久性存储设备、或者能够存储数据的任何其他类型的设备。
附图说明
参考以下附图描述本公开的一些实施方式。
图1是根据一些示例的包括存储控制器和存储系统的布置的框图。
图2是根据一些示例的过程的流程图。
图3示出了根据一些示例的容器跟踪信息。
图4是根据另外的示例的读取过程的流程图。
图5是根据另外的示例的写入过程的流程图。
图6是根据另外的示例的系统的框图。
图7是根据一些示例的存储机器可读指令的存储介质的框图。
在整个附图中,相同的附图标记表示相似但不一定相同的元件。附图不一定按比例绘制,并且可夸大某些部分的尺寸以更清楚地说明所示的示例。此外,附图提供了与描述一致的示例和/或实施方式;然而,描述不限于附图中提供的示例和/或实施方式。
具体实施方式
在本公开中,术语“一”、“一个”或“该”的使用旨在也包括复数形式,除非上下文另有明确说明。此外,当在本公开中使用时,术语“包括”、“包含”、“具有”或“含有”指示所述元件的存在,但不排除存在或添加其他元素。
在一些情况下,存储系统能够将数据页面(或更简称为“页面”)以压缩形式存储到数据容器(或更简称为“容器”)中。“数据页面”(或等同地,“页面”)可以指具有指定的固定大小或者可变大小的数据的单元。“数据容器”(或等同地,“容器”)可以指一个或多个数据页面能够被存储到其中的数据的逻辑(虚拟)存储库,其中被存储到数据容器中的一个或多个数据页面中的至少一些可以是压缩形式。压缩数据页面可以指使用比数据页面的原始(未压缩)版本更少的比特来对数据页面中的数据进行编码,使得与未压缩版本的数据页面相比,压缩版本的数据页面消耗更少的存储空间。
只要容器具有用于接收页面的足够空间,就能够将页面添加到容器。一旦给定页面被存储在给定容器中,该页面可能受到利用新数据的重写。作为利用新数据重写页面的结果,所重写的页面可能不再适应给定容器。在一些情况下,所重写的压缩版本的页面可能不适应给定的数据页面。在其他情况下,例如由于新数据是不能够压缩的形式,或者与指定新数据将不被压缩的策略或规则相关联的新数据,所重写的页面可能不再是可压缩的。
在一些示例中,如果所重写的页面不能适应其原始容器,那么存储系统能够分配新容器,并且所重写的页面能够从原始容器移动到新容器中。然而,在一些示例中,即使该移动释放原始容器中的额外空间,但原始容器的额外空间可能不被用于写入其他页面,使得原始容器的该额外空间被浪费。
随着时间的推移,由于所重写的页面不能适应其原始容器,随着许多容器中的页面被重写并且被移动到新容器,存储系统的整体数据压缩性能可能受到影响。更具体地,由于各个容器中的空闲空间由于页面从原始容器移动到其他容器而变得未使用并且被浪费,因此存储系统的总压缩比受到损失。压缩比是指压缩的数据大小和容器的空闲空间的大小之和与未压缩的数据大小的比率。
根据本公开的一些实施方式,能够通过使用与容器以及每个容器的空闲空间有关的跟踪信息来改善存储系统的压缩性能。跟踪信息允许重新使用容器的空闲空间用于存储页面。
图1是包括通过链路106耦接到存储系统104的存储控制器102的示例布置的框图。可以利用计算机或者计算机的集合来实施存储控制器102。
存储系统104包括可以使用存储设备或存储设备阵列而实施的辅助储存器108。辅助储存器108的一个或多个存储设备可包括基于磁盘的存储设备、固态存储设备等。链路106可包括有线链路或无线链路。
存储控制器102能够通过网络112从请求者设备110接收请求。在一些示例中,网络112可包括存储区域网络(SAN)。在其他示例中,网络112可以是不同类型的网络,例如局域网(LAN)、广域网(WAN)、公共网络(例如,因特网)等。
请求者设备110能够提交请求(写入请求、读取请求等)来访问由存储控制器102所管理的数据,包括存储系统104的辅助储存器108中的数据以及存储在存储控制器102的存储器114中的数据。可以利用一个或多个存储器设备来实施存储器114。存储器设备的示例包括动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备等。可以利用易失性存储器设备和/或利用非易失性存储器设备来实施存储器114。
尽管在图1中示出了仅一个请求者设备110,但应注意,在其他示例中,可以存在能够向存储控制器102提交请求的多个请求者设备110。请求者设备的示例可包括以下中的任何或一些组合:笔记本式计算机、平板式计算机、台式计算机、服务器计算机、游戏设备、智能电话等。
响应于来自请求者设备110的请求,存储控制器102可执行对应的存储访问操作。存储访问操作从存储器114中(如果数据存在于存储器114中)取回所请求的数据或者从存储系统104的辅助储存器118中取回所请求的数据。
所请求的数据可被包括在一个或多个页面中。如图1所示,存储器114可将页面存储在对应的容器116-1、116-2和116-3中。尽管图1示出了存储在存储器114中的三个容器,但应注意,在其他示例中,可存在存储在存储器114中的不同数目的容器。如果页面可被压缩,那么页面首先被压缩并以压缩形式存储在容器中。在一些情况下,页面可能不是可压缩的,例如由于页面的数据是不能够压缩的形式,或者与指定页面的数据将不被压缩的策略或规则相关联的数据。如果页面不是可压缩的,那么页面以未压缩的形式存储在容器中。
每个容器可存储许多页面(例如,零个页面、一个页面、或多于一个页面)。根据存储在容器中的页面的数目,容器中有相应数量的空闲空间(标记为“FS”)是可用的。该空闲空间可用于存储适应空闲空间的附加页面(或多个附加页面)。
除存储在存储控制器102的存储器114中的容器116-1至116-3之外,容器126-1至126-N(N>1)也可被存储在存储系统104的辅助储存器108中。响应于用于访问数据的请求,如果所访问的数据位于已经在存储器114中的容器中,那么存储控制器102可对存储器114中的容器中的数据执行所请求的操作(例如,读取或写入)。然而,如果所访问的数据不位于存储器114中的容器中,那么存储控制器102可首先从辅助储存器108中取回容器(126-1至126-N之一)并将所取回的容器存储在存储器114中。在将容器从辅助储存器108取回到存储器114中之后,可对所取回的容器中的数据执行所请求的操作。
应注意,辅助储存器108与存储器114相比具有更大的存储容量,并且因此可存储更大量的数据。数据被存储在存储器114中以允许对存储器114中的数据进行更快的访问,因为存储器114与辅助储存器108相比可具有更快的访问速度。
存储控制器102还包括可被存储在存储介质120中的容器管理指令118。存储介质120可与存储器114相同,或者可与存储器120分开。容器管理指令118是可在存储控制器102的处理器122上执行的计算机可读指令。处理器可包括以下中的任何或一些组合:微处理器、多核微处理器的内核、微控制器、可编程集成电路设备、可编程门阵列等。可在处理器上执行的指令可指可在单个处理器上执行的指令或可在多个处理器上执行的指令。
容器管理指令118可管理对在存储在存储器114中的容器中可用的空闲空间的跟踪,并且也管理将页面存储到存储器114中的容器中。
容器管理指令118可使用容器跟踪信息124来跟踪存储在存储器114中的容器116-1至116-3中的每个的空闲空间量。跟踪信息124可被存储在与容器116-1至116-3相同的存储器114中,或者可被存储在与存储器114不同的存储器中。容器跟踪信息124包括与容器116-1至116-3、以及容器116-1至116-3中的每个的空闲空间有关的信息。容器管理指令118也可基于所确定的每个相应容器的空闲空间来更新容器跟踪信息124。注意,在诸如通过添加新页面、移除页面、或者重写页面等而使容器改变时,容器的空闲空间可能改变。
应注意,在一些示例中,容器跟踪信息124跟踪存储器114中的容器的空闲空间,但是不跟踪存储在辅助储存器108中而非存储器114中的容器126-1和126-N的空闲空间。
如上所述,可响应于由存储控制器102接收的请求而将辅助储存器108中的容器126-1或126-N移动到存储器114。例如,如果来自请求者设备110的请求寻找位于存储在辅助储存器108中的容器126-1中的页面,那么容器126-1可从辅助储存器108中取回并被存储到存储器114中。在那时,容器跟踪信息124可被更新为也涉及已被移动到存储器114中的容器126-1。
当页面将被写入到容器中时,容器管理指令118可访问容器跟踪信息124以确定容器116-1至116-3中的哪个容器具有用于存储页面的足够空间,并且容器管理指令118可基于该确定来选择容器116-1至116-3之一并将页面写入到所选择的容器中。
图2是根据一些示例的可通过容器管理指令118而执行的过程的流程图。容器管理指令118维护(202处)与容器116-1至116-3以及存储器114中的每个容器的空闲空间有关的容器跟踪信息124。
响应于将给定容器从辅助储存器108取回到存储器114中,容器管理指令118确定(204处)给定容器的空闲空间量,并基于所确定的给定容器的空闲空间量来更新(206处)容器跟踪信息124。
响应于用于写入特定页面的写入请求,容器管理指令118确定(208处)压缩版本的特定页面的大小。容器管理指令118基于容器跟踪信息124以及所确定的压缩版本的特定页面的大小来从存储器114中的容器中进行进一步选择(210处)。在所选择的容器在存储器114中时,容器管理指令118将压缩版本的特定页面写入(212处)到所选择的容器中。
图3示出了容器跟踪信息124的示例。在根据图3的示例中,容器跟踪信息124包括多个存储桶,其可以是存储桶列表的形式。每个存储桶表示容器中可用的相应不同的空闲空间量。
在其他示例中,可使用其他形式的容器跟踪信息124。
在图3中,存储桶0表示范围从A1至A2的空闲空间量,其中A1可表示预定义的最低空闲空间量,例如2千字节(kB),并且A2可表示不同的空闲空间量,例如4kB。
存储桶1表示不同范围(从A2+1至A3)的空闲空间,其中A2+1表示比A2大1kB的空闲空间量,并且A3可表示诸如8kB的不同的空闲空间量。存储桶2表示范围从A3+1至A4的空闲空间,并且存储桶3表示范围从A4+1至A5的空闲空间。
尽管在图3中描绘了四个存储桶,但应注意,在其他示例中,容器跟踪信息124可包括不同数目的存储桶。
存储桶0涉及这样的容器(在图3的示例中,包括容器1、2、3),每个容器具有在A1和A2之间的范围内的空闲空间。来自存储桶0对容器1、2和3中的每个容器的引用可以是指针或任何其他类型的引用的形式。
存储桶1涉及容器4和5,每个容器具有在A2+1和A3之间的范围内的空闲空间,存储桶2涉及容器6、7和8,每个容器具有在A3+1和A4之间的范围内的空闲空间,并且存储桶3涉及容器9,该容器9具有在A4+1和A5之间的范围内的空闲空间。
包括与相应不同范围的容器空闲空间相关联的多个存储桶的容器跟踪信息124允许容器跟踪信息124与相应容器“快速适应”。换句话说,利用基于范围的容器跟踪信息124,具有不同可用空闲空间量的容器可与容器跟踪信息124的相应存储桶快速关联(适应)。以这种方式,在维护容器跟踪信息124时消耗减少的处理资源。
在其他示例中,可使用其他类型的容器跟踪信息124,包括其中可使用具有相应不同的空闲空间量的容器的排序列表的一种容器跟踪信息124。在这种类型的容器跟踪信息124中,可以升序或降序将容器排序。
图4是响应于读取请求所执行的读取过程的流程图。例如,可通过图1的存储控制器102(包括容器管理指令118)来执行读取过程。响应于读取请求,存储控制器102确定(402处)包含所请求的页面的相应容器是否在存储器114中。如果不在的话,存储控制器102将相应容器从辅助储存器108取回到(404处)存储器114中。
每个容器可与元数据相关联,该元数据可以是容器的报头的一部分或者可以以其他方式与容器相关联。元数据可指定容器的空闲空间量,并且识别容器中所包括的一个或多个页面。存储控制器102检查(406处)所取回的容器的元数据,并更新(408处)容器跟踪信息124以涉及所取回的容器。跟踪信息124的更新可包括将信息添加到容器跟踪信息124以指示基于元数据所确定的所取回的容器的空闲空间量。在其中如图3所示容器跟踪信息124包括存储桶的示例中,容器跟踪信息124的更新可包括基于所取回的容器中的可用空闲空间量来更新相应存储桶以涉及所取回的容器。
然后,存储控制器102响应于读取请求来执行(410处)存储器114中的相应容器的读取以取回数据(一个或多个页面)。
尽管图4示出了假设读取请求所请求的数据在一个容器中的示例,但应注意,在其他示例中,所请求的数据可来自多个容器。
可将从一个或多个容器读取的数据返回到提交读取请求的请求者设备110(图1)。
图5是响应于写入请求由存储控制器102(例如,由容器管理指令118全部或部分地)执行的写入过程的流程图。写入过程可基于写入请求是添加新页面(502)还是使用新页面来重写容器中的现存页面(504)来执行不同的任务。
对于添加新页面(502),存储控制器102计算(506处)将被写入到容器中的新页面的大小。所计算的新页面的大小可以是压缩的新页面的大小,假设新页面可被压缩。为了计算压缩的新页面的大小,存储控制器102可首先对新页面应用压缩,并且使用压缩的新页面的大小作为计算的大小。在其他示例中,新页面是不可压缩的,在这种情况下,新页面的大小是未压缩的新页面的大小。
基于所计算的新页面的大小,存储控制器102访问容器跟踪信息124来选择(508处)容器跟踪信息124中所包括的多个存储桶中的存储桶。存储桶的选择可基于存储桶选择准则。例如,存储桶选择准则可指定所选择的存储桶是这样的存储桶,该存储桶具有刚好足以基于计算的大小而容纳新页面的空闲空间范围。例如,如果所计算的新页面的大小是S1,并且S1大于存储桶0的范围A1至A2、但在存储桶1的空闲空间范围A2+1至A3内、且小于存储桶2和3的空闲空间范围,那么这意味着,存储桶1、2和3中的任何容器将可容纳新页面。然而,为了最多空间节省,存储桶1被选择,这是因为存储桶1中的容器将具有刚好足够空间来容纳新页面。将存储桶2和3的容器用于新页面可能不是高效的,这是因为那些容器可能必须在后续操作中用于接收更大的新页面。
更一般地说,为了从多个存储桶中选择(508处)存储桶,存储控制器102将所计算的新页面的大小与相应存储桶的空闲空间范围进行比较,并选择与可仍然容纳新页面的最小空闲空间量相关联的存储桶。
存储控制器102从所选择的存储桶中选择(510处)在存储器114中的具有足够空闲空间的容器。在存在具有足够空闲空间的多个容器的示例中,存储控制器102然后可基于指定的容器选择准则(例如,具有最小空闲空间的容器、具有最大空闲空间的容器、最近最少使用或最近最多使用的容器,等等)来选择多个容器之一。
存储控制器102将新页面(如果可能的话以压缩形式,否则以未压缩形式)写入(512处)所选择的存储器114中的容器。
当完成将新页面写入所选择的容器时,存储控制器102计算(514处)所选择的容器的空闲空间的修改量。基于所计算的所选择的容器的空闲空间的修改量,存储控制器102更新(516处)容器跟踪信息124。
在一些示例中,如果所选择的容器的空闲空间量已经改变,使得所选择的容器应当与图3的容器跟踪信息124的存储桶的列表中的不同的存储桶相关联,则容器跟踪信息124的更新可以包含将相应容器从容器跟踪信息124中的一个存储桶移动到另一个存储桶。将容器从第一存储桶移动到第二存储桶可涉及改变负担过重的存储桶,使得第一存储桶不再涉及所选择的容器并且第二存储桶涉及所选择的容器。
对于利用新页面重写现存页面(504),存储控制器102计算(520处)新页面的大小(类似于任务506)。注意,新页面可重写给定容器中的现存压缩页面。
在一些情况下,新页面可具有大于给定容器中的现存压缩页面的大小的大小。结果,压缩的新页面可能不适应给定容器中的可用空闲空间。在一些情况下,新页面的较大的大小可能是由于新页面与现存页面相比具有更多数据。在其他情况下,与现存压缩页面相比,新页面可以是较少可压缩的,或者新页面可能不是可压缩的。在后一种情况下,新页面的增加的大小是由于新页面的降低的压缩性。
存储控制器102基于访问容器跟踪信息124来确定(522处)包含现存压缩页面的给定容器基于所计算的新页面的大小是否具有用于接收新页面的足够空间。确定给定容器是否具有接收新页面的足够空间是基于(根据容器跟踪信息124所确定的)给定容器的空闲空间、以及将被重写的现存压缩页面的大小的。换句话说,如果将被重写的现存压缩页面和给定容器的空闲空间的组合大小大于或等于所计算的新页面的大小,那么新页面可被写入到给定容器中。
响应于确定(522处)给定容器具有用于接收新页面的足够空间,存储控制器102(尽可能地以压缩形式,否则以未压缩的形式)将新页面写入到(524处)给定容器中。当完成将新页面写入到给定容器时,存储控制器102计算(526处)给定容器的空闲空间的修改量。基于所计算的给定容器的空闲空间的修改量,存储控制器102更新(528处)容器跟踪信息124,类似于516处的更新。
响应于确定(522处)给定容器不具有用于接收新页面的足够空间,存储控制器102前进到任务508来选择存储桶并且然后前进到任务510来选择所选择的存储桶中的另一个容器,新页面被写入该另一个容器(而不是新页面被写入存储有现存压缩页面的给定容器)。容器管理指令118可删除给定容器中的现存压缩页面或将其标记为无效。将新页面写入另一个容器可使用如上讨论的任务510至516。
使用根据本公开的一些实施方式的技术或机制,可重新使用容器中的空闲空间。而且,随着调用I/O操作并且将容器从辅助储存器108取回到存储器114中,也可使用这种取回的容器中的任何可用空闲空间,使得随着I/O操作进展,可增加在容器中使用的空闲空间量以增强存储在容器中的数据的紧凑性。换句话说,随着I/O操作,可将压缩页面塞进容器的空闲空间中以改善系统的总压缩比。这样的过程逐渐调整并改善压缩比,同时降低整个系统的开销(例如,减少处理负担)。读取和写入(包括重写)的数量越大,可实现的压缩比就越好。
图6是包括存储器602的系统600的框图,存储器602用于存储与数据容器以及每个数据容器的空闲空间有关的跟踪信息604。系统600还包括处理器606用于在计算机可读存储介质上执行指令以执行各种任务。执行任务的处理器可涉及执行任务的单个处理器,或者执行任务的多个处理器。由处理器606执行的任务包括空闲空间确定任务608用于确定数据容器中的第一数据容器的空闲空间,第一数据容器存储压缩数据。任务还包括跟踪信息更新任务610用于基于所确定的第一数据容器的空闲空间来更新跟踪信息。
图7是存储在执行时使系统执行各种任务的机器可读指令的非暂时性机器可读或计算机可读存储介质700的框图。机器可读指令包括跟踪信息维护指令702用于维护与数据容器以及每个数据容器的空闲空间有关的跟踪信息,其中数据容器中的第一数据容器存储压缩数据页面。机器可读指令还包括重写请求接收指令704用于接收请求以使用新数据页面来重写存储在第一数据容器中的压缩数据页面。机器可读指令还包括空间确定指令706用于基于访问跟踪信息来确定第一数据容器是否具有用于接收新数据页面的足够空间。
机器可读指令还包括响应于确定第一数据容器不具有用于接收新数据的足够空间所调用的指令。这样的指令包括新数据页面写入指令708用于将新数据页面写入数据容器中的第二数据容器、以及跟踪信息更新指令710用于更新跟踪信息以反映第二数据容器的空闲空间的改变量作为写入的结果。
存储介质700可包括以下中的任何或一些组合:半导体存储器设备,例如动态或静态随机存取存储器(DRAM或SRAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪速存储器;磁盘,例如固定软盘和可活动磁盘;包括磁带的另一个磁性介质;诸如光盘(CD)或数字视频磁盘(DVD)等光学介质;或者另一种类型的存储设备。注意,以上讨论的指令可被提供在一种计算机可读或机器可读存储介质上,或者替换地可被提供在分布在可能具有多个节点的大型系统中的多种计算机可读或机器可读存储介质上。这样的一种或多种计算机可读或机器可读存储介质被考虑为是制品(或制造品)的一部分。制品或者制造品可涉及任何制造的单个组件或者多个组件。一种或多种存储介质可位于运行机器可读指令的机器中,或者位于远程站点,机器可读指令可通过网络从该远程站点下载用于执行
在前面的描述中,阐述了许多细节以提供对本文公开的主题的理解。然而,可以在没有这些细节的情况下实践实施方式。其他实施方式可以包括根据上面讨论的细节进行的修改和变化。所附权利要求旨在覆盖这些修改和变化。
Claims (20)
1.一种系统,包括:
存储器,用于存储与数据容器以及所述数据容器中的每个数据容器的空闲空间有关的跟踪信息;以及
处理器,用于在计算机可读存储介质上执行指令以:
确定所述数据容器中的第一数据容器的空闲空间,所述第一数据容器存储压缩数据,并且
基于所确定的所述第一数据容器的空闲空间来更新所述跟踪信息。
2.根据权利要求1所述的系统,其中所述处理器用于在所述计算机可读存储介质上执行指令以:
接收请求来使用新数据重写所述第一数据容器中的所述压缩数据;
基于访问所述跟踪信息来确定所述第一数据容器是否具有用于接收所述新数据的足够空间;以及
响应于确定所述第一数据容器具有用于接收所述新数据的足够空间来将所述新数据写入所述第一数据容器。
3.根据权利要求2所述的系统,其中确定所述第一数据容器是否具有用于接收所述新数据的足够空间是基于由所述跟踪信息指示的所述第一数据容器的空闲空间、以及被重写的所述压缩数据的大小。
4.根据权利要求2所述的系统,其中确定所述第一数据容器是否具有用于接收所述新数据的足够空间包括:确定所述第一数据容器是否具有用于接收压缩版本的新数据的足够空间。
5.根据权利要求2所述的系统,其中确定所述第一数据容器是否具有用于接收所述新数据的足够空间包括:
确定所述新数据是不可压缩的;以及
确定所述第一数据容器是否具有用于接收不可压缩的新数据的足够空间。
6.根据权利要求1所述的系统,其中所述跟踪信息包括表示相应不同空闲空间量的存储桶,所述存储桶中的每个相应存储桶涉及具有由所述相应存储桶表示的空闲空间量的数据容器,并且其中所述存储桶中的存储桶涉及多个数据容器。
7.根据权利要求6所述的系统,其中所述处理器用于在所述计算机可读存储介质上执行指令以:
响应于用于改变所述数据容器中的给定数据容器的空闲空间量的写入,将所述给定数据容器的关联从所述给定数据容器与所述存储桶中的第一存储桶的关联改变为所述给定数据容器与所述存储桶中的第二存储桶的关联。
8.根据权利要求1所述的系统,其中所述处理器用于在所述计算机可读存储介质上执行指令以:
压缩写入数据来产生压缩的写入数据;
在给定数据容器在所述存储器中时,将所述压缩的写入数据存储在所述给定数据容器中;以及
响应于将所述压缩的写入数据存储在所述给定数据容器中来更新所述跟踪信息以表示所述给定数据容器的所述空闲空间的改变量。
9.根据权利要求1所述的系统,其中所述跟踪信息涉及所述存储器中的所述数据容器,并且不涉及所述存储器外部的辅助储存器中的数据容器。
10.根据权利要求1所述的系统,其中所述处理器用于在所述计算机可读存储介质上执行指令以:
响应于对来自请求者设备的请求的响应的数据访问来:
将第一容器从辅助储存器取回到所述存储器中,
基于与所述第一容器相关联的元数据来确定取回到所述存储器中的所述第一容器的空闲空间量,
基于所确定的取回到所述存储器中的所述第一容器的空闲空间量来更新所述跟踪信息,以及
响应于所述请求来执行取回到所述存储器中的所述第一容器的访问操作。
11.根据权利要求1所述的系统,其中在执行读取数据容器和写入数据容器的操作时,反复地进行所述确定和所述更新。
12.一种存储指令的非暂时性机器可读存储介质,所述指令在执行时使系统来:
维护与数据容器以及所述数据容器中的每个数据容器的空闲空间有关的跟踪信息,其中所述数据容器中的第一数据容器存储压缩数据页面;
接收请求来使用新数据页面重写存储在所述第一数据容器中的所述压缩数据页面;
基于访问所述跟踪信息来确定所述第一数据容器是否具有用于接收所述新数据页面的足够空间;以及
响应于确定所述第一数据容器不具有用于接收所述新数据的足够空间:
将所述新数据页面写入所述数据容器中的第二数据容器,并且
更新所述跟踪信息以反映所述第二数据容器的所述空闲空间的改变量作为所述写入的结果。
13.根据权利要求12所述的非暂时性机器可读存储介质,其中所述指令在执行时使所述系统进一步:
响应于确定所述第一数据容器确实具有用于接收所述新数据页面的足够空间:
将所述新数据页面写入所述第一数据容器,所述新数据页面重写所述压缩数据页面,并且
更新所述跟踪信息以反映所述第一数据容器的所述空闲空间的改变量作为将所述新数据页面写入所述第一数据容器的结果。
14.根据权利要求12所述的非暂时性机器可读存储介质,其中确定所述第一数据容器是否具有用于接收使用新数据重写的第一数据页面的足够空间包括:确定所述第一数据容器是否具有用于接收压缩版本的新数据页面的足够空间。
15.根据权利要求12所述的非暂时性机器可读存储介质,其中确定所述第一数据容器是否具有用于接收所述新数据页面的足够空间包括:
确定所重写的新数据页面是不可压缩的;以及
确定所述第一数据容器是否具有接收不可压缩的新数据页面的足够空间。
16.根据权利要求12所述的非暂时性机器可读存储介质,其中所述指令在执行时使所述系统进一步:
将所述数据容器中的给定数据容器从辅助储存器取回到存储器中;
基于所述给定数据容器的元数据来确定所述给定数据容器的空闲空间量;以及
基于所确定的所述给定数据容器的空闲空间量来更新所述跟踪信息。
17.根据权利要求12所述的非暂时性机器可读存储介质,其中所述指令在执行时使所述系统进一步:
响应于用于写入新数据页面的写入请求:
确定所述写入请求的新数据页面的大小,
根据存储桶选择准则、基于所确定的所述新数据页面的大小来从多个存储桶中选择存储桶,所述跟踪信息指示与所述多个存储桶相关联的空闲空间的范围,基于所确定的所述写入请求的新数据页面的大小来从由所选择的存储桶所涉及的数据容器中选择给定数据容器,以及
将所述写入请求的所述新数据页面写入到所述给定数据容器中。
18.一种由包括处理器的系统执行的方法,包括:
维护与数据容器以及所述数据容器中的每个数据容器的空闲空间有关的跟踪信息;
响应于将给定数据容器从辅助储存器取回到存储器中,确定所述给定数据容器的空闲空间量,并且基于所确定的所述给定数据容器的空闲空间量来更新所述跟踪信息;以及
响应于用于写入数据页面的写入请求:
确定压缩版本的数据页面的大小,
基于所述跟踪信息和所确定的所述压缩版本的数据页面的大小来选择所述数据容器中的第一数据容器,以及
在所述第一数据容器在所述存储器中时,将所述压缩版本的数据页面写入到所述第一数据容器中。
19.根据权利要求18所述的方法,进一步包括:
基于所述第一数据容器的空闲空间的改变量来更新所述跟踪信息。
20.根据权利要求18所述的方法,其中选择所述第一数据容器包括:基于所述跟踪信息,确定所述第一数据容器具有用于接收所述压缩版本的数据页面的足够空间。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/878,737 | 2018-01-24 | ||
US15/878,737 US20190227734A1 (en) | 2018-01-24 | 2018-01-24 | Tracking information related to free space of containers |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110096223A true CN110096223A (zh) | 2019-08-06 |
Family
ID=67298675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811589207.1A Pending CN110096223A (zh) | 2018-01-24 | 2018-12-25 | 与容器的空闲空间有关的跟踪信息 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20190227734A1 (zh) |
CN (1) | CN110096223A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10684922B2 (en) * | 2018-07-13 | 2020-06-16 | EMC IP Holding Company LLC | Enhanced data storage using compressed data |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7886124B2 (en) * | 2007-07-30 | 2011-02-08 | Oracle International Corporation | Method and mechanism for implementing dynamic space management for large objects |
US8312242B2 (en) * | 2008-10-30 | 2012-11-13 | Hewlett-Packard Development Company, L.P. | Tracking memory space in a storage system |
US20100153375A1 (en) * | 2008-12-16 | 2010-06-17 | Foundation For Research And Technology - Hellas (Institute Of Computer Science --Forth-Ics) | System and method for classifying and storing related forms of data |
US9712190B2 (en) * | 2015-09-24 | 2017-07-18 | International Business Machines Corporation | Data packing for compression-enabled storage systems |
-
2018
- 2018-01-24 US US15/878,737 patent/US20190227734A1/en not_active Abandoned
- 2018-12-25 CN CN201811589207.1A patent/CN110096223A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20190227734A1 (en) | 2019-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10846215B2 (en) | Persistent content in nonvolatile memory | |
KR102443600B1 (ko) | 하이브리드 메모리 시스템 | |
KR102434170B1 (ko) | 하이브리드 메모리 시스템 | |
KR20080021623A (ko) | 메모리 페이지 관리 | |
CN104461607A (zh) | 缓存引导数据的固态驱动器 | |
US20200301841A1 (en) | Hybrid memory system | |
US9703593B2 (en) | Apparatus and method for memory overlay | |
JP4921018B2 (ja) | 直接実行機能を提供するためのシステム、コンピュータシステム、方法およびプログラム | |
CN110597742A (zh) | 用于具有持久系统存储器的计算机系统的改进存储模型 | |
CN110096223A (zh) | 与容器的空闲空间有关的跟踪信息 | |
US7681009B2 (en) | Dynamically updateable and moveable memory zones | |
CN106407345A (zh) | 一种脏数据更新方法及装置 | |
US11392515B2 (en) | Cache architecture for a storage device | |
CN111435285B (zh) | 存储卷写数据方法、装置、电子设备及机器可读存储介质 | |
US20060101192A1 (en) | Systems and methods of nonvolatile memory management | |
JP2023531000A (ja) | サブトライデータ構造を有するトライデータ構造 | |
CN114237872A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190806 |
|
WD01 | Invention patent application deemed withdrawn after publication |