用于块模式访问存储的数据压缩的方法和系统的制作方法

文档序号:7540434阅读:195来源:国知局
专利名称:用于块模式访问存储的数据压缩的方法和系统的制作方法
技术领域
本发明涉及计算系统,并且更具体地涉及通过块存储协议促进
(facilitate)对压缩数据的压縮和操作的方法和系统。
背景技术
在当今的商业环境中,所有类型的商业数据对商业成功变得越来越关 键。商业生成的数据的巨大增长以及复杂性推动对信息存储的要求,定义 共享的方式,管理和保护信息资产。
一般地,没有单一的科技或结构能够处理任何组织的所有需要。例如, 主要的存储技术在EMC的白皮书,美国2003年3月的"Leveraging Networked storage for your business"中^皮描述,并且基本上可通过位置和 连接类型(计算机内存储、直接附加存储(DAS)、 IP、通道网络(channel network)等等)以及通过数据被访问的方法来识别。认为有3种基本类型 的存储结构与数据访问的方法有关块访问、文件访问和对象访问。
在块模式访问结构中,在服务器/客户机和存储媒介之间的通信按照块 出现;信息直接从磁盘上逐块取出。操作系统记录每段信息在磁盘上的位 置,而存储媒^i^一般不知道用来在设备上组织数据的文件系统。当需要读 取或写入某些东西时,知道每块数据位于磁盘上的位置和如何将它们放置 在一起的处理器直接从磁盘访问数据。块模式访问存储技术的例子是DAS (直接附加存储)、SAN(存储区域网络)、通过IP的块存储(例如,FCIP、 iFIP、 iSCSI等等)、存储器内存储等等。
文件访问需要服务器或客户机通过名称而不是通过物理位置来请求 文件。因此,存储々某介(外部存储i殳备或在计算机内部的存储单元)通常 负责将文件映射回到数据块以产生、保持和更新文件系统,同时块访问在
"后台"处理。文件访问存储技术的例子是NAS(使用NFS、 CIFS、 HTTP 等协议的网络附加存储)、MPFS (多路径文件服务)、计算机内文件存储 等等。文件访问存储可被实现例如用于通用文件、网络应用、工程应用(例 如CAD、 CAM、软件开发等等)、图像和3D数据处理、多媒体流等等。
对象访问还通过从应用程序隐藏关于块、文件和存储拓朴的细节来简 单化数据访问。对象访问出现在集成在内容管理应用程序中的API上。对 象访问存储技术的例子是CAS (内容寻址存储)。
存储的更多有效的使用可以在数据被储存以前通过数据压缩实现。为 了分别减少存储容量和传输时间,数据压缩技术用来减少待储存或待传输 的数据量。压缩可以通过^f吏用不同的压缩算法来实现,例如,标准压缩算 法,例如由J. Ziv和A.. Lempel在"A Universal Algorithm For Sequential Data Compression", 正EE Transactions on Information Theory , IT-23 , pp. 337-343(1997)中描述的算法。它对透明地执行压缩很重要,意味着数据可 无变化地用于已有的应用程序。在任一情况下,都有必要提供相应的解压 缩技术来使原始数据能够被重建并且能够被应用程序访问。当对压缩的数 据进行更新时,解压缩和再压缩全部块或文件一般不是有效的,特别是当 对相对小部分的数据更新时。
对储存的数据的存储和访问的最优化的各种实现例如在下面的专利 公布中^皮公开
美国专利号5,761,536 (Franaszek)公开了一种系统和方法,其用于储 存可变长度对象以使存储器碎片减少,同时避免对于存储器重新组织的需 要。可变长度对象的剩余部分可以被指定来在最佳配合或第一配合的基础 上与来自另 一个可变长度对象的剩余部分共享固定大小的存储块(共享块 的两个这种剩佘部分被称为室友(roommate ))。 一个剩余部分储存在块的 一端,而另一个剩余部分储存在块的另一端。要共享存储块的可变长度对 象选自同一个群组。因此在对象之间存在某种关联。作为例子,这种关联 可以是对象来自同一页或者对象以跨越多个页的某线性顺序。关于群组的 可变长度对象的信息,例如对象是否有室友,被储存在存储器中。美国专利号5,813,011 (Yoshida等人)公开了一种用于储存压缩数据 的方法和装置,其中压缩文件由下列项组成携带显示压缩管理表的位置 的信息的首部;压缩代码;以及保存显示每个原始记录的压縮代码的存储 位置的信息的压缩管理表。
美国专利号5,813,017 (Morris等人)公开了 一种用于减少备份子系统 中的存储要求并进一步减少传输带宽上的负载的方法和装置,其中基本文 件以分段压缩的格式被保持在服务器上。当在客户机上修改文件时,文件 被传输到服务器并且利用差分函数与文件的分段压缩的基本版本比较,但 不解压整个基本文件。作为在压缩的基本文件和文件的修改版本之间的差 异的增量文件被产生和储存在作为备份子系统的一部分的存储媒介上。
美国专利号6,092,071 (Bolan等人)公开了一种系统,其用于基于系 统老化参数来控制数据的压缩和解压,以使压缩数据成为在系统存储层次 中具有明显位置的系统管理的资源。处理器寄存器由高速緩冲存储器支 持,高速緩冲存储器由主存储器支持,主存储器由解压缩的磁盘存储器支 持,解压缩的磁盘存储器由压缩的磁盘存储器支持,然后压缩的磁盘存储 器由磁带支持,等等。根据数据生命周期,基于系统老化参数或可选地在 要求时,数据从解压缩的形式改变为压缩的形式并在系统控制下通过存储 器层次而转移数据最初被产生和储存;在系统控制下数据在稍后的时间 净組缩;当数据被访问时,它在要求时按片段被解压缩;在某个稍后的时 间,数据在系统控制下再次被压缩直到下一次访问。大的数据对象是分段 的,并且压缩被应用于较不经常使用的数据。
美国专利号6,115,787 (Obara等人)公开了一种磁盘存储系统,其中 要储存在高速緩沖存储器中的数据被分成多个数据块,每个数据块具有与 拥有数据的并且^皮压缩的追踪块关联的两个高速緩沖块,因而以容易读取 的方式将多个压缩记录的存储提供至磁盘存储系统的高速緩沖存储器中。 相应的数据块在压缩后被储存在一个或多个高速緩冲块中。用于从数据块 被记录的地址取回每个高速緩冲块的信息被储存为对于高速緩沖存储器 的检索信息的一部分。当在记录中的相应数据块被读取时,基于数据块的 被记录的地址以及检索信息来确定储存压缩数据块的高速緩沖块。
美国专利号6,349,375 (Faulkner等人)公开了 一种数据压缩和解压与 虚拟存储器系统的组合。讨论了许多计算机系统,包括所谓的嵌入式系统, 其中数据以压缩格式被储存在存储设备中。响应于中央处理单元(CPU) 对数据的请求,虚拟存储器系统将首先确定所请求的数据是否出现在CPU 可访问的主存储器的部分中,主存储器也恰巧是解压缩的数据被储存的地 方。如果请求的数据没有出现在主存储器的解压缩部分中,而更确切地以 压缩的格式出现在存储设备中,则数据通过要求调页(paging)操作被传输至 主存储器的解压缩部分。在要求调页操作期间,压缩数据将被解压缩。同 样,如果数据从主存储器的解压缩部分被调页,并且该数据必须被保存, 则它也可以在存储在用于压缩数据的存储设备以前被压缩。
美国专利号6,532,121 (Rust等人)公开了一种将元数据(meta-data)储 存在压缩记录中以允许更好的访问和管理合并数据的压缩系统。标记被添 加到压缩流来表示各种事项。每个压缩记录具有表示压缩数据的起始的标 记。这些标记具有嵌在其数据中的扇区号码以及再定位块号码。第二个标 记用来表示空闲空间。当压缩数据储存在磁盘驱动器上时,空闲空间祐j呆 留,以便相同或修改的数据的未来压缩有稍微扩展而不使数据写到不同的 位置的能力。压缩数据也可以缩短且剩余空间可以用这个空闲空间标记填 充。第三个类型的标记是格式化模式标记。压缩算法一般非常紧密地压缩 格式化模式。然而,期望主机将有用的数据写入存储设备。在格式化模式 的区域中将典型的数据供给压缩器,但是标记被设置在这个数据的前面以 允许格式化模式被返回而不是典型的数据。
美国专利号6,584,520 ( Cowart等人)公开了 一种存储和检索压缩文件 的方法。该方法包括动态地生成文件分配表来从压缩磁盘只读取存储器中 取回压缩文件。
美国专利号6,678,828 (Pham等人)公开了一种安全网络文件访问工 具,其支持在客户计算机系统的文件系统和网络数据存储器之间数据的安 全访问和传输。设置在客户计算机系统上并且由安全网络文件访问工具监 控的代理程序确保客户计算机系统关于发布给网络数据存储器的文件系 统请求的确认。安全网络文件访问工具设置在客户计算机系统和网络数据存储器之间的网络基础设施中,以应用有资格的访问策略并且选择性地通 过直到文件系统请求。安全网络文件访问工具维持密钥存储并且使密钥与 相应的文件系统文件关联起来以加密和解密文件数据,如通过安全网络文 件访问工具传输到网络数据存储器并从网络数据存储器中读取的。
美国专利申请号2004/030,813 (Benveniste等人)公开了 一种储存信息 的方法和系统,包括将主存储器压缩的信息储存到存储器压缩磁盘上,其 中页面#:分别地储存和检索,而没有解压缩主存储器压缩信息。
美国专利申请号2005/021,657 (Negishi等人)公开了 一种用于暂时保 存对NAS服务器的操作请求的前端服务器,该操作请求从预定的客户机 发送,被插入网络上的NAS服务器和客户机之间。该前端服务器保存关 于储存在NAS服务器中的数据文件中间的关联的信息,基于该信息最优 化从客户机接收的操作请求,并且将操作请求传送到NAS服务器。

发明内容
根据本发明的某些方面,为了供块模式访问存储器使用,提供了用于 产生、读取和写压缩数据的方法和系统;所述方法和系统便于直接访问压 缩数据同时维持压缩块的去碎片化(de-fragmentation )。
根据本发明的某些方面,产生用于存储在至少一个存储逻辑单元中的 压缩数据的所述方法包括
a) 关于至少一个存储逻辑单元(LU)产生可由所述块才莫式访问协议 访问并配置成虚拟地容纳原始数据的相应的虚拟逻辑单元(VLU), 其中所迷虚拟逻辑单元的大小对应于正被压縮的原始数据的估计 的大小,实质上等于所述存储逻辑单元的大小;
b) 将所述虛拟逻辑单元分割成一个或更多虚拟存储部分(簇);
c) 压缩容纳在簇中的原始数据并且从而产生将要储存在存储逻辑单元
内的相应压缩l殳(compressed section)中的压缩数据;
间的映射。
根据本发明的进一步的方面,压缩段被分成至少一个固定大小的压缩
逻辑单元(CLU),且存储逻辑单元包括具有描述压缩段的至少一个记录 的段表,所述记录至少保存关于对应于压缩段的CLU以及涉及所述CLU 的存储位置指针的信息。
对于读取如上压缩和储存的数据,所述方法包括
a) 确定待读取的第一簇;
b) 确定相应的压缩段的序号;
c) 促进恢复对应于所述簇的数据;
d) 如果待读取的数据范围超出恢复的相应簇的大小,则对具有递增 了 1的序号的压缩段重复步骤b)和c),直到所有待读取的数据被 恢复。
对于写入如上压缩和储存的数据,所述方法包括
a) 确定待更新的第一簇,从而组成原始簇;
b) 确定相应的压缩段的序号;
c) 促进恢复对应于所述原始簇的数据;
d) 计算更新数据在所述蔟中的偏移并且促进在给定数据范围的更新;
e) 将所述更新的簇压缩至更新的压缩段中;
f) 促进用更新的压縮段盖写所述原始的压缩段;
g) 如果待写入的数据范围超出恢复的相应簇的大小,则对具有递增了 1的序号的压縮段重复步骤b)至f),直到所有需要的数据被写入。
根据本发明的进一步的方面,所述方法包括处理在写入数据期间释放 的空闲CLU的列表,所述列表被处理直到所述LU断开。所述方法进一步 包括比较所述原始段所需的CLU的数量W。与更新的压缩段所需的CLU的 数量W"并促进下列项之一
a)如果^。=^ ,则用对应于更新的压縮段的CLU盖写对应于原始的 压缩段的所有CLU;
b)如果iV^A^,则用对应于更新的压缩段的CLU盖写对应于原始的 压缩段的前Nu个CLU并且更新关于释放的CLU的空闲CLU的列
表;
c )如果iV。<// <A^。+A^,则用对应于更新的压缩段盖写对应于原始的压 缩段的所有CLU并且将对应于更新的压縮段的其余CLU写入包含 在空闲CLU的列表中的CLU,其中7V/是在所述列表中CLU的数
量;
d)如果N。+NfKNu,则用对应于所述更新的压缩段的CLU盖写对应于 所述原始的压缩段的所有CLU,将对应于所述更新的压缩段的所述 CLU写入包含在空闲CLU的所述列表中的CLU,并且将对应于所 述更新的压缩段的其余CLU连续地写入下一个空闲存储位置。
根据本发明的进一步的方面,所述方法进一步包括
a) 在断开所述存储逻辑单元以前检查空闲CLU的列表;
b) 如果所述列表不是空的,则在包括在压缩段内的CLU中限定具有 最高存储位置指针的CLU (第一个CLU );
c) 促进将所述压缩数据从所述第一个CLU移动到具有较低存储位置 指针的空闲CLU (第二个CLU);
d) 将所述第二个CLU分配l^有关的压缩段并且将所述第一个CLU 分配给空闲CLU的所述列表;
e) 重复步骤b) -d)直到包括在压缩段内的所有CLU的所述存储位 置指针低于包括在空闲CLU的列表中的任一个CLU的指针;
f) 更新段表。
根据本发明的进一步的方面,所述系统包括
a )用于关于至少 一个存储逻辑单元产生可由所述块才莫式访问协议访问 并配置成虚拟地容纳原始数据的相应的虚拟逻辑单元的装置,其中 所迷虛拟逻辑单元的大小对应于正被压缩的原始数据的估计的大
小,实质上等于所述存储逻辑单元的大小;
b)用于将所述虚拟逻辑单元分割成一个或更多虚拟存储部分(簇) 的装置;
储逻辑单元内的相应压缩段中的压缩数据的装置;
d)用于促进储存在压缩段中的压缩数据和其在虚拟逻辑单元的虚拟 容纳之间的映射的装置;
才艮据本发明的其他方面,所述系统可组成通信设备的一部分,所述通 信设备在存储网络中可操作并根据本发明配置为执行对压缩数据的压缩 和操作。
根据本发明的其他方面,所述系统可组成存储设备的一部分,所述存 储设备可用至少 一个块模式访问协议操作并根据本发明配置为执行压缩 和操作。
根据本发明的其他方面,提供了在存储网络中可操作并根据本发明配 置为执行对压缩数据的压缩和操作的通信设备。
根据本发明的其他方面,提供了可用至少一个块模式访问存储协议操 作并根据本发明配置为执行对压缩数据的压缩和操作的存储设备。
本发明的某些方面的优点是促进对压缩数据的随机访问并实现对压 缩数据的操作而不需要解压缩全部的压缩块,实质上没有损坏储存和检索 能力并且使用者不需要知道压缩/解压操作以及压缩数据的存储位置。
应理解,根据本发明的系统可以是适当编程的计算机。同样地,本发 明设想由计算机可读取的、用于执行本发明的方法的计算机程序。本发明 进一步设想机器可读取的存储器,其可触知地包括可由机器执行的、用于 执行本发明的方法的指令程序。


为了理解本发明并且观察在实践中它可被如何执行,现在仅作为非限定性的例子参考附图描述优选的实施方式,其中
图la)-lc)是如本领域中公知的典型的块模式访问存储结构的示意性 结构图。
图2a)"2e)是根据本发明的某些实施方式的存储结构的示意性结构图。 图3是才艮据本发明的某些实施方式的系统功能结构的示意性结构图。 图4是根据本发明的某些实施方式的虚拟逻辑单元和逻辑单元的示意图。
图5是根据本发明的某些实施方式的段表的示例性结构。
图6是根据本发明的某些实施方式的压缩数据块创建的操作的一般化 流程图。
图7是根据本发明的某些实施方式的对压缩数据块的读取操作的一般 化流程图。
图8是根据本发明的某些实施方式的对压縮数据块的写操作的一般化 流程图。
图9是示出根据本发明的某些实施方式的对压缩段的写操作的顺序的 一般化流程图。
图10是根据本发明的某些实施方式在从存储逻辑单元断开期间CLU 管理的一般化流程图。
图lla-llc是根据本发明的某些实施方式的在CLU和指定的磁盘存储 片段之间的关系的示意性图示。
发明详细描述
在下面的详细描述中,为了提供对本发明的彻底理解,阐述了许多具 体细节。然而,本领域的技术人员应理解,本发明可以在没有这些具体细 节的情况下实践。在其他的例子中,没有详细描述公知的方法、过程、部 件和电路,以便不使本发明难理解。在附图和描述中,相同的参考数字表 示对不同的实施方式或配置共同的那些部件。 除非另外特别说明,正如从以下的讨论中显而易见的,应认识到,在
整个说明书讨论中,利用术语例如"处理"、"计算"(computing )、"计算" (calculating),"确定"等来指计算机或计算系统或处理器或类似的电子计 算设备的行为和/或过程,这些处理器或电子计算设备将表示为在计算系统 的寄存器和/或存储器内的物理的例如电子的量的数据操作和/或转换为类 似地表示为在计算系统的存储器、寄存器或其他这种信息存储、传输或显 示设备内的物理量的其他数据。
本发明的实施方式可以使用术语,例如用于执行这里的操作的处理 器、计算机、装置、系统、子系统、模块、单元、设备(单个或多个形式)。 这可以为期望的目的而特别构建,或它可包括由储存在计算机中的计算机 程序选择性地激活或重新配置的通用计算机。这种计算机程序可以储存在 计算机可读取存储媒介中,例如但不限于任何类型的磁盘,包括光盘、 CD-ROM、磁光盘、只读取存储器(ROM)、随机存取存储器(RAM)、 电可编程只读取存储器(EPROM)、电可擦除可编程只读取存储器 (EEPROM)、磁卡或光卡、或适合于储存电子指令并且能够耦合到计算 机系统总线的任何其他类型的媒介。
在此介绍的步骤/设备(或上面规定的相似术语)以及显示器没有固有 地与任何特定的计算机或其他装置有关,除非另外特别说明。各种通用系 统根据这里的教导可以与程序一起使用,或可证明对构建更专门的装置来 执行期望的方法是方便的。对于多种这些系统的期望结构将在下面的描述 中出现。另外,本发明的实施方式没有参考任何特定的编程语言描述。应 认识到,多种编程语言可以用来实现在此描述的发明的教导。
记住,注意力被引到图la-lc,其示出如本领域中公知的典型的块才莫式 访问存储结构的结构图。
图la示出典型的DAS (直接附加存储)结构,其中存储设备12通过 块模式访问存储协议(例如,SCSI、光纤通道等)由连通性媒介直接连接 到计算机ll。这个直接连接提供了对数据的更快的访问;然而,存储器仅 仅可从服务器访问。DAS包括例如内部附加的局部磁盘驱动器或外部附加 的RAID (独立磁盘的冗余阵列)或JBOD (仅仅是一批磁盘)。
图lb示出使用块模式访问存储协议提供对存储子系统的访问的存储 局域网(SAN)的典型结构。存储子系统包括主计算机ll (一般具有主机 总线适配器(HBA))、用于按规定路线发送存储业务(storage traffic)的 FC网络(SAN) 13以及存储设备12。存储子系统对多个主机一般可同时 利用。存储网络包括便于数据传输的一个或更多通信设备15 (例如,交换 机、路由器、网桥等)。
图lc示出基于iSCSI协议的存储网络的典型结构,该协议能够使块数 据在IP网络14上在计算机11和存储设备12之间传输而不需要专门网络 基础设施,例如光纤通道。IP网络包括便于数据传输的一个或更多通信设 备15(例如,交换机、路由器、网桥等)。
参考图2a-2e,其作为非限定性的例子示出根据本发明的某些实施方式 的存储结构的示意图。图2a示出图la中所示出的DAS存储结构的本发明 的某些实施方式;图2b示出图lb所示出的SAN存储结构的本发明的某 些实施方式;图2c示出图lc所示出的iSCSI存储结构的本发明的某些实 施方式。压缩系统20通过接口 21操作性地耦合到计算机11 (例如,直接 耦合到计算机或相应的LAN,或间接地通过存储网络13,或间接地通过 IP网络14等)并且通过接口 22操作性地耦合到存储设备12。压缩系统 20在计算机和存储设备之间充当网桥。压缩系统20可支持任何物理接口 (例如,以太网、光纤通道等)并且可配置成保存存储设备特征,例如冗 余、镜像、快照、失效转移(failover)、回退、管理等等。压缩系统可配 置为与已有的网络基础设施无缝地集成。使用者不需要知道压缩和解压缩 操作以及压缩数据的存储位置。
压缩系统配置成截获在计算机和存储设备之间的通信,并且得到和压 缩相应于与数据访问相关的请求的数据块。
在对要在存储前被压缩的数据块进行"写"操作期间,来自计算机的 数据块由压縮系统20截获、被压缩并移动到存储设备12。包括不同类型 的数据(例如,文本、图像、声音等)的数据块可由不同的压縮算法压缩。 "读取"操作在相反的方向继续进行;所需的数据块由压缩系统重新得到、 (根据所需的数据范围部分地或全部地)被解压缩并且发送到合适的API。压縮系统20配置成在计算机和存储设备之间以透明的方式传输所选 的与控制相关的请求(例如,格式化磁盘、磁盘去碎片、进行快照等), 同时干预与数据访问有关的事务(transaction)(例如读取、写等)以及一些 与控制有关的事务(例如容量状态)。
在本发明的某些实施方式中,压缩系统20也可配置成根据预先定义 的标准(例如,LUN号、大小、IP地址、数据类型等)只压缩选择的传递 的数据块。
原始数据(或其相关部分)在写到存储设备12期间或以前由压缩系 统20压缩。类似地,压缩数据(或其相关部分)在从存储设备12中读取 期间或之后由压縮系统20压缩。
如本领域中公知的,典型的存储系统和网络能够识别存储的分开的组 织。存储磁盘或一组磁盘可在概念上以逻辑单元分开。逻辑单元(LU)可 直接相应于巻驱动器(volumedrive)、相应于主机应用程序、存储设备等, 并且组成物理存储的逻辑表示。每个逻辑单元具有称为逻辑单元号(LUN) 的地址,该逻辑单元号允许地址纟皮唯一地识别。使用者可确定LUN是否 是磁盘驱动器、磁盘驱动器的号码、磁盘驱动器上的分区等等。
根椐本发明的某些实施方式,压缩系统20配置成关于至少一个逻辑 单元(LU)产生具有大于LU尺寸的尺寸的相应的虚拟逻辑单元(VLU)。 在LU和VLU的大小之间比率根据期望的压缩比来定义;因此,VLU的 大小对应于正被压缩的原始数据的估计的大小,实质上等于LU的大小。 (例如,在本发明的某些实施方式中,VLU和LU的大小之间的典型比率 被估计为对电子邮件是3,对文本格式化数据是8,等等。)当截获在计算 机和存储设备之间的通信时,压缩系统将来自计算机的与数据访问有关的 请求寻址到VLU而不是LU,并且VLU提供原始数据的虚拟容纳。因此, 根据本发明的某些方面,计算机的操作系统(OS)将关联VLU作为原始 数据存储的虚拟表示,压缩系统将相应的数据压缩至存储设备的LU中, 并且促进在压缩数据及其在VLU的虚拟表示之间的映射。下面参考图3-9 将根据本发明的某些实施方式进一步描述对压縮数据的操作。在VLU和 LU的大小之间的比率可根据某些标准(例如,根据在压缩数据块中的数
据的主要类型,根据对于所述数据可得到的最大压缩比率,等等)预先确 定或在压缩过程期间是可修改的。
图2d示出当压缩系统20与至少一个通信设备15结合时对本发明的 另一个实施方式的存储网络结构。该结合可以按不同的方式提供。例如, 压缩系统20可尤其结合在通信设备中,压縮系统的功能可以在专门的板 上实现,(全部地或部分地)分布在设备的其他模块之间,等等。接口 21 和/或22可以实现为通信设备的外部、内部或分布式接口,或根据本发明 以促进压缩系统的功能的任何其他的方式。
图2e作为非限定性的例子示出当压缩系统20与至少一个存储设备12 结合时本发明的另一个实施方式的存储网络结构。该结合可以按不同的方 式提供。例如,压缩系统20可以尤其结合在存储i殳备中,压缩系统的功 能可以在专门的板上实现,(全部地或部分地)分布在设备的其他模块之 间,等等。接口 21和/或22可以实现为存储设备的内部或分布式接口,或 根据本发明以促进压缩系统的功能的任何其他的方式。
注意,本发明没有被参考图1和2描述的特定结构限制。精通本领域 的技术人员应容易认识到,本发明同样适用于任何计算系统或包括块存储 协议(例如,SCSI、光纤通道、iSCSI等)的任何存储网络结构。压缩系 统20 (或其部分)的功能可以在配置为网桥(如图2a-2c所示)或代理服 务器的单机服务器上实现,分布在几个平台之间或结合在其他存储网络元 件(例如文件服务器、企业或网络交换机、路由器、存储设备等等)中(如 图2d-2e所示)。该结合可以按不同的方式提供并且在软件和/或固件和/或 硬件中实现。
图3示出根据本发明的某些实施方式的压缩系统20的示意性功能结 构图。
压缩系统包括耦合到对话(session)管理器32的客户机输入/输出(I/O ) 块31 。 1/0块得到与数据访问有关的请求(例如,读取、写等等)并且将 其转送给对话管理器。
对话由LUN容量请求(例如,SCSI LUN容量请求命令)开始并且由
从同一个对话中接收到的LUN断开请求结束。对话管理器32将所有对话 的私有数据保存为例如源对话地址、对话计数器、对话状态、緩冲器在使 用的所有情况等等。对话管理器将所有的请求传输到耦合到对话管理器的 调度程序33。调度程序33操作性地耦合到数据块管理器34、緩冲管理器 35以及压缩/解压缩块36。调度程序33根据本发明的某些实施方式向数据 块管理器34请求与数据有关的事务(例如,读取、写等等)并且向压缩/ 解压缩块36请求压缩/解压缩操作。 一般地,压缩算法具有以在压缩效率 和性能参数之间的4斤衷(trade-off)为特征的一些压缩级别。压缩块36可选 择最佳的压缩级别并且将压缩比率调节为目前由输A/输出块31处理的插 口的数量(和/或CPU利用率)。关于所选的压缩级别上的信息被保存在数 据的压缩部分中。数据块管理器34负责由数据块共享的存储器和顺序。 压缩/解压缩块36能够读取和解压缩緩沖器以及压缩和写数据。压缩块也 配置成根据LU大小以及预期的压缩比率(或预先确定的LU/VLU比)来 估计VLU大小,并且报告VLU大小以及空闲容量,作为对容量状态请求 的答复。
緩冲管理器35管理存储器緩冲资源并且负责将存储緩沖器分配和释 放到任何块操作。压缩系统进一 步包括耦合到对话管理器的完整性管理 器、緩冲管理器以及数据块管理器。完整性管理器负责压缩系统中的所有 处理的同步和一般控制,例如保持LUN的完整性,等等。它也负责将存 储緩冲器通过存储物理I/0接口 38迅速传递到(flash to)物理磁盘中,并 且在需要时从磁盘上读取。
本领域技术人员应容易认识到,本发明没有被图3的配置限制;等效 的和/或<务改的功能可按另 一方式,皮合并或分开。
图4示出根据本发明的某些实施方式的原始和压缩数据块的示意图。 虚拟逻辑单元(VLU) 41分割成具有实质上相等的预定大小的虚拟存储部 分43 (在下文中称为虛拟存储簇或簇)。这些虚拟存储簇在对数据块的输 入/输出事务(与数据访问相关的请求)期间用作压缩/解压缩操作的极小 元素。虚拟存储簇的大小是可配置的;较大的簇提供了较低的处理开销以 及较高的压缩比率,而较小的簇提供了更有效的访问但较高的处理开销。此外,簇的大小取决于可利用的存储器以及所需的性能,因为每个I/0事
务的压缩/解压缩处理需要存储器中的至少一个可利用的簇,同时性能限定
了许多同时的事务。簇的数量等于(VLU的大小除以簇的大小得到的)整 数并且如果有余数则加1。
可选地,在本发明的某些其他实施方式中,簇的大小可以根据例如取 决于数据的类型(例如,文本、图^f象、声音、组合等等)的预先确定的标 准、指定到LUN的应用等而变化。
每个虚拟存储簇43 (例如在图4中所示的43A-43C)对应于在逻辑单 元内相应的压缩段46 (例如在图4中所示的46A-46C),储存由压缩系统 20压缩的相应的数据。具有相同大小的簇可自然地导致具有不同大小的压 缩段,取决于在每个簇中的数据的种类以及压缩算法。如果可获得的簇压 缩的比率小于预先确定的值,那么LU的相应的压缩段可包括对应于该簇 的未压缩数据。例如,如杲在给定的簇中的原始数据被压缩至不小于原始 簇大小的乂%(比如95%),那么由于可忽略的压缩比率,相应的段将容纳 原始簇数据而不是压缩数据。
在本发明的某些实施方式中,压缩处理可包括适应能力,其根据内容 为每个数据块提供最佳的压缩算法(例如,最佳地适合于具有主要的声音、 文本、图像等数据的簇的不同的压缩算法)。
根据本发明的某些实施方式,每个逻辑单元44包括首部45、 一些压 缩段46、 IS^47以及空闲空间49。首部45包括包含逻辑单元号(LUN) 的唯一的描述符、虚拟逻辑单元(VLU)的大小以及表示储存的数据的至 少一部分是否^皮压缩系统20处理的标识(signature)。首部具有固定的长度 (例如,作为非限定性的例子,24字节,包括用于标识的4字节、用于唯 一的描述符的16字节以及用于关于相应的虚拟逻辑单元的大小的信息的4 字节)。
在本发明的其他实施方式中(例如,在某些实施方式中,当压缩/解压 缩功能与存储设备结合时),首部45或其任何部分以及其中的组合可组成 磁盘属性的一部分。
在LU内的压缩段的数量等于虚拟存储簇的数量。根据本发明的某些 实施方式,在压缩段46中的数据被储存在都具有相等的预定大小(例如, 如在图4中所示的,压缩逻辑单元48A0-48A2对应于压缩段46A,压缩段 46A对应于虚拟存储簇43A)的压缩逻辑单元(CLU) 48中。预先确定的 CLU大小是可配置的;较大的CLU提供了较低的开销,而较小的CLU导 致较高的分辨率。此外,在本发明的某些实施方式中,CLU的大小可调节 至数据块的最大和/或最佳大小。
在压缩段内的CLU的数量等于(压缩段的大小除以CLU的大小得到 的)整数并且如果存在余数则加1。在压缩段中的最后一个CLU可以是部 分充满的(例如图4中的48-A2、 48-C1 )。这种CLU可以按与充满的CLU 相同的方式处理。CLU可以被认为是由在存储器(物理存储媒介)中的片 段的虚拟序列形成的压缩的存储的虚拟部分。下面参考图11进一步描述在 CLU和指定的存储片段之间的关系。
段表47包括所有压缩段46的纪录,并且指定在哪里找到对应于每个 压缩段的CLU。关于每个压缩段的记录(在下文中为段记录)包括表示段 是否,皮压缩、压缩段的总大小、以及涉及包括在段内的所有CLU的指针 的列表的标识。可选地,记录可包括在相应簇的压缩期间使用的压缩算法 以及蔟的大小(如果根据预先确定的标准是可变的)的表示。正如将参考 图5进一步示出的,在本发明的某些实施方式中,段记录的长度是相等的, 并且段表的大小与压缩段的数量成比例,以及相应地与虚拟存储簇的数量 成比例。在本发明的某些实施方式中,当VLU/LU大小是预先确定的时, 整个^殳表具有预定的大小。
在本发明的其他实施方式中(例如在某些实施方式中,当压缩/解压缩 功能与存储设备结合时,等等),段表47可组成磁盘属性的一部分。
图5作为非限定性的例子示出关于示例性数据块50的段表中的示例 性记录。
压缩段的记录51包括标识52、段53的大小以及一些条目54。段记 录的每个条目54包括关于包括在压缩段内的相应CLU的信息。段表包括 物理位置和逻辑CLU号之间的关系。
示例性原始数据块50 (在进一步的实施例中也涉及)具有原始大小 3MB+413bit。为了实施例的目的,预定的簇大小是1M并且CLU大小是 60K。因此,数据块将需要4个虚拟存储簇(3个1MB的簇和1个部分充 满的但^皮处理为完整簇的簇)。
所述示例性虚拟存储簇对应于具有相应的大小例如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字节)。
如果示例性数据块50第一次-陂储存,那么CLU将具有物理位置的连 续分配,例力n,
-具有物理位置指针l、 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号段。
正如下面参考图8-11进一步描述的,对应于数据块的CLU的分布可 以在更新(在目前的实施例中,更新对压缩^:的大小没有影响)后改变。 例如,
-具有指针l、 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被指定给存储器中的片段,相应的片段 被写入首部45的长度加上被段序号乘的CLU的长度的偏移中。例如,在 上面的示例性数据块中,当第一个簇的第二个CLU位于2号物理片段时, 它在存储位置存储器中被写入首部的24字节加上2*61440字节的偏移中。 当在更新后该CLU位于4号物理片段时,它的偏移变为首部的24字节加 上4*61440字节。
在本发明的某些实施方式中,在每个段记录中的条目的数量是不变 的,并且对应于可能需要用于储存簇的CLU的最大数量。因此,每个段 记录的大小是不变的,而不管包括在段内的CLU的实际数量如何;未在 使用中的条目可能有特殊的标记。在段记录中的条目的数量等于簇的大小 除以CLU的大小得到的整数加1。段表的大小等于被在VLU中的簇的数 量乘段记录的大小。
在示出的簇的预定大小为1MB以及CLU的预定大小为60K的实施例 中,压缩段的每个记录具有17个条目(1MB/60K的整数加1 ),每个条目 具有4字节。相应地,压缩的0号段的示出的段记录51具有包括关于相 应CLU的物理位置的信息的5个条目以及12个空条目(例如,标记为-1 )。 段记录的大小是72字节(用于关于压缩段的大小和标识的信息的4字节 加上17个条目*4字节)。段表的总大小是288字节(用于每个段记录的4 个压縮段*72字节)。
图6-11示出才艮据本发明的某些实施方式对压缩数据执行的输A/输出 操作。注意,根据本发明的某些实施方式,压缩系统20也干预涉及可利 用的存储器大小(原始数据的估计的存储空间)、将VLU的大小保存在相 应LU的首部中(或在参考图4详述的磁盘属性中)并且在请求时提供所 述数据的命令。
参考图6,其示出根据本发明的某些实施方式的压缩数据块建立的一 般化流程图。当请求60是储存数据块时,压缩系统20虚拟地建立虚拟逻 辑单元61,如参考图2a-2c所述的,或参考当储存以前的数据块时建立的
VLU。在接下来的步骤62中,压缩系统将原始数据的第一个固定大小的 部分(簇)处理为具有大小X的压縮段。(压缩可在任何适当的商业或专 业算法的帮助下提供)。压缩系统限定第一个CLU的第一个空闲存储位置, 开始并且处理压缩#史在该CLU以及随后的CLU中的连续写入63,用于储 存在存储设备中,并且准备在要记录在段表中的过程期间被占据的CLU 的指针64。压缩系统重复对下一个簇的处理65,直到全部数据块的数据 以压缩的形式^皮写入并且段表纟皮建立66。
参考图7,其示出根据本发明的某些实施方式的对压缩数据块进行读 取操作的一般化流程图。
读取操作开始读取识别VLU中的数据偏移以及待读取的数据的范围 Y的请求70。应记得,如参考图2a) -2c)所描述的,计算机的操作系统 (OS)将使VLU关联为原始数据存储的虚拟表示,压缩系统将相应的数
的映射。
压缩系统20将第一个待读取的虚拟存储簇(在下文中为起始簇)的 序号计算为(偏移除以簇的大小得到的)整数且如果存在余数则加1 (71 )。 待读取的簇的号码由(待读取的数据范围除以簇的大小得到的)整数加1 限定。因此,压缩系统限定与待读取的簇——对应的压缩段并且指向对应 于待压缩和读取的压缩段的CLU。
在本发明的某些实施方式中,所有待读取的数据范围可以是全部解压 缩的。可选地,如图7所示,解压缩可以按步骤提供,并且对于读取操作, 压缩系统可以维持緩沖器实质上等于簇的大小。第一个读取请求包括对于 包括在起始簇的压缩段内的CLU的指针。对应于起始簇的全部压缩段被 读取且没有被压缩系统压缩至目标緩冲器(72)。在下一步骤中,压缩系 统计算在簇内所需的偏移(73),并且复制待传递到应用程序的所需的数 据(74)。复制数据需要的长度如下计算
炎產=處小遂(炎孩志库Y;(處W义V、-森移mod^^M:小)}
如果数据范围Y超出簇的大小,则重复操作(75)。例如,参考示例性数据块50,请求从偏移1MB+1340中读取20字节 长度的数据。读取将从第二个簇开始,因此,需要的数据包括在从第二个 压缩段开始的压缩数据块内 在段表中第二个压缩段的记录包括具有指针 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,其示出根据本发明的某些实施方式的对压缩数据块进行写 操作的一般化流程图。"写"请求识别在VLU中的偏移以及待写入的数据 的范围Y(80)。压缩系统20将第一个待更新(盖写)的虚拟存储簇的序 号计算为(偏移除以簇的大小得到的)整数且如果存在余数则加l (81)。 要盖写的虚拟存储簇的数量由(待写入的数据的范围除以簇的大小得到 的)整数并且如果存在余数则加1来限定。因此,压缩系统限定要重写的 压缩段并且按类似于参考图7所述的方式生成读取请求。在对应于起始簇 的全部压缩段被读取并且未被压缩系统压缩到緩冲器(82)之后,压缩系 统计算在如参考图7所述的簇内的需要的偏移(83),并且更新(盖写) 所需的数据范围(84)。然后,压缩系统压缩更新的簇(85),更新段表并 且请求将新的压缩段写入压缩数据块(86)。如果数据范围Y超出簇的大 小,则对后续的簇重复操作(87)。当处理结束时,压缩系统更新段表88。
如上所述,在本发明的某些实施方式中,所需的数据的存储位置可以 被直接访问,因此读取/更新(及类似的)操作仅仅需要恢复包括所需的数 据范围的虚拟簇而不是全部数据块。
一般而言,由于在分配的存储器中引起的未使用的空间,数据块更新 可产生碎片。图9和10示出4艮据本发明的某些实施方式的CLU管理的碎 片处理算法。图9示出根据本发明的某些实施方式在对压缩段(图8中的步骤86)进行写/更新操作期间CLU管理的算法。在写更新的压缩段以前, 压縮系统比较更新和旧的压缩段所需的CLU的数量(91 )。如果CLU的 数量没有变化,那么压缩系统20请求将更新的压缩段连续地写入对应于 旧的压缩段的所有CLU92。如果所需的CLU的新的数量少于旧的数量, 那么压缩段将被连续地写在对应于旧的压缩段的CLU的部分上。关于释 放的CLU的信息在由压缩系统20处理的空闲CLU的专门列表(队列) 中被更新,直到LU被断开。如果所需的CLU的新的数量多于旧的数量, 那么压缩段将被连续地写在对应于旧的压缩段的所有CLU上(94)并且 然后写在从空闲CLU队列中取得的CLU上(95)。如果仍然需要更多的 CLU,那么压缩系统将限定分配到数据块(#w)的最后一个CLU并且请 求连续地写在从号码(n+1 )开始的CLU上(96 );分配的CLU的列表将 因此被更新(97)。
图IO示出在从存储逻辑单元断开的期间CLU管理的算法。
在从LU断开(102)以前,压缩系统检查空闲CLU的列表是否是空 的(IOI)。如果列表仍然包括CLU,则压缩系统20在使用中的CLU中限 定具有最高存储位置指针的CLU。包含在所述CLU内的压缩数据被传输 到具有较低指针的空闲CLU并且空的CLU被添加到空闲CLU的列表
(103)。该处理过程重复直到在使用中的CLU的所有指针低于包括在空 闲CLU的列表中的任何一个CLU的指针(104 )。段表将因此被更新(105 )。 在整个重写过程结束后或根据其他预先确定的标准,根据每个所述CLU 重写,可能出现这种更新。在过程结束时,LU断开并且空闲CLU被释放
(106)。根据不同的算法可以提供空闲CLU对上述过程的选择。例如, 在本发明的某些实施方式中,来自CLU的具有最高存储位置指针的所述 压缩数据可以被传输到具有最低存储位置指针的空闲CLU。
参考图lla-llc,其示出根据本发明的某些实施方式的在CLU和指定 的磁盘存储分段之间的关系。图lla示出当被创建为新的压缩数据块时在 图5中所示的示例性数据块50。 CLU的虚拟(逻辑)序列与对应于CLU (在CLU内的号码说明对于相应的磁盘存储分段的指针)的磁盘分段的 物理序列是一样的。图llb示出在具有未改变大小的压缩段的更新的压缩
数据块内的CLU的新的分布,如在参考图5所描述的在更新的示例性数 据块中的。CLU的虚拟(逻辑)序列与对应于CLU的磁盘分段的物理序 列不同,同时维持LU的去碎片化结构。图11示出在更新的示例性压缩数 据块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),并且将具有指针ll、 12、 15和16的CLU发送到空闲CLU的列表。第三个和第四个压缩段在 这个特定的更新期间也未受影响。如参考图10所述的,压缩系统20在从 LU断开以前将检查空闲CLU的列表是否是空的。通过这个实施例,列表 包括具有存储位置指针11、 12、 15和16的CLU。如参考图10所述的, 压缩系统将来自具有指针13的CLU的压缩数据重写到具有指针11的 CLU;将来自具有指针16的CLU的压缩数据重写到具有指针12的CLU, 并且释放具有指针13-16的CLU。因此,更新的数据块具有12个分配的 没有去碎片化的CLU。
另外的要求(例如,安全访问、数据完整性等等)可导致在压缩系统 和计算机之间的更复杂的通信。
还应理解,本发明在其申请中没有被限制为在此包括的描述中阐述的 或图中示出的细节。本发明能够具有其他的实施方式并且可以以各种方式 实践和实现。因此,应理解,在此所采用的措词和术语是为了描述的目的 且不应被视为限定性的。因此,本领域的技术人员应认识到,本公开所基 于的概念可以容易地用作基础,以设计用于实现本发明的几个目的的其他 结构、方法、和系统。
本领域的技术人员应容易认识到,各种修改和变化可以应用于在上文 中描述的本发明的实施方式而不偏离在所附权利要求中以及由权利要求 M^定的本发明的范围。
权利要求
1.为了用在块模式访问存储协议上,一种产生用于存储在至少一个存储逻辑单元中的压缩数据的方法,所述方法包括a)关于至少一个存储逻辑单元产生可由所述块模式访问协议访问并配置成虚拟地容纳原始数据的相应的虚拟逻辑单元,其中所述虚拟逻辑单元的大小对应于正被压缩的原始数据的估计的大小,实质上等于所述存储逻辑单元的大小;b)将所述虚拟逻辑单元分割成一个或更多虚拟存储部分(簇);c)压缩容纳在至少一个簇中的所述原始数据,并且从而生成要储存在所述存储逻辑单元内的相应压缩段内的压缩数据;d)促进储存在所述压缩段内的所述压缩数据和其在所述虚拟逻辑单元的虚拟容纳之间的映射。
2. 如权利要求1所述的方法,其进一步包括将至少一个压缩段分成 至少一个固定大小的压缩逻辑单元(CLU),并且产生具有描述所述压缩 段的至少一个记录的段表,所述记录至少保存关于对应于所述压缩段的 CLU以及涉及所述CLU的存储位置指针的信息。
3. 如权利要求2所述的方法,其中所述存储逻辑单元包括所述段表。
4. 如权利要求1所述的方法,其中所述簇具有预先确定的实质上相 等的大小。
5. 如权利要求1所述的方法,其中簇的大小根据包括在所述簇中的 数据类型从预定大小的列表中选择。
6. 如权利要求1所述的方法,其中选择簇的大小以促进所需的压缩 比率。
7. 如权利要求1所述的方法,其中所述存储逻辑单元包括首部,所 述首部包括所述存储逻辑单元的唯一 的描述符。
8. 如权利要求7所述的方法,其中所述首部保存涉及所述虚拟逻辑 单元的大小的信息。
9. 如权利要求2所迷的方法,其中描述所述压縮段的所述记录具有 相等的预先确定的大小。
10. 如权利要求l所述的方法,其中利用根据包括在所述簇内的数据 类型而选择的压缩算法处理所述簇。
11. 如权利要求l所述的方法,其中只有当文件符合预先确定的标准 时才提供压缩原始文件。
12. —种读取根据权利要求l压缩的数据的方法,所迷方法包括a) 确定待读取的第一簇;b) 确定相应的压缩段;c) 促进恢复对应于所述簇的数据。
13. —种读取根据权利要求2压缩的数椐的方法,所述方法包括a) 确定包括待读取的数据的第一个压缩段的序号;b) 通过参考所述段表确定对应于所述压缩段的CLU以及其存储位置;c) 促进从所述压缩段恢复所述数据。
14. 如权利要求13所述的方法,其进一步包括如果待读取的数据范 围超出所恢复的相应簇的大小,则对具有递增了 l的序号的压缩段重复步 骤b)和c),直到所有待读取的数据被恢复。
15. —种在给定的数据范围将数据写入根据权利要求1压缩的数据的 方法,所迷方法包括a) 确定待更新的第一蔟,从而组成原始蔟;b) 确定相应的压缩^:;c) 促进恢复对应于所述原始蔟的所述数据;e) 将所述更新的簇压縮至更新的压缩段中;f) 促进用更新的压缩段盖写所述原始的压缩段。
16. —种在给定的数据范围将数据写入根据权利要求2压缩的数据的方法,所述方法包括a) 确定包括待更新的数据的第一个压缩段的序号,从而组成原始的压缩段;b) 通过参考段表确定对应于所述原始的压缩段的CLU以及其存储位置;c) 促进从所述原始的压缩段恢复所述数据;d) 计算在相应的蔟内的所述更新数据的偏移并且促进在所述给定的 数据范围的更新;e) 将所述更新的簇压缩至更新的压缩段中;f) 促进用更新的压缩段盖写所述原始的压縮段;g) 更新所述段表。
17. 如权利要求16所迷的方法,其进一步包括如果待写入的数据范围超出所恢复的相应簇的大小,则对具有递增了l的序号的压缩段重复步骤b)至f),直到所有所需的数据被写入。
18. 如权利要求16所述的方法,其中所述存储逻辑单元以去碎片的方式被维持。
19. 如权利要求16所述的方法,其进一步包括处理在写入数据期间释放的空闲CLU的列表,所迷列表被处理直到所述存储逻辑单元断开。
20. 如权利要求19所述的方法,其进一步包括比较所述原始段所需要的CLU的数量N0与所述更新的压缩段所需要的数量N14并且促进下列项之一a)如果N0=Nu,则用对应于所述更新的压缩段的CLU盖写对应于所述原始的压缩段的所有CLU;b) 如果<formula>see original document page 5</formula>则用对应于所述更新的压缩段的CLU盖写对应于所 述原始的压缩段的前Nu个CLU,并且更新关于释放的CLU的空闲CLU 的所述列表;c) 如果<formula>see original document page 5</formula>则用对应于所述更新的压缩段的CLU盖写对 应于所述原始的压缩段的所有CLU,并且将对应于所述更新的压缩段的其 余CLU写入包含在空闲CLU的所述列表中的所述CLU,其中JV/是在所 述列表中CLU的数量;d) 如果<formula>see original document page 5</formula>OIu,则用对应于所述更新的压缩段的CLU盖写对应于 所述原始的压缩段的所有CLU,将对应于所述更新的压缩段的所述CLU 写入包含在空闲CLU的所述列表中的所述CLU,并且将对应于所述更新 的压缩l殳的其余CLU连续地写入下一个空闲存储位置。
21. 如权利要求19所述的方法,其进一步包括a) 在断开所述存储逻辑单元以前检查空闲CLU的所述列表;b) 如果所述列表不是空的,则在包括在所述压缩段内的CLU中限定 具有最高存储位置指针的CLU (第一个CLU);c )促进将所述压缩数据从所述第一个CLU移动到具有较低存储位置 指针的空闲CLU (第二个CLU);d) 将所述笫二个CLU分配给有关的压缩段并且将所述第一个CLU 分配给空闲CLU的所述列表;e) 重复步骤b) -d)直到包括在压缩段内的所有CLU的所述存储位 置指针低于包括在空闲CLU的所述列表中的任一个CLU的指针;f) 更新所述段表。
22. 为了用在块;f莫式访问存储协议上, 一种读取在至少一个存储逻辑 单元中储存为压縮数据的原始数据的方法,其中所述压縮数据被压缩到对 应于神皮虚拟地容纳在虚拟逻辑单元中的原始数据(蔟)的固定大小部分的 一个或更多压缩^:,所述方法包括a)确定待读取的第一簇;b) 确定相应的压縮段的序号;c) 促进恢复对应于所述簇的所述数据。
23. 如权利要求22所述的方法,其中所述压缩段被分成固定大小的压缩逻辑单元(CLU),所述存储逻辑单元包括保存关于对应于所述压缩段的CLU以及其存储位置的信息的段表,并且待读取的所述数据的所述存储位置通过参考所述段表限定。
24. 如权利要求22所述的方法,其进一步包括如果待读取的数据范围超出所恢复的相应蔟的大小,则对具有递增了l的序号的接下来的压缩段重复步骤b)和c),直到待读取的所有数据被恢复。
25. 为了用在块才莫式访问存储协议上, 一种在给定的范围将数据写入在至少一个存储逻辑单元中储存为压縮数据的数据的方法,其中所述压缩数据被压缩坐在对应于被虚拟地容纳在虚拟逻辑单元中的原始数据(簇)的固定大小的部分的一个或更多压缩段,所述方法包括a) 确定待更新的笫一簇,从而组成所述原始簇;b) 确定相应的原始压缩段的序号;c) 促进恢复对应于所述原始簇的数据;d) 计算在所述簇内的更新数据的偏移并且促进在所述给定的数据范围的更新;e) 将所述更新的簇压缩至更新的压缩段中;f) 促进用更新的压缩段盖写所述原始的压缩段。
26. 如权利要求25所述的方法,其中所述压缩段被分成固定大小的压缩逻辑单元(CLU),所述存储逻辑单元包括保存关于对应于所述压缩段的CLU以及其存储位置的信息的段表,待读取的所述数据的所述存储位置通过参考所述段表被限定,且所述段表在步骤f)之后被更新。
27. 如权利要求25所述的方法,其进一步包括如果待写的数据范围超出所恢复的相应簇的大小,则对具有递增了l的序号的接下来的压缩段 重复步骤b)至f),直到所有需要的数据被写入。
28. 如权利要求25所述的方法,其进一步包括处理在写入数据期间 释放的空闲CLU的列表,所述列表被处理直到所述存储逻辑单元断开。
29. 如权利要求28所述的方法,其进一步包括比较所述原始段所需 要的CLU的数量W。与所述更新的压缩段所需要的数量JV ,并且促进下列 项之一a) 如果N。=Nu,则用对应于所述更新的压缩段的CLU盖写所有对应 于所述原始的压缩段的CLU;b) 如果No>Nu,则用对应于所述更新的压缩段的CLU盖写对应于所 述原始的压缩段的前Nu个CLU,并且更新关于释放的CLU的空闲CLU 的所述列表;c) 如杲N0<Nu<N。+Nf,则用对应于所述更新的压缩段的CLU盖写所 有对应于所述原始的压缩萃殳的CLU,并且将对应于所述更新的压缩段的其 余CLU写入包含在空闲CLU的所述列表中的所述CLU,其中7V/是在所 述列表中CLU的数量;d) 如果N。+Nf<Nu,则用对应于所述更新的压缩段的CLU盖写所有对 应于所述原始的压缩段的CLU,将对应于所述更新的压缩段的所述CLU 写入包含在空闲CLU的所述列表中的所述CLU,并且将对应于所述更新 的压缩段的其余CLU连续地写入下一个空闲存储位置。
30. 如权利要求28所述的方法,其进一步包括a) 在断开所述存储逻辑单元以前检查空闲CLU的所述列表;b) 如果所述列表不是空的,则在包括在所述压縮段内的CLU中限定 具有最高存储位置指针的CLU (第一个CLU);c) 促进将所迷压缩数据从所述第一个QLU移动到具有较低存储位置 指针的空闲CLU (第二个CLU);d) 将所述第二个CLU分配给有关的压缩段并且将所述第一个CLU 分配给空闲CLU的所述列表;e) 重复步骤b) -d)直到包括在压缩段内的所有CLU的所述存储位置指针低于包括在空闲CLU的所述列表中的任一个CLU的指针; f)更新所述段表。
31. 如权利要求l、 22、 25中任一项所述的方法,其中所述块模式访 问存储协议从包括SCSI、光纤通道、FCIP、 iFCP、 iSCSI的组中选择。
32. —种在存储网络中可操作的、配置为执行权利要求l、 22、 25中 任一项的所述方法步骤的通信设备。
33. —种可用至少一个块模式访问存储协议操作的、且配置为执行权 利要求l、 22、 25中任一项的所述方法步骤的存储设备。
34. 为了用在块模式访问存储协议上, 一种压缩用于存储在至少一个 存储逻辑单元中的数据的系统,所述系统包括a )用于关于至少 一个存储逻辑单元产生可由所述块模式访问协议访问 并配置成虚拟地容纳原始数据的相应的虛拟逻辑单元的装置,其中所述虚 拟逻辑单元的大小对应于正被压缩的原始数据的估计的大小,实质上等于 所述逻辑单元的大小;b)用于将所述虚拟逻辑单元分割成一个或更多虚拟存储部分(簇) 的装置;c )用于压缩容纳在簇内的所述原始数据并且从而产生要保存在所述存 储逻辑单元内的相应压缩段中的压缩数据的装置;d)用于促进储存在所述压缩段内的所述压缩数据和其在所述虚拟逻辑单元的虚拟容纳之间的映射的装置。
35. 如权利要求34所述的系统,其组成在存储网络中可操作的通信 设备的一部分。
36. 如权利要求34所述的系统,其组成可用至少一个块模式访问存 储协议操作的存储设备的 一部分。
37. 为了用在块模式访问存储协议上, 一种由机器可读的程序存储设 备,所述程序存储设备可触知地包括由机器可执行的指令程序,以执行产 生用于存储在至少一个存储逻辑单元中的压缩数据的方法步骤,所述方法包括a )关于至少 一个存储逻辑单元产生可由所迷块才莫式访问协议访问并配 置成虚拟地容纳原始数据的相应的虚拟逻辑单元,其中所述虚拟逻辑单元 的大小对应于正被压缩的估计的原始数据的大小,实质上等于所述逻辑单 元的大小;b) 将所述虛拟逻辑单元分割成一个或更多虚拟存储部分(簇);c) 压缩容纳在簇内的所述原始数据并且从而产生要储存在所述存储逻 辑单元内的相应压缩段内的压缩数据;d) 促进储存在所述压缩段内的所述压缩数据和其在所述虚拟逻辑单 元的虛拟容纳之间的映射。
38.为了用在块模式访问存储协议上, 一种包括计算机可用媒介的计 算机程序产品,所述计算机可用媒介具有包含在其内的产生用于存储在至 少一个存储逻辑单元中的压缩数据的计算机可读程序代码,所述计算机程 序产品包括a) 用于使计算机关于至少一个存储逻辑单元产生可由所述块模式访问 存储协议访问并且配置成虚拟地容纳原始数据的相应的虚拟逻辑单元的 计算机可读程序代码,其中所述虚拟逻辑单元的大小对应于正被压缩的估 计的原始数据的大小,实质上等于所述存储逻辑单元的大小;b) 用于使计算机将所述虚拟逻辑单元分割成一个或更多虚拟存储部 分(簇)的计算机可读程序代码;c )用于使计算机压缩容纳在簇内的所述原始数据并且从而产生要储存在所述存储逻辑单元内的相应压缩^a中的压缩数据的计算^^可读程序代码;d)用于使计算机促进储存在所述压缩段中的所述压缩数据和其在所 述虚拟逻辑单元的虚拟容纳之间映射的计算机可读程序代码。
全文摘要
一种用于产生、读取和写入压缩数据以供块模式访问存储器使用的方法和系统。压缩数据被压缩至多个压缩单元中并且储存在存储逻辑单元(LU)中。一个或更多相应的压缩单元可以在不需要恢复整个存储逻辑单元的情况下被读取和/或更新,同时维持LU的去碎片结构。
文档编号H03M7/30GK101346883SQ200680049157
公开日2009年1月14日 申请日期2006年10月11日 优先权日2005年10月26日
发明者乔纳森·阿米特, 纳达夫·克戴姆, 诺赤·阿米特 申请人:斯多维兹有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1