CN106557538A - 分层存储中的压缩采样 - Google Patents

分层存储中的压缩采样 Download PDF

Info

Publication number
CN106557538A
CN106557538A CN201610846836.2A CN201610846836A CN106557538A CN 106557538 A CN106557538 A CN 106557538A CN 201610846836 A CN201610846836 A CN 201610846836A CN 106557538 A CN106557538 A CN 106557538A
Authority
CN
China
Prior art keywords
data
memory area
storage
compression
result
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.)
Granted
Application number
CN201610846836.2A
Other languages
English (en)
Other versions
CN106557538B (zh
Inventor
A·M·考维雷斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seagate Technology LLC
Original Assignee
Seagate Technology LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seagate Technology LLC filed Critical Seagate Technology LLC
Publication of CN106557538A publication Critical patent/CN106557538A/zh
Application granted granted Critical
Publication of CN106557538B publication Critical patent/CN106557538B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/185Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

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)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及分层存储中的压缩采样。公开了一种用于在分层存储中进行数据引导的方法。在一个实施例中,该方法包括根据存取延迟将存储设备的存储区域进行排序。在一些实施例中,存储区域至少包括第一存储区域和第二存储区域。该方法包括在存储设备处识别第一数据,将第一数据的一部分通过压缩算法,以及分析将第一数据的该部分通过压缩算法的结果。在一些情况下,该结果包括与第一数据的该部分相关联的压缩节省的分数。如果该结果满足与第一存储区域相关联的阈值,则第一数据被存储在第一存储区域中。如果该结果满足与第二存储区域相关联的阈值,则第一数据被存储在第二存储区域中。

Description

分层存储中的压缩采样
发明内容
本文中的公开包括用于对与多层存储系统有关的数据进行压缩采样的方法和系统。在一个实施例中,该方法包括根据存储设备的多个存储区域的至少一个属性对多个存储区域排序。在一些情况中,多个存储区域的至少一个属性包括以下属性中的一个或多个:存储介质的类型、介质延迟(例如,存取时间、响应时间、查找时间、旋转延迟等)、可靠性、数据保持力、寻址能力(例如,字节、块、字等)、数据存储耐久性、介质耐久性、介质速率、写入速度、读取速度、持续写入速度、扇区开销时间、磁头切换时间、磁道切换时间、功率消耗、操作历史等等。在一些实施例中,多个存储区域可以至少包括第一存储区域和第二存储区域。该方法可以包括在存储设备处获得数据的采样、分析将数据的采样通过一个或多个压缩编解码器的结果、以及至少部分地基于分析将数据的采样通过一个或多个压缩编解码器的结果在多个存储区域中的一个存储区域中存储数据。一个或多个压缩编解码器可以包括一个或多个压缩算法、压缩编码器和/或压缩解码器。在一些情况中,所述结果可以包括与数据的采样相关联的压缩节省的分数。
在一个实施例中,方法可以包括在将数据的采样通过一个或多个压缩算法之前或与将数据的采样通过一个或多个压缩算法并行地,将采样通过数据热度检测算法以检测数据的一个或多个方面。在一些情况中,方法可以包括:将数据的采样通过第一压缩算法,同时将数据的采样通过不同于第一压缩算法的第二压缩算法;在将数据的采样通过第一和第二压缩算法的同时将采样通过热度检测算法;分析将数据的采样通过第一和第二压缩算法以及热度检测算法的结果;以及关于分析的过去的结果的历史来分析所述结果。在一些实施例中,方法可以包括至少部分地基于分析来识别数据的类型。
在一些实施例中,当至少部分地基于将采样通过数据热度检测算法来确定数据更可能是元数据时,方法可以包括将数据的采样通过一个或多个压缩编解码器中的一个压缩编解码器一次。当至少部分地基于将采样通过数据热度检测算法来确定数据更可能不是元数据时,方法可以包括将数据的采样通过一个或多个压缩编解码器两次或更多次。在一些实施例中,当确定数据更可能是元数据时,方法可以包括使用为元数据优化的压缩码和/或输出编码(例如,Huffman码或其他码等)来压缩数据。
在一个实施例中,方法可以包括至少部分地基于将数据的采样通过一个或多个压缩编解码器的结果来检测与数据相关联的文件系统类型,以及基于检测到的文件系统类型选择压缩算法以压缩数据。方法可以包括至少部分地基于检测到的文件系统类型将数据引导到多个存储区域中的一个。在一些情况中,方法可以包括基于从先前将采样通过一个或多个压缩编解码器而学习到的数据模式来绕过热度检测和压缩采样中的至少一个。
在一个实施例中,方法可以包括同时分析数据的多个、不同的采样。分析数据的多个采样包括将多个采样通过对每个采样使用不同的压缩算法的一个或多个压缩编解码器。在一些实施例中,方法可以包括同时分析数据的同一采样的多个拷贝。所述分析可以包括将数据的同一采样的多个拷贝通过两个或更多个不同的压缩算法,采样的每个拷贝采用一个算法。在一些情况中,方法可以包括至少部分地基于多个采样的分析来将数据引导到多个存储区域中的一个存储区域。
在一个实施例中,存储设备包括硬盘驱动器(HDD)的阵列并且方法可以包括确定HDD的阵列中的哪个盘是活跃的(例如,哪个盘正在活跃地旋转)以及哪个盘是不活跃的(例如,哪个盘旋转减慢(spundown))。在一些情况中,方法可以包括朝着HDD的阵列中的一个或多个活跃的盘引导采样数据,而绕过HDD的阵列中的一个或多个不活跃的盘,以避免与不活跃的盘中旋转减慢的盘相关联的延迟。在一些情况中,方法可以包括从HDD的阵列中的一个或多个活跃的盘中对数据采样,然而绕过从HDD的阵列中的一个或多个不活跃的盘中对数据采样。在一个实施例中,存储设备可以包括至少一个叠瓦式(shingled)存储区域和至少一个非叠瓦式存储区域。当至少部分地基于将数据的采样通过一个或多个压缩编解码器而确定数据的采样满足低可压缩性阈值时,方法可以包括在叠瓦式存储介质中存储数据。当至少部分地基于将数据的采样通过一个或多个压缩编解码器而确定所采样的数据满足高可压缩性阈值时,方法可以包括在非叠瓦式存储介质中存储数据。在一些情况中,方法可以包括当新数据被接收以待写入到存储设备中时实时地对新数据采样。
在一些实施例中,本系统和方法可以包括根据多个存储区域的至少一个属性对存储设备的存储区域进行排序。在一些情况中,存储区域至少包括相对低延迟的存储区域和相对高延迟的存储区域。在一些实施例中,存储区域可以至少包括第一存储区域和第二存储区域。方法可以包括在存储设备处识别第一数据、将第一数据的一部分通过压缩算法、以及分析将第一数据的部分通过压缩算法的结果。在一些情况中,结果可以包括与第一数据的部分相关联的压缩节省的分数。压缩节省可以是百分比。例如,压缩节省可以被定义为(1-(压缩后的大小/原来的大小))*100。如果结果满足与第一存储区域相关联的阈值,则第一数据可以被存储在第一存储区域中。如果结果满足与第二存储区域相关联的阈值,则第一数据可以被存储在第二存储区域中。在一个实施例中,压缩节省的分数包括在压缩节省的范围之间的值。例如,如在数学上的定义压缩节省的范围可以是从0%到100%的节省。
在一些情况中,存储设备包括基于对象的存储设备。因此,第一数据可以包括数据对象。在一个实施例中,方法可以包括将数据对象的至少一部分通过压缩算法以及分析将数据对象的至少一部分通过压缩算法的结果。因此,结果可以包括与数据对象相关联的压缩节省的分数。
在一些实施例中,存储设备可以包括基于块的存储设备。因此,第一数据的部分可以包括至少部分地基于自适应数据采样标准选出的数据块。在一些情况中,存储设备包括至少一个硬盘驱动器、至少一个固态驱动器存储区域和/或至少一个随机存取存储器(RAM)存储区域。在一个实施例中,至少一个硬盘驱动器包括相对低延迟的盘存储区域和相对高延迟的盘存储区域。
在一些实施例中,方法可以包括在将第一数据存储在第一存储区域中之后接收第二数据。当确定对第二数据的分析指示比第一数据低的压缩节省的分数时,方法可以包括将第一数据移动到第二存储区域并且在第一存储区域中存储第二数据。例如,在第一存储区域中第一数据可以被第二数据替换并且第一数据可以被迁移到第二存储区域。当确定对第二数据的分析指示比第一数据低的可压缩性的分数时,方法可以包括将第一数据保持在第一存储区域中并且在第二存储区域中存储第二数据。
在一些实施例中,方法可以包括:分析第一数据的部分,该部分至少部分地基于时序数据热度算法对热度的确定;以及对比来自时序数据热度算法分析的结果与压缩算法分析的结果。当确定各分析的结果相关时,方法可以包括根据压缩算法分析的结果存储第一数据。当确定各分析的结果不相关时,方法可以包括修改时序数据热度算法以与压缩算法分析相关。在一些情况中,可以基于各分析的结果未能相关来修改放在热度算法结果上的重要性权重。在一些情况中,方法可以包括同时提取第一数据的多个压缩采样以及使多个压缩采样通过一组不同的压缩算法。在一些情况中,多个压缩采样可以包括同一采样的多个拷贝。
还描述了一种用于在分层存储中压缩采样的装置。在一个实施例中,装置可以包括处理器、与处理器进行电子通信的存储器以及存储在存储器中的指令,这些指令可由处理器执行以进行根据存储设备的多个存储区域的至少一个属性对多个存储区域排序的步骤。在一些情况中,多个存储区域的至少一个属性包括以下属性中的一个或多个:存储介质的类型、介质延迟(例如,存取时间、响应时间、查找时间、旋转延迟等)、可靠性、数据保持力、寻址能力、介质耐久性、介质速率、写入速度、读取速度、持续写入速度、扇区开销时间、磁头切换时间、磁道切换时间、功率消耗、操作历史等等。在一些实施例中,多个存储区域可以至少包括第一存储区域和第二存储区域。在一些实施例中,指令可由处理器执行以进行以下步骤:在存储设备处获得数据的采样;分析将数据的采样通过一个或多个压缩编解码器的结果;以及至少部分地基于分析将数据的采样通过一个或多个压缩编解码器的结果,在多个存储区域中的一个存储区域中存储数据。在一些情况中,结果可以包括与数据的采样相关联的压缩节省的分数。
在一个实施例中,装置可以包括处理器、与处理器进行电子通信的存储器以及存储在存储器中的指令,这些指令可由处理器执行以进行根据存储设备的多个存储区域的至少一个属性对存储区域排序的步骤。在一些情况中,存储区域至少包括相对低延迟的存储区域和相对高延迟的存储区域。在一些实施例中,存储区域可以至少包括低延迟的第一存储区域和具有不同的延迟等级(例如,相对较高的延迟)和/或将其与第一区域区别开的另一属性(诸如数据吞吐率、存储介质耐久性、寻址能力等)的第二存储区域。方法可以包括在存储设备处识别第一数据、将第一数据的一部分通过压缩算法以及分析将第一数据的部分通过压缩算法的结果。在一些情况中,结果可以包括与第一数据的部分相关联的压缩节省的分数。如果结果满足与第一存储区域相关联的阈值,则第一数据可以被存储在第一存储区域中。如果结果满足与第二存储区域相关联的阈值,则第一数据可以被存储在第二存储区域中。
还描述了一种非暂态计算机可读介质。非暂态计算机可读介质可以存储计算机可执行的代码,代码可由处理器执行以进行根据存储设备的多个存储区域的至少一个属性对多个存储区域排序的步骤。在一些情况中,多个存储区域的至少一个属性包括以下属性中的一个或多个:存储介质的类型、介质延迟(例如,存取时间、响应时间、查找时间、旋转延迟等)、可靠性、耐久性、数据保持力、寻址能力、介质耐久性、介质速率、写入速度、读取速度、持续写入速度、扇区开销时间、磁头切换时间、磁道切换时间、功率消耗、操作历史等等。在一些实施例中,多个存储区域可以至少包括第一存储区域和第二存储区域。在一些实施例中,指令可由处理器执行以进行以下步骤:在存储设备处获得数据的采样;分析将数据的采样通过一个或多个压缩编解码器的结果;以及至少部分地基于分析将数据的采样通过一个或多个压缩编解码器的结果,在多个存储区域中的一个存储区域中存储数据。在一些情况中,结果可以包括与数据的采样相关联的压缩节省的分数。
在一些实施例中,非暂态计算机可读介质可以存储计算机可执行的代码,代码可由处理器执行以进行根据存储设备的多个存储区域的至少一个属性对存储区域排序的步骤。在一些情况中,存储区域至少包括相对低延迟的存储区域和相对高延迟的存储区域。在一些实施例中,存储区域可以至少包括第一存储区域和第二存储区域。方法可以包括在存储设备处识别第一数据、将第一数据的一部分通过压缩算法以及分析将第一数据的部分通过压缩算法的结果。在一些情况中,结果可以包括与第一数据的部分相关联的压缩节省的分数。如果结果满足与第一存储区域相关联的阈值,则第一数据可以被存储在第一存储区域中。如果结果满足与第二存储区域相关联的阈值,则第一数据可以被存储在第二存储区域中。
以上所述大体上概述了根据本公开的示例的特征和技术优点以便于下面的详细描述可以被更好的理解。下文将描述附加的特征和优点。可以容易地利用所公开的概念和具体示例作为用来修改或设计执行本公开的相同目的的其他结构的基础。这样的等价结构不脱离所附权利要求的范围。当与附图结合考虑时,从下面的说明书中将更好地理解本文所公开的概念的特征(包括它们的组织和操作的方法)以及相关联的优点。仅出于说明和描述的目的提供了附图中的每张图,它们不是权利要求的限制的定义。
附图说明
通过参照下面的附图可以实现对本公开的性质和优点的进一步理解。在附图中,相似的部件或特征可以具有相同的附图标记。此外,可以通过在第一附图标记后接一个破折号以及可以在相似的部件之间进行区分的第二标记来区分相同类型的各个部件。然而,对于各个部件(包括具有破折号和第二附图标记的部件)所讨论的特征适用于其他相似的部件。如果说明书中只使用了第一附图标记,则描述适用于具有相同第一附图标记的相似的部件中的任何一个部件,而不管第二附图标记如何。
图1是根据各个实施例的系统的示例的框图;
图2是根据各个实施例的模块的示例的框图;
图3示出了根据本公开的各个方面的装置的框图;
图4示出了根据本公开的各个方面的序列图;
图5是示出了根据本公开的各个方面的方法的示例的流程图;
图6是示出了根据本公开的各个方面的方法的示例的流程图;
图7是示出了根据本公开的各个方面的方法的示例的流程图;
图8是示出了根据本公开的各个方面的方法的示例的流程图。
具体实施方式
下文一般涉及分层存储设备和系统中的压缩采样。较高的压缩比是某些存储系统中与数据内容相关的系统元数据的区别特性。如本文所描述的,出于达到各个系统要求的目的,系统可以对数据的压缩比采样以便于帮助确定采样数据的优化管理。在一些实施例中,所提出的实施例不像在现有技术中那样以压缩形式存储数据。而是出于提高性能、可靠性和功率特性的目的,系统可以使用采样压缩属性来最优地引导未压缩的数据。在一些情况中,系统可以使用当前压缩采样来确定采样数据和空间上或时间上的本地数据的属性,诸如数据热度(即,未来存取的预期频率,数据越热则存取越频繁)。在一些情况中,系统可以使用当前压缩比采样以及压缩比的先前历史来确定采样数据的属性。确定的数据的属性可以包括数据热度、数据热度改变的速率、数据热度方向改变的速率、数据是否已经被压缩、零熵、重复等等。系统可以对将被存储在存储系统中的输入数据和/或已经在任何层被存储在存储系统中的数据进行采样。
在一个实施例中,示例多层存储设备可以包括NAND闪存驱动器和一个或多个磁盘。在一个构造中,一个或多个磁盘中的至少一个磁盘包括叠瓦式磁记录(SMR),并且一个或多个磁盘中的至少一个磁盘包括非叠瓦式存储。在一些情况中,来自一个或多个磁盘的同一磁盘采用SMR和非叠瓦式存储二者。附加地或者可替代地,来自一个或多个磁盘的磁盘中的一个磁盘采用SMR,而闪存驱动器和/或来自一个或多个磁盘的磁盘中的一个不同的磁盘采用非叠瓦式存储。在一些实施例中,多层存储设备可以包括硬盘驱动器存储、叠瓦式磁记录(SMR)硬盘驱动器、常规磁记录(CMR)硬盘驱动器、固态存储、非易失性RAM存储等的任何组合。多层存储设备可以包括以下属性中的一个或多个属性:
在一个实施例中,压缩采样可以对正在被采样的数据自适应。例如,在一些实施例中何时以及何处发生采样的方法可以根据频率(例如,每单位时间的采样等)变化。附加地或可替代地,采样可以根据空间密度(例如,每块地址范围(例如,每千位二进制字节(KiB)、每百万位二进制字节(MiB)等)的采样、每个对象、每个文件等)变化。压缩采样可以或者被现有的数据热度检测算法增强或促进,或者被用于验证数据热度检测算法的有效性。系统可以基于由数据的可压缩性指示的所检测到的数据的热度来在数据存储层之间引导输入数据。系统还可以基于一个或多个压缩采样的结果异步地在层之间移动数据。数据在任何两层之间的移动可以提供(用可能不同的压缩算法)执行另一采样或初始采样的机会。
高数据热度指示相对高或增加的数据存取频率。数据热度在读取和写入类别之间通常是分化的。热数据可以包括频繁存取的数据,而冷数据包括很少存取的数据。冷数据可以是不频繁存取的数据(例如,每年一次或者更少等),热数据可以是频繁存取的数据(例如,一天若干次等),而温数据可以是间歇存取的数据(例如,一天一次、一周一次、一个月一次等)。数据热度可以从冷(例如,写入一次,从不读取)到热(例如,相同的地址每350毫秒写入)在数据热度的连续范围中被测量。对于某个系统的观察到的自然工作负载,数据热度可以被推测为与数据熵具有反向关系。在一个示例中,冷数据可以包括用户可能观看了一次(或者在一些情况中从不观看)的特定电影文件(例如,MPEG压缩文件)或者用户保存并且很少再次查看的照片(例如,JPEG压缩文件)。在一些实施例中,数据热度可以通过用于与数据相关联的压缩比的采样来确定。因此,在一些情况中,可以基于在从主机进行转移、或者在从存储器到存储之间或从第一存储层到第二存储层等进行转移的期间数据被采样时数据可压缩的程度,来确定数据是写热的或者读热的。
在一些实施例中,数据可以被采样以确定数据是否在一个或两个或者更多个可压缩性范围内。例如,指示数据在最低的可压缩性范围内或者指示数据具有负的压缩节省的采样可以被存储在高延迟数据层(例如,高延迟叠瓦式介质、多层存储设备中的高延迟硬盘驱动器等)。例如,MPEG和JPEG文件格式(通常为使用有损编解码器编码的高度压缩文件)具有高的熵,它们指示冷“内容”数据,并且因此可以被存储在较高延迟的层中。指示数据落入中等范围内的采样可以被存储在中等速度层(例如,非叠瓦式介质、固态驱动器等)中,而指示数据落入最高可压缩性范围内的采样可以被存储在低延迟非易失性存储层(例如,固态驱动器、高-RPM硬盘驱动器、自旋转移矩磁性随机存取存储器(STT-MRAM)、电阻式随机存取存储器(ReRAM)、相变存储器、电池支持的动态读取存储器(NVRAM)存储设备)中。在一些情况中,数据的读热度属性vs.写热度属性可以影响存储介质/层的选择。
注意到在联网的存储系统中的内容可以被存储在纠删编码存储系统中而不是RAID存储系统中。在一个实施例中,系统可以确定数据的可压缩性以将文件系统和OS元数据(例如,Linux EXT4中的索引节点(Inode)或者Windows注册表)与内容(例如,用户数据、用户文件等)区分开。在一些情况中,压缩比和系统元数据之间的关联性越强,识别系统元数据可能所需要的采样的数量越少。在高压缩比和系统元数据之间存在强的关联性的情况下,单个采样可以识别系统元数据并且基于该单个采样将数据引导到层,从而降低做决策过程的延迟以及降低缓冲的需要。在一个实施例中,数据热度检测算法可以在压缩采样之前被使用,以在确定数据的可压缩性之前识别数据的一个或多个方面。例如,数据热度检测可以在确定数据采样的可压缩性之前确定数据采样是元数据的可能性。替代地,压缩采样结果可以送入工作负载或热度检测算法中。在一些实施例中,可以提取单个采样。例如,被确定为更可能是元数据的数据可以被采样一次。被确定为较少可能是元数据的数据可以被采样两次或更多次。
由热度检测确定为可能是元数据的数据可以接着经受不同的压缩算法和/或输出编码,该压缩算法和/或输出编码是对于元数据是非常适合的。因此,元数据可以以压缩形式或者以非压缩形式存储。如果元数据以压缩形式存储,则优化的压缩算法的选择可以提供显著的优点。例如,霍夫曼(Huffman)编码的效率从关于数据流中特定字符和字符串的概率的某些任意选择中受益。随着时间推移,利用压缩采样,对某些数据特别优化的Huffman码可以被构建、维护并应用到使用压缩采样的方法识别的数据。在一个实施例中,Huffman码可以被定制以压缩某些类型的文件。例如,在经由热度检测识别元数据之后,针对元数据定制的Huffman码可以被用于压缩元数据。然后压缩的元数据可以被存储。
某些文件系统的属性的检测是压缩采样的另一个有用的结果。例如,EXT4是与诸如XFS和Butter FS之类的其他Linux文件系统显著不同的Linux文件系统。使用压缩采样的文件系统的识别实现了基于检测到的文件类型调整要应用的压缩算法、基于检测到的文件类型将数据引导到特定层、基于检测到的文件类型实施层/高速缓存替换策略、和/或在由于先前发生的关于文件系统布局的机器学习而不再使用采样或热度检测的情况下进行盲引导。例如,系统可以基于在之前的采样期间收集的信息(诸如文件源信息、源位置、目的地目标位置、文件大小等)来学习与数据相关联的文件系统类型。
在一个实施例中,可以实时地提取和分析压缩采样(例如,当数据被接收以待写入到存储设备时)。在一个实施例中,可以用一组不同的压缩算法同时提取多个压缩采样,并且基于相关结果,可以做出关于数据的推断,从而通过更精细地区分系统中的不同的数据类型来实现更细粒度的引导。在一些实施例中,可以同时提取多个压缩采样。多个压缩采样可以通过一组不同的压缩算法。在一个实施例中,多个压缩采样可以是包括多个文件的一组数据的采样。附加地或可替代地,多个压缩采样可以是作为单个文件的一部分的数据的采样。在一些实施例中,多个采样可以包括同一采样的多个拷贝。在一个实施例中,采样可以按照一个采样对应一个算法的模式通过算法。例如,多个压缩采样中的第一压缩采样可以通过一组不同的压缩算法中的第一压缩算法,多个压缩采样中的第二压缩采样可以通过一组不同的压缩算法中的第二压缩算法,等等。附加地或可替代地,每个采样可以通过一组不同的压缩算法中的全部压缩算法。例如,多个压缩采样中的第一压缩采样可以通过一组不同的压缩算法中的第一、第二、第三等压缩算法,等等。
在一些实施例中,可以按照离线的方式提取和分析压缩采样。在一些情况中,可以使用诸如批处理之类的执行模式或者与其他工作或采样并行地来完成延迟的压缩采样。一旦从数据采样中确定了数据的属性,则数据可以被管理、迁移和存储,以使得存储系统的整体性能、延迟、可靠性、耐久性或其他特性可以被优化。
当系统元数据与内容(例如,照片文件、电影文件、财务数据、文档、纠删编码分布式文件系统对象等)区分开时,进行区分的能力为存储系统提供了优点。例如,可以使得设备或系统能够利用关于自然的或典型的工作负载的性质的更加广泛的信息做出较优化的选择。由这些选择产生的附加的优点可以包括较高的设备可靠性、较高的设备性能、较低的功率消耗等。例如,考虑计算机系统中的固态混合驱动器(SSHD)。SSHD是“多层的”存储设备,因为它包括不同的持久存储介质(例如,磁盘、闪速存储器、电支持的DRAM等),每个存储介质具有对于数据存取的根本不同的属性,主要是低vs.高数据存取延迟(对于读和写可以不同)、耐久性、保持力、寻址能力,从而构成SSHD内的存储“层”。多层存储系统的另一示例是分布式存储系统中的存储节点,它经常出现在云存储系统中。
例如在“簇”中的每个存储节点包括具有网络连接和套接字、面向网络的中间件、应用层、存储中间件/文件系统和一定量的持久存储的网络设备。这样的存储系统可以包含低延迟固态驱动器(SSD)、中等延迟硬盘驱动器(HDD)和高延迟HDD的混合的形式的层。在一些情况中,系统可以包括诸如磁性RAM或电池支持的DRAM(NV-RAM)之类的非易失性(NV)存储器和电池支持的静态RAM(SRAM)中的一个或多个。在客户端和云系统中,通过主机接口到达单独的存储设备的数据可以主要被筛选为两种类型:元数据和内容。元数据可以包括操作系统数据和描述内容的数据。内容可以包括依赖于客户端系统的使用和应用的任何类型的数据。内容通常占用存储系统的容量利用的大部分,并且通常并且越来越多地在某种程度上被压缩、加密和/或纠删编码。另一方面,在这样的网络设备中,本地元数据通常是高度可压缩的,因为本地元数据不要求安全性或昂贵的网络带宽。一个例外可以包括RAID系统,在RAID系统中存储阵列的子集包括的“奇偶驱动器(parity drive)”,在奇偶驱动器中奇偶校验数据(即,元数据)可以具有相对高的熵并且因此已经可以在某种程度上被压缩。另一个例外可以包括相对可压缩的内容。可压缩内容的示例可以包括财务交易数据、文本文档等。然而,内容越来越少地被加密和/或压缩,特别是当处理诸如云存储之类的分布式数据系统时。具有大量空格的高度可压缩的文本文件可以成为高熵的,并且因此在加密后具有相对低的可压缩性。另外,财务记录在通过网络传输之前通常被压缩和/或加密。因此,即使对于可压缩内容,在分布式存储系统中可能也没有在应用层处执行压缩。
在一个实施例中,到存储系统的输入数据针对其压缩比而被采样。取决于压缩硬件拓扑和对于功率和性能的要求,采样被在线或离线执行。压缩信息被存储在适合于目的的数据结构中。压缩采样的频率和丰富度取决于若干因素,诸如存储器要求和性能等。附加的工作负载元数据(例如数据热度)可以被用于确定采样配置以及对于采样数据的最优层目的地。层之间的区分被用于在例如低延迟vs.高延迟存储设备和/或长保持力(盘)vs.低保持力(NAND闪存)存储设备之间引导数据。得到的存储系统是面对可能不一致的或有挑战性的主机工作负载,可以更准确地将系统元数据与内容区分开的存储系统。
作为示例,可以每1MiB地址空间采样单个512B块。存储系统可以接收500个4KiB的文件。第一采样指示高可压缩性,因此包括500个4KiB的文件的第一半的整个1MiB的第一采样可以被发送到相对低延迟的存储区域(例如,SSD)。即使第一组240个文件中的一些文件是不可压缩的(例如,JPEG文件),至少一些可压缩的文件也被放置在低延迟存储区域中。对包括500个4KiB的文件的第二半的第二组1MiB的数据的采样可能指示低可压缩性,因此整个1MiB的第二采样可以被发送到相对高延迟的存储区域(例如,HDD)。同样,即使第二组240个文件中的一些文件是可压缩的(例如,未压缩文本或财务文档),至少一些不可压缩的文件也被放置在高延迟存储区域中。
在一些实施例中,在所有存储文件或对象之间的可压缩性的分布可以被追踪。可压缩性最高的那些文件可以被存储在相对低延迟的存储区域(例如,SSD)中,而可压缩性最低的那些文件可以被存储在相对高延迟的存储区域(例如,HDD)中。当接收到新数据时,分布可以被更新。如果新数据与相对低延迟存储中的数据中的大部分数据相比更可压缩,则存储在相对低延迟存储区域中的可压缩数据中的至少一些数据可以被移动到相对高延迟存储,并且新数据可以被存储在相对低延迟存储区域中。如果新数据与相对高延迟存储区域中的数据中的大部分数据相比更可压缩,则存储在相对高延迟存储区域中的较少压缩的数据的可以被移动到相对低延迟存储,并且新数据可以被移动到高延迟存储区域。在一些情况中,新数据可以被存储在高延迟存储区域中而不用移动已经存储的数据中的任何数据。一般这些策略被称为高速缓存替换策略。在这里,它们可以可替代地被称为层替换。
图1是根据本公开的各个方面的系统100的示例。在一些实施例中,系统100可以包括一个或多个设备105、110、115、125和网络120。设备105可以经由有线或无线通信链路145与客户端计算设备110、115、125或网络120中的一个或多个进行通信。网络120可以使得设备105、110、115和/或125能够经由有线或无线通信链路145通信。在替代实施例中,网络120可以与设备105、110、115和/或125中的任何一个设备集成,以使得每个设备可以直接与其他设备中的一个设备通信,诸如设备105使用无线和/或有线连接直接与设备110通信。
设备105可以包括数据引导模块130、应用135和一个或多个存储设备(例如,存储设备140)。设备105的示例可以包括数据服务器、存储服务器、基于对象的存储服务器、诸如笔记本或台式机之类的个人计算设备和/或移动计算设备。在一些实施例中,设备105可以包括用于存储设备140的控制器。例如,存储设备140可以包括由设备105控制的一个或多个硬盘驱动器。客户端计算设备110、115、125可以包括被配置为结合网络120与设备105、数据引导模块130、应用135和/或存储设备140交互的定制计算实体。在其他实施例中,客户端计算设备110、115、125可以包括计算实体,诸如可操作以发送和接收信号、存储和检索数据和/或执行模块的个人计算设备、桌上型计算机、膝上型计算机、上网本、平板个人计算机、控制面板、指示器面板、智能电话、移动电话和/或任何其他合适的设备。在一些实施例中,设备110、115和/或125可以远离设备105安置。附加地或可替代地,设备110、115和/或125中的一个或多个设备可以对于设备105是本地的。
在一些实施例中,设备105和存储设备140可以是分布式数据系统的一部分。例如,设备105和存储设备140可以是分布式数据系统的节点160的一部分。节点160可以包括一个或多个web服务器、数据库服务器、网络API、数据库连接中间件。在一些情况中,节点160可以利用开放式系统互联模型(OSI模型)中的层1-7中的一层或多层。节点160可以提供网络安全、网络连接性、网络应用功能。在一些实施例中,节点160可以在数据库管理系统与提供套接字接口的软件和/或服务(例如,web应用、基于web的服务等)之间提供套接字级别的连接性,从而实现数据的实时直接交换。
存储设备140可以包括一个或多个存储驱动器。在一些情况中,存储设备140可以包括一个或多个基于对象的存储驱动器。存储设备140的示例包括硬盘驱动器、固态驱动器、混合驱动器(例如,与固态驱动器结合的硬盘驱动器)和/或动态随机存取存储器(DRAM)驱动器中的一个或多个。存储层可以包括磁阻RAM(MRAM)、电阻RAM(ReRAM)、铁电RAM(FerroRAM)、相变存储器(PCM)等中的至少一个。存储设备140可以包括两个或更多个存储层。例如,如图所示,存储设备140可以包括层1 150直到层n 155。存储层150到155可以包括作为存储层的硬盘驱动器、作为存储层的固态驱动器和/或作为存储层的DRAM驱动器。在一些情况中,存储设备140可以包括一个或多个硬盘驱动器、一个或多个固态驱动器和/或一个或多个DRAM驱动器。在一个实施例中,DRAM驱动器包括电池以在DRAM驱动器的主电源被移除时将数据备份到DRAM驱动器。在一些情况中,存储驱动器可以被分成两个或更多个存储层。例如,硬盘驱动器可以被分成低延迟层和高延迟层。高延迟层和低延迟层的延迟可以基于特定记录技术的延迟(例如,使用传统磁记录来记录数据的低延迟vs.诸如热辅助磁记录或叠瓦式磁记录等之类的先进记录技术的较高延迟)。在一些情况中,高延迟层和低延迟层的延迟可以基于驱动器设置(例如,以全速旋转的盘的较低延迟vs.以低于全速旋转的盘的较高延迟等)。
设备105、110、115和125可以包括存储器、处理器、输出装置、数据输入装置和通信模块。处理器可以是通用处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、数字信号处理器(DSP)和/或类似物。处理器可以被配置为从存储器中检索数据和/或写入数据到存储器。存储器可以是例如随机存取存储器(RAM)、存储器缓冲区、硬盘驱动器、数据库、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、只读存储器(ROM)、闪速存储器、硬盘、软盘、云存储和/或等等。在一些实施例中,客户端计算设备110、115、125和/或设备105可以包括与执行应用相关联的一个或多个基于硬件的模块(例如,DSP、FPGA、ASIC)和/或基于软件的模块(例如,在存储器处存储并且在处理器处执行的计算机代码的模块、可以在存储器处存储并且在处理器处执行的一组处理器可读指令),例如数据引导模块130。在一些情况中,数据引导模块130可以与执行诸如应用135之类的应用相关联。尽管应用135被描绘为在设备105上,但是应用135或类似的应用可以在设备110、115和/或125上。数据引导模块130和/或应用135可以允许设备105使得客户端计算设备110、115和/或125中的至少一个能够与设备105建立连接。例如,结合数据引导模块130和/或应用135,设备105可以从客户端设备(例如,设备110、115和/或125)接收数据、分析接收到的数据并且基于分析将数据存储在从层150到层155n的存储层中的一个。
网络120的示例包括云网络、局域网(LAN)、广域网(WAN)、虚拟专用网络(VPN)、个人局域网、近场通信(NFC)、电信网络、无线网络(例如,使用802.11)和/或蜂窝网络(例如,使用3G和/或LTE),等等。在一些配置中,网络120可以包括互联网和/或内联网。设备105、110、115和/或125可以经由无线通信链路145通过网络120接收和/或发送信号。在一些实施例中,用户可以访问客户端计算设备110、115、125的功能。附加地或可替代地,用户可以从设备105访问客户端计算设备110、115、125的功能。例如,在一些实施例中,设备105可以包括与客户端计算设备110、115和/或125的一个或多个功能交互的移动应用(例如,应用135)。
图2示出了数据引导模块130-a的框图200。数据引导模块130-a可以包括一个或多个处理器、存储器和/或一个或多个存储设备。数据引导模块130-a可以包括排序模块205、数据模块210、分析模块215和分配模块220。数据引导模块130-a可以是图1的数据引导模块130的一个示例。示出的部件中的每个部件可以彼此通信。
在一个实施例中,排序模块205可以根据多个存储区域的至少一个属性对存储设备的多个存储区域进行排序。例如,存储区域可以包括多种类型的存储介质,包括叠瓦式磁记录磁盘、非叠瓦式磁盘、非易失性闪存介质(例如,NAND闪存介质、NOR闪存介质等)、电池支持的DRAM等。因此,存储区域可以通过其进行排序的属性可以包括数据存取延迟(例如,闪存介质的数据存取延迟可以比磁盘快2-3个数量级等)、介质耐久性(例如,HDD比SSD更耐久等)、操作历史等。在一些情况中,多个存储区域可以至少包括第一存储区域和第二存储区域。在一些情况中,存储设备包括一个或多个硬盘驱动器存储区域、一个或多个固态驱动器存储区域和/或一个或多个随机存取存储器(RAM)存储区域中的至少一种。在一些实施例中,多个存储区域可以至少包括相对低延迟的存储区域和相对高延迟的存储区域。例如,低延迟存储区域可以包括固态驱动器存储区域而高延迟存储区域可以包括硬盘驱动器存储区域。在一些情况中,多个存储区域可以包括至少三个存储区域,诸如最低延迟存储区域、一个或多个中等延迟存储区域和最高延迟存储区域。最低延迟存储区域可以包括非易失性RAM存储区域,下一最低延迟存储区域可以包括固态驱动器存储区域,下一最低延迟存储区域可以包括非叠瓦式硬盘驱动器,而最高延迟存储可以包括叠瓦式磁记录(SMR)硬盘驱动器。在一些实施例中,该至少一个硬盘驱动器存储区域可以包括低延迟盘存储区域和高延迟盘存储区域。因此,在一些情况中,最高延迟存储区域可以包括本地低延迟存储区域和本地高延迟存储区域。附加地或可替代地,最低延迟存储区域、下一最低延迟存储区域等可以各自包括两个或更多个存储区域,诸如本地低延迟存储区域和本地高延迟存储区域等。在一些情况中,硬盘驱动器存储区域可以采取两个或更多个记录技术。例如,硬盘驱动器存储区域可以采取常规的磁记录以及叠瓦式磁记录和/或热辅助磁记录。在一些实施例中,存储设备可以仅包括硬盘驱动器,并且存储设备的存储区域可以基于在硬盘驱动器上采用的记录技术被配置。例如,使用常规磁记录进行记录可以具有与使用叠瓦式磁记录和/或热辅助磁记录进行记录相比更低的延迟。因此,使用常规磁记录来存储数据可以被指定为在低延迟存储区域中记录,使用叠瓦式磁记录来存储数据可以被指定为在中等延迟存储区域中记录,而使用热辅助磁记录来存储数据可以被指定为在高延迟存储区域中记录数据。
在一个实施例中,数据模块210可以在存储设备处识别数据。该数据可以是在存储设备处接收的,和/或已存储在存储设备处的数据。例如,该数据可以是存储在存储设备的层中的数据。该数据可以是存储在存储设备处的存储器或缓存中的数据等。在一些情况下,存储设备可以包括基于对象的存储设备(例如存储设备140)。因此,在一些实施例中,数据可以包括数据对象。与诸如将数据作为文件层次来管理的文件系统或者将数据作为扇区和轨道内的块来管理的块存储系统之类的其他存储架构相反,基于对象的存储设备可以将数据作为对象来管理。因此,基于对象的存储系统可以将数据组织为大小灵活的数据容器(称为对象),而不是提供读取和写入固定大小的数据块的面向块的接口。对象可以包括数据、可变数量的元数据以及全局唯一标识符。在一些情况下,基于对象的存储系统可以将文件元数据与文件数据分离。对象可以包括文件数据,并且该对象可以与和对象分离的元数据相关联,该元数据描述该对象及其文件数据。在一些情况下,基于对象的存储设备可以连接到互联网,并且可以基于与对象相关联的全局唯一标识符(GUID)来追踪数据,每一个对象具有一个GUID。附加地或替代地,存储设备可以包括基于块的存储设备。因此,在一些实施例中,数据的一部分可以包括至少部分地基于自适应的数据采样标准所选择的数据块。
在一些实施例中,分析模块215可以基于预定的采样频率对数据进行采样(例如在对基于块的数据进行采样时)。在一些情况下,采样标准可以自适应于所检测到的数据热度。例如,可以针对一组数据执行数据热度算法。数据热度算法可以检测出该组数据内数据热度相对较高的区域和数据热度相对较低的区域。分析模块215可以基于所检测到的数据热度来调节采样频率。例如,分析模块215可以针对所检测到的热度来修改采样标准(例如,对具有高热度的数据增加采样和/或对具有低热度的数据增加采样等)。在一些情况下,分析模块215可以基于逻辑地址密度和热加速度对数据进行采样。分析模块215可以对被检测到比其他逻辑地址相对更快地变热的逻辑地址进行采样和/或增加采样。
在一个实施例中,分析模块215可以将数据的至少一部分通过压缩算法。通过算法的该部分可以包括单个数据块、两个或更多数据块或者整个文件。在一些实施例中,分析模块215可以从若干可用的压缩算法中选择压缩算法,并且将所接收的数据的部分通过所选择的压缩算法。分析模块215可以分析将第一数据的部分通过压缩算法的结果。在一些情况下,该结果可以包括与第一数据的该部分相关联的压缩节省的分数。在一个实施例中,压缩节省的分数可以包括包含0%节省到100%节省的压缩节省的范围。如果所分析的第一数据的采样收到0%节省分数,则第一数据可以被标识为被完全压缩的,其中不可能有进一步的可压缩性。如果该采样收到100%节省分数,则第一数据可以被标识为完全可压缩的。
在一些实施例中,第一数据可以包括数据对象。分析模块215可以将数据对象的至少一部分通过压缩算法,并且分析将数据对象的该部分通过压缩算法的结果。分析的结果可以包括与该数据对象相关联的压缩节省的分数。如上面所指示的,单个数据对象可以与单个文件相关联。因此,分析模块215可以确保通过一次分析一个对象来一次分析一个文件,并且因此分析模块215可以确切地确定与所分析的数据对象相关联的可压缩性分数是与单个文件相关联的。相反地,当块式数据被采样时,采样大小可能与两个或更多的文件相关联。如果接收到100个文件,每一个长度为100KB到1MB,并且采样基于对每1MB数据来分析数据的一部分(例如对每1MB数据分析一个数据块),则1MB数据的每个采样可能包括一个文件或者两个或更多文件。从1MB数据所采样的特定部分可能指示所采样的数据是完全压缩的。然而,如果该采样包括两个或多个文件,则只有一个文件来自该1MB采样,包括被分析的部分的这一个文件可能是压缩的,而该1MB采样内的一个或多个不同的文件可能是未压缩的。因此,在一些情况下对基于块的文件进行采样可能导致基于采样大小的不合适的数据引导。
在一些情况下,分析模块215可以基于两个或多个压缩算法对数据的部分进行分析。压缩算法可以包括对输入数据进行采样和测试的有损的算法和/或无损的算法。注意到,当所分析的数据指示该数据是未压缩的时,数据模块210可以相应地压缩数据并将其存储。数据模块210在压缩和存储数据时可以总是使用无损压缩,因为对包括财务记录等的数据使用有损压缩可能导致数据的损失。分析模块215可以基于对哪种压缩算法导致最可靠的可压缩性分数的确定来选择压缩算法。例如,分析模块215可以运行两种或更多不同的压缩算法(例如,有损的、无损的、LZ4、LZSS、H.264等)并确定哪种压缩算法提供了最准确的可压缩性分数。在一些情况下,分析模块215可以提取多个采样来确定哪种算法是最准确的。在一些情况下,分析模块215可以基于所采样的数据是与有损的压缩算法相关联还是与无损的压缩算法相关联来选择压缩算法。当确定所采样的数据与有损的算法相关联时,分析模块215就可以利用有损的压缩算法来分析该数据。
分析模块215可以接收可压缩性分数,而分配模块220可以基于该可压缩性分数将数据引导到两个或更多个存储区域中的一个。在有至少两个存储区域的情况下,当确定压缩算法分析的结果指示了压缩节省的分数满足与第一存储区域相关联的阈值时,分配模块220就可以将第一数据存储在第一存储区域中。当确定压缩算法分析的结果指示了压缩节省的分数满足与第二存储区域相关联的阈值时,分配模块220就将第一数据存储在第二存储区域中。在一个实施例中,阈值中的至少一个可以是自适应的,因为阈值可以基于数据事件进行调整。数据事件可以包括新数据抵达存储设备。新数据可以和现有数据关联起来分析。基于数据的可压缩性分数,数据可以在现有数据内建立新的高标志或低标志(例如,新数据可以建立新的数据热度高标志或新的数据热度低标志等)。相应地,可以基于新数据的抵达而更新数据分布,并且可以相应地为每一存储层更新自适应的阈值。因此,先前满足第一存储层的阈值的特定一组数据可能不能满足在对新数据的分析基于更新后的数据分布建立了每一存储层的新阈值之后的阈值。相应地,基于更新后的阈值,该特定一组数据可以被移动到不同的存储层。
在一个实施例中,分析模块215可以赋予数据在0%可压缩性到100%可压缩性之间的可压缩性分数,其中0%可压缩性指示所采样的数据是已完全压缩的,而100%可压缩性指示所采样的数据是完全可压缩的。在一些实施例中,分析模块215可以赋予数据在0%节省到100%节省之间的压缩节省分数,其中0%意味所采样的数据对所选择的编解码器而言包含太多熵而不能压缩。作为一个示例,分配模块220可以在可压缩性分数在0%到50%之间时将采样数据分配到盘(相对高延迟),而在可压缩性分数在0%到50%之间时将采样数据分配到固态存储(相对低延迟)。替代地,分配模块220可以在可压缩性分数在0%到20%之间时将采样数据分配到盘(相对高延迟),而在可压缩性分数在21%到100%之间时将采样数据分配到固态存储(相对低延迟)。使用至少高延迟存储(用于低热度数据的冷存储)、中等延迟存储(用于中等热度数据的温存储)和低延迟存储(用于高热度数据的热存储)的示例,分配模块220可以基于数据通过分析模块215收到的可压缩性分数来分配所采样的数据。例如,分配模块220可以在可压缩性分数在0%-25%可压缩性之间时将数据分配到高延迟存储,在可压缩性分数在25%-75%时将数据分配到中等延迟存储,而在可压缩性分数在75%-100%时将数据分配到低延迟存储。
在一些实施例中,在将第一数据存储在第一存储区域中之后,数据模块210可以接收第二数据。当确定对第二数据的分析指示了比第一数据更高的可压缩性分数时,分配模块220可以将第一数据移动到第二存储区域,并将第二数据存储在第一存储区域中。当确定对第二数据的分析指示了比第一数据更低的可压缩性分数时,分配模块220可以将第一数据保持在第一存储区域中,而将第二数据存储在第二存储区域中。
在一个实施例中,分析模块215可以至少部分地基于时序数据热度算法来分析第一数据的部分,并且比较来自时序热度算法分析的结果与压缩算法分析的结果。当确定各分析的结果相关时,分配模块220可以根据压缩算法分析的结果来存储数据。当确定各分析的结果不相关时,分析模块215可以提取附加的采样并重复该比较。在一些情况下,当确定各分析的结果不相关时,分析模块215可以调整时序数据热度算法和/或压缩算法中的至少一个的一个或多个方面。例如,分析模块215可以调整时序数据热度算法以与压缩算法分析相关。当调整了该一个或多个方面时,则分析模块215可以重复每一个算法的分析并比较结果。
在一个实施例中,排序模块205可以根据多个存储区域的至少一个属性对存储设备的多个存储区域进行排序。在一些情况下,多个存储区域的该至少一个属性可以包括存储介质的类型、介质延迟、设备可靠性、所存储的数据的可靠性、数据保持力、设备寻址能力、介质耐久性、介质速率、写入速度、读取速度、持续写入速度、扇区开销时间、磁头切换时间、磁道切换时间、功率消耗以及操作历史。在一些情况下,数据模块210可以在存储设备处获得数据的采样。数据可以是抵达存储设备处的新数据、暂时地存储在存储设备的高速缓存中的数据、或者先前存储在存储设备的非易失性存储区域中的数据。
在一个实施例中,分析模块215可以分析将数据的采样通过一个或多个压缩编解码器的结果。在一些情况下,该结果可以包括与数据的采样相关联的压缩节省的分数。分配模块220可以至少部分地基于分析模块215对将数据的采样通过一个或多个压缩编解码器的结果的分析,来将数据存储在多个存储区域中的一个中。在一些实施例中,在将数据的采样通过一个或多个压缩编解码器之前,分析模块215可以将该采样通过数据热度检测算法以检测数据的一个或多个方面。数据的该一个或多个方面可以包括检测未来预期的存取频率、数据使用频率、数据使用模式、数据源模式、数据目的地模式、数据类型模式等。在一个实施例中,分析模块215可以确定数据的采样与元数据相关联的可能性。在一个实施例中,分析模块215可以至少部分地基于将该采样通过数据热度检测算法来确定数据是元数据的可能性。附加地或替代地,分析模块215可以至少部分地基于将该采样通过压缩算法以检测关于采样数据的可压缩性,来确定数据是元数据的可能性。当确定数据更可能是元数据时,分析模块215可以将数据的采样单次地通过一个或多个压缩编解码器中的一个。当确定数据更可能不是元数据时,分析模块215可以将数据的采样两次或更多次地通过一个或多个压缩编解码器。在一些情况下,当确定数据更可能是元数据时,数据模块210可以使用为元数据优化的Huffman码来压缩数据。
在一个实施例中,分析模块215可以至少部分地基于分析将数据的采样通过一个或多个压缩编解码器的结果,来检测与数据相关联的文件系统类型。分配模块220可以至少部分地基于所检测到的文件系统类型来将数据引导到多个存储区域中的一个。至少部分地基于数据模式(该数据模式通过将先前采样通过一个或多个压缩编解码器的先前分析所习得),分析模块215可以绕过以下中的至少一者:(1)将后续数据的采样通过一个或多个热度检测算法,和(2)将后续数据的采样通过一个或多个压缩编解码器。在一些实施例中,分析模块215可以同时分析数据的多个采样。对数据多个采样的分析可以包括将多个采样通过使用对每个采样不同的压缩算法的一个或多个压缩编解码器,以及至少部分地基于对多个采样的分析将数据引导到多个存储区域中的一个。
在一些情况下,存储设备包括叠瓦式存储区域和非叠瓦式存储区域。例如,存储设备可以包括一个或多个硬盘驱动器。一个或多个硬盘驱动器可以在该一个或多个硬盘驱动器的第一存储区域中采用叠瓦式磁记录(SMR),而在该一个或多个硬盘驱动器的第二存储区域中采用传统磁记录(CMR)。当至少部分地基于将数据的采样通过一个或多个压缩编解码器来确定数据的采样满足低可压缩性阈值时,分配模块215可以将数据存储在叠瓦式存储区域中。当至少部分地基于将数据的采样通过一个或多个压缩编解码器来确定数据的采样满足高可压缩性阈值时,分配模块215可以将数据存储在非叠瓦式存储区域中。
在一些实施例中,存储设备可以包括盘的阵列。盘阵列可以是分布式数据系统中的盘。例如,盘阵列中的一个或多个盘可以在第一位置(例如第一城市或国家等)处的第一数据中心中,而盘阵列中的一个或多个盘可以在第二位置(例如第二城市或的国家等)处的第二数据中心中。附加地或替代地,盘阵列可以包括具有一个或多个盘托的数据存储机柜,每一个盘托包括两个或多个盘。在一些例子中,盘阵列可以包括附接于存储服务器的简单盘捆绑(JBOD)。数据模块210可以确定盘阵列中哪些盘是活跃的,并且可以对来自盘的阵列中一个或多个活跃的盘的数据进行采样而绕过对来自盘的阵列中一个或多个非活跃的盘的数据进行采样。
图3显示了依据各种示例的用于在分层存储中压缩采样的系统300。系统300可以包括装置105-a,装置105-a可以是设备105的示例。附加地或替代地,装置105-a可以是图1的设备110、115和/或125的示例。
装置105-a可以包括用于双向语音和数据通信的部件,包括用于发送通信的部件和用于接收通信的部件。例如,装置105-a可以与一个或多个存储设备和/或客户端系统双向地通信。这种双向通信可以是直接的(例如装置105-a直接地与存储系统通信)和/或间接的(例如装置105-a通过服务器间接地与客户端设备通信)。
装置105-a也可以包括处理器模块305、存储器310(包括软件/固件代码(SW)315)、输入/输出控制器模块320、用户接口模块325、网络适配器330以及存储适配器335。软件/固件代码315可以是执行于装置105-a上的软件应用的一个示例。网络适配器330可以经由一个或多个有线链路和/或无线链路与一个或多个网络和/或客户端设备双向地通信。在一些实施例中,网络适配器330可以经由通过POP(point of presense,入网点)到互联网的直接网络链路来提供与客户端设备的直接连接。在一些实施例中,装置105-a的网络适配器可以使用无线技术提供连接,包括数字蜂窝电话连接、蜂窝数字分组数据(CDPD)连接、数字卫星数据连接和/或其他连接。装置105-a可以包括数据引导模块130-b,数据引导模块130-b可以执行以上所述的图1和/或图2的数据引导模块130的功能。
与系统300相关联的信号可以包括无线通信信号,诸如射频、电磁、局域网(LAN)、广域网(WAN)、虚拟专用网络(VPN)、无线网络(例如使用802.11)、蜂窝网(例如使用3G和/或LTE)和/或其他信号。网络适配器330可以启用用于移动通信的WWAN(GSM、CDMA和WCDMA)、WLAN(包括和Wi-Fi)、WMAN(WiMAX)和用于无线个人区域网络(WPAN)应用(包括RFID和UWB)的天线等中的一者或多者。
一个或多个总线340可以允许装置105-a的一个或多个元件(例如处理器模块305、存储器310、I/O控制器模块320、用户接口模块325、网络适配器330以及存储适配器335等)之间的数据通信。
存储器310可以包括随机存取存储器(RAM)、只读存储器(ROM)、闪存RAM和/或其他类型。存储器310可以存储计算机可读的、计算机可执行的软件/固件代码315,软件/固件代码315包括这样的指令:当该指令被执行时,引发处理器模块305执行本公开中所述的各种功能。替代地,软件/固件代码315可以不是可由处理器模块305直接执行的,而是可以引发计算机(例如在被编译和执行时)来执行本文所述的功能。替代地,计算机可读的、计算机可执行的软件/固件代码315可以不是可由处理器模块305直接执行的,而是可以被配置来引发计算机(例如在被编译和执行时)来执行本文所述的功能。处理器模块305可以包括智能硬件设备,例如中央处理单元(CPU)、微控制器、专用集成电路(ASIC)等。
在一些实施例中,除其他的以外,存储器310可以包含基本输入输出系统(BIOS),该BIOS可以控制基本的硬件和/或软件操作,诸如与外围部件或设备的交互。例如,实现当前系统和方法的数据引导模块130-b可以被存储在系统存储器310内。系统300上的应用一般存储在非暂态计算机可读介质(诸如硬盘驱动器或其他存储介质)上并经由非暂态计算机可读介质存取。此外,当经由网络接口(例如网络适配器330等)存取时,应用可以是根据应用和数据通信技术调制的电子信号的形式。
许多其他设备和/或子系统可以被连接到系统300的一个元件、或者可以被包括为系统300的一个或多个元件,系统300为诸如个人计算设备、移动计算设备、智能电话、服务器、连接互联网的设备、小区无线电模块等。在一些实施例中,并非图3中显示的全部元件都需要存在才能实践本系统和方法。设备和子系统可以以不同于图3中所示的那样的方式来互相连接。在一些实施例中,系统(诸如图3中所示的那样)的某一操作的方面可能是本领域公知的,而没有在本申请中详细讨论。实现本公开的代码可以被存储在非暂态的计算机可读介质中,诸如系统存储器310中的一个或多个或者其他存储器。在I/O控制器模块320上提供的操作系统可以是 或其他已知的操作系统。
I/O控制器模块320可以与网络适配器330和/或存储适配器335结合来操作。网络适配器330可以使装置105-a具有与客户端设备(例如图1的设备110、115和/或125)和/或其他设备在图1的网络120上通信的能力。网络适配器330可以提供优先和/或无线网络连接。在一些情况下,网络适配器330可以包括以太网适配器或光纤通道适配器。存储适配器335可以使得装置105-a能够存取一个或多个数据存储设备(例如存储设备140)。一个或多个存储设备中的每一个可以包括两个或更多数据层。存储适配器可以包括以太网适配器、光纤通道适配器、光纤通道协议(FCP)适配器,SCSI适配器和iSCSI适配器中的一个或多个。
图4显示了根据本公开的各种方面的关于分层存储中压缩采样的数据流400的序列图。数据流400示出了设备110-a、设备105-b、和从150-a到155-a的两个或更多存储层之间的数据流。设备110-a可以是来自图1的设备110、115和/或125的一个或多个方面的示例。设备105-b可以是图1和/或图3的设备105的一个或多个方面的示例。在一些情况下,设备105-b可以包括计算设备,诸如智能电话、台式机、笔记本、数据服务器、存储服务器等。在一些情况下,设备105-b可以包括存储控制器、存储机柜(storage enclosure)、存储设备和/或数据库。
如所示的,在通信405处,设备110-a可以将数据1发送到设备105-b。在一些情况下,设备110-a可以同时地或在数据1之后发送数据的一个或多个附加部分。在块410处,设备105-b可以分析数据1。设备105-b可以针对压缩算法分析数据1,以确定数据1的可压缩性。该分析可以产生数据1的可压缩性分数。在一些实施例中,设备105-b可以确定数据1的可压缩性分数是否满足从150-a的层1到155-a的层n的存储层中一个存储层的阈值。在一些情况下,设备105-b可以附加地分析数据1一次或多次。例如设备105-b可以针对第一压缩算法分析数据1,还针对第二压缩算法重新分析数据1。在一些情况下,设备105-b可以分析数据1两次或更多次,每一次使用不同的压缩算法。
在通信415处,基于数据1的可压缩性分数,设备105-b可以将数据1发送到155-a的层n。在通信420处,设备110-a(或另一个客户端设备)可以将数据2发送到设备105-b。在块425处,设备105-b可以分析数据2以确定数据2的可压缩性分数。基于数据2的可压缩性分数,在通信430处,设备105-b可以将数据2发送到150-a的存储层1。
图5是示出根据本公开的各种方面的用于分层存储中压缩采样的方法500的示例的流程图。为了清楚起见,下面参见参考图1、2、3和/或4所述的数据设备105、设备110、115和/或125、数据引导模块130、应用135和/或存储设备140中的一个或多个的方面来描述方法500。在一些示例中,后端服务器、计算设备和/或存储设备可以执行一组或多组代码以控制后端服务器、计算设备和/或存储设备的功能性元件,以执行以下所述的功能中的一个或多个。附加地或替代地,后端服务器、计算设备和/或存储设备可以使用专用硬件来执行以下所述的功能中的一个或多个。
在块505处,方法可以包括根据设备存取延迟对存储设备的多个存储区域进行排序。在一些情况下,多个存储区域可以包括第一存储区域和第二存储区域。在块510处,方法包括在存储设备处识别第一数据。在块515处,方法可以包括将第一数据的一部分通过压缩算法。在块520处,方法可以包括分析将第一数据的该部分通过压缩算法的结果。在一些情况下,该结果包括与第一数据的该部分相关联的可压缩性分数。在块525处,当确定压缩算法分析的结果指示可压缩性分数满足与第一存储区域相关联的预定阈值时,该方法可以包括将第一数据存储在第一存储区域中。在块530处,当确定压缩算法分析的结果指示可压缩性分数满足与第二存储区域相关联的预定阈值时,该方法可以包括将第一数据存储在第二存储区域中。在块505-530处的操作可以使用参考图1-图3所述的数据引导模块130和/或另一个模块来执行。
因此,方法500可以提供分层存储中压缩采样,其涉及基于数据的可压缩性的采样将数据引导到存储系统的两个或更多存储区域中。应当注意的是,方法500只是一种实现方式,并且方法500的操作可以被重新排列、省略和/或以另外的方式修改,使得其他实现方式是可能的和可设想的。
图6是示出根据本公开的各种方面的用于分层存储中压缩采样的方法600的示例的流程图。为了清楚起见,下面参见参考图1、2、3和/或4所述的数据设备105、设备110、115和/或125、数据引导模块130、应用135和/或存储设备140中的一个或多个的方面来描述方法600。在一些示例中,后端服务器、计算设备和/或存储设备可以执行一组或多组代码以控制后端服务器、计算设备和/或存储设备的功能性元件,以执行以下所述的功能中的一个或多个。附加地或替代地,后端服务器、计算设备和/或存储设备可以使用专用硬件来执行以下所述的功能中的一个或多个。
在块605处,方法可以包括在存储设备处识别第一数据。在块610处,方法可以包括基于与第一数据相关联的可压缩性分数,将第一数据存储在至少两个数据存储层中的一个中。在块615处,方法可以包括在将第一数据存储在第一存储区域中后识别第二数据。在块620处,当确定对第二数据的分析指示了比第一数据更高的可压缩性分数时,该方法可以包括将第一数据移动到第二存储区域并将第二数据存储在第一数据区域中。在块625处,当确定对第二数据的分析指示了比第一数据更低的可压缩性分数时,该方法可以包括将第一数据保持在第一存储区域中,而将第二数据存储在第二存储区域中。在块605-625处的操作可以使用参考图1-图3所述的数据引导模块130和/或另一个模块来执行。
因此,方法600可以提供分层存储中压缩采样,其涉及基于数据的可压缩性的采样将数据引导到存储系统的两个或更多存储区域中。应当注意的是,方法600只是以一种实现方式,并且方法600的操作可以被重新排列、省略和/或以另外的方式修改,使得其他实现方式是可能的和可设想的。
图7是示出根据本公开的各种方面的用于分层存储中压缩采样的方法700的示例的流程图。为了清楚起见,下面参见参考图1、2、3和/或4所述的数据设备105、设备110、115和/或125、数据引导模块130、应用135和/或存储设备140中的一个或多个的方面来描述方法700。在一些示例中,后端服务器、计算设备和/或存储设备可以执行一组或多组代码以控制后端服务器、计算设备和/或存储设备的功能性元件,以执行以下所述的功能中的一个或多个。附加地或替代地,后端服务器、计算设备和/或存储设备可以使用专用硬件来执行以下所述的功能中的一个或多个。
在块705处,方法可以包括根据一个或多个设备属性对存储设备的多个存储区域进行排序。在一些实施例中,多个存储区域的至少一个属性包括存储介质的类型、介质延迟(例如存取时间、响应时间、查找时间、旋转延迟等)、可靠性、数据保持力、寻址能力、数据存储耐久性、介质耐久性、介质速率、写入速度、读取速度、持续写入速度、扇区开销时间、磁头切换时间、磁道切换时间、功率消耗以及操作历史等中的一个或多个。在一些情况下,多个存储区域可以包括第一存储区域和第二存储区域。在块710处,方法可以包括在存储设备处获得数据的采样。所采样的数据可以包括新数据和/或现有数据。例如,该数据可以包括抵达存储设备处要被存储的新数据。附加的或替代地,该数据可以包括已存储在存储区域处的数据。例如,该数据可以包括存储在第一存储区域的数据,该存储在第一存储区域的数据可以被采样来确定是保持该数据在第一存储区域还是将该数据移动到第二存储区域。在一些情况下,新数据可以抵达存储设备处,而新数据以及已存储在存储设备处的数据可以被采样,以确定在哪一存储区域存储新数据以及已存储的数据是应当保持在它的存储区域中还是应当被移动到存储设备的不同存储区域。在一些情况下,当新数据抵达存储设备处时,新数据可以被实时采样。
在块715处,该方法包括分析将数据的采样通过一个或多个压缩编解码器的结果。在一些情况下,该结果包括与数据的采样相关联的压缩节省的分数。在块720处,该方法可以包括至少部分地基于分析将数据的采样通过一个或多个压缩编解码器的结果,将数据存储在多个存储区域中的一个中。在块705-720处的操作可以使用参考图1-图3所述的数据引导模块130和/或另一个模块来执行。
因此,方法700可以提供分层存储中压缩采样,其涉及基于数据的可压缩性的采样将数据引导到存储系统的两个或更多存储区域中。应当注意的是,方法700只是一种实现方式,并且方法700的操作可以被重新排列、省略和/或以另外的方式修改,使得其他实现是可能的和可设想的。
图8是示出根据本公开的各种方面的用于分层存储中压缩采样的方法800的示例的流程图。为了清楚起见,下面参见参考图1、2、3和/或4所述的数据设备105、设备110、115和/或125、数据引导模块130、应用135和/或存储设备140中的一个或多个的方面来描述方法800。在一些示例中,后端服务器、计算设备和/或存储设备可以执行一组或多组代码以控制后端服务器、计算设备和/或存储设备的功能性元件,以执行以下所述的功能中的一个或多个。附加地或替代地,后端服务器、计算设备和/或存储设备可以使用专用硬件来执行以下所述的功能中的一个或多个。
在块805处,在将数据的采样通过一个或多个压缩编解码器之前,该方法可以包括将该采样通过数据热度检测算法以检测数据的一个或多个方面。
在一些情况下,至少部分地基于将采样通过数据热度检测算法,该方法可以包括确定数据是否更可能包括元数据。在块810处,当确定数据更可能是元数据时,该方法可以包括将数据的采样单次地通过一个或多个压缩编解码器中的一个。
在块815处,当确定数据更可能不是元数据时,该方法可以包括将数据的采样两次或更多次地通过一个或多个压缩编解码器。在一个实施例中,数据的多个采样可以两次或更多次地被通过一个或多个压缩编解码器。在一些情况下,一个或多个采样中的每一个可以被通过不同的压缩算法,诸如第一采样通过第一算法、第二采样通过不同于第一算法的第二算法等。在一些情况下,同一个采样可以被通过多个算法,诸如第一采样通过第一算法、同样的第一采样通过不同于第一算法的第二算法等。附加地或替代地,采样数据可以被通过同一个算法两次或更多次。在块820处,当确定数据更可能是元数据时,该方法可以包括使用为元数据优化的Huffman码来压缩数据。在块805-820处的操作可以使用参考图1-图3所述的数据引导模块130和/或另一个模块来执行。
因此,方法800可以提供分层存储中压缩采样,其涉及基于数据的采样熵将数据引导到存储系统的两个或更多存储区域中。高可压缩性表示低熵。低熵表示先前未被压缩。先前未被压缩表示数据可能表示热数据,而热数据可以以使得最大化数据管理、介质延迟和功率消耗等的方式被自适应地缓存/分层。应当注意的是,方法800只是一种实现方式,并且方法800的操作可以被重新排列、省略和/或以另外的方式修改,使得其他实现方式是可能的和可设想的。
在一些示例中,来自方法500、600、700和/或800中的两个或更多个的方面可以被组合和/或分离。应当注意的是,方法500、600、700和/或800只是示例实现方式,并且方法500、600、700和/或800的操作可以被重新排列或以另外的方式修改,使得其他实现方式是可能的。
以上结合附图所阐述的详细说明书描述了示例,并不代表仅有的可以实现的例子,也不代表仅有的在权利要求范围内的例子。词语“示例”和“示例性的”在使用在本说明书中时意味着“用作示例、例子或说明”,并不意味着“优选的”或“比其他示例有益的”。详细说明书包括了特定细节以提供所述技术的理解。然而,可以在没有这些特定细节的情况下实践这些技术。在一些例子中,公知的结构和装置以框图形式显示,以避免模糊所述示例的概念。
可以使用各种不同科技和技术中的任何一个来代表信息和信号。例如,可能在以上说明书通篇被引用的数据、指令、命令、信息、信号、比特、符号和芯片可以由电压、电流、电磁波、磁场或磁性粒子、光场或光学粒子或它们的任意组合代表。
结合本公开所述的各种示意性的块和部件可以用被设计来执行本文所述的功能的通用处理器、数字信号处理器(DSP)、ASIC、FPGA或其他可编程逻辑设备、离散门或晶体管逻辑、离散硬件部件或它们的任意组合来实现或执行。通用处理器可以是微处理器,但是可替代地,处理器可以是任何传统的处理器、控制器、微控制器和/或状态机。处理器也可以被实现为计算设备的组合,例如DSP与微处理器、多个微处理器、结合DSP核的一个或多个微处理器和/或任何其他这样的配置的组合。
本文所述的功能可以在硬件、由处理器执行的软件、固件或它们的任意组合中实现。如果在由处理器执行的软件中实现,则功能可以被存储在计算机可读介质上或者被传输作为计算机可读介质上的一个或多个指令或代码。其他示例和实现在本公开和所附权利要求的范围和精神内。例如,鉴于软件的本质,以上所述的功能可以使用由处理器执行的软件、硬件、固件、硬连线或这些中的任意的组合来执行。实现功能的特征也可以被物理地置于各种位置处,包括被分布使得功能的部分在不同物理位置处实现。
如本文(包括在权利要求中)所使用的,词语“和/或”在使用于两个或多个项目的列表中时意味着所列出的项目中的任何一者可以独自使用、或者可以使用所列出的项目中的两个或多个的任意组合。例如,如果复合体被描述为包含部件A、B和/或C,则该复合体可只包含A;只包含B;只包含C;包含组合的A和B;包含组合的A和C;包含组合的B和C;或者包含组合的A、B和C。此外,如本文(包括在权利要求中)所使用的,在项目列表(例如,后接诸如“中的至少一者”或“中的一个或多个”的项目列表)中使用的“或”指示分隔列表,使得例如“A、B或C中的至少一者”的列表意味着A或B或C或AB或AC或BC或ABC(即A和B和C)。
此外,包含于其他部件内的或者与其他部件分离的部件的公开应当被认为是示例性的,因为潜在地可以实现多种其他架构以达成同样的功能,包括并入全部的、大部分的、和/或一些的元件作为一个或多个单一结构或分离结构的一部分。
计算机可读介质包括计算机存储介质和通信介质两者,通信介质包括便于从一个地方到另一个地方传送计算机程序的任何介质。存储介质可以是能够被通用计算机或专用计算机存取的任何可用的介质。举例而言而非限制地,计算机可读介质可以包括RAM、ROM、EEPROM、闪速存储器、CD-ROM、DVD或其他光盘存储、磁盘存储或其他磁存储设备、或能够被用来承载或存储指令或数据结构形式的期望的程序代码部件和能够被通用或专用计算机或者通用或专用处理器存取的任何其他介质。此外,任何连接被适当地称为计算机可读介质。例如,如果软件是使用同轴缆线、光缆、双绞线、数字用户线(DSL)或诸如红外线、无线电和微波的无线技术从网站、服务器或其他远程源传输的,那么同轴缆线、光缆、双绞线、DSL或诸如红外线、无线电和微波的无线技术包括在介质的定义中。本文所使用的盘与碟片包括压缩碟片(CD)、激光碟片、光学碟片、数字多功能碟片(DVD)、软盘和蓝光碟片,其中盘通常磁性地复制数据而碟片使用激光光学地复制数据。以上内容的组合也包括在计算机可读介质的范围内。
本公开的先前描述被提供来使本领域技术人员能够制作或使用本公开。对本公开的各种修改对本领域技术人员而言是明显的,本文定义的通用原理可以在不脱离本公开的范围的情况下应用到其他变形。因此,本公开并不限于本文所述的示例和设计,而是对应于与所公开的原理和新特征一致的最宽范围。
本公开可以特定地应用到安全系统应用。本公开可以特定地应用到存储系统应用。在一些实施例中,概念、技术描述、特征、方法、想法和/或描述可以特定地应用到存储和/或数据安全系统应用。从本公开可知,这样的用于这些特定应用的系统的突出优点是明显的。
在本公开中描述和/或示出的处理参数、动作和步骤仅是举例而言,并且可以按照期望的那样变化。例如,尽管所示出的和/或所述的步骤以特定顺序被示出或讨论,但这些步骤并不必然需要按照所示出或讨论的顺序来执行。这里所述的和/或所示出的各种示例性的方法也可以省略这里所述的或所示出的步骤中的一个或多个,或者在所公开的那些步骤之外包括附加的步骤。
此外,这里尽管在完全功能性的计算系统的背景下已经描述和/或示出了各种实施例,但是这些示例性实施例中的一个或多个可以被分布为各种形式的程序产品,而不论被用来实际实施该分布的计算机可读介质的具体类型是什么。本文所公开的实施例也可以使用执行特定任务的软件模型来实现。这些软件模块可包括脚本、批处理,或可以存储在计算机可读存储介质上或计算机系统中的其他可执行文件。在一些实施例中,这些软件模块可以允许和/或指导计算系统执行在这里公开的一个或多个示例性实施例。
用于解释的目的的本说明书已经参考具体实施例进行了描述。然而,以上示意性的讨论不旨在穷举或限制本系统和方法为所讨论的精确形式。从以上教导来看,许多修改可变形是可能的。实施例被选择和描述以解释本系统和方法的原理以及它们的实际应用,使得本领域技术人员能够利用本系统、装置和方法,并且具有各种修改的各种实施例可以适合于设想的特定用途。

Claims (20)

1.一种用于在分层存储中进行数据引导的方法,包括:
根据存储设备的多个存储区域的至少一个属性,对所述多个存储区域进行排序,所述多个存储区域至少包括第一存储区域和第二存储区域;
在所述存储设备处识别第一数据;
将第一数据的一部分通过一个或多个压缩编解码器;
分析将第一数据的所述部分通过所述一个或多个压缩编解码器的结果,其中所述结果包括与第一数据的所述部分相关联的压缩节省的分数;
当确定压缩算法分析的结果指示了所述压缩节省的分数满足与第一存储区域相关联的阈值时,将第一数据存储在第一存储区域中;以及
当确定压缩算法分析的结果指示了所述压缩节省的分数满足与第二存储区域相关联的阈值时,将第一数据存储在第二存储区域中。
2.如权利要求1的所述方法,其中所述压缩节省的分数包括包含0%节省到100%节省的范围。
3.如权利要求1的所述方法,其中所述存储设备包括基于对象的存储设备,并且其中第一数据包括数据对象。
4.如权利要求3的所述方法,所述方法包括:
将所述数据对象的至少一部分通过压缩算法;以及
分析将所述数据对象通过压缩算法的结果,其中所述结果包括与所述数据对象相关联的压缩节省的分数。
5.如权利要求1的所述方法,其中所述存储设备包括基于块的存储设备,并且其中第一数据的所述部分包括至少部分地基于自适应数据采样标准而选择的数据块。
6.如权利要求1的所述方法,其中所述存储设备包括至少一个硬盘驱动器。
7.如权利要求6的所述方法,其中所述至少一个硬盘驱动器包括相对低延迟盘存储区域和相对高延迟盘存储区域。
8.如权利要求1的所述方法,其中所述存储设备除至少一个硬盘驱动器之外还包括至少一个固态驱动器存储区域。
9.如权利要求1的所述方法,其中所述存储设备包括至少一个非易失性固态存储器设备。
10.如权利要求1的所述方法,所述方法包括:
在将第一数据存储在第一存储区域之后,接收第二数据;
当确定对第二数据的分析指示了比第一数据更高的可压缩性分数时,将第一数据移动到第二存储区域,并将第二数据存储在第一存储区域中;以及
当确定对第二数据的分析指示了比第一数据更低的可压缩性分数时,将第一数据保持在第一存储区域中,并将第二数据存储在第二存储区域中。
11.如权利要求1的所述方法,所述方法包括:
分析第一数据的所述部分,所述部分至少部分地基于时序数据热度算法;
比较来自时序数据热度算法分析的结果与压缩算法分析的结果;
当确定各分析的结果相关时,根据压缩算法分析的结果存储第一数据;以及
当确定各分析的结果不相关时,更新时序数据热度算法以与压缩算法分析相关。
12.如权利要求1的所述方法,所述方法包括:
同时提取第一数据的多个压缩采样;以及
将所述多个压缩采样通过一组不同的压缩算法。
13.一种被配置用于在分层存储中进行数据引导的计算设备,包括:
处理器;
与所述处理器进行电子通信的存储器,其中所述存储器存储了计算机可执行指令,所述计算机可执行指令在由所述处理器执行时引发所述处理器执行以下步骤:
根据存储设备的多个存储区域的至少一个属性,对所述多个存储区域进行排序,所述多个存储区域包括第一存储区域和第二存储区域;
在所述存储设备处识别第一数据;
将第一数据的一部分通过一个或多个压缩编解码器;
分析将第一数据的所述部分通过所述一个或多个压缩编解码器的结果,其中所述结果包括与第一数据的所述部分相关联的压缩节省的分数;
当确定压缩算法分析的结果指示了所述压缩节省的分数满足与第一存储区域相关联的阈值时,将第一数据存储在第一存储区域中;以及
当确定压缩算法分析的结果指示了所述压缩节省的分数满足与第二存储区域相关联的阈值时,将第一数据存储在所述第二存储区域中。
14.如权利要求13的所述计算设备,其中所述压缩节省的分数包括包含0%节省到100%节省的范围。
15.如权利要求13的所述计算设备,其中所述存储设备包括基于对象的存储设备,并且其中第一数据包括数据对象。
16.如权利要求15的所述计算设备,其中由所述处理器执行的所述指令引发所述处理器执行以下步骤:
将所述数据对象的至少一部分通过压缩算法;以及
分析将所述数据对象通过压缩算法的结果,其中所述结果包括与所述数据对象相关联的压缩节省的分数。
17.如权利要求13的所述计算设备,其中所述存储设备包括基于块的存储设备,并且其中第一数据的所述部分包括至少部分地基于自适应数据采样标准而选择的数据块。
18.如权利要求13的所述计算设备,其中所述存储设备包括硬盘驱动器、固态驱动器存储区域以及随机存取存储器(RAM)存储区域中的至少一个。
19.如权利要求13的所述计算设备,其中由所述处理器执行的所述指令引发所述处理器执行以下步骤:
在将所述第一数据存储在第一存储区域之后,接收第二数据;
当确定对第二数据的分析指示了比第一数据更高的可压缩性分数时,将第一数据移动到第二存储区域,并将第二数据存储在第一存储区域中;以及
当确定对第二数据的分析指示了比第一数据更低的可压缩性分数时,将第一数据保持在第一存储区域中,并将第二数据存储在第二存储区域中。
20.一种存储计算机可执行指令的非暂态计算机可读存储介质,所述计算机可执行指令在由处理器执行时引发所述处理器执行以下步骤:
根据存储设备的多个存储区域的至少一个属性,对所述多个存储区域进行排序,所述多个存储区域包括第一存储区域和第二存储区域;
在所述存储设备处识别第一数据;
将第一数据的一部分通过一个或多个压缩编解码器;
分析将第一数据的所述部分通过所述一个或多个压缩编解码器的结果,其中所述结果包括与第一数据的所述部分相关联的压缩节省的分数;
当确定压缩算法分析的结果指示了所述压缩节省的分数满足与第一存储区域相关联的阈值时,将第一数据存储在第一存储区域中;以及
当确定压缩算法分析的所述结果指示了所述压缩节省的分数满足与第二存储区域相关联的阈值时,将第一数据存储在第二存储区域中。
CN201610846836.2A 2015-09-25 2016-09-23 分层存储中的压缩采样 Active CN106557538B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/865,487 US10496280B2 (en) 2015-09-25 2015-09-25 Compression sampling in tiered storage
US14/865,487 2015-09-25

Publications (2)

Publication Number Publication Date
CN106557538A true CN106557538A (zh) 2017-04-05
CN106557538B CN106557538B (zh) 2022-04-19

Family

ID=58409423

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610846836.2A Active CN106557538B (zh) 2015-09-25 2016-09-23 分层存储中的压缩采样

Country Status (3)

Country Link
US (1) US10496280B2 (zh)
KR (1) KR20170037562A (zh)
CN (1) CN106557538B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107465413A (zh) * 2017-07-07 2017-12-12 南京城市职业学院 一种自适应数据压缩系统及其方法
CN109919193A (zh) * 2019-01-31 2019-06-21 中国科学院上海光学精密机械研究所 一种大数据的智能分级方法、系统及终端
CN112748863A (zh) * 2019-10-31 2021-05-04 伊姆西Ip控股有限责任公司 用于处理数据的方法、电子设备和计算机程序产品
CN113613023A (zh) * 2021-10-08 2021-11-05 中通服建设有限公司 基于云网融合的慧眼监控系统

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9355109B2 (en) * 2010-06-11 2016-05-31 The Research Foundation For The State University Of New York Multi-tier caching
US11336294B2 (en) * 2016-06-10 2022-05-17 Apple Inc. Hybrid, adaptive virtual memory compression
US9952794B2 (en) 2016-06-27 2018-04-24 Seagate Technology Llc Transient compression layer
US10446174B2 (en) 2017-05-26 2019-10-15 Microsoft Technology Licensing, Llc File system for shingled magnetic recording (SMR)
US10510374B2 (en) * 2017-07-05 2019-12-17 Seagate Technology Llc Self-healing in a storage system
KR102392055B1 (ko) * 2017-08-09 2022-04-28 삼성전자주식회사 리트레이닝 동작의 수행 여부를 효율적으로 결정하기 위한 메모리 장치 및 이를 포함하는 메모리 시스템
US11604714B2 (en) 2017-08-09 2023-03-14 Samsung Electronics Co, Ltd. Memory device for efficiently determining whether to perform re-training operation and memory system including the same
US10983911B2 (en) 2017-09-01 2021-04-20 Seagate Technology Llc Capacity swapping based on compression
CN108897807B (zh) * 2018-06-16 2021-06-29 安徽尚融信息科技股份有限公司 一种对移动终端中的数据进行分级处理的方法及系统
KR102267477B1 (ko) 2020-02-20 2021-06-22 삼성전자주식회사 스토리지 장치 및 이의 동작 방법
CN113886346A (zh) * 2021-08-31 2022-01-04 联想(北京)有限公司 一种数据处理方法及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1478349A (zh) * 2000-11-29 2004-02-25 ���˹���Ѷ��� 发送及接收实时数据
CN1623324A (zh) * 2002-01-02 2005-06-01 索尼电子有限公司 对部分加密的信息的解码和解密
CN101287058A (zh) * 2007-02-21 2008-10-15 三星电子株式会社 数据文件压缩设备及其方法
US20090112949A1 (en) * 2007-10-31 2009-04-30 Microsoft Corporation Compressed storage management
US20140006745A1 (en) * 2012-06-29 2014-01-02 International Business Machines Corporation Compressed memory page selection
CN104603776A (zh) * 2012-08-08 2015-05-06 亚马逊技术股份有限公司 归档数据存储系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060050953A1 (en) * 2004-06-18 2006-03-09 Farmer Michael E Pattern recognition method and apparatus for feature selection and object classification
US20070088920A1 (en) 2005-10-19 2007-04-19 Philip Garcia Managing data for memory, a data store, and a storage device
JP5447092B2 (ja) * 2010-03-30 2014-03-19 富士通株式会社 処理装置,データ移行方法及びデータ移行プログラム
US9246511B2 (en) 2012-03-20 2016-01-26 Sandisk Technologies Inc. Method and apparatus to process data based upon estimated compressibility of the data
US20140055881A1 (en) * 2012-08-22 2014-02-27 Lsi Corporation Recording regions in a shingled magnetic hard disk drive system
US9564918B2 (en) * 2013-01-10 2017-02-07 International Business Machines Corporation Real-time reduction of CPU overhead for data compression
US20140244604A1 (en) 2013-02-28 2014-08-28 Microsoft Corporation Predicting data compressibility using data entropy estimation
US20140254042A1 (en) * 2013-03-07 2014-09-11 Seagate Technology Llc Dynamic allocation of lba to un-shingled media partition

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1478349A (zh) * 2000-11-29 2004-02-25 ���˹���Ѷ��� 发送及接收实时数据
CN1623324A (zh) * 2002-01-02 2005-06-01 索尼电子有限公司 对部分加密的信息的解码和解密
CN101287058A (zh) * 2007-02-21 2008-10-15 三星电子株式会社 数据文件压缩设备及其方法
US20090112949A1 (en) * 2007-10-31 2009-04-30 Microsoft Corporation Compressed storage management
US20140006745A1 (en) * 2012-06-29 2014-01-02 International Business Machines Corporation Compressed memory page selection
CN104603776A (zh) * 2012-08-08 2015-05-06 亚马逊技术股份有限公司 归档数据存储系统

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107465413A (zh) * 2017-07-07 2017-12-12 南京城市职业学院 一种自适应数据压缩系统及其方法
CN107465413B (zh) * 2017-07-07 2020-11-17 南京城市职业学院 一种自适应数据压缩系统及其方法
CN109919193A (zh) * 2019-01-31 2019-06-21 中国科学院上海光学精密机械研究所 一种大数据的智能分级方法、系统及终端
CN112748863A (zh) * 2019-10-31 2021-05-04 伊姆西Ip控股有限责任公司 用于处理数据的方法、电子设备和计算机程序产品
CN112748863B (zh) * 2019-10-31 2024-04-19 伊姆西Ip控股有限责任公司 用于处理数据的方法、电子设备和计算机程序产品
CN113613023A (zh) * 2021-10-08 2021-11-05 中通服建设有限公司 基于云网融合的慧眼监控系统
CN113613023B (zh) * 2021-10-08 2021-12-17 中通服建设有限公司 基于云网融合的慧眼监控系统

Also Published As

Publication number Publication date
US10496280B2 (en) 2019-12-03
KR20170037562A (ko) 2017-04-04
US20170090775A1 (en) 2017-03-30
CN106557538B (zh) 2022-04-19

Similar Documents

Publication Publication Date Title
CN106557539A (zh) 分层存储中的压缩采样
CN106557538A (zh) 分层存储中的压缩采样
US11636031B2 (en) Optimized inline deduplication
CN107422983B (zh) 用于租户感知存储共享平台的方法和装置
US11093146B2 (en) Automatic load rebalancing of a write group
US11133076B2 (en) Efficient relocation of data between storage devices of a storage system
US20210191638A1 (en) Voltage thresholds in flash devices
US20190340136A1 (en) Storage efficiency of encrypted host system data
US20190171365A1 (en) Hybrid data tiering
US9229870B1 (en) Managing cache systems of storage systems
US11614880B2 (en) Storage system with selectable write paths
US20200327953A1 (en) Adaptive threshold for bad flash memory blocks
US20220269417A1 (en) Metadata Management In A Storage System
US20230325331A1 (en) Storage Array Controller Communication Using Multiple Channels
US20210240347A1 (en) Policy based data tiering
US20220236904A1 (en) Using data similarity to select segments for garbage collection
US20160034394A1 (en) Methods and systems for using predictive cache statistics in a storage system
US20220222004A1 (en) Prioritizing Garbage Collection Based On The Extent To Which Data Is Deduplicated
US11487665B2 (en) Tiered caching of data in a storage system
US10976947B2 (en) Dynamically selecting segment heights in a heterogeneous RAID group
US20210326047A1 (en) Application-Aware Management of a Storage System
US11494109B1 (en) Erase block trimming for heterogenous flash memory storage devices
US11249831B2 (en) Intelligent durability acknowledgment in a storage system
US11625181B1 (en) Data tiering using snapshots
US20220129415A1 (en) View Filtering for a File Storage System

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