CN1973287A - 压缩存储用文件以及对压缩的文件进行操作的方法和系统 - Google Patents
压缩存储用文件以及对压缩的文件进行操作的方法和系统 Download PDFInfo
- Publication number
- CN1973287A CN1973287A CNA2005800132584A CN200580013258A CN1973287A CN 1973287 A CN1973287 A CN 1973287A CN A2005800132584 A CNA2005800132584 A CN A2005800132584A CN 200580013258 A CN200580013258 A CN 200580013258A CN 1973287 A CN1973287 A CN 1973287A
- Authority
- CN
- China
- Prior art keywords
- clu
- compression zone
- file
- compression
- data
- 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
- 238000000034 method Methods 0.000 title claims abstract description 94
- 238000007906 compression Methods 0.000 title claims description 253
- 230000006835 compression Effects 0.000 title claims description 245
- 238000012545 processing Methods 0.000 claims description 20
- 238000013467 fragmentation Methods 0.000 claims description 9
- 238000006062 fragmentation reaction Methods 0.000 claims description 9
- 238000011084 recovery Methods 0.000 claims description 7
- 238000004590 computer program Methods 0.000 claims description 5
- 238000007689 inspection Methods 0.000 claims description 4
- 230000005055 memory storage Effects 0.000 description 11
- 230000006837 decompression Effects 0.000 description 10
- 238000007726 management method Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000006855 networking Effects 0.000 description 5
- 238000013144 data compression Methods 0.000 description 4
- 239000012634 fragment Substances 0.000 description 4
- 230000010354 integration Effects 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 230000032683 aging Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012797 qualification Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 235000003889 Paeonia suffruticosa Nutrition 0.000 description 1
- 240000005001 Paeonia suffruticosa Species 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/00007—Time or data compression or expansion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1724—Details of de-fragmentation performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Abstract
本发明公开了压缩存储用文件以及对压缩的文件进行操作的方法和系统。与文件访问存储器一起使用用于创建、读取和写入压缩文件的方法和系统。原始文件的压缩数据被打包为多个压缩单元并被存储为压缩文件。可以读取和/或更新一个或更多个对应的压缩单元而无需恢复整个文件,同时保持该压缩文件的去碎片化结构。
Description
技术领域
本发明涉及支持对存储的数据进行网络访问的网络基础构造装置,具体地,涉及进行压缩并通过文件系统协议对具有压缩数据的文件系统进行操作的方法和装置。
背景技术
在当前的业务环境中,对于业务成功而言,所有类型的业务数据正变得越来越关键。业务产生的数据的巨大增长和复杂性正驱动着信息存储的需求,定义了信息资产(asset)的共享、管理和保护。
通常,没有单种技术或架构能够解决所有组织的所有需要。主存(main storage)技术在EMC的2003年的白皮书“Leveraging Networkedstorage for your business”(www.emc.com/pdf/products/networked_storage/leveraging_net_storage.pdf)中进行了描述,并且基本上可按连接类型(直连式存储(DAS)、IP和信道网络)和访问数据的方法进行识别。存在与数据访问方法相关地考虑的三种基本类型的存储架构:块访问、文件访问和对象访问。
在块访问架构中,服务器/客户机与存储装置之间的通信是按块发生的;从盘中逐块地直接取出信息。操作系统跟踪每条信息在盘上的何处,而存储装置通常不知道用来在该装置上组织数据的文件系统。当需要读取或写入时,由知道数据的各个块位于盘上的何处以及如何将这些块放到一起的处理器从盘中直接访问该数据。块访问存储技术的示例是DAS(直连式存储)、SAN(存储域网)和IP上的块存储(例如,FCIP、iFCP、iSCSI等)。
文件访问需要服务器或客户机按名称而不是按物理位置请求文件。结果,存储装置通常负责将文件映射回用于创建、维护和更新文件系统的数据块。文件服务器接收文件读取或写入请求,并处理“后台的”块访问。文件访问存储技术的示例是NAS(利用NFS、CIFS、HTTP等协议的网络连接存储)和MPFS(多通文件服务)。例如,可以针对通用文件、web应用、工程应用(例如,CAD、CAM、软件开发等)、成像和3D数据处理、多媒体流传输等,来实现文件访问存储。
对象访问通过对应用隐藏关于块、文件和存储拓扑的所有细节,进一步简化了数据访问。通过整合在内容管理应用中的API而发生对象访问。对象访问存储技术的示例是CAS(内容寻址存储)。
通过在存储数据前进行数据压缩可以实现对存储器更有效的利用。数据压缩技术用于减少要存储或发送的数据量,以分别减少存储容量和发送时间。可以利用以下不同的压缩算法来实现压缩,例如标准压缩算法,诸如由J.Ziv和A.Lempel描述的算法″A Universal Algorithm ForSequential Data Compression,″IEEE Transactions on Information Theory,IT-23,337-343页(1997)。重要的是透明地执行压缩,这意味着可在不改变现有应用的情况下使用数据。在任一情况下,必须提供使原始数据能够重构并且能被应用访问的对应的解压缩技术。当对压缩数据进行更新时,尤其当更新是针对数据的相对较小的部分时,将整个块或文件解压缩并重新压缩通常是低效的。
例如在下面的专利公报中公开了对存储数据的存储和访问进行优化的各种实现:
美国专利第5,761,536号(Franaszek)公开了一种系统和方法,其存储可变长度对象以减少存储器碎片,同时消除了存储器重组的需要。基于最佳匹配或最先匹配,可将可变长度对象的余部(remainder)分配为与另一可变长度对象的余部共享固定大小的存储块(两个这种共享一个块的余部被称为室友)。一个余部存储在该块的一端,而另一个余部存储在该块的另一端。从同一群(cohort)中选择要共享一个存储块的可变长度对象。从而,对象间存在了某种关联。该关联例如可以是:对象是来自同一页的、或者对象在按某线性顺序生成的多个页中。将关于群的可变长度对象的信息(诸如一对象是否具有室友)存储在存储器中。
美国专利第5,813,011号(Yoshida等人)公开了一种存储压缩数据的方法和装置,其中压缩文件包括:头,其带有示出压缩管理表的位置的信息;压缩码;和压缩管理表,其保存这样的信息,该信息示出了各原始记录的压缩码的存储位置。
美国专利第5,813,017号(Morris等人)公开了一种方法和装置,用于减少备份子系统的存储需求以及进一步减少发送带宽的负载,其中基础文件(base file)以分段压缩的格式保存在服务器上。当在客户机上修改文件时,该文件被发送到服务器并利用差分函数与该文件的分段压缩的基础版本进行比较,但是不解压缩整个基础文件。创建一delta文件并将其存储在作为备份子系统的一部分的存储介质上,该delta文件是压缩的基础文件和该文件的修改版本之间的差异。
美国专利第6,092,071号(Bolan等人)公开了一种系统,该系统基于系统老化参数控制数据的压缩和解压缩,以使压缩数据成为在系统存储层级中具有独特位置的系统管理的资源。处理器的寄存器由高速缓存支持,高速缓存由主存支持,主存由解压缩的盘存储器支持,解压缩的盘存储由压缩的盘存储器支持,然后是磁带等等。基于系统老化参数或者可选地按以下需求根据数据的生命周期在系统的控制下将数据从解压缩形式变为压缩形式并使其在存储层级中移动,所述需求为:初次创建并存储数据;在系统的控制下在以后压缩该数据;当访问该数据时,根据需求按段解压缩该数据;在以后某时刻,在系统的控制下再次压缩该数据,直到下一次引用。将大的数据对象分段,并对使用频率低的数据进行压缩。
美国专利第6,115,787号(Obara等人)公开了一种盘存储器系统,其中,将要存储在高速缓冲存储器中的数据分成多个数据块并进行压缩,所述每个数据块具有与该数据所属的轨道块相关联的两个高速缓存块,从而以易于读取的方式将存储的多个压缩记录设置在盘存储器系统的高速缓冲存储器中。将压缩后的各个数据块存储在一个或多个高速缓存块中。将用于根据数据块的在轨(in-track)地址检索各高速缓存块的信息存储为高速缓冲存储器的检索信息的一部分。当读取一记录中的各个数据块时,基于数据块的在轨地址和所述检索信息来确定存储有压缩数据块的高速缓存块。
美国专利第6,349,375号(Faulkner等人)公开了一种利用虚拟存储器系统的数据压缩和解压缩的组合。讨论了包括所谓的嵌入式系统的许多计算机系统,在所述嵌入式系统中,数据以压缩格式存储在存储装置中。响应于中央处理单元(CPU)的数据请求,虚拟存储器系统将首先确定所请求的数据是否存在于主存中的CPU可访问的部分中,该部分还正好是存储解压缩数据的地方。如果所请求的数据不在主存的解压缩部分中,而是以压缩格式存在于存储装置中,则通过按需调页(demandpaging)操作将该数据传送到主存的解压缩部分。在按需调页操作期间,压缩数据将被解压缩。同样地,如果数据被调出主存的解压缩部分并且必须保存该数据,则数据在存储在用于压缩数据的存储装置中之前还可被压缩。
美国专利第6,584,520号(Cowart等人)公开了一种存储和检索压缩文件的方法,该方法包括动态地产生文件分配表,以从压缩盘只读存储器中检索压缩文件。
美国专利第6,678,828号(Pham等人)公开了一种安全网络文件访问装置,该装置支持在客户机计算机系统的文件系统和网络数据存储器之间安全访问和传送数据。设置在客户机计算机系统上并由安全网络文件访问装置监控的代理确保客户机计算机系统针对发送到网络数据存储器的文件系统请求的认证。该安全网络文件访问装置设置在客户机计算机系统和网络数据存储器之间的网络基础构造中,以应用资格访问策略并选择性地让文件系统请求通过。安全网络文件访问装置维护加密密钥存储器,并使加密密钥与对应的文件系统文件相关联,以对通过该安全网络文件访问装置传送至网络数据存储器和从网络数据存储器读取的文件数据进行加密和解密。
美国专利申请第2004/030,813号(Benveniste等人)公开了一种存储信息的方法和系统,其包括在不对主存储器压缩信息进行解压缩的情况下将主存储器压缩信息存储到存储器压缩盘上,在存储器压缩盘中单独地存储和检索页。
美国专利申请第2005/021,657号(Negishi等人)公开了一种用于暂时保存针对NAS服务器的操作请求的前端服务器,所述操作请求是从预定客户机发送的,并且插入在网络上的NAS服务器和客户机之间。该前端服务器保存与存储在NAS服务器中的数据文件之间的相关性有关的信息,基于该信息对从客户机接收的操作请求进行优化,并将该操作请求发送到NAS服务器。
发明内容
本领域需要提供一种与文件访问存储器系统一起使用的压缩存储器的新系统和方法,其不降低存储和检索能力且不需要用户知道压缩/解压缩操作以及压缩数据的存储位置。本发明在其某些方面中旨在提供一种新颖的方案,该方案能够帮助对压缩存储的文件中的数据进行随机存取,从而使得能够在无需解压缩整个文件的情况下对压缩数据进行操作。
根据本发明的特定方面,提供了一种与文件访问存储器一起使用的用于创建、读取和写入压缩文件的方法和系统;所述方法和系统便于对压缩数据进行直接访问, 同时保持压缩文件的去碎片化(de-fragmentation)。
根据本发明的特定方面,所述方法包括以下步骤:
—对原始文件进行压缩从而产生压缩数据,其中,所述原始文件的至少一个固定大小部分的数据(簇)被顺序地处理成对应的压缩区,所述压缩区划分为至少一个固定大小的压缩逻辑单元(CLU);
—将所述压缩数据存储为压缩文件,所述压缩文件包含:与所述原始文件的簇相对应的压缩区、以及包括唯一的文件描述符的头;
—创建包括描述压缩区的至少一个记录的区表,所述记录至少保存与对应于所述压缩区的CLU有关的信息以及属于所述CLU的存储位置指针。
为了读取存储在如上压缩的文件中的数据,所述方法还包括以下步骤:
—确定包括要读取的数据的第一个压缩区的序列号;
—通过参照所述区表,确定与所述压缩区相对应的CLU及其存储位置;
—从所述压缩区恢复簇;
—如果要读取的数据的范围超过所述恢复的簇的大小,则针对序列号加1的压缩区重复步骤b)和c),直到恢复了要读取的所有数据为止。
为了将数据写入在如上压缩的文件,所述方法还包括以下步骤:
—确定包括要更新的数据的第一个压缩区(原始区)的序列号;
—通过参照所述区表,确定与所述原始压缩区相对应的CLU及其存储位置;
—从所述原始压缩区恢复簇;
—计算更新数据在所述簇内的偏移量并进行所需数据范围的更新;
—将经更新的簇压缩成经更新的压缩区;
—用所述经更新的压缩区重写所述原始压缩区;
—更新所述区表;
—如果要写入的数据的范围超过所述恢复的簇的大小,则针对序列号加1的压缩区重复步骤b)至g),直到写入了所有需要的数据为止。
根据本发明的其他方面,所述方法包括:对在将数据写入所述压缩文件期间释放的空闲CLU的列表进行处理,在关闭所述文件前,在与所述文件有关的所有会话期间都处理所述列表。所述方法还包括对所述原始压缩区需要的CLU的数量No和所述经更新的压缩区需要的CLU的数量Nu进行比较,并且进行以下之一:
—如果No=Nu,则用与所述经更新的压缩区相对应的CLU来重写与所述原始压缩区相对应的所有CLU;
—如果No>Nu,则用与所述经更新的压缩区相对应的CLU来重写与所述原始压缩区相对应的前Nu个CLU,并关于释放的CLU更新空闲CLU的列表;
—如果No<Nu<No+Nf,其中Nf是空闲CLU的列表中的CLU的数量,则用与所述经更新的压缩区相对应的CLU来重写与所述原始压缩区相对应的所有CLU,并将与所述经更新的压缩区相对应的其余CLU写入包含在所述空闲CLU的列表中的CLU;
—如果No+Nf<Nu,则用与所述经更新的压缩区相对应的CLU来重写与所述原始压缩区相对应的所有CLU,将与所述经更新的压缩区相对应的CLU写入包含在空闲CLU的列表中的CLU,并将与所述经更新的压缩区相对应的其余CLU连续写入下一空闲存储位置。
根据本发明的又一方面,所述方法还包括在关闭所述文件前检查空闲CLU的列表,并且如果所述列表非空,则
—限定包括在所述压缩区中的CLU之中具有最高存储位置指针的CLU(第一CLU);
—将压缩数据从所述第一CLU移动到具有较低存储位置指针的空闲CLU(第二CLU);
—将所述第二CLU分配给所属压缩区并将所述第一CLU分配给空闲CLU的列表;
—重复步骤b)至d),直到包括在压缩区中的所有CLU的存储位置指针都低于包括在空闲CLU的列表中的任一CLU的指针为止;
根据本发明的再一方面,用于对存储用文件进行压缩的所述系统包括:
—压缩子系统,用于对原始文件进行压缩从而产生压缩数据,其中,所述原始文件的每个固定大小部分的数据(簇)被顺序地处理成压缩区,所述压缩区划分为固定大小的压缩逻辑单元(CLU);
—存储子系统,用于将所述压缩数据存储为压缩文件,所述压缩文件包含:与所述原始文件的簇相对应的所述压缩区、以及包括唯一的文件描述符的头;
—区表创建子系统,用于创建包括所有压缩区的记录的区表,所述记录中的每个记录都保存与对应于所述压缩区的CLU有关的信息以及属于所述CLU的存储位置指针。
应该理解,根据本发明的系统可以是适当编程的计算机。同样地,本发明设想了一种可由计算机读取的用于执行本发明的方法的计算机程序。本发明还设想了一种机器可读存储器,其明确地包含有用于执行本发明的方法的可由机器执行的指令的程序。
附图说明
为了理解本发明并明白本发明是如何在实践中执行的,现在将参照附图仅通过非限制性示例来描述优选实施例,在附图中:
图1是本领域中公知的典型NAS存储网络架构的示意性框图。
图2a和2b是根据本发明特定实施例的NAS存储网络架构的示意性框图。
图3是根据本发明特定实施例的系统功能架构的示意性框图。
图4是根据本发明特定实施例的原始文件和压缩文件的示意图。
图5是根据本发明特定实施例的区表的示例性结构。
图6是根据本发明特定实施例的压缩文件创建操作的概括流程图。
图7是根据本发明特定实施例的对压缩文件进行的读取操作的概括流程图。
图8是根据本发明特定实施例的对压缩文件进行的写入操作的概括流程图。
图9是示出了根据本发明特定实施例的对压缩区进行的写入操作的序列的概括流程图。
图10是对文件进行关闭操作期间的CLU管理的概括流程图。
图11a-11c是根据本发明特定实施例的CLU和分配的盘存储器段之间的关系的示意性图例。
具体实施方式
在下面的详细描述中,为了提供对本发明的彻底理解,阐述了大量具体细节。然而,本领域的技术人员应该理解,在没有这些具体细节的情况下也可实施本发明。在其他示例中,为了不使本发明模糊,对公知方法、过程、组件和电路不进行详细描述。
除非另外专门说明,从以下讨论中可显见,应该理解的是,在整篇说明书的讨论中,利用诸如“处理”、“计算(computing)”、“计算(calculating)”、“确定”等的术语,指的是计算机或计算系统或处理器或类似的电子计算装置的行为和/或处理,所述计算机或计算系统或处理器或类似的电子计算装置将计算系统的寄存器和/或存储器内的物理(诸如电子)量表示的数据操作和/或变换为计算系统的存储器、寄存器或其他这种信息存储、发送或显示装置内的物理量类似地表示的其他数据。
本发明的实施例可以使用以下术语:诸如用于在此执行操作的处理器、计算机、装置、系统、子系统、模块、单元、设备(单数或复数形式)。这可以是专门为期望的目的而构建的,或者其可包括由存储在通用计算机中的计算机程序选择性地激活或重新配置的该通用计算机。可以将这种计算机程序存储在计算机可读存储介质中,所述计算机可读存储介质例如是(但不限于):包括软盘、光盘、CD-ROM、磁光盘的任何类型的盘、只读存储器(ROM)、随机存取存储器(RAM)、电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、或者适于存储电子指令并能够连接至计算机系统总线的任何其他类型的介质。
在此提出的处理/装置(或上面指定的类似术语)以及显示并不是与任何特定计算机或其他装置固有地相关的,除非另外专门说明。可以根据这里的教导与程序一起使用各种通用系统,或者可以证明构建更专用的装置来执行期望的方法是方便的。以下描述中将出现各种各样的这些系统的期望结构。此外,本发明的实施例并不是参照任何具体的编程语言进行描述的。应该理解,可以使用各种编程语言来实现如在此所述的本发明的教导。
记着此点,将注意力移到图1,图1示出了本领域中公知的典型NAS存储网络架构的示意图。来自客户机11和/或服务器12的文件经由IP网络13传送到文件存储装置14。该文件存储装置可以是专用NAS文件服务器、通用文件服务器、SAN存储、流存储装置等。该IP网络可以是局域网(LAN)、广域网(WAN)、它们的组合等。
参照图2a,图2a示出了根据本发明特定实施例的NAS存储网络架构的示意图。服务器12和/或客户机11与文件存储装置14之间的通信通过平台20。平台20包括:客户机/服务器接口21,连接一个或更多个客户机/服务器;和文件存储接口22,用于与一个或更多个文件存储装置进行桥连接/代理连接。平台20用作选定事务的代理,从而保持控制事务的吞吐量,并用作数据事务的代理。平台20可支持任何物理接口(例如以太网、光纤信道等)并且可保持存储装置的特征,例如,冗余、镜像、快照、故障恢复(failover)、回滚(rollback)、管理等。该平台可与现有的网络基础构造无缝地整合。为了实现下述压缩和访问功能,通常,该平台不需要改变文件自身以上的任何级。用户无需知道压缩和解压缩操作以及压缩数据的存储位置。
在对要在存储前压缩的文件进行“写入”操作期间,来自客户机11和/或服务器12的文件流过网络13到达平台20,被该平台压缩并被写在文件存储装置14中。可以用不同的压缩算法(例如参见http://www.data-compression.com)来压缩包含不同种类的数据(例如文本、图像、语音等)的文件。“读取”操作按反方向进行;所需文件被平台检索到,(根据所需数据的范围,部分或全部地)被解压缩并被发送到适当的客户机/服务器。下面参照图3-9进一步描述根据本发明的特定方面的压缩/解压缩操作。图2b示出了当从客户机/服务器接收的文件在经由网络13进行传送之前在平台处被压缩并写入时的本发明的其他实施例的存储架构。
根据特定实施例,平台20还可提供安全功能,例如,加密、认证等。
将平台20配置为在客户机/服务器和文件存储装置之间以透明的方式传送选定事务(通常为与控制有关的事务,例如,复制文件、删除文件、重新命名文件、拍摄快照等),同时干预与数据有关的事务(例如,打开、关闭、读取、写入、创建等)和某些与控制有关的事务,例如,目录列出命令。
在本发明的特定实施例中,可将平台配置为还对先前存储在文件存储装置14中而没有通过平台20的未压缩文件进行压缩。该平台可根据预定义的标准文件从存储装置中提取所有文件或选定文件,根据本发明对其进行压缩,并以压缩形式重新写入存储装置。
在本发明的特定实施例中,还可将平台20配置为根据预定义的标准(例如,大小、IP地址、目录、文件类型)仅对选定的通过文件进行压缩。
原始文件(或其相关部分)在写入文件存储装置14期间或之前被平台20压缩。类似地,该文件(或其相关部分)在从文件存储装置14读取期间或之后被平台20解压缩。在本发明的某些实施例中,在平台20和文件存储装置14之间,文件可以以压缩方式传送;例如,可以在平台内对原始文件进行压缩和写入,可将得到的压缩文件进一步传送到文件存储装置,和/或可以从文件存储装置接收压缩文件以在平台内进行进一步的读取/写入操作。
要注意,本发明不受参照图1和2描述的具体网络架构的限制。本领域的技术人员将容易理解,本发明同样可应用于包括NAS的任何网络或者基于利用IP的文件访问存储子网或者基于信道的通信的其他网络。平台20的功能(或部分功能)可以实现在独立服务器中(如图2所示)、分布在几个平台之间或者整合在其他存储网络部件(例如,文件服务器、企业交换机等)内。
图3示出了根据本发明特定实施例的平台20的示意性功能框图。
输入/输出块31的主要功能是套接字(socket)处理;该块负责IP通信的整合。I/O块31接收新的TCP分组,对它们进行解包并移至会话管理器32。块31还从会话管理器获得数据,将其打包成TCP结构并将其发送到所请求的地址。
会话由“打开文件”请求开始并由从同一IP地址(用户)接收的“关闭文件”请求而结束。会话管理器32保存所有会话的私有数据,例如,源IP地址、使用中的所有文件实例、会话计数器、会话状态、使用中的缓冲区的所有实例等。会话管理器还处理“文件块”并在断开时释放所有相关资源。会话管理器32将会话任务载入用于对接收到分组进行过滤的调度器(dispatcher)33。该调度器将CIFS/NFS分组发送到CIFS/NFS管理器34,并将所有其他分组(经由会话管理器)原样转发回I/O块。根据本发明特定实施例,CIFS/NFS管理器34相应地整合CIFS和NFS事务并向文件管理器35请求与数据有关的事务(例如,打开、读取、写入、关闭等)以及向压缩/解压缩块37请求压缩/解压缩操作。通常,压缩算法具有几个压缩等级,其特征在于在压缩效率和性能参数之间进行权衡。压缩块37可选择最佳压缩等级,并根据当前由输入/输出块31处理的套接字的数量(和/或CPU利用率)来调整压缩比。与选定压缩等级有关的信息保存在数据的压缩部分中。文件管理器35负责文件的整合和操作。文件管理器35还组合与文件有关的所有请求以使得能够共享文件操作。压缩/解压缩块37能够读取并解压缩缓冲区,以及压缩并写入CLUS。由与CIFS/NFS管理器相连接的缓冲区管理器36来管理存储器的缓冲区资源。整合管理器38与I/O块、会话管理器、缓冲区管理器和文件管理器相连接,并且负责平台中所有处理的同步和全面控制。
本领域的技术人员将容易理解,本发明不受图3的配置的限制;可以以其他形式合并或划分等同和/或变型的功能。
图4示出了根据本发明特定实施例的原始文件和压缩文件的示意图。未压缩的原始文件41被分割为具有基本相等的预定义大小的数据部分43(下文中称为簇)。这些簇在文件的输入/输出事务期间用作压缩/解压缩操作的原子元素(atomic element)。可以在压缩处理期间“实时(on-the-fly)”地将原始文件分割成簇,其中,具有预定义大小的各个下一部分43组成要经受压缩的簇。在本发明的其他特定实施例中,可以在压缩前进行分割。原始文件的最后一部分的大小可能等于或小于簇的预定义大小;在两种情况下都将该部分按其具有完整簇的大小一样地进行处理。簇的大小可以是可配置的;较大的簇提供较低的处理开销和较高的压缩比,而较小的簇提供更有效的访问但是处理开销更高。此外,由于各文件会话需要存储器中至少有一个可用簇而性能限定了同时进行的会话的数量,所以簇的大小取决于可用存储器和所需性能。簇的数量等于(原始文件的大小除以簇的大小的)整数部分,如果有余数的话再加一。
另选地,在本发明的其他特定实施例中,簇的大小可以根据例如取决于数据类型(例如,文本、图像、语音、组合等)的预定义标准而变化。例如,每种类型的数据可具有预定义大小的簇,在压缩期间,平台可以根据在原始文件的压缩部分中占优势的数据类型来选择簇的适当大小。
将各个文件内(intra-file)的簇43(例如,如图4所示的43A-43C)压缩为对应的压缩区(section)46(例如,如图4所示的46A-46C)。根据各簇中的数据的性质和压缩算法,具有相同大小的簇会自然导致具有不同大小的压缩区。如果簇的压缩比小于预定义值,则压缩文件中的对应压缩区可能包括来自该簇的未压缩数据。例如,如果给定簇中的原始数据被压缩到不小于原始簇大小的X%(比如说95%),那么由于该压缩比可忽略,因而对应区将容纳原始簇数据而不是压缩数据。
在本发明的特定实施例中,压缩处理可包括自适应能力,针对各簇根据其内容提供最佳压缩算法(例如,最适于具有语音、文本、图像等占优势的数据的簇的不同的压缩算法)。
根据本发明的特定实施例,每个压缩文件44都包括一个头45、多个压缩区46和一个区表47。压缩文件的头45包括唯一的文件描述符、原始文件41的大小以及指示该文件是否由平台20进行了处理的签名(也针对由于可获得的压缩比小于预定义值而未被平台压缩的文件)。
压缩文件内的压缩区的数量等于簇的数量。根据本发明的特定实施例,压缩区46中的数据存储在全部具有相等的预定义大小的多个压缩逻辑单元(CLU)48(例如,如图4所示,压缩逻辑单元48A0-48A2与对应于簇43A的压缩区46A相对应)中。该预定义的CLU大小是可配置的;较大的CLU提供较低的开销,而较小的CLU导致较高的分辨率。此外,在本发明的特定实施例中,可将CLU大小调整为最大和/或最佳CIFS/NFS分组长度。
压缩区内的CLU的数量等于(压缩区的大小除以CLU的大小的)整数部分,如果有余数的话再加一。压缩区中的最后一个CLU可以是部分充满的(例如,图4中的48-A2、48-C1)。可以按与充满的CLU相同的方式来处理这种CLU。在本发明的特定实施例中,可以按特殊方式处理最后一个压缩区中的最后一个CLU(如图4中的48-C1所示);即,如果其是部分充满的,则将其缩减至精确的压缩大小(下面参照图9进一步进行描述)。
可将CLU视为由存储器中虚拟顺序的段形成的压缩文件的虚拟部分。后文将参照图11进一步描述CLU和分配的存储器段之间的关系。
区表47包括所有压缩区46的记录并指明从哪里可找到与各压缩区相对应的CLU。关于各压缩区的记录(以下称为区记录)包括指示该区是否被压缩的签名、该压缩区的总大小、以及指向包含在该区中的所有CLU的指针的列表。该记录可任意包括在压缩对应簇期间使用的压缩算法以及簇的大小(如果根据每个预定义标准可变的话)的指示。优选地,由于在更新压缩文件的内容时其长度可能改变,所以将区表47置于压缩文件的末端(如要进一步例示的,区表的长度与压缩区的数量成正比,因而,与簇的数量成正比)。
图5通过非限制性示例示出了示例性文件的区表的示例性结构。
该示例性文件50(在其他示例中也这样称呼)的原始大小为3MB+413比特,预定义的簇大小为1M,CLU大小为60K。因此,原始文件包含4个簇(3个1MB的簇以及一个部分充满但是按完整簇进行处理的簇)。
压缩区的记录51包括签名52、区的大小53以及多个条目54。区记录的每个条目54包括与包含在压缩区中的CLU之一有关的信息。该区表包括物理位置和逻辑CLU号之间的关系。
示例性文件50的簇被压缩成例如大小分别为301123字节、432111字节、120423字节和10342字节的区。由于60K的CLU长度指的是61440字节,所以区号0具有5个分配的CLU([301123/61440]+1);区号1具有8个分配的CLU([432111/61440]+1);区号2具有2个分配的CLU([120423/61440]+1);区号3具有1个分配的CLU([10342/61440]+1)。总计,该压缩文件将包括16个CLU(总大小为15×61440字节+10342字节)、固定长度的头(例如24字节,其包括:用于签名的4字节、用于文件ID(唯一描述符)的16字节、以及用于与原始大小有关的信息的4字节)、以及具有4个区记录的区表。
如果创建示例性文件50作为新的压缩文件,则将顺序地分配CLU,例如,
将具有指针1、2、3、4、5的头5个CLU分配给区0;
将具有指针6、7、8、9、10、11、12、13的接下来的8个CLU分配给区1;
将具有指针14、15的接下来的2个CLU分配给区2;
将具有指针16的接下来的1个CLU分配给区3。
在更新后可以改变文件内的CLU的分布(下面将参照图8-11进一步进行描述)。例如,
将具有指针1、4、5、6、9的CLU分配给区0;
将具有指针2、3、7、10、11、12、15、14的CLU分配给区1;
将具有指针8、13的CLU分配给区2;
将具有指针16的CLU分配给区3。
(在当前的示例中,更新不影响压缩区的大小)。
当创建文件作为新的压缩文件时,CLU的虚拟(逻辑)顺序与对应于这些CLU的盘段的物理顺序相同。在经更新的文件中,CLU的虚拟(逻辑)顺序可能与对应于这些CLU的盘段的物理顺序不同。例如,在以上示例中,第一个簇的第二个CLU最初位于物理段号2,其中,在更新后其位于物理段号4。每个CLU都被分配给存储器中的段,对应段写在CLU长度乘以段序列号再加上头45的长度的偏移量处。例如,在以上示例性文件中,当第一个簇的第二个CLU位于物理段号2时,其在存储位置存储器中写在头的24字节加上2×61440字节的偏移量位置处。在更新之后,该CLU位于物理段号4,其偏移量变成头的24字节加上4×61440字节。
在本发明的特定实施例中,每个区记录中的条目的数量是恒定的,并且与存储簇可能需要的CLU的最大数量相对应,因此不管包括在区中的CLU的实际数量是多少,各个区记录的大小都是恒定的;未使用的条目可具有特殊标记。区记录中的条目的数量等于簇的大小除以CLU的大小的整数部分加一。
在例示的簇的预定义大小为1MB并且CLU的预定义大小为60K的示例中,压缩区的每个记录具有17个条目(1MB/60K的整数部分加一),每一个条目具有4个字节。相应地,例示的压缩区号0的区记录50具有包含与对应CLU的物理位置有关的信息的5个条目以及12个空条目(例如标记为-1)。区记录的大小为72字节(4字节用于与压缩区大小和签名有关的信息加上17个条目×4字节)。区表的总大小为288字节(4个压缩区×每个区记录的72字节)。
在本发明的特定实施例中,可以将压缩数据与区表47分开存储。可以将区表存储在与压缩数据相同的存储空间内的分立文件中或者将其存储在不同的物理上潜在远程的存储空间(例如平台20上)的分立文件中。应当以这样的方式配置平台20:使得在读取/写入操作期间维护压缩数据和对应区表之间的关联更容易。
图6-11示出了根据本发明特定实施例的对压缩文件执行的输入/输出操作。要注意,平台20还干预这样的命令,所述命令(例如DIR、STAT等)引用原始文件的大小,将该大小保存在对应压缩文件的头中,并响应于请求提供所述数据。因此,例如,考虑文件大小为X(在其原始形式下)并且在其压缩形式(当存储在盘中时)下为Y(<X)的一文件。根据所说明的特征,存储在头中的文件大小将是X(原始文件大小),从而在涉及诸如DIR、STAT的系统命令的范围内保持了完全透明。
根据本发明特定实施例,当接收到用于打开压缩的特定文件的输入请求(inbound request)时(用户可能不知道文件已压缩),平台20将该请求传送到NAS系统(存储装置14)并接收用作文件管理的密钥的“句柄(Handle)”应答(或者“空”,如果没有找到该文件的话)。在接收到“句柄”后,平台20读取包括文件ID(唯一的文件描述符)和对应原始文件的大小的头45。对于每个文件ID,平台20检查是否存在与该文件有关的并发会话。如果“否”,则平台产生包括唯一的文件描述符和原始文件的大小的文件块。如果该文件已经在使用,则平台将附加会话添加到现有的文件块。然后将“句柄”返回用户,以与对文件操作的后续请求一起发送至平台。
打开文件操作还包括读取压缩文件的区表47并获得与该文件相对应的所有CLU的信息。从文件被打开的时刻开始直到其被关闭为止,平台知道文件的CLU结构以及该文件内任何字节的偏移量。
参照图6,图6示出了根据本发明特定实施例进行的压缩文件创建的概括流程图。由输入的创建请求发起该处理。平台20产生针对文件存储装置14的输出请求(步骤60);并且在确认后,开始将压缩文件的头写在文件存储装置中(步骤61)。如图4所示,头将包括文件描述符、原始未压缩文件的大小、以及指示文件已被平台20进行了处理的签名。在下一步骤62,平台将原始文件的第一个固定大小的部分(簇)处理成大小为X的压缩区。(可在任何适当的商业或专用算法的帮助下进行压缩)。平台限定第一个CLU的第一个空闲存储位置,开始并连续地将压缩区写入该CLU以及后续的CLU中,以存储在文件存储装置处(步骤63),并准备处理期间占用的CLU的指针以记录在区表中(步骤64)。平台针对接下来的簇重复该处理(步骤65),直到整个文件的数据以压缩形式写入为止,然后创建了区表(步骤66)。在本发明的特定实施例中,可将区表存储在压缩文件之外。
参照图7,图7示出了根据本发明特定实施例的对压缩文件进行的读取操作的概括流程图。
读取操作由输入的读取请求启动(步骤70),该读取请求包括输入参数(例如,文件句柄、查寻号(数据偏移量)和数据长度Y)和输出参数(例如,目标缓冲区地址)。输入的读取请求识别要读取的数据(在原始文件中)的偏移量和范围Y。平台20计算要读取的第一个簇(以下称为起始簇)的序列号(步骤71),其为(偏移量除以簇的大小)的整数部分,如果有余数的话再加一。由(要读取的数据的范围除以簇的大小)的整数部分加一来限定要读取的簇的数量。结果,平台限定了与要读取的簇一一对应的压缩区,并产生输出读取请求(步骤72)。该请求是基于压缩文件指向与要读取的压缩区相对应的CLU的元数据(头和区表)的。在本发明的特定实施例中,可如下容易地计算置于压缩文件末端的区表的偏移量:从压缩文件的大小中减去簇的数量与区记录的固定大小的乘积。
在其他实施例中,可将平台配置为使压缩数据与存储在分立文件中的对应元数据之间进行关联更容易。
在本发明的特定实施例中,可发送指定要读取的数据的所有范围的输出的读取请求。另选地,如图7所示,在这些步骤中处理了整个读取请求,并且针对读取操作,平台保持了基本等于簇的大小的缓冲区。第一个输出的读取请求包括指向在起始簇的压缩区中包含的CLU的指针。由平台对与起始簇相对应的整个压缩区进行读取(步骤73)并解压缩至目标缓冲区(步骤74)。在下一步骤,平台计算簇内的所需偏移量(步骤75),并复制所需数据以传递给应用(步骤76)。如下计算对数据进行复制所需的长度:
长度=MIN{数据范围Y;(簇大小-偏移量mod簇大小)}
如果数据范围Y超过簇大小,则重复该操作(步骤77)。
例如,参照示例性文件50,请求是要从偏移量1MB+1340处开始读取20字节长度的文件数据。读取将从第二个簇开始,因此,所述数据包含在从第二个压缩区开始的压缩文件中。区表的偏移量被限定为:从压缩文件的大小中减去簇的数量(4)×区记录的大小(72字节)。区表中第二个压缩区的记录包含具有指针2、3、7、10、11、12、15、14的CLU。因此,这些CLU将被读取到平台20中的临时缓冲区中并被解压缩至平台中的1MB缓冲区中。然后,从缓冲区偏移量1340开始的20字节将被移至目标(用户的)缓冲区。对数据进行复制的所需长度为20字节(等于20字节和(1MB-1340字节)中的最小值)。如果另一请求是要从相同的偏移量处开始读取2MB长度的文件数据,则以相似的方式针对第三个和第四个压缩区执行该操作;并且从起始簇复制数据的所需长度为1MB-1340字节(等于2MB和(1MB-1340字节)中的最小值)。
参照图8,图8示出了对根据本发明特定实施例的压缩文件进行的写入操作的概括流程图。输入的写入请求(步骤80)识别要写入的数据(在原始文件中)的偏移量和范围Y。平台20计算要更新(重写)的第一个簇的序列号(步骤81),其为(偏移量除以簇的大小)的整数部分,如果有余数的话再加一。由(要写入的数据的范围除以簇的大小)的整数部分(如果有余数的话)加一来限定要重写的簇的数量。结果,平台限定了要重写的压缩区,并以与参照图7描述的方式相似的方式产生输出的读取请求)。在由平台对与起始簇相对应的整个压缩区进行读取(步骤82)并解压缩至缓冲区(步骤83)之后,如参照图7所描述的,平台计算簇内的所需偏移量(步骤84),并更新(重写)所需数据范围(步骤85)。然后,平台对经更新的簇进行压缩(步骤86),更新区表并请求将新的压缩区写入该压缩文件(步骤87)。如果数据范围Y超过了簇大小,则针对连续的簇重复(步骤88)该操作。在处理结束时,平台更新区表(步骤89)。
如上所述,在本发明的特定实施例中,可以直接访问所需数据的存储位置,因此,读取/更新(及类似)操作仅需恢复包含所需数据范围的簇而不用恢复整个文件。
通常,由于在分配的存储中出现的未使用空间,文件更新会产生碎片。图9和10示出了根据本发明特定实施例的CLU管理的碎片处理算法。图9示出了在压缩区上进行写入/更新操作(图8中的步骤87)期间的CLU管理算法。在写入经更新的压缩区之前,平台对经更新的压缩区和原来的压缩区所需的CLU的数量进行比较(步骤91)。如果CLU的数量不变,则平台20请求将经更新的压缩区顺序地写入与原来的压缩区相对应的所有CLU(步骤92)。如果所需CLU的新的数量小于原来的数量,则将压缩区顺序地写在与原来的压缩区相对应的一部分CLU上。在由平台20处理的空闲CLU的特定列表(队列)中更新与直到该文件关闭所释放的CLU有关的信息(步骤93)。如果所需CLU的新的数量大于原来的数量,则将压缩区顺序地写在与原来的压缩区相对应的所有CLU上(步骤94),然后写在从空闲CLU队列取得的CLU上(步骤95)。如果仍然需要更多的CLU,平台将限定分配给该文件的最后一个CLU(号n),并请求在编号从(n+1)开始的CLU上顺序地进行写入(步骤96);相应地更新已分配CLU的列表(步骤97)。
在本发明的特定实施例中,可以按特殊方式处理最后一个压缩区中的最后一个CLU(如图4中的48-C1所示);即,如果该最后一个CLU是部分充满的,则将其缩减至精确的压缩大小。将区表写在以下偏移量处:头长度+(N-1)×CLU大小+SL,其中,N是已分配CLU的总数,SL是最后一个CLU中的压缩数据的大小。
图10示出了在对根据本发明特定实施例的文件进行关闭操作期间的CLU管理算法。
在关闭该文件(步骤102)之前,平台检查空闲CLU的列表是否为空(步骤101)。如果该列表仍包括CLU,则平台20对使用中的CLU之中具有最高存储位置指针的CLU进行限定。将包含在所述CLU中的压缩数据传送到具有较低指针的空闲CLU(步骤103),并将空出的CLU添加到空闲CLU的列表中。重复该处理,直到使用中的CLU的所有指针都低于包括在空闲CLU的列表中的任何CLU的指针为止(步骤104)。相应地更新区表(步骤105)。可以在整个重写处理结束后和根据其他预定义标准,针对每次所述CLU重写进行这种更新。当该处理结束时,关闭文件并释放空闲CLU(步骤106)。可以根据不同的算法来选择用于以上处理的空闲CLU。例如,在本发明的特定实施例中,可以将来自具有最高存储位置指针的CLU的所述压缩数据传送到具有最低存储位置指针的空闲CLU。
参照图11a-11c,它们示出了根据本发明特定实施例的CLU和分配的盘存储器段之间的关系。图11a示出了当被创建为新的压缩文件时的图5中示出的示例性文件50。CLU的虚拟(逻辑)顺序与对应于这些CLU的盘段的物理顺序相同(CLU内的数字示出了指向相应的盘存储器段的指针)。图11b示出了在参照图5描述的经更新的示例性文件中在压缩区的大小不变的情况下该经更新的压缩文件内的CLU的新的分布。CLU的虚拟(逻辑)顺序与对应于这些CLU的盘段的物理顺序不同,但是保持了文件的去碎片化(de-fragmented)结构。图11c示出了经更新的示例性压缩文件50内的CLU的去碎片后的分布,其中,在更新后,第二个压缩区的大小从432111字节变为200100字节。例如,如果更新偏移量为1MB+314字节,则在更新期间第一个压缩区未受影响。第二个压缩区的新的大小仅需分配4个CLU([200100/61440]+1)。注意,如图11b所示,在更新前,第二个压缩区容纳有8个CLU(序号为2、3、7、10、11、12、15和16)。如参照图9所描述的,平台20将经更新的第二个压缩区写在所述压缩区的前4个CLU(在本示例中为2、3、7、10)上,并将具有指针11、12、15和16的CLU发送到空闲CLU的列表。在该特定更新期间,第三个和第四个压缩区也未受影响。如参照图10所描述的,在关闭文件前,平台20将检查空闲CLU的列表是否为空。按照该示例,该列表包含具有存储位置指针11、12、15和16的CLU。如参照图10所描述的,平台将压缩数据从具有指针13的CLU重写到具有指针11的CLU;将压缩数据从具有指针16的CLU重写到具有指针12的CLU,并释放具有指针13-16的CLU。从而经更新的文件具有12个分配的CLU但没有碎片。
要注意,本发明不受参照图6-11描述的平台20和存储装置14之间的具体输入/输出通信的限制。本领域的技术人员将容易理解,根据网络架构和实现平台20的功能的方式,本发明同样可应用于任何其他通信。例如,如果将压缩文件写入内部平台资源和/或从内部平台资源读取压缩文件,则不需要产生输出的请求。同样,如果平台功能与存储资源整合在一起,则不需要输出的请求。另外的需求(例如,安全访问、数据完整性等)会导致平台和文件存储装置以及整个网络资源之间的更复杂的通信。
还应该理解,本发明不限于其针对在包含于此的描述中阐述或者在附图中示出的细节的应用。本发明还能有其他实施例并能以各种方式实施和执行。因此,应该理解,在此采用的措词和术语是为了说明的目的而不应被视为限制性的。同样地,本领域的技术人员应该理解,可以容易地将本公开所基于的概念用作设计用于执行本发明的多个目的的其他结构、方法和系统的基础。
本领域的技术人员将容易理解,在不脱离本发明的在所附权利要求中限定的范围的情况下,可对此前描述的本发明的实施例进行各种修改和改变。
Claims (41)
1、一种创建存储用压缩文件的方法,该方法与文件访问存储器一起使用,所述方法包括以下步骤:
a)对原始文件进行压缩从而产生压缩数据,其中,所述原始文件的至少一个固定大小部分的数据(簇)被顺序地处理成对应的压缩区,所述压缩区划分为至少一个固定大小的压缩逻辑单元(CLU);
b)将所述压缩数据存储为压缩文件,所述压缩文件包含:与所述原始文件的簇相对应的压缩区、以及包括唯一的文件描述符的头;
c)创建包括描述压缩区的至少一个记录的区表,所述记录至少保存与对应于所述压缩区的CLU有关的信息以及属于所述CLU的存储位置指针。
2、根据权利要求1所述的方法,其中,所述簇具有预定义的相等大小。
3、根据权利要求1所述的方法,其中,根据包括在所述簇中的数据的类型从预定义大小的列表中选择簇的大小。
4、根据权利要求1所述的方法,其中,利用根据包括在所述簇中的数据的类型的压缩算法对簇进行处理。
5、根据权利要求1所述的方法,其中,所述压缩文件包含容纳所述对应簇的非压缩数据的至少一个区。
6、根据权利要求1所述的方法,其中,对簇的所述处理包括:评估可获得的压缩比,并且仅当所述压缩比满足预定义标准时才在所述压缩区内产生压缩数据。
7、根据权利要求1所述的方法,其中,所述压缩文件的所述头保存指示至少一个簇是否被处理成压缩区的信息。
8、根据权利要求1所述的方法,其中,所述压缩文件的所述头保存与所述原始文件的大小有关的信息。
9、根据权利要求1所述的方法,其中,描述所述压缩区的所述记录具有相等的预定义大小。
10、根据权利要求1所述的方法,其中,压缩区的记录保存指示所述压缩区是否包含压缩数据的信息。
11、根据权利要求1所述的方法,其中,仅当文件符合预定义标准时才对所述文件进行压缩。
12、根据权利要求1所述的方法,其中,所述区表形成所述压缩文件的一部分。
13、根据权利要求12所述的方法,其中,所述区表存储在这样的位置,所述位置在所述压缩文件中包含的最后一个压缩区之后。
14、根据权利要求1所述的方法,其中,所述区表形成所属压缩文件以外的文件的一部分。
15、根据权利要求1所述的方法,其中,所述最后一个压缩区中的最后一个CLU的大小由存储在所述CLU中的压缩数据的实际大小限定。
16、一种读取存储在根据权利要求1压缩的文件中的数据的方法,所述方法包括以下步骤:
a)确定包括要读取的数据的第一个压缩区的序列号;
b)通过参照所述区表,确定与所述压缩区相对应的CLU及其存储位置;
c)从所述压缩区恢复簇。
17、根据权利要求16所述的方法,该方法还包括:如果要读取的数据的范围超过所述恢复的簇的大小,则针对序列号加1的压缩区重复步骤b)和c),直到恢复了要读取的所有数据为止。
18、一种将给定数据范围的数据写入根据权利要求1压缩的文件的方法,所述方法包括以下步骤:
a)确定构成所述原始压缩区的包括要更新的数据的第一个压缩区的序列号;
b)通过参照所述区表,确定与所述原始压缩区相对应的CLU及其存储位置;
c)从所述原始压缩区恢复簇;
d)计算更新数据在所述簇内的偏移量并在所述给定数据范围进行更新;
e)将经更新的簇压缩成经更新的压缩区;
f)用经更新的压缩区重写所述原始压缩区;
g)更新所述区表。
19、根据权利要求18所述的方法,该方法还包括:如果要写入的数据的范围超过所述恢复的簇的大小,则针对序列号加1的压缩区重复步骤b)至g),直到写入了所有需要的数据为止。
20、根据权利要求18所述的方法,该方法还包括:对在将数据写入所述压缩文件期间释放的空闲CLU的列表进行处理,在关闭所述文件前,在与所述文件有关的所有会话期间都处理所述列表。
21、根据权利要求20所述的方法,该方法还包括对所述原始压缩区需要的CLU的数量No和所述经更新的压缩区需要的CLU的数量Nu进行比较,并且进行以下之一:
a)如果No=Nu,则用与所述经更新的压缩区相对应的CLU来重写与所述原始压缩区相对应的所有CLU;
b)如果No>Nu,则用与所述经更新的压缩区相对应的CLU来重写与所述原始压缩区相对应的前Nu个CLU,并关于释放的CLU更新空闲CLU的列表;
c)如果No<Nu<No+Nf,其中Nf是空闲CLU的列表中的CLU的数量,则用与所述经更新的压缩区相对应的CLU来重写与所述原始压缩区相对应的所有CLU,并将与所述经更新的压缩区相对应的其余CLU写入包含在所述空闲CLU的列表中的CLU;
d)如果No+Nf<Nu,则用与所述经更新的压缩区相对应的CLU来重写与所述原始压缩区相对应的所有CLU,将与所述经更新的压缩区相对应的CLU写入包含在空闲CLU的列表中的CLU,并将与所述经更新的压缩区相对应的其余CLU连续写入下一空闲存储位置。
22、根据权利要求20所述的方法,该方法还包括:
a)在关闭所述文件前检查空闲CLU的列表;
b)如果所述列表非空,则限定包括在所述压缩区中的CLU之中具有最高存储位置指针的CLU(第一CLU);
c)将压缩数据从所述第一CLU移动到具有较低存储位置指针的空闲CLU(第二CLU);
d)将所述第二CLU分配给所属压缩区并将所述第一CLU分配给空闲CLU的列表;
e)重复步骤b)至d),直到包括在压缩区中的所有CLU的存储位置指针都低于包括在空闲CLU的列表中的任一CLU的指针为止;
f)更新所述区表。
23、一种读取被存储为压缩数据的原始文件的方法,该方法与文件访问存储器一起使用,其中,所述压缩数据被打包成与原始文件的固定大小部分的数据(簇)相对应的一个或更多个压缩区,所述压缩区划分为固定大小的压缩逻辑单元(CLU),所述方法包括以下步骤:
a)确定包括要读取的数据的第一个压缩区的序列号;
b)通过参照区表确定要读取的压缩数据的存储位置,所述区表保存与对应于所述压缩区的CLU及其存储位置有关的信息;
c)从所述压缩区恢复簇。
24、根据权利要求23所述的方法,该方法还包括:如果要读取的数据的范围超过所述恢复的簇的大小,则针对序列号加1的下一压缩区重复步骤b)和c),直到恢复了要读取的所有数据为止。
25、一种将给定数据范围的数据写入被存储为压缩数据的文件的方法,该方法与文件访问存储器一起使用,其中,所述压缩数据被打包成与原始文件的固定大小部分的数据(簇)相对应的一个或更多个压缩区,所述压缩区划分为固定大小的压缩逻辑单元(CLU),所述方法包括以下步骤:
a)确定构成所述原始压缩区的包括要更新的数据的第一个压缩区的序列号;
b)通过参照区表确定要更新的压缩数据的存储位置,所述区表保存与对应于所述压缩区的CLU及其存储位置有关的信息;
c)从所述原始压缩区恢复簇;
d)计算更新数据在所述簇内的偏移量并进行所述给定数据范围的更新;
e)将经更新的簇压缩成经更新的压缩区;
f)用经更新的压缩区重写所述原始压缩区;
g)更新所述区表。
26、根据权利要求25所述的方法,该方法还包括:如果要写入的数据的范围超过所述恢复的簇的大小,则针对序列号加1的下一压缩区重复步骤b)至g),直到写入了所有需要的数据为止。
27、根据权利要求25所述的方法,该方法还包括:对在将数据写入所述压缩文件期间释放的空闲CLU的列表进行处理,在关闭所述文件前,在与所述文件有关的所有会话期间都处理所述列表。
28、根据权利要求27所述的方法,该方法还包括对所述原始压缩区需要的CLU的数量No和所述经更新的压缩区需要的CLU的数量Nu进行比较,并且进行以下之一:
a)如果No=Nu,则用与所述经更新的压缩区相对应的CLU来重写与所述原始压缩区相对应的所有CLU;
b)如果No>Nu,则用与所述经更新的压缩区相对应的CLU来重写与所述原始压缩区相对应的前Nu个CLU,并关于释放的CLU更新空闲CLU的列表;
c)如果No<Nu<No+Nf,其中Nf是空闲CLU的列表中的CLU的数量,则用与所述经更新的压缩区相对应的CLU来重写与所述原始压缩区相对应的所有CLU,并将与所述经更新的压缩区相对应的其余CLU写入包含在所述空闲CLU的列表中的CLU;
d)如果No+Nf<Nu,则用与所述经更新的压缩区相对应的CLU来重写与所述原始压缩区相对应的所有CLU,将与所述经更新的压缩区相对应的CLU写入包含在空闲CLU的列表中的CLU,并将与所述经更新的压缩区相对应的其余CLU连续写入下一空闲存储位置。
29、根据权利要求27所述的方法,该方法还包括:
a)在关闭所述文件前检查空闲CLU的列表;
b)如果所述列表非空,则限定包括在所述压缩区中的CLU之中具有最高存储位置指针的CLU(第一CLU);
c)将压缩数据从所述第一CLU移动到具有较低存储位置指针的空闲CLU(第二CLU);
d)将所述第二CLU分配给所属压缩区并将所述第一CLU分配给空闲CLU的列表;
e)重复步骤b)至d),直到包括在压缩区中的所有CLU的存储位置指针都低于包括在空闲CLU的列表中的任一CLU的指针为止;
f)更新所述区表。
30、根据权利要求1所述的方法,该方法还包括保持所述压缩文件的去碎片化结构。
31、根据权利要求23所述的方法,该方法还包括保持所述压缩文件的去碎片化结构。
32、根据权利要求25所述的方法,该方法还包括保持所述压缩文件的去碎片化结构。
33、根据权利要求1所述的方法,其中,所述文件访问存储器是网络连接存储器(NAS)。
34、根据权利要求23所述的方法,其中,所述文件访问存储器是网络连接存储器(NAS)。
35、根据权利要求25所述的方法,其中,所述文件访问存储器是网络连接存储器(NAS)。
36、根据权利要求1所述的方法,该方法还包括对包含在原始文件中的数据进行加密。
37、一种用于对存储用文件进行压缩的系统,该系统包括:
a)压缩子系统,用于对原始文件进行压缩从而产生压缩数据,其中,所述原始文件的固定大小部分的数据(簇)被顺序地处理成压缩区,所述压缩区划分为至少一个固定大小的压缩逻辑单元(CLU);
b)存储子系统,用于将所述压缩数据存储为压缩文件,所述压缩文件包含:与所述原始文件的簇相对应的所述压缩区、以及包括唯一的文件描述符的头;
c)区表创建子系统,用于创建包括压缩区的至少一个记录的区表,所述记录保存与对应于所述压缩区的CLU有关的信息以及属于所述CLU的存储位置指针。
38、一种可由机器读取的程序存储装置,该装置与文件访问存储器一起使用,明确地包含了用于执行创建存储用压缩文件的方法的步骤的、可由所述机器执行的指令的程序,所述方法包括以下步骤:
a)对原始文件进行压缩从而产生压缩数据,其中,所述原始文件的至少一个固定大小部分的数据(簇)被顺序地处理成对应的压缩区,所述压缩区划分为至少一个固定大小的压缩逻辑单元(CLU);
b)将所述压缩数据存储为压缩文件,所述压缩文件包含:与所述原始文件的所述簇相对应的所述压缩区、以及包括唯一的文件描述符的头;
c)创建包括所述压缩区的记录的区表,所述记录至少保存与对应于所述压缩区的CLU有关的信息以及属于所述CLU的存储位置指针。
39、一种计算机程序产品,该产品与文件访问存储器一起使用,该产品包括计算机可用介质,所述计算机可用介质具有实现在其上的用于创建存储用压缩文件的计算机可读程序代码,所述计算机程序产品包括;
a)用于使计算机进行以下处理的计算机可读程序代码:对原始文件进行压缩从而产生压缩数据,其中,所述原始文件的至少一个固定大小部分的数据(簇)被顺序地处理成对应的压缩区,所述压缩区划分为至少一个固定大小的压缩逻辑单元(CLU);
b)用于使计算机进行以下处理的计算机可读程序代码:将所述压缩数据存储为压缩文件,所述压缩文件包含与所述原始文件的所述簇相对应的所述压缩区、以及包括唯一的文件描述符的头;
c)用于使计算机进行以下处理的计算机可读程序代码:创建包括压缩区的记录的区表,所述记录保存与对应于所述压缩区的CLU有关的信息以及属于所述CLU的存储位置指针。
40、一种对存储用文件进行压缩的方法,所述方法对压缩数据进行直接访问,同时保持压缩文件的去碎片化结构。
41、一种将数据写入被存储为压缩数据的文件的方法,该方法与文件访问存储器一起使用,其中,原始文件的压缩数据被打包为一个或更多个压缩单元,所述方法更新一个或更多个对应的压缩单元而无需恢复整个文件,同时保持所述压缩单元的去碎片化结构。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US56529804P | 2004-04-26 | 2004-04-26 | |
US60/565,298 | 2004-04-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1973287A true CN1973287A (zh) | 2007-05-30 |
Family
ID=35197600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005800132584A Pending CN1973287A (zh) | 2004-04-26 | 2005-04-21 | 压缩存储用文件以及对压缩的文件进行操作的方法和系统 |
Country Status (9)
Country | Link |
---|---|
US (2) | US7979403B2 (zh) |
EP (1) | EP1745394B1 (zh) |
JP (1) | JP4755642B2 (zh) |
CN (1) | CN1973287A (zh) |
AU (1) | AU2005236265A1 (zh) |
CA (1) | CA2564844C (zh) |
DE (1) | DE602005015435D1 (zh) |
IL (1) | IL178694A (zh) |
WO (1) | WO2005103878A2 (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010083682A1 (zh) * | 2009-01-20 | 2010-07-29 | 中兴通讯股份有限公司 | 基于文件系统的文件压缩方法及装置 |
CN101923559A (zh) * | 2010-03-24 | 2010-12-22 | 深圳市万兴软件有限公司 | 一种图像文件管理方法和系统 |
US8332551B2 (en) | 2009-07-27 | 2012-12-11 | National Sun Yat-Sen University | Compressed data managing system and method for circular buffer |
CN101622594B (zh) * | 2006-12-06 | 2013-03-13 | 弗森-艾奥公司 | 使用空数据令牌指令管理来自于请求设备的数据的装置、系统和方法 |
CN102053915B (zh) * | 2009-10-30 | 2013-06-19 | 国立中山大学 | 应用于循环存储器的压缩数据管理系统及方法 |
CN103597454A (zh) * | 2011-06-10 | 2014-02-19 | 松下电器产业株式会社 | 配置决定装置、配置决定方法、数据结构、存储器、访问装置及存储器访问方法 |
CN107624179A (zh) * | 2015-06-26 | 2018-01-23 | 英特尔公司 | 高效固态驱动器数据压缩方案和布局 |
CN108804021A (zh) * | 2017-05-05 | 2018-11-13 | 捷鼎创新股份有限公司 | 数据压缩装置及其数据压缩方法 |
CN104199816B (zh) * | 2008-05-14 | 2019-04-09 | 起元技术有限责任公司 | 单独可访问数据单元的管理存储 |
CN111797969A (zh) * | 2020-06-23 | 2020-10-20 | 浙江大华技术股份有限公司 | 神经网络模型的转换方法及相关装置 |
CN113590051A (zh) * | 2021-09-29 | 2021-11-02 | 阿里云计算有限公司 | 数据存储和读取方法、装置、电子设备及介质 |
Families Citing this family (101)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006059319A (ja) * | 2004-07-21 | 2006-03-02 | Ricoh Co Ltd | 情報処理装置、プログラムおよび記憶媒体 |
JP4754982B2 (ja) * | 2006-02-13 | 2011-08-24 | パナソニック株式会社 | ファイル転送システム |
US20070208893A1 (en) * | 2006-02-23 | 2007-09-06 | Microsoft Corporation | File-based compression on a fat volume |
US8868930B2 (en) | 2006-05-31 | 2014-10-21 | International Business Machines Corporation | Systems and methods for transformation of logical data objects for storage |
US8782436B2 (en) | 2006-05-31 | 2014-07-15 | International Business Machines Corporation | Method and system for transformation of logical data objects for storage |
US8489817B2 (en) | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
US8935302B2 (en) | 2006-12-06 | 2015-01-13 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume |
JP5037952B2 (ja) * | 2007-01-15 | 2012-10-03 | 株式会社日立製作所 | ストレージシステム及びストレージシステムの制御方法 |
US20080228770A1 (en) * | 2007-03-15 | 2008-09-18 | Halcrow Michael A | Method for Performing Recoverable Live Context Migration in a Stacked File System |
US8325886B1 (en) | 2007-03-26 | 2012-12-04 | Callwave Communications, Llc | Methods and systems for managing telecommunications |
US8447285B1 (en) | 2007-03-26 | 2013-05-21 | Callwave Communications, Llc | Methods and systems for managing telecommunications and for translating voice messages to text messages |
US8583746B1 (en) | 2007-05-25 | 2013-11-12 | Callwave Communications, Llc | Methods and systems for web and call processing |
US8463759B2 (en) * | 2007-09-24 | 2013-06-11 | Ca, Inc. | Method and system for compressing data |
US9519540B2 (en) | 2007-12-06 | 2016-12-13 | Sandisk Technologies Llc | Apparatus, system, and method for destaging cached data |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
GB2457303A (en) | 2008-02-11 | 2009-08-12 | Linear Algebra Technologies | Randomly accessing elements of compressed matrix data by calculating offsets from non-zero values of a bitmap |
US8286171B2 (en) | 2008-07-21 | 2012-10-09 | Workshare Technology, Inc. | Methods and systems to fingerprint textual information using word runs |
US9092636B2 (en) | 2008-11-18 | 2015-07-28 | Workshare Technology, Inc. | Methods and systems for exact data match filtering |
US7987162B2 (en) * | 2009-03-06 | 2011-07-26 | Bluearc Uk Limited | Data compression in a file storage system |
US8209303B2 (en) * | 2009-07-29 | 2012-06-26 | Novell, Inc. | System and method for implementing a reliable persistent random access compressed data stream |
US8131688B2 (en) * | 2009-08-26 | 2012-03-06 | Lsi Corporation | Storage system data compression enhancement |
US9223514B2 (en) | 2009-09-09 | 2015-12-29 | SanDisk Technologies, Inc. | Erase suspend/resume for memory |
US9122579B2 (en) | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
EP2476039B1 (en) | 2009-09-09 | 2016-10-26 | SanDisk Technologies LLC | Apparatus, system, and method for power reduction management in a storage device |
US20110119232A1 (en) * | 2009-11-18 | 2011-05-19 | Raytheon Company | Synchronizing data between a client and a server |
WO2011143628A2 (en) | 2010-05-13 | 2011-11-17 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
WO2012016089A2 (en) | 2010-07-28 | 2012-02-02 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
US8984216B2 (en) | 2010-09-09 | 2015-03-17 | Fusion-Io, Llc | Apparatus, system, and method for managing lifetime of a storage device |
US11030163B2 (en) | 2011-11-29 | 2021-06-08 | Workshare, Ltd. | System for tracking and displaying changes in a set of related electronic documents |
US10783326B2 (en) | 2013-03-14 | 2020-09-22 | Workshare, Ltd. | System for tracking changes in a collaborative document editing environment |
US10025759B2 (en) | 2010-11-29 | 2018-07-17 | Workshare Technology, Inc. | Methods and systems for monitoring documents exchanged over email applications |
US10817502B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent memory management |
US9047178B2 (en) | 2010-12-13 | 2015-06-02 | SanDisk Technologies, Inc. | Auto-commit memory synchronization |
US9218278B2 (en) | 2010-12-13 | 2015-12-22 | SanDisk Technologies, Inc. | Auto-commit memory |
US10817421B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent data structures |
WO2012082792A2 (en) | 2010-12-13 | 2012-06-21 | Fusion-Io, Inc. | Apparatus, system, and method for auto-commit memory |
US9208071B2 (en) | 2010-12-13 | 2015-12-08 | SanDisk Technologies, Inc. | Apparatus, system, and method for accessing memory |
US20120239860A1 (en) | 2010-12-17 | 2012-09-20 | Fusion-Io, Inc. | Apparatus, system, and method for persistent data management on a non-volatile storage media |
US9213594B2 (en) | 2011-01-19 | 2015-12-15 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for managing out-of-service conditions |
US9201677B2 (en) | 2011-05-23 | 2015-12-01 | Intelligent Intellectual Property Holdings 2 Llc | Managing data input/output operations |
US8996807B2 (en) | 2011-02-15 | 2015-03-31 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a multi-level cache |
US8874823B2 (en) | 2011-02-15 | 2014-10-28 | Intellectual Property Holdings 2 Llc | Systems and methods for managing data input/output operations |
US9003104B2 (en) | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US9141527B2 (en) | 2011-02-25 | 2015-09-22 | Intelligent Intellectual Property Holdings 2 Llc | Managing cache pools |
US9563555B2 (en) | 2011-03-18 | 2017-02-07 | Sandisk Technologies Llc | Systems and methods for storage allocation |
WO2012129191A2 (en) | 2011-03-18 | 2012-09-27 | Fusion-Io, Inc. | Logical interfaces for contextual storage |
US8745338B1 (en) * | 2011-05-02 | 2014-06-03 | Netapp, Inc. | Overwriting part of compressed data without decompressing on-disk compressed data |
US10880359B2 (en) | 2011-12-21 | 2020-12-29 | Workshare, Ltd. | System and method for cross platform document sharing |
US10574729B2 (en) | 2011-06-08 | 2020-02-25 | Workshare Ltd. | System and method for cross platform document sharing |
US9948676B2 (en) | 2013-07-25 | 2018-04-17 | Workshare, Ltd. | System and method for securing documents prior to transmission |
US9613340B2 (en) | 2011-06-14 | 2017-04-04 | Workshare Ltd. | Method and system for shared document approval |
US10963584B2 (en) * | 2011-06-08 | 2021-03-30 | Workshare Ltd. | Method and system for collaborative editing of a remotely stored document |
US9170990B2 (en) | 2013-03-14 | 2015-10-27 | Workshare Limited | Method and system for document retrieval with selective document comparison |
US9274937B2 (en) | 2011-12-22 | 2016-03-01 | Longitude Enterprise Flash S.A.R.L. | Systems, methods, and interfaces for vector input/output operations |
US9251086B2 (en) | 2012-01-24 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing a cache |
US9116812B2 (en) | 2012-01-27 | 2015-08-25 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a de-duplication cache |
US10359972B2 (en) | 2012-08-31 | 2019-07-23 | Sandisk Technologies Llc | Systems, methods, and interfaces for adaptive persistence |
US8615500B1 (en) * | 2012-03-29 | 2013-12-24 | Emc Corporation | Partial block allocation for file system block compression using virtual block metadata |
US9659060B2 (en) * | 2012-04-30 | 2017-05-23 | International Business Machines Corporation | Enhancing performance-cost ratio of a primary storage adaptive data reduction system |
US9177028B2 (en) | 2012-04-30 | 2015-11-03 | International Business Machines Corporation | Deduplicating storage with enhanced frequent-block detection |
US9612966B2 (en) | 2012-07-03 | 2017-04-04 | Sandisk Technologies Llc | Systems, methods and apparatus for a virtual machine cache |
US10339056B2 (en) | 2012-07-03 | 2019-07-02 | Sandisk Technologies Llc | Systems, methods and apparatus for cache transfers |
US10318495B2 (en) | 2012-09-24 | 2019-06-11 | Sandisk Technologies Llc | Snapshots for a non-volatile device |
US10509776B2 (en) | 2012-09-24 | 2019-12-17 | Sandisk Technologies Llc | Time sequence data management |
US9201883B1 (en) * | 2012-10-08 | 2015-12-01 | Amazon Technologies, Inc. | Remote file archiving using package files |
US8959301B2 (en) | 2012-11-09 | 2015-02-17 | International Business Machines Corporation | Accessing data in a storage system |
GB2556262B (en) * | 2012-12-21 | 2018-11-21 | Displaylink Uk Ltd | Management of memory for storing display data |
US9779102B2 (en) * | 2013-03-11 | 2017-10-03 | Here Global B.V. | Method and apparatus for providing compressed data structure |
US9805046B2 (en) | 2013-03-14 | 2017-10-31 | International Business Machines Corporation | Data compression using compression blocks and partitions |
US11567907B2 (en) | 2013-03-14 | 2023-01-31 | Workshare, Ltd. | Method and system for comparing document versions encoded in a hierarchical representation |
US9842053B2 (en) | 2013-03-15 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for persistent cache logging |
US10102144B2 (en) | 2013-04-16 | 2018-10-16 | Sandisk Technologies Llc | Systems, methods and interfaces for data virtualization |
US10558561B2 (en) | 2013-04-16 | 2020-02-11 | Sandisk Technologies Llc | Systems and methods for storage metadata management |
US10911492B2 (en) | 2013-07-25 | 2021-02-02 | Workshare Ltd. | System and method for securing documents prior to transmission |
US9842128B2 (en) | 2013-08-01 | 2017-12-12 | Sandisk Technologies Llc | Systems and methods for atomic storage operations |
US10019320B2 (en) | 2013-10-18 | 2018-07-10 | Sandisk Technologies Llc | Systems and methods for distributed atomic storage operations |
US10073630B2 (en) | 2013-11-08 | 2018-09-11 | Sandisk Technologies Llc | Systems and methods for log coordination |
CN105446964B (zh) * | 2014-05-30 | 2019-04-26 | 国际商业机器公司 | 用于文件的重复数据删除的方法及装置 |
US10133723B2 (en) | 2014-12-29 | 2018-11-20 | Workshare Ltd. | System and method for determining document version geneology |
US11182551B2 (en) | 2014-12-29 | 2021-11-23 | Workshare Ltd. | System and method for determining document version geneology |
US9946607B2 (en) | 2015-03-04 | 2018-04-17 | Sandisk Technologies Llc | Systems and methods for storage error management |
US10009438B2 (en) | 2015-05-20 | 2018-06-26 | Sandisk Technologies Llc | Transaction log acceleration |
US20170038978A1 (en) * | 2015-08-05 | 2017-02-09 | HGST Netherlands B.V. | Delta Compression Engine for Similarity Based Data Deduplication |
US11763013B2 (en) | 2015-08-07 | 2023-09-19 | Workshare, Ltd. | Transaction document management system and method |
US9588694B1 (en) | 2016-01-21 | 2017-03-07 | International Business Machines Corporation | Storage device optimization |
AU2016231504B2 (en) * | 2016-09-20 | 2021-10-21 | Ainsworth Game Technology Limited | Method and System of Verifying a File for use in a Gaming Machine |
JP6841024B2 (ja) * | 2016-12-09 | 2021-03-10 | 富士通株式会社 | データ処理装置,データ処理プログラムおよびデータ処理方法 |
US10489350B2 (en) * | 2017-02-24 | 2019-11-26 | Advanced Micro Devices, Inc. | Data compression with inline compression metadata |
JP6756280B2 (ja) * | 2017-03-03 | 2020-09-16 | 富士通株式会社 | 情報処理装置,情報処理プログラムおよび情報処理方法 |
US10282127B2 (en) | 2017-04-20 | 2019-05-07 | Western Digital Technologies, Inc. | Managing data in a storage system |
US10809928B2 (en) | 2017-06-02 | 2020-10-20 | Western Digital Technologies, Inc. | Efficient data deduplication leveraging sequential chunks or auxiliary databases |
US10503608B2 (en) | 2017-07-24 | 2019-12-10 | Western Digital Technologies, Inc. | Efficient management of reference blocks used in data deduplication |
US11194498B1 (en) * | 2017-07-28 | 2021-12-07 | EMC IP Holding Company LLC | Inline compression with small-write compression avoidance |
JP7013732B2 (ja) * | 2017-08-31 | 2022-02-01 | 富士通株式会社 | 情報処理装置、情報処理方法及びプログラム |
US11119681B2 (en) * | 2018-04-28 | 2021-09-14 | Hewlett Packard Enterprise Development Lp | Opportunistic compression |
US10970254B2 (en) | 2018-05-02 | 2021-04-06 | International Business Machines Corporation | Utilization of tail portions of a fixed size block in a deduplication environment by deduplication chunk virtualization |
US11119654B2 (en) * | 2018-07-10 | 2021-09-14 | International Business Machines Corporation | Determining an optimal storage environment for data sets and for migrating data sets |
CN110647428B (zh) * | 2019-09-29 | 2023-08-04 | 海信视像科技股份有限公司 | 镜像文件的制作及恢复方法、处理器和嵌入式系统 |
US11243890B2 (en) * | 2020-01-14 | 2022-02-08 | EMC IP Holding Company LLC | Compressed data verification |
CN113157655A (zh) * | 2020-01-22 | 2021-07-23 | 阿里巴巴集团控股有限公司 | 一种数据压缩、解压方法、装置、电子设备和存储介质 |
CN114328373A (zh) * | 2020-09-29 | 2022-04-12 | 伊姆西Ip控股有限责任公司 | 管理文件系统的方法、电子设备和计算机程序产品 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5481701A (en) * | 1991-09-13 | 1996-01-02 | Salient Software, Inc. | Method and apparatus for performing direct read of compressed data file |
US5649151A (en) * | 1992-06-29 | 1997-07-15 | Apple Computer, Inc. | Efficient method and apparatus for access and storage of compressed data |
US5305295A (en) * | 1992-06-29 | 1994-04-19 | Apple Computer, Inc. | Efficient method and apparatus for access and storage of compressed data |
US5991753A (en) * | 1993-06-16 | 1999-11-23 | Lachman Technology, Inc. | Method and system for computer file management, including file migration, special handling, and associating extended attributes with files |
WO1995018997A2 (en) | 1993-12-30 | 1995-07-13 | Connectix Corporation | Virtual memory management system and method using data compression |
US6349375B1 (en) | 1994-02-02 | 2002-02-19 | Compaq Computer Corporation | Compression of data in read only storage and embedded systems |
US5488365A (en) * | 1994-03-01 | 1996-01-30 | Hewlett-Packard Company | Method and apparatus for compressing and decompressing short blocks of data |
WO1995029437A1 (fr) | 1994-04-22 | 1995-11-02 | Sony Corporation | Dispositif et methode pour transmettre des donnees et dispositif et methode pour enregistrer des donnees |
US5668970A (en) | 1994-06-20 | 1997-09-16 | Cd Rom, U.S.A., Inc. | Method and apparatus for generating a file allocation table for a storage medium with no file allocation table using file storage information |
US5574906A (en) | 1994-10-24 | 1996-11-12 | International Business Machines Corporation | System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing |
JP2831602B2 (ja) * | 1995-01-13 | 1998-12-02 | 富士通株式会社 | 圧縮データ管理装置及び圧縮データ管理方法 |
JP3509285B2 (ja) * | 1995-05-12 | 2004-03-22 | 富士通株式会社 | 圧縮データ管理方式 |
US5778411A (en) * | 1995-05-16 | 1998-07-07 | Symbios, Inc. | Method for virtual to physical mapping in a mapped compressed virtual storage subsystem |
US5809295A (en) * | 1995-09-26 | 1998-09-15 | Microsoft Corporation | Method and apparatus for storing compressed file data on a disk where each MDFAT data structure includes an extra byte |
US6577734B1 (en) * | 1995-10-31 | 2003-06-10 | Lucent Technologies Inc. | Data encryption key management system |
US5765173A (en) * | 1996-01-11 | 1998-06-09 | Connected Corporation | High performance backup via selective file saving which can perform incremental backups and exclude files and uses a changed block signature list |
US5774715A (en) * | 1996-03-27 | 1998-06-30 | Sun Microsystems, Inc. | File system level compression using holes |
US5761536A (en) | 1996-08-21 | 1998-06-02 | International Business Machines Corporation | System and method for reducing memory fragmentation by assigning remainders to share memory blocks on a best fit basis |
US6112024A (en) * | 1996-10-02 | 2000-08-29 | Sybase, Inc. | Development system providing methods for managing different versions of objects with a meta model |
US6115787A (en) | 1996-11-05 | 2000-09-05 | Hitachi, Ltd. | Disc storage system having cache memory which stores compressed data |
US6092071A (en) | 1997-11-04 | 2000-07-18 | International Business Machines Corporation | Dedicated input/output processor method and apparatus for access and storage of compressed data |
US6624761B2 (en) | 1998-12-11 | 2003-09-23 | Realtime Data, Llc | Content independent data compression method and system |
US6145069A (en) | 1999-01-29 | 2000-11-07 | Interactive Silicon, Inc. | Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices |
FI991261A (fi) * | 1999-06-02 | 2000-12-03 | Nokia Networks Oy | Trie-rakenteeseen perustuva funktionaalinen muisti |
WO2001025928A1 (en) * | 1999-10-01 | 2001-04-12 | Infraworks Corporation | Method and apparatus for monitoring clock-related permission on a computer to prevent unauthorized access |
US6532121B1 (en) * | 1999-10-25 | 2003-03-11 | Hewlett-Packard Company | Compression algorithm with embedded meta-data for partial record operation augmented with expansion joints |
JP4424845B2 (ja) | 1999-12-20 | 2010-03-03 | 本田 正 | イメージデータ圧縮方法及び復元方法 |
US6728785B1 (en) | 2000-06-23 | 2004-04-27 | Cloudshield Technologies, Inc. | System and method for dynamic compression of data |
WO2002039306A1 (en) | 2000-11-09 | 2002-05-16 | Sri International | Systems and methods for negotiated resource utilization |
US20020107988A1 (en) | 2001-02-05 | 2002-08-08 | James Jordan | In-line compression system for low-bandwidth client-server data link |
US8402005B2 (en) * | 2001-03-27 | 2013-03-19 | Intel Corporation | Systems and methods for creating self-extracting files |
EP1563389A4 (en) * | 2001-08-01 | 2008-06-25 | Actona Technologies Ltd | VIRTUAL DATA DISTRIBUTION NETWORK |
US6678828B1 (en) | 2002-07-22 | 2004-01-13 | Vormetric, Inc. | Secure network file access control system |
US7958289B2 (en) | 2002-08-08 | 2011-06-07 | International Business Machines Corporation | Method and system for storing memory compressed data onto memory compressed disks |
US7228925B2 (en) * | 2002-10-04 | 2007-06-12 | Tesla Capital, Llc | Electrical systems for electric powered vehicles |
US20050033988A1 (en) * | 2002-10-18 | 2005-02-10 | Neoscale Systems, Inc. | Method and system for transparent encryption and authentication of file data protocols over internet protocol |
US7536418B2 (en) * | 2003-01-10 | 2009-05-19 | At&T Intellectual Property Ii, Lp | Preload library for transparent file transformation |
JP4131514B2 (ja) | 2003-04-21 | 2008-08-13 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ネットワークシステム、サーバ、データ処理方法及びプログラム |
US7117204B2 (en) | 2003-12-03 | 2006-10-03 | International Business Machines Corporation | Transparent content addressable data storage and compression for a file system |
-
2005
- 2005-04-21 WO PCT/IL2005/000419 patent/WO2005103878A2/en active Application Filing
- 2005-04-21 CN CNA2005800132584A patent/CN1973287A/zh active Pending
- 2005-04-21 EP EP05735082A patent/EP1745394B1/en active Active
- 2005-04-21 CA CA2564844A patent/CA2564844C/en active Active
- 2005-04-21 AU AU2005236265A patent/AU2005236265A1/en not_active Abandoned
- 2005-04-21 DE DE602005015435T patent/DE602005015435D1/de active Active
- 2005-04-21 JP JP2007510232A patent/JP4755642B2/ja active Active
-
2006
- 2006-04-11 US US11/401,424 patent/US7979403B2/en not_active Expired - Fee Related
- 2006-10-17 IL IL178694A patent/IL178694A/en active IP Right Grant
-
2011
- 2011-05-16 US US13/108,214 patent/US8606763B2/en not_active Expired - Fee Related
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101622594B (zh) * | 2006-12-06 | 2013-03-13 | 弗森-艾奥公司 | 使用空数据令牌指令管理来自于请求设备的数据的装置、系统和方法 |
CN104199816B (zh) * | 2008-05-14 | 2019-04-09 | 起元技术有限责任公司 | 单独可访问数据单元的管理存储 |
WO2010083682A1 (zh) * | 2009-01-20 | 2010-07-29 | 中兴通讯股份有限公司 | 基于文件系统的文件压缩方法及装置 |
CN101478370B (zh) * | 2009-01-20 | 2012-05-23 | 中兴通讯股份有限公司 | 基于文件系统的文件压缩方法及装置 |
US8332551B2 (en) | 2009-07-27 | 2012-12-11 | National Sun Yat-Sen University | Compressed data managing system and method for circular buffer |
CN102053915B (zh) * | 2009-10-30 | 2013-06-19 | 国立中山大学 | 应用于循环存储器的压缩数据管理系统及方法 |
CN101923559B (zh) * | 2010-03-24 | 2012-10-10 | 深圳市万兴软件有限公司 | 一种图像文件管理方法和系统 |
CN101923559A (zh) * | 2010-03-24 | 2010-12-22 | 深圳市万兴软件有限公司 | 一种图像文件管理方法和系统 |
CN103597454A (zh) * | 2011-06-10 | 2014-02-19 | 松下电器产业株式会社 | 配置决定装置、配置决定方法、数据结构、存储器、访问装置及存储器访问方法 |
CN103597454B (zh) * | 2011-06-10 | 2016-02-03 | 松下知识产权经营株式会社 | 配置决定装置、配置决定方法、数据结构的构成方法、存储器、访问装置及存储器访问方法 |
US9519599B2 (en) | 2011-06-10 | 2016-12-13 | Panasonic Intellectual Property Management Co., Ltd. | Memory location determining device and method for determining locations of compressed data in a memory by using first and second arithmetic operations |
CN107624179A (zh) * | 2015-06-26 | 2018-01-23 | 英特尔公司 | 高效固态驱动器数据压缩方案和布局 |
CN108804021A (zh) * | 2017-05-05 | 2018-11-13 | 捷鼎创新股份有限公司 | 数据压缩装置及其数据压缩方法 |
CN108804021B (zh) * | 2017-05-05 | 2021-12-17 | 上海川源信息科技有限公司 | 数据压缩装置及其数据压缩方法 |
CN111797969A (zh) * | 2020-06-23 | 2020-10-20 | 浙江大华技术股份有限公司 | 神经网络模型的转换方法及相关装置 |
CN113590051A (zh) * | 2021-09-29 | 2021-11-02 | 阿里云计算有限公司 | 数据存储和读取方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
AU2005236265A1 (en) | 2005-11-03 |
WO2005103878A3 (en) | 2006-08-24 |
JP2007535068A (ja) | 2007-11-29 |
US7979403B2 (en) | 2011-07-12 |
US20110218976A1 (en) | 2011-09-08 |
US8606763B2 (en) | 2013-12-10 |
US20060184505A1 (en) | 2006-08-17 |
DE602005015435D1 (de) | 2009-08-27 |
IL178694A (en) | 2011-12-29 |
JP4755642B2 (ja) | 2011-08-24 |
CA2564844A1 (en) | 2005-11-03 |
EP1745394B1 (en) | 2009-07-15 |
EP1745394A2 (en) | 2007-01-24 |
WO2005103878A2 (en) | 2005-11-03 |
EP1745394A4 (en) | 2007-10-31 |
IL178694A0 (en) | 2007-02-11 |
CA2564844C (en) | 2014-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1973287A (zh) | 压缩存储用文件以及对压缩的文件进行操作的方法和系统 | |
US8473652B2 (en) | Systems and methods for compression of data for block mode access storage | |
US7424482B2 (en) | Method and system for compression of data for block mode access storage | |
US8327050B2 (en) | Systems and methods for compressing files for storage and operation on compressed files | |
US7987162B2 (en) | Data compression in a file storage system | |
US7496586B1 (en) | Method and apparatus for compressing data in a file system | |
US7293150B2 (en) | Method and system for creating and restoring an image file | |
US7334099B2 (en) | Method and system for managing image files | |
US20060190643A1 (en) | Method and system for compression of data for block mode access storage | |
EP1949541A2 (en) | Method and system for compression of logical data objects for storage | |
ZA200608760B (en) | Method and system for compression of files for storage and operation on compressed files |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |