使用分区表进行的磁盘分区拼接和重新均衡的制作方法

文档序号:11450144阅读:222来源:国知局

背景技术
::计算系统已变成泛在的,其范围从小型嵌入式设备到电话和平板型设备到pc和后端服务器。这些计算系统中的每种计算系统包括某种类型的数据存储装置,并且通常包括许多不同类型的数据存储装置。例如,计算系统可以包括固态存储装置和硬盘驱动器或者硬盘驱动器的集合。这些不同的存储设备可以各自具有分区或者数据存储装置的逻辑分配。分区通常在硬件的初始使用时被建立。此后,对分区进行重新安排或者调整大小变得非常困难。因此,初始选择了比必要的分区大小更大的分区大小,这导致存储设备上的被浪费的空间。技术实现要素:本文中描述的实施例涉及动态地变更存储设备中的分区的分区大小和在存储设备中的分区之间转移存储空间。逻辑分区由分区表中的至少一个分区条目组成。在一个实施例中,一种计算机系统标识存储设备上的空闲空间的部分,其中,所述存储设备具有至少一个包括一个或多个偏移量和长度值(每个偏移量和长度对标识一个磁盘部分,并且被存储为分区表中的一个单独的分区条目)的逻辑分区。计算机系统确定所标识的空闲空间相对于存储设备上的其它存储位置位于何处。计算机系统进一步确定逻辑分区将被动态地调整大小为由一个或多个偏移量和长度值指定的新的大小,以及,基于所标识的空闲空间位于何处,动态地对逻辑分区调整大小,以使得逻辑分区的偏移量和长度值在分区表中被更新以包括新的所指定的偏移量和长度值。在另一个实施例中,一种计算机系统在存储设备的逻辑分区之间转移存储空间。计算机系统标识存储设备上的空闲空间的部分。如上,存储设备具有至少两个其偏移量和长度值被存储为分区表中的分区条目的现有逻辑分区。计算机系统确定所标识的空闲空间相对于存储设备上的其它存储位置位于何处,以及,基于所标识的空闲空间位于何处,动态地将所确定的空闲空间中的至少一些空闲空间从一个逻辑分区重新指派到另一个不同的逻辑分区。提供本概要以便以简化形式介绍下面在详细说明中进一步描述的概念的选择。本概要不旨在标识所要求保护的主题的关键特征或者必要特征,其也不旨在被用作在确定所要求保护的主题的范围时的辅助。额外的特征和优点将在后面的描述中被阐述,并且部分上将是对于本领域的技术人员来说从本描述中显而易见的,或者可以通过对本文中的教导的实践被习得。本文中描述的实施例的特征和优点可以通过在所附权利要求中特别地指出的器械和组合来实现和获得。本文中描述的实施例的特征将变得从下面的描述和所附权利要求中显而易见。附图说明为进一步澄清本文中描述的实施例的以上的和其它的特征,将参考附图作出更具体的说明。应当认识到,这些图仅描绘了本文中描述的实施例的示例,并且因此不被认为限制其范围。将通过使用附图在具有额外的特异性和细节的情况下描述和解释实施例,其中:图1图示了本文中描述的实施例可以在其中运行的、包括动态地变更存储设备中的逻辑分区的分区大小的计算机架构。图2图示了用于动态地变更存储设备中的逻辑分区的分区大小的示例方法的流程图。图3图示了用于在存储设备中的逻辑分区之间转移存储空间的示例方法的流程图。图4图示了其中在存储设备上建立单一的相邻的逻辑分区的实施例。图5图示了其中创建并且随后从逻辑分区中移除新的磁盘部分(分区条目)的实施例。图6图示了其中通过扩展现有的分区条目对逻辑分区调整大小的实施例。图7图示了其中从逻辑分区的指定的部分内取消磁盘部分的映射的实施例。具体实施方式本文中描述的实施例涉及动态地变更存储设备中的逻辑分区的分区大小和在存储设备中的逻辑分区之间转移存储空间。在一个实施例中,计算机系统标识存储设备上的空闲空间的部分,其中,存储设备具有至少一个包括一个或多个偏移量和长度值(每个偏移量和长度对标识一个磁盘部分,并且被存储为分区表中的一个单独的分区条目)的逻辑分区。计算机系统确定所标识的空闲空间相对于存储设备上的其它存储位置位于何处。计算机系统进一步确定逻辑分区将被动态地调整大小为由一个或多个偏移量和长度值指定的新的大小,以及,基于所标识的空闲空间位于何处,动态地对逻辑分区调整大小,以使得逻辑分区的偏移量和长度值在分区表中被更新以包括新的所指定的偏移量和长度值。在另一个实施例中,计算机系统在存储设备中的逻辑分区之间转移存储空间。计算机系统标识存储设备上的空闲空间的部分。如上,存储设备具有至少两个其偏移量和长度值被存储为分区表中的分区条目的现有逻辑分区。计算机系统确定所标识的空闲空间相对于存储设备上的其它存储位置位于何处,以及,基于所标识的空闲空间位于何处,动态地将所确定的空闲空间中的至少一些空闲空间从一个逻辑分区重新指派给另一个不同的逻辑分区。下面的讨论现在涉及许多可以被执行的方法和方法动作。应当指出,尽管方法动作可以按照特定的次序被讨论或者在流程图中被图示为按照具体的次序发生,但是,除非专门指出或者由于一个动作是取决于另一个动作在该动作被执行之前被完成的而是必需的,否则并不要求具体的排序。本文中描述的实施例可以实现各种类型的计算系统。这些计算系统现在正日益采用多种多样的形式。计算系统可以例如是诸如是智能电话或者特征电话之类的手持型设备、家用电器、膝上型计算机、可穿戴设备、台式计算机、大型机、分布式计算系统或者甚至常规上还未被看作计算系统的设备。在本描述和权利要求中,术语“计算系统”被宽泛地定义为包括如下这样的设备或者系统(或者其组合),即:其包括至少一个物理的和有形的处理器以及物理的和有形的存储器,所述物理的和有形的存储器能够在其上具有可以被处理器执行的计算机可执行指令。计算系统可以通过网络环境被分布,并且可以包括多个成员计算系统。如图1中图示的,计算系统101通常包括至少一个处理单元102和存储器103。存储器103可以是物理系统存储器,该物理系统存储器可以是易失性的、非易失性的或者这两者的某种组合。术语“存储器”在本文中也可以被用于指诸如是物理存储介质之类的非易失性大容量存储装置。如果计算系统是分布式的,则处理、存储器和/或存储能力可以也是分布式的。如本文中使用的,术语“可执行模块”或者“可执行组件”可以指可以在计算系统上被执行的软件对象、例程或者方法。本文中描述的不同的组件、模块、引擎和服务可以被实现为在计算系统上执行(例如,作为单独的线程)的对象或者进程。在下面的描述中,参考被一个或多个计算系统执行的动作描述实施例。如果这样的动作用软件来实现,则执行动作的关联的计算系统的一个或多个处理器响应于具有被执行的计算机可执行指令而指导计算系统的操作。例如,这样的计算机可执行指令可以被体现在形成计算机程序产品的一个或多个计算机可读介质上。这样的操作的一个示例涉及对数据的操纵。可以将计算机可执行指令(和被操纵的数据)存储在计算系统101的存储器103中。计算系统101还可以包含允许计算系统101通过有线或者无线网络与其它消息处理器通信的通信信道。本文中描述的实施例可以包括或者使用专用或者通用计算机系统,其包括例如诸如是如在下面更详细讨论的一个或多个处理器和系统存储器之类的计算机硬件。可以将系统存储器包括在总存储器103内。系统存储器也可以被称为“主存储器”,并且包括可被至少一个处理单元102通过存储器总线进行寻址的存储器位置,在这种情况下,地址位置在存储器总线自身上被断言。系统存储器传统上已是易失性的,但本文中描述的原理也适用于系统存储器是部分上或者甚至完全非易失性的情况。本发明的范围内的实施例还包括用于携带或者存储计算机可执行指令和/或数据结构的物理的和其它的计算机可读介质。这样的计算机可读介质可以是任何可以被通用或者专用计算机系统访问的可用介质。存储计算机可执行指令和/或数据结构的计算机可读介质是计算机存储介质。携带计算机可执行指令和/或数据结构的计算机可读介质是传输介质。因此,通过示例而非限制,本发明的实施例可以包括至少两种完全不同种类的计算机可读介质:计算机存储介质和传输介质。计算机存储介质是存储计算机可执行指令和/或数据结构的物理硬件存储介质。物理硬件存储介质包括计算机硬件,诸如是ram、rom、eeprom、固态驱动器(“ssd”)、闪存、相变存储器(“pcm”)、光盘存储装置、磁盘存储装置或者其它磁性存储设备、或者可以用于存储可以被通用或者专用计算机系统访问和执行以实现本发明的所公开的功能的采用计算机可执行指令或者数据结构的形式的程序代码的任何其它(一个或者多个)硬件存储设备。传输介质可以包括可以用于携带采用计算机可执行指令或者数据结构的形式的程序代码并且可以被通用或者专用计算机系统访问的网络和/或数据链路。“网络”被定义为使得能在计算机系统和/或模块和/或其它电子设备之间传输电子数据的一个或多个数据链路。在通过网络或者另一个通信连接(硬连线的、无线的或者硬连线或者无线的组合)向计算机系统传输或者提供信息时,该计算机系统可以将该连接看作传输介质。以上的组合也应当被包括在计算机可读介质的范围内。进一步地,在到达各种计算机系统部件时,可以将采用计算机可执行指令或者数据结构的形式的程序代码自动地从传输介质传输到计算机存储介质(或者反之亦然)。例如,通过网络或者数据链路接收的计算机可执行指令或者数据结构可以被缓冲在网络接口模块(例如,“nic”)内的ram中,并且然后最终被传输给计算机系统ram和/或计算机系统处的较非易失性的计算机存储介质。因此,应当理解,可以将计算机存储介质包括在也(或者甚至主要地)使用传输介质的计算机系统部件中。计算机可执行指令例如包括当在一个或多个处理器处被执行时导致通用计算机系统、专用计算机系统或者专用处理设备执行特定的功能或者功能组的指令和数据。计算机可执行指令可以例如是二进制文件、诸如是汇编语言之类的中间格式指令或者甚至源代码。本领域的技术人员将认识到,本文中描述的原理可以在具有许多类型的计算机系统配置的网络计算环境中被实践,所述计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持型设备、多处理器系统、基于微处理器的或者可编程的消费电子产品、网络pc、微型计算机、大型计算机、移动电话、pda、平板型设备、寻呼机、路由器、交换机等。本发明也可以在分布式系统环境中被实践,在所述分布式系统环境中,通过网络被链接(通过硬连线数据链路、无线数据链路或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者执行任务。因此,在分布式系统环境中,一个计算机系统可以包括多个成员计算机系统。在分布式系统环境中,程序模块可以位于本地和远程的存储器存储设备两者处。本领域的技术人员还将认识到,本发明可以在云计算环境中被实践。云计算环境可以是分布式的,尽管这不是所要求的。当是分布式的时,云计算环境可以是在组织内国际化地分布的和/或具有跨多个组织地被拥有的部件。在本描述和下面的权利要求中,“云计算”被定义为用于使得能进行对可配置的计算资源(例如,网络、服务器、存储装置、应用和服务)的共享池的按需网络接入的模型。“云计算”的定义不限于在被正确地部署时可以从这样的模型中获得的其它许多优点中的任一个优点。仍然进一步地,本文中描述的系统架构可以包括多个独立的部件,所述多个独立的部件各自为作为整体的系统的功能做贡献。该模块化在处理平台可伸缩性的问题时允许提高的灵活性,并且为此提供多种优点。可以通过使用具有有限的功能范围的较小规模的部分来较容易地管理系统复杂度和增长。通过使用这些松耦合的模块增强了平台故障容许度。可以随着业务需求指示而递增地增长各个部件。模块化开发还转化为对于新功能而言的减短的上市时间。可以添加或者减除新功能,而不影响核心系统。图1图示了可以在其中使用至少一个实施例的计算机架构100。计算机架构100包括计算机系统101。计算机系统101可以是包括云计算系统的任何类型的本地或者分布式计算机系统。计算机系统101包括用于执行多种不同的功能的模块。例如,通信模块104可以被配置为与其它计算系统通信。通信模块104可以包括任何可以向或从其它计算系统接收和/或发射数据的有线或者无线通信装置。通信模块104可以被配置为与数据库、移动计算设备(诸如是移动电话或者平板型设备)、嵌入式或者其它类型的计算系统交互。计算机系统101还可以包括被配置为标识存储设备内的空闲空间的标识模块105。例如,标识模块105可以标识存储设备111内的空闲空间113。该空闲空间可以是未经分区的空间或者简单地说是不具有存储在其中的数据的空间(或者是这两者)。如图1中所示的存储设备在计算机系统101的外部,并且具有三个分区112、114和115。然而,应当理解,存储设备111可以在计算机系统101的内部或者外部,并且可以包括单一的设备或者一个介质,或者可以包括大体上任何数量的存储设备或者存储介质的阵列或者集群或者网络。此外,图1的存储设备111在被计算机系统101分区之前或者之后可以包括大体上任何数量的分区。计算机系统101可以进一步包括被配置为确定是否和将在何处在存储设备111上创建新的分区的确定模块106。一旦确定模块106已确定新的分区将被创建,则分配模块108可以分配包括分区的新的空间。分区表117可以被更新为具有该分区的新的偏移量和长度。类似地,如果现有的分区将被调整大小,则分区调整大小模块107可以对分区调整大小,在分区表中更新分区的偏移量和长度。这样,存储设备111上的每个分区可以具有标识符(例如,118a或者118b)和对应的偏移量(例如,119b)和长度(例如,120b)。将在下面进一步解释这些概念。当该术语在本文中被使用时,“磁盘分区”指将磁盘划分成多个被称为“分区”的逻辑存储单元的动作。这允许计算机系统,或者具体地,允许操作系统就像一个硬盘或者其它类型的存储设备是多个磁盘那样地看待这一个硬盘或者其它类型的存储设备。这样,不同的文件系统可以在每个分区上被使用。(在这里应当指出,为简单起见,存储设备111可以被称为硬盘——然而如在上面指示的,存储设备111可以是大体上任何能够存储数字或者模拟数据的硬件存储设备)。在一些情况下,可能不能预先知道要把多少容量专用于每个分区。因此,可以在稍后的时间在分区之间对存储容量进行重新均衡。典型的分区机制不提供用于对分区进行重新均衡而不使分区离线(或者重新创建分区)的方法。因此,在许多情况下,分区初始是过度配给的,以便为分区上的未来的数据增长提供空间。如果该额外的存储空间从不被使用,则这可以导致被浪费的容量。当该术语在本文中被引入时,磁盘分区拼接允许非邻近的物理分区(分区条目)被拼接在一起形成相邻的逻辑分区。在这点上,定义以下的术语可能是有益的:“逻辑分区”或者“结构分区(fabricpartition)”是由不同的非邻近的物理分区组成的分区。“物理分区”或者“补丁分区”是相邻的磁盘部分,该相邻的磁盘部分是逻辑分区的部分。物理分区由具有关于其属于哪个逻辑分区、其位置和大小(即,偏移量和长度)的信息的分区表中(例如,全局唯一标识符分区表(gpt)中)的分区条目来表示。可以存在可以不被物理分区支持的逻辑分区的部分。可以通过添加或者删除物理分区、从物理分区的末端缩小或者扩展磁盘部分、或者通过从物理分区的中部内取消磁盘部分的映射来适应逻辑分区之间的灵活的重新均衡。可以在逻辑分区在线时执行对逻辑分区的重新均衡或者调整大小。在一些实施例中,可以将分区拼接应用于gpt、mbr或者任何其它的分区方案。在这样的实施例中,可以使用分区表。在gpt和mbr分区表中,定义用于标识物理分区的新的分区类型(或者本文中的分区条目)。一个逻辑分区由>=1个磁盘部分组成。正常分区(非逻辑分区)可以在向非逻辑分区添加新的磁盘部分时或者在用于取消映射的命令被发送给非逻辑分区时被转换成逻辑分区,因此将非逻辑分区拆分成多个磁盘部分。逻辑分区可以在剩余单一的物理分区时被转换回正常分区。在向逻辑分区的转换期间,可以创建新的占位符分区条目以使得原始的非逻辑分区的名称、属性、分区guid等持续存在。在一个gpt磁盘实施例中,原始的分区的guid可以被用于将全部物理分区粘合在一起以形成逻辑分区。占位符分区条目也可以被用作用于保存提示(例如,采用明文文本的readme.txt)的发现卷(例如,小型fat32卷),所述提示用于解释为何物理分区以这样的方式被布置。例如,占位符分区条目可以被布置为,如果磁盘被安装在不可以处理逻辑分区的系统上则防止用户篡改物理分区。占位符分区的大小可以被设置为是小的(例如,12个扇区)。在一个实施例中,如下地填充针对每个物理分区的分区条目:偏移量和长度被保存在开始偏移量和结束偏移量字段中,逻辑分区的guid在名称字段中被保存为采用“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”或者“xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx”(在这个示例中是36字符宽、空结束或非空结束的)的格式的(例如,统一码)字符的串。为支持精简配置(thinprovisioning),属性字段的高位可以被用于使得该物理分区在逻辑分区内的逻辑开始偏移量持续存在。偏移量长度注释0(0x00)16字节分区类型guid:partition_stitch_guid16(0x10)16字节唯一分区guid32(0x20)8字节开始偏移量40(0x28)8字节结束偏移量(包括在内)48(0x30)8字节属性标志(高位49比特被重用作逻辑分区偏移量)56(0x38)72字节名称(被重用作逻辑分区guidwchar串)表1。表1图示了具有各种字段的示例分区表条目。偏移量标识字段在分区表条目内的位置,而长度标识字段的大小。在上面的示例中,属性标志具有8个字节:高位49比特是重用作逻辑分区偏移量(一个实施例可以选择让它以0开始)。最低的3比特被gpt定义为标识系统分区、传统bios可引导设备(legacybiosbootable)等。为完成对逻辑分区的i/o,将逻辑分区偏移量从逻辑偏移量转换成对其物理分区的偏移量。i/o在如果其横跨多个物理分区的情况下则将被拆分。为保护逻辑分区上的取消映射的区域,可以引入覆盖文件(不具有任何被固定(pinned)的磁盘上的分配并且不可以被移动到任何其它位置的空文件)以对逻辑分区顶上的卷隐藏取消映射的区域。在接收取消映射命令时,可以调整覆盖文件以覆盖取消映射命令描述的区域。如果取消映射命令失败了,则可以在清理期间卷回覆盖文件;如果取消映射命令成功了,则可以向磁盘提交覆盖文件。在与其它解决方案相比时,概括地说,分区拼接在对分区容量进行均衡时是更灵活和更磁盘资源高效的。分区拼接允许将非邻近的物理分区拼接成将被看作磁盘(诸如是gpt磁盘)上的单一的相邻的卷的逻辑分区。因此,分区拼接允许os分区、数据分区和任何其它分区之间的对分区大小的动态的重新均衡。在一些实施例中,可以提供精简配置支持,其中,逻辑分区不能可靠地从末端缩小(例如,在一些文件或者其它数据被固定或者以其它方式不可移动时)。在精简配置情况下,一个相邻的逻辑分区可以在它的物理分区中的一个物理分区的中部取消映射之后被划分成三个(或者多个)部分。可以对文件进行碎片整理,或者以其它方式将文件从物理分区的中部移走。在物理分区的中部被释放之后,原始的物理分区被拆分成三个磁盘部分,并且针对第一和第三磁盘部分的新创建的物理分区被拼接在一起。由于精简配置的缘故,所以物理驱动器上的全部逻辑分区的总和可以是大于物理驱动器的大小自身的。下面是图示在统一可扩展固件接口(uefi)环境中在启动管理器和操作系统(os)加载器内部如何处置逻辑和物理分区的启动期间的示例工作流。如果uefi固件可以处理逻辑分区,则可以从同样也是逻辑的分区(例如,efi系统分区(esp))加载启动管理器。启动管理器发现(一个或者多个)逻辑分区和(一个或者多个)物理分区。启动管理器为逻辑分区建立输入/输出(i/o)路径,使用分区表中的分区条目标识对应的物理分区。对于每个磁盘,启动管理器读分区表。启动管理器扫描分区表以构造逻辑分区映射。一旦枚举结束,则逻辑分区i/o映射完成。启动管理器然后找到每个占位符分区条目,并且将它们的i/o路径从虚设fat发现分区替换成上面构造的i/o映射。启动管理器现在可以通过这些新的i/o路径访问逻辑分区。继续该示例,启动管理器从启动分区加载os加载器,并且将控制转移给os加载器。os加载器重复启动管理器在针对逻辑分区i/o映射的枚举时完成的操作(启动管理器、os加载器和os可以共享新的公共逻辑分区实用库)。一旦该操作被完成,则os加载器从逻辑分区加载os,并且将控制转移给os。应当指出,在一些情况下,将逻辑分区i/o映射从启动管理器传递给os加载器可能是不安全的。这是因为启动管理器和os加载器的版本可能不匹配,并且因此数据结构(存储器中)可能是不兼容的。因此,i/o映射被启动管理器和os加载器和os发现。对(一个或者多个)分区进行枚举的代价应当是小的。一旦os被加载到存储器中,则分区管理器可以从磁盘读分区表以对任何剩余的逻辑分区进行处理。分区管理器将逻辑分区作为具有与逻辑分区大小(可以大于(如果存在空穴)或者等于(如果被充分地配给)物理分区中的全部物理分区的总和)相等的大小的“正常”相邻分区暴露给卷管理器。任何位于卷管理器之上的部件将不需要知道系统中存在逻辑分区。将在下面分别就图2和3的方法200和300进一步解释这些概念。鉴于上面描述的系统和架构,通过参考图2和3的流程图,将更好地认识可以根据所公开的主题被实现的方法。出于简化解释的目的,方法被示为和描述为一系列方框。然而,应当理解和认识到,所要求保护的主题不受方框的次序的限制,因为一些方框可以以按照与本文中所描绘和描述的次序不同的次序和/或与其它方框并发地出现。此外,并非全部所图示的方框可以是实现下文中描述的方法所要求的。图2图示了用于动态地变更存储设备中的逻辑分区的分区大小的方法200的流程图。现在将频繁参考环境100的部件和数据描述方法200。方法200包括标识存储设备上的空闲空间的一个或多个部分,该存储设备具有至少一个其偏移量和长度被存储在分区表中的分区(210)。例如,计算机系统101的标识模块105可以标识存储设备111上的空闲空间113。存储设备可以具有包括分区112、114和115的多个分区。每个分区可以具有标识符(例如,118a)、偏移量(例如,119a)和指定的长度(例如,120a)。如上面提到的,分布标识符标识分区,偏移量指示分区相对于硬盘驱动器的起始处位于何处,并且长度指示分区的大小。该元数据可以作为分区表117中的分区条目被存储。应当指出,尽管在分区表117中示出了两个分区标识符(id118a和118b),但大体上任何数量的分区id可以被存储在分区表中,并且此外,id、偏移量和长度可以在分区被创建、移除或者调整大小时被更新和变更。应当进一步指出,之前的分区调整大小解决方案可以被实现为将分区扩展到邻近该分区的末端处的空闲空间中。然而,通过使用这些解决方案,如果邻近被扩展的分区的末端处不存在任何空闲空间,则分区不能被扩展。本文中描述的实施例允许该分区被扩展到非邻近的空闲空间中。方法200接下来包括确定所标识的空闲空间相对于存储设备上的其它存储位置位于何处(220)。计算机系统101的确定模块106可以确定所标识的空闲空间113相对于存储设备111的其它分区(例如,112和114)位于何处。方法200然后确定所述分区中的至少一个分区将被动态地调整大小为由偏移量和长度值指定的新的大小(230)。然后,基于所标识的空闲空间113位于何处,分区调整大小模块107可以动态地调整分区的大小,以使得分区的偏移量和长度值在分区表中被更新以包括新的所指定的偏移量和长度值(240)。因此,例如,确定模块106可以确定特定量的空闲空间113存在于存储设备111中的分区112与114之间。分区调整大小模块107然后可以被用于通过将分区115扩展到空闲空间113中来调整分区115的大小。在一些实施例中,分区可以被一直扩展到下一个分区114,或者可以被扩展到在分区112与114之间留下一些空闲空间的点处。在调整大小完成时(或者可能在调整大小之前或者期间),在分区表117中创建针对空闲空间113的具有偏移量119b和长度120b的新的物理分区。分区表将因此包括针对逻辑分区115的一个占位符分区条目和针对使用物理分区被拼接在一起的两个非邻近磁盘部分的两个分区条目。可以在分区在线时执行该分区调整大小。相应地,可以在存储设备被动态地调整大小时从该存储设备读和向该存储设备写数据。分区表117中的元数据被动态地更新以反映任何已对分区作出的变更,不论该变更是移除、创建、调整大小还是从驱动器的一个部分移动到另一个部分。类似地,分区114可以通过增长到空闲空间113中被调整大小。在一些实施例中,多个物理分区可以被拼接到一起以形成单一的逻辑分区。被拼接的分区不需要是邻近的——实际上,一个逻辑分区可以包括多个非邻近的物理分区(分区条目)。图4图示了包括单一的相邻的逻辑分区406的存储设备401的实施例,逻辑分区406由物理分区403和物理分区405组成。物理分区403和405被空闲的(即,未经分区的)空间404分隔开。在分区表117中为单一的相邻的逻辑分区406创建标识符(例如,在gpt中,占位符分区条目)。将逻辑分区的标识符存储在物理分区403和405的分区条目内(例如,在gpt中,存储在名称字段内)使得有可能标识对应的逻辑分区406。替换地,占位符分区可以是能够存储多个偏移量和长度值的,每个偏移量和长度值是针对被拼接到完整的逻辑分区(例如,406)中的每个物理分区的。对物理分区的该拼接在一起可以是动态的,并且可以实时地发生。要指出,在逻辑分区偏移量地址空间中,物理分区405可以在物理分区403之前开始。逻辑分区可以选择按照任意次序对物理分区进行映射以形成逻辑分区地址空间。如果分区405和分区403的逻辑分区偏移量不是邻近的,这意味着对于该逻辑分区来说存在至少一个被取消映射的区域。在一些情况下,相邻的逻辑分区406可以包括至少一个不被物理分区支持的部分。在一些情况下,物理分区不应当被创建以表示该空穴,因为逻辑分区可以通过对对应的物理分区的逻辑偏移量进行解析来推断空穴位于何处。由于这些空穴,存储设备可以被表示为具有比它实际具有的存储更多的存储。在图4中,相邻的逻辑分区406可以包括至少一个不被物理分区支持的部分。占位符分区条目可以在分区表402内除了标识符之外或者作为元数据信息的唯一的仓库存储额外的信息(诸如是元数据)。对元数据进行存储的该灵活性允许在替换和修改存储设备上的分区时的多个并且可变的可能性。应当进一步指出,由于本文中的实施例将原始分区的分区条目变换为物理分区,所以通过新的占位符分区使得原始分区的标识符、名称和属性等持续存在。在一些情况下,与物理分区相关联的名称字段可以被用于保存与逻辑分区相关联的分区标识符。物理分区可以被新创建、调整大小或者移动。动态的调整大小可以涉及添加或者删除物理分区/从分区条目的末端缩小或者扩展现有的物理分区。例如,如图6中所示,存储设备601可以具有现有的物理分区602。现有的分区条目可以向着分区条目的起始处和/或向着分区条目的末端处调整大小(如用调整大小箭头603概括示出)。如果在两个方向上都调整现有的物理分区602的大小,则产生的经调整大小的分区被示为涵盖存储设备601的全部容量的604。然而将理解,现有的物理分区可以在一个方向上被调整大小为某个长度,并且在另一个方向上被调整大小为更大或者更小的长度。此外,可以节省空间,或者可以将间隙留在存储设备内——调整大小不需要一直进行到驱动器的末端。然而,至少在一些实施例中,在相同逻辑分区内的全部物理分区之间可以不存在逻辑分区偏移量范围的重叠。动态的调整大小可以还包括从分区的中部将磁盘部分取消映射。例如,如图7中所示的,存储设备701可以包括现有的物理分区702(在逻辑分区内),现有的物理分区702大体上涵盖设备的存储容量中的全部存储容量。如被存储在分区表117中的分区映射可以在步骤703中被取消映射,并且在每个方向上被调整大小,以在新的物理分区704和706之间创建空闲空间705。如果期望进一步的调整大小,则可以从物理分区704和/或706中通过从那些物理分区的中部取消映射和向外进行调整大小而进一步创建新的物理分区。将理解,尽管术语“中部”已在本文中被用于指物理分区的中部,但取消映射可以从物理分区的大体上任何部分开始,并且可以在调整大小之后产生大体上任何大小的物理分区。新的物理分区和/或空闲空间705的大小可以由用户(例如,109)或者由某个其它的应用、服务或者计算系统指定。在一些情况下,在分区被调整大小时,或者在新的逻辑分区被创建(例如,406)时,为避免使分区表碎片化,计算系统101可以被设计为在任何可能的时候避免创建物理分区。例如,计算机系统101可以指望着对任何现有的物理分区调整大小来对分区调整大小。如果分区不能在不创建新的物理分区的情况下被调整大小(例如,由于位于分区中的特定部分处的不可移动的数据或者达到现有的分区的边界等),则可以创建新的物理分区。然而,计算机系统101可以被设计为最小化该过程期间的物理分区的数量。现在转向图3,图示了用于在存储设备中的分区之间转移存储空间的方法300的流程图。现在将频繁参考环境100的部件和数据描述方法300。方法300包括标识存储设备上的空闲空间的一个或多个部分,该存储设备具有至少两个其偏移量和长度被存储在分区表中的现有的分区(310)。例如,计算机系统101的标识模块105可以标识存储设备111上的空闲空间113。确定模块106可以确定所标识的空闲空间相对于存储设备上的其它存储位置位于何处(320)。在图1中,空闲空间113位于分区112与114之间。方法300然后包括基于所标识的空闲空间位于何处动态地将所确定的空闲空间的至少一部分分配给新的物理分区,其中,新的物理分区的偏移量和长度被存储在分区表中,以使得该现有的分区和该新的物理分区是单一的相邻的逻辑分区的部分(330)。计算机系统101的分配模块108可以动态地将空闲空间113中的一些空闲空间分配给新的物理分区。例如,如图5中所示的,存储设备501可以具有现有的分区条目502和空闲空间的一部分。如果空闲空间位于分区内,则缩小磁盘部分或者对磁盘部分取消映射以将其从该特定的分区中释放。在该空闲空间内,计算机系统101的分配模块108可以为新的物理分区503分配空间。因此,在步骤504中创建新的物理分区503。在新的物理分区被创建时,或者在物理分区被调整大小或者移动时,这些行动可以是可通过逆转对分区表的变更而逆转的。因此,在图5中,如果用户或者其它应用期望逆转对新的物理分区的创建或者对现有的物理分区的调整大小,则可以将分区表逆转回其原始的分区条目集合,并且例如,可以在步骤505中移除新的分区条目503。可以应用户的请求(例如,由用户109提供的输入110中的)或者应另一个应用或者计算机系统的请求执行该移除。在一些实施例中,分区表被实现为充当数据存储库。分区表可以存储包括属性元数据或者其它类型的数据的各种类型的数据。分区表例如可以包括各种分区的分区标识符、偏移量和长度信息。在图7中所示的示例中,从指定的点处向外取消现有的分区条目702的映射,导致产生新的物理分区704和706以及空闲空间705。在这样的情况下,分区表可以存储出现在存储设备701上的各种分区的属性数据。属性数据可以包括第一新分区条目704的偏移量和长度以及第二新分区条目706的偏移量和长度。这两个新的非邻近的分区条目可以通过使它们的分区条目内的字段包含代表逻辑分区的新的占位符分区条目的标识符而被拼接在一起成为单一的逻辑分区(例如,图4的406)。覆盖文件可以被用于防止对被取消映射的逻辑分区地址范围的指定的部分的io。覆盖文件因此可以指示将不会通过消除碎化而移动到任何其它逻辑分区地址的逻辑分区地址空间的特定部分。计算机系统101的标识模块105可以进一步被配置为标识逻辑分区中的不可移动的数据文件。这些不可移动的数据文件可以是操作系统、元数据或者被文件系统指定为非可移动的其它文件。在这样的情况下,计算机系统101可以在不包括不可移动的数据文件的逻辑分区地址空间中建立新的空闲空间。相应地,例如,如果不可移动的文件位于朝向逻辑分区的末端的地方,则将朝向逻辑分区的前面(以及更具体地,朝向逻辑分区的前面的那些不包括不可移动的数据的部分)建立新的空闲空间。在其它情况下,计算机系统101的确定模块106可以被用于在建立新的空闲空间之前确定是否数据的特定的部分将被移动。一旦空闲空间被创建,则其可以被从逻辑分区取消映射,并且通过将包含的物理分区拆分成围绕空闲空间的两个物理分区和在空闲空间上创建另一个新的物理分区以及将新的物理分区与另一个逻辑分区相关联而被指派给不同的逻辑分区。在一些实施例中,如果存在邻近物理分区的起始处的空闲空间,则可以更新现有的物理分区条目的偏移量字段以断言空闲空间(尽管这可能不是常见的,因为分区内的数据通过其相对于分区的起始处的相对偏移量被寻址)。因此,如果分区的起始处变更,则分区内的数据的地址变得不正确。在这样的情形下,取代更新现有的分区条目的偏移量字段,可以遵循图3中描述的步骤(即,310-330)。仍然进一步地,如果找到邻近物理分区的起始处的空闲空间,则可以更新分区条目的偏移量字段以断言空闲空间。在一些情况下,分区可以通过使用覆盖文件从中部取消映射(如图7中那样)、导致其拆分成两个分区条目来为另一个分区腾出空闲空间。稍后,如果该分区需要调整大小,并且其早先送出的空闲空间的部分现在是可用的(具体地说,该部分邻近第二分区条目706的起始处),则可以通过简单地减小之前被取消映射的区域的大小(例如,使用覆盖文件)以及然后更新分区条目706的偏移量字段来对该分区调整大小。如果该分区需要调整大小,并且其早先送出的空闲空间的部分现在是可用的(具体地说,该部分邻近第一分区条目704的末端处),则可以通过更新之前被取消映射的区域的偏移量(例如,使用覆盖文件)以及然后增大分区条目704的长度字段来对其调整大小。权利要求支持:一个实施例包括具有至少一个处理器的计算机系统。该计算机系统执行用于动态地变更存储设备中的分区的分区大小的计算机实现的方法,所述方法包括:标识存储设备111上的空闲空间113的一个或多个部分,所述存储设备具有至少一个其偏移量119a和长度120a被存储在分区表117中的分区112。所述方法进一步包括:确定所标识的空闲空间相对于存储设备上的其它存储位置114位于何处;确定所述分区将被动态地调整大小为新的大小,该新的大小由偏移量和长度值指定;基于所标识的空闲空间位于何处,动态地将所述分区变换到逻辑分区中;以及对所述逻辑分区调整大小,逻辑分区的偏移量119a和长度120a值在分区表117中被更新以包括新的所指定的偏移量和长度值。在一些实施例中,实现占位符分区以保存在转换到逻辑分区中之前与所述分区相关联的元数据信息,每个物理分区包括用于将其自身标识为逻辑分区的部分的信息。在与新的物理分区相关联的全局唯一标识符分区表(gpt)分区表中实现名称字段和属性字段以保存与逻辑分区相关联的分区标识符和物理分区的逻辑偏移量。逻辑分区的元数据包括每个物理分区的逻辑偏移量、物理偏移量和长度。在一些情况下,动态地对于逻辑分区调整大小包括添加、删除、缩小或者扩展物理分区或者在逻辑分区内取消逻辑分区偏移量和长度的映射。在另一个实施例中,包括至少一个处理器的计算机系统执行用于在存储设备中的分区之间转移存储空间的计算机实现的方法,所述方法包括:标识存储设备111上的空闲空间113的一个或多个部分,所述存储设备具有至少两个其偏移量119a/119b和长度120a/120b被存储在分区表117中的现有的分区112、114;确定所标识的空闲空间相对于存储设备上的其它存储位置位于何处;以及,基于所标识的空闲空间位于何处,动态地将所确定的空闲空间的至少一部分从第一逻辑分区112分配到第二逻辑分区114,逻辑分区的信息被存储在分区表117中。在一些情况下,所述方法进一步包括:实现覆盖文件以防止逻辑分区的指定的部分的数据移动。现有的分区和新的分区条目是物理偏移量非邻近的。在另一个实施例中,提供了包括以下项的计算机系统:一个或多个处理器;具有存储在其上的计算机可执行指令的一个或多个计算机可读存储介质,所述计算机可执行指令在被一个或多个处理器执行时,导致计算系统执行用于动态地变更存储设备中的分区的分区大小的方法,所述方法包括以下步骤:标识存储设备111上的空闲空间113的一个或多个部分,所述存储设备具有至少一个其偏移量119a和长度120a被存储在分区表117中的分区;确定所标识的空闲空间相对于存储设备上的其它存储位置位于何处;确定所述分区将被动态地调整大小为新的大小,该新的大小由偏移量和长度值指定;以及,基于所标识的空闲空间位于何处,动态地将所述分区变换到逻辑分区中,对所述逻辑分区调整大小,逻辑分区的偏移量119a和长度120a值在分区表117中被更新以包括新的所指定的偏移量和长度值,其中,新的逻辑分区是可逆的,以使得在逆转时原始的分区表布局被恢复。在一些情况下,实现占位符分区以保存在转换到逻辑分区中之前与所述分区相关联的元数据信息,每个物理分区包括用于将其自身标识为逻辑分区的部分的信息,并且其中,将全局唯一标识符分区表(gpt)分区表中的名称字段和属性字段与新的物理分区相关联以保存与逻辑分区相关联的分区标识符和物理分区的逻辑偏移量。相邻的逻辑分区包括至少一个不被物理分区支持的部分,逻辑到物理映射被存储在存储设备的分区表内。所述方法进一步从第一分区中标识一个或多个不可移动的数据文件,以及在不包括所述不可移动的数据文件的位置处建立新的分区条目。所述方法进一步包括:确定在建立新的分区条目之前是否数据的一部分将被移动。动态地将所确定的空闲空间的至少一部分分配给新的分区条目是可逆的,以使得新的分区条目被移除,并且相邻的逻辑分区包括至少一个不被物理分区支持的部分。相应地,提供了动态地变更存储设备中的分区的分区大小的方法、系统和计算机程序产品。此外,提供了在存储设备中的分区之间转移存储空间的方法、系统和计算机程序产品。本文中描述的概念和特征可以以其它特定的形式被体现,而不脱离它们的精神或者描述性特性。所描述的实施例将在各个方面被看作仅图示性的,而非限制性的。本公开内容的范围因此由所附权利要求而非由前述描述指示。落在权利要求的等价项的意义和范围内的全部变更将被包括在它们的范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1