CN102591675A - 使用共享存储块管理多软件镜像的方法和系统 - Google Patents

使用共享存储块管理多软件镜像的方法和系统 Download PDF

Info

Publication number
CN102591675A
CN102591675A CN2011103701207A CN201110370120A CN102591675A CN 102591675 A CN102591675 A CN 102591675A CN 2011103701207 A CN2011103701207 A CN 2011103701207A CN 201110370120 A CN201110370120 A CN 201110370120A CN 102591675 A CN102591675 A CN 102591675A
Authority
CN
China
Prior art keywords
storage
block
storage block
software
software mirroring
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011103701207A
Other languages
English (en)
Other versions
CN102591675B (zh
Inventor
C·马里内利
J·方迪格尼耶
M·V·斯图克尔伯格
J·G·茹内
D·克拉克
L·加尔斯-埃里斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN102591675A publication Critical patent/CN102591675A/zh
Application granted granted Critical
Publication of CN102591675B publication Critical patent/CN102591675B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种使用共享存储块管理多软件镜像的方法和系统,用于在包括大容量存储器(130)的数据处理实体(100)上管理多个软件镜像,大容量存储器具有多个存储位置,每个存储位置具有在大容量存储器中的相应存储位置,每个软件镜像包括多个存储块,每个存储块具有在软件镜像中的相应存储地址。本发明还公开了相应的方法(200-900;A1-A20)。

Description

使用共享存储块管理多软件镜像的方法和系统
技术领域
根据本发明的一个或多个实施例的解决方案涉及数据处理领域。更具体地,该解决方案涉及软件镜像的管理。
背景技术
一般而言,软件镜像是包括驻留在计算机上的软件模块(例如其操作系统、应用程序、和/或数据)的结构。
在一些情况下,可能期望在相同计算机上具有多个操作系统可用。例如,这可能对于运行需要不同操作系统的程序、或测试新操作系统或其新版本是有用的。
为此,开发多引导技术是可能的。多引导技术允许在计算机上安装多个操作系统,具有在启动计算机时选择引导哪个操作系统的可能性。通过将计算机的硬盘分割成多个分区来实现期望的结果,每个分区定义存储相应操作系统的逻辑盘。计算机从主分区引导,主分区包括允许选择实际将被启动的操作系统的引导装载程序;可选地,可以提供具有主引导装载程序的引导分区,简单地用于选择期望的操作系统;主引导分区然后调用被选择的用于其启动的操作系统的次引导装载程序。
然而,多引导技术是非常固定的,这是因为硬盘的分区是事先被定义的。在任何情况下,一旦所选的操作系统已经被启动,其完全控制全部硬盘;因此,所选的操作系统也可以存取其他分区(具有损害他们的风险)。
可选地,通过开发虚拟化技术也可以实现相同的结果。在该种情况下,在计算机上安装管理程序。管理程序实现虚拟层,其模拟多个虚拟机,每个虚拟机都包括抽象环境,给出物理计算机的(虚拟机唯一控制的)表象。以该方式,可以在相应的虚拟机上具有独立(甚至在同一时间)运行的不同操作系统。
然而,虚拟化技术要求安装复杂的基础结构来管理虚拟机。此外,这涉及计算机的性能降级(因为操作系统不再本地运行在计算机上)。
另一共同的需要是制作计算机的软件镜像的备份拷贝。例如,这可能有利于在计算机不正常工作时恢复计算机的内容。
为此,可以对软件镜像进行快照(例如,在特定时间点一致状态的备份拷贝);快照可以被保存在备份盘或备份服务器上。以该方式,可以通过将其从备份盘或备份服务器重新安装到计算机上来恢复该快照。然而,进行快照的过程和对其恢复的过程都非常慢。此外,在使用备份服务器的情况下,涉及网络资源的高消耗;此外,从其恢复快照需要与备份服务器的网络连接。可选地,可以从备份服务器上的快照远程引导计算机。然而,在这种情况下,计算机必须总是连接至备份服务器进行操作;在任何情况下,通过网络的计算机操作都涉及其性能的降级。
US-A-2008/0133208(其全部内容通过引用结合于此)还公开了一种从使用其(物理)快照的计算机直接运行虚拟机的方法,为此,虚拟机使用物理快照作为表示其初始状态的虚拟快照来初始化。例如,虚拟机可以用于测试更新,也具有在测试成功的情况下使该更新可用于计算机的可能性(作为相应的新物理快照),或者用于验证执行的可疑程序是否表示病毒或间谍软件活动。如上,这需要安装虚拟层(具有上述缺点);此外,在该文件中描述的技术仅支持计算机上的单一操作系统。
发明内容
概括的说,根据本发明的一个或多个实施例的解决方案是基于通过共享其共用存储块来管理多软件镜像的思想。
具体地,根据本发明的特定实施例的解决方案的一个或多个方面在从属权利要求中阐述,同一解决方案的优点特征在独立权利要求中阐述,其措词通过引用被逐字结合于此(参考根据本发明的一个实施例的解决方案的特定方面提供的任何有利特征都加以必要更正地应用于其所有方面)。
更具体地,根据本发明的一个实施例的解决方案的一个方面提供了一种在数据处理实体(例如独立计算机)上管理多软件镜像的方法。数据处理实体包括具有多个存储位置的大容量存储器;每个存储位置具有在大容量存储器中的对应存储地址。每个软件镜像包括多个存储块;每个存储块具有在软件镜像中的对应镜像地址。该方法包括下面步骤。所有软件镜像(或至少其一部分)的每个存储块的单个版本被存储在相应的存储位置。控制结构被提供;该控制结构将每个存储块与存储存储块的存储位置相关(例如,存储每个存储块的块偏移量的偏移量映射允许计算出相应存储位置的存储地址,以及存储每个存储位置的块计数器的块映射表示使用存储在该存储位置中的存储块的软件镜像的编号)。存储在当前软件镜像的引导位置中的存储块被重新定位(例如,被重新定位至大容量存储器的重定位区域);每个软件镜像的引导位置是具有等于软件镜像的引导块的镜像地址的存储地址的存储位置,其引导块包括需要引导数据处理实体直到加载存取功能(适于存储软件镜像的存储块)的存储块。当前软件镜像的引导块被存储在相应的引导位置。数据处理实体从相应引导位置中的当前软件镜像的引导块进行引导(从而加载存取功能)。每个存取当前软件镜像的所选存储块的请求由存取功能完成;存取功能存取由控制结构提供的相关存储位置中的所选存储块。
根据本发明的一个实施例的解决方案的另一方面提供了以中国计算机程序,包括代码装置,用于在该技术机程序在数据处理系统上被执行时,使数据处理系统执行该方法的步骤;根据本发明的一个实施例的解决方案的又一方面,提供了一种计算机程序产品,包括配备有计算机程序的非瞬时计算机可读介质,该计算机程序包括代码装置,其可直接加载至数据处理系统的工作存储器中,从而配置该数据处理系统来执行该相同的方法。
根据本发明的一个实施例的解决方案的另一方面提供了用于执行所述方法呢的步骤的装置。
附图说明
根据本发明的一个或多个实施例的解决方案,及其其他特征和优点将参考下面结合附图的具体描述而被更好地理解,下面的具体描述通过纯粹地非限制的表示给出(附图中,为了简化,相应的元件用相同或类似的标号表示,并且不重复其解释,并且每个实体的名称通常被用于表示其类型和属性,例如其值、内容和表示)。具体的:
图1示出了应用根据本发明的一个实施例的解决方案的计算机的示意框图;
图2示出了根据本发明的一个实施例的解决方案的示例性应用;
图3示出了描述与根据本发明的实施例的读操作相关的活动的流程的活动示意图;
图4示出了描述与根据本发明的实施例的写操作相关的活动的流程的活动示意图;
图5示出了描述与根据本发明的实施例的快照创建操作相关的活动的流程的活动示意图;
图6示出了描述与根据本发明的实施例的快照删除操作相关的活动的流程的活动示意图;
图7示出了描述与根据本发明的实施例的快照切换操作相关的活动的流程的活动示意图;
图8示出了描述与根据本发明的实施例的快照输出操作相关的活动的流程的活动示意图;
图9示出了描述与根据本发明的实施例的快照输入操作相关的活动的流程的活动示意图;
图10A-10D示出了表示可以被用于实现根据本发明的一个实施例的部署过程的主软件部件的任务的协作图;以及
图11示出了表示可以被用于实现根据本发明的一个实施例的准备过程的主软件部件的任务的协作图。
具体实施方式
具体参考图1,示出了可以应用根据本发明的一个实施例的解决方案的计算机100的示意框图。计算机100(例如PC)由与系统总线105并行连接的多个单元形成。具体地,一个或多个微处理器(μP)110控制计算机100的操作;RAM 115用作微处理器110的工作存储器,以及ROM 120存储计算机100的基本代码。多个外部单元(通过各个接口)群集在本地总线125周围。具体地,大容量存储器包括一个或多个硬盘130和用于读取光盘140(例如DVD或CD)的驱动器135。此外,计算机100包括输入单元145(例如,键盘和鼠标),以及输出单元150(例如监视器和打印机)。适配器155用于将计算机100连接至网络(图中未示出)。桥单元160将系统总线105与本地总线120连接。每个微处理器110和桥单元160可以作为主代理操作,请求接入系统总线105,用于传输信息。仲裁器165管理接入的授权,与系统总线105互斥。
图2中示出了根据本发明的一个实施例的解决方案的示例性应用。具体地,该解决方案用于管理计算机100上的不同软件镜像。每个软件镜像包括一个或多个软件模块(例如,操作系统、应用程序、和/或数据)。软件镜像由一组存储块形成(例如,每个为1-10MB),其在软件镜像中具有相应地址(被称作镜像地址)。
为此,硬盘130逻辑上被分成不同部分。更具体的,大部分硬盘130被镜像部分205占用(从其开始处开始);镜像部分205由具有硬盘130中的相应地址的一组存储位置形成(被称作存储地址),每一个都用于存储软件镜像的存储块;具体的,所有软件镜像的每个存储块的一个版本存储在相应的存储位置中。
硬盘130的剩余部分(在其结束端)被用于存储服务信息。
更具体的,头部分210用于存储每个软件镜像的镜像头215i。镜像头215i包括偏移量映射220i和引导列表224i。偏移量映射225i指定用于相应软件镜像的每个存储块的块偏移量(由其镜像地址确定),其块偏移量表示存储块在镜像部分205中相对于其在软件镜像中的位置的偏移量(即,等于保存存储块的存储位置的存储地址及其镜像地址之间的差,或正或负);当相应的存储块没有被使用时,块偏移量等于无效值。镜像头215i相对较小,例如,假设使用5B(从而允许±25×8-1=239=500GB范围的值,忽视无效值,为2×500GM=1TB的镜像部分205寻址)为每个块偏移量编码,具有2MB存储块的100GB的软件镜像需要100GB/2MB×5B=250kB的镜像头215i。头部分210具有提供存储相对大数量(例如,高至10-50)的镜像头215i的可能性的大小。而引导列表225i指定软件镜像的引导块的镜像地址的列表(被称作引导地址)。引导块包括开始软件镜像的引导顺序直到加载部署代理(下面将描述)所需的存储块;例如,在Microsoft Windows中,引导块包括(除了部署代理之外)主引导记录(MBR)、引导扇区、bootmgr.exe文件、boot\bcd文件、系统注册表、winload.exe文件、以及在系统注册表中指定的驱动器文件。
此外,块映射230指定用于镜像部分205(由其存储地址确定)的每个存储位置的块计数器。块计数器表示使用存储在存储位置中的存储块的软件镜像的数量;当存储位置是空闲时,块计数器等于0。块映射230通常大于镜像头215i;例如,假设使用1B为每个块计数器编码(从而允许管理至多28-1=255个软件镜像),使用2MB存储块的1TB的镜像部分需要100TB/2MB×1B=400MB的块映射230。而头索引235指向当前在计算机上激活的软件镜像的镜像头215i(被称作当前软件镜像)。
在结束处,硬盘130的重新定位部240用于重新定位镜像部分205的存储位置,使其存储地址等于当前软件镜像的引导地址-在此,其被称作重新定位的存储位置245c。当前软件镜像的引导块然后可以被复制到其引导位置-其以深灰色被示出并且用参考标号250c表示。以此方式,引导块250c被布置在硬盘130中,恰好在当前软件镜像的引导顺序过程中他们期望被找到的地方;然而,这不能导致镜像部分205中的信息的任何损失,因为被覆盖的相应存储块被保存在重新定位的存储位置245c中。
因此,当计算机100启动时,其通常从硬盘130引导。事实上,存储在计算机100的固件中的在计算机启动时运行的引导装载程序-例如,基本输入输出系统(BIOS)-将硬盘130确定为可引导装置;因此,BIOS加载MBR,MBR加载引导扇区,引导扇区找到并启动bootmgr.exe文件,bootmgr.exe找到并读取boot\bcd文件以确定存储位置,然后加载系统注册表、winlaod.exe文件、以及在系统注册表中指定的驱动文件,以及winload.exe开始部署代理。以该方式,对应于其引导块250c的当前软件镜像的实际操作系统的一部分(用标号255c表示)以及部署代理(用标号260表示)被加载至工作存储器115。
现在由部署代理260的存取驱动器为计算机100的操作过程中的存取当前软件镜像的所选存储块的每次请求提供服务,其覆盖操作系统255c的标准文件系统驱动器,图中未示出。为此,部署代理260优选地将当前软件镜像的镜像头250i加载至工作存储器115,从而使其加速相应的存取。
上述技术允许以非常容易的方式管理计算机100上的多个软件镜像。此外,不同的软件镜像完全彼此分开;事实上,每个软件镜像仅可以存取相应的存储块(从而防止损坏其他软件镜像的任何风险)。
不需要任何虚拟化基础结构就实现了该结果,因此,计算机100的性能不会被不利地影响。事实上,在该种情况下,仅软件镜像(即,存储其存储块的存储位置)被虚拟化,相反,操作系统继续在本地运行在计算机100上。
此外,该解决方案非常灵活,因为软件镜像的数量及其大小不是预定的。一般而言,软件镜像的数量及其大小现在不再被硬盘130上的可用存储空间严格确定,因为,他们依赖于被所有软件镜像实际使用的不同存储块的数量。事实上,没有被使用的存储块没有存储在硬盘130上,以及在不同软件镜像中相同的存储块被共享(从而避免他们的倍增);这提供了显著的存储空间节省,特别是在软件镜像仅使用其可用存储空间的最小部分时(这在实践中经常发生),和/或当他们彼此轻微不同时(例如,当随时间进行的计算机的若干个快照)。
下面具体描述可以在根据本发明的相应实施例的上述计算机上执行的不同示例性操作。
具体地,图3示出了描述与根据本发明的一个实施例的读操作相关的活动的流程的活动示意图,其中读操作用方法300表示。
方法300开始于黑色开始圆305,然后读取当前软件镜像的所选存储块(在相应的所选镜像地址处)的请求一被提交至文件系统驱动器(例如来自应用程序)就进行到块310。读请求在块315被传送至部署代理,其从当前软件镜像的偏移量映射获取所选存储块的块偏移量。活动流程然后根据所选存储块的块偏移量的值在块320分支。
当所选存储块的块偏移量等于无效值(表示所选存储块没有被使用)时,部署代理在块325将默认值分配给所选存储块(例如,通过将其所有位设置为0)。
相反,当所选存储块的块偏移量具有有效值(表示所选存储块被使用),部署代理在块330通过将其块偏移量加至其镜像地址来计算出镜像部分中应存储所选存储块的存储位置的存储地址(被称作所选存储位置)。现在在块335进行测试,以确定所选存储位置是否已经被重定位至重定位部分(即,在所选存储位置的存储地址等于当前软件镜像在其引导列表中指出的的引导地址之一时)。如果是,则部署代理在块340将所选存储位置设置为等于相应的重定位存储位置(通过相应地替换其存储地址)。方法300然后向下进行到块345;当所选存储位置还没有被重定位时,也直接从块335到达同一点。此时,部署代理从所选存储位置获取所选存储块。
在任何情况下,活动的流程在块350处合并(从块325或块345);部署代理现在将所选存储块返回至文件系统驱动器,其依次将其返回至应用程序。方法300然后在同心的白/黑停止圆355处结束。
而图4示出了描述了与根据本发明的一个实施例的写操作有关的活动流程的活动示意图,用方法400来表示写操作。
方法400在黑色开始圆405处开始,然后当写当前软件镜像的所选存储块(在相应所选镜像地址上)的请求一被提交至文件系统驱动器(例如来自应用程序)就进行到块410。写请求在块415被传送至部署代理,其从当前软件镜像的偏移量映射获取所选存储块的块偏移量。活动流程然后根据所选存储块的块偏移量的值在块420分支。
当所选存储块的块偏移量具有无效值(表示所选存储块没有被使用)时,部署代理在块425确认镜像部分中空闲的存储位置,用于接收所选存储块(被称作所选存储位置)-例如,在块映射中,第一个相应块计数器等于0的块。部署代理然后在块430处将所选存储位置的块计数器设置为1(以表示其现在被当前软件镜像所使用)。继续至块435,部署代理通过从所选存储位置的存储地址中减去所选存储块的镜像地址来计算所选存储位置的块偏移量;所选存储位置的块偏移量然后被存储在当前软件镜像的偏移量映射中(以表示所选存储块被存储在所选存储位置中)。
返回至块420,当所选存储块的块偏移量具有有效值(表示所选存储块被使用)时,部署代理在块440处通过将其块偏移量加至其镜像地址来计算出存储所选存储块的存储位置的存储地址(再次被称作所选存储位置)。继续至块445,部署代理现在从块映射中获取所选存储位置的块计数器。活动流程根据所选存储位置的块计数器的值在块450处分支。
当所选存储位置的块计数器等于1(表示所选存储块仅被当前软件镜像所使用)时,在块455进行测试,以验证所选存储位置是否已经被重定位至重定位部分(即,在所选存储位置的存储地址等于在其引导列表中指出的当前软件镜像的引导地址之一时)。如果是,则部署代理在块460将所选存储位置设置为等于相应的重定位存储位置(通过相应地替换其存储地址)。
相反,当在块450处发现所选存储块的块计数器高于1(表示所选存储块除了被当前软件镜像使用之外,还被其他软件镜像使用)时,方法400向下进行到块465,在该阶段,部署代理将所选存储位置的块计数器减1(以表示其不再被当前软件镜像使用)。现在参考块470,部署代理确认在镜像部中空闲的存储位置,以接收所选存储块(成为所选存储位置)。部署代理然后在块475将所选存储位置的块计数器设置为1(以表示其现在正被当前软件镜像使用)。继续至块480,部署代理通过从所选存储位置的存储地址减去所选存储块的镜像地址来计算出所选存储位置的块偏移量;所选存储块的块偏移量然后被存储在当前软件镜像的偏移量映射中(以表示所选存储块被存储在所选存储位置中)。
来自块435、块460或块480的活动流程在块485处合并。在任何情况下,所选存储块现在都存储到所选存储位置中。方法400然后在同心白色/黑色停止圆490处结束。
图5示出了描述与根据本发明的一个实施例的快照创建操作相关的活动的流程的活动示意图,其操作由方法500来表示。
方法500开始于黑色开始圆505,然后当创建源软件镜像(被称作目标软件镜像)的快照的请求一被提交至部署代理,就进行到块510。响应于此,部署代理在块515处在头部部分中创建用于目标软件镜像的新镜像头(具有与源软件镜像的镜像头相同的大小)。继续至块520,部署代理将源软件镜像的偏移量映射和引导列表复制到目标软件镜像的镜像头。然后对目标软件镜像的每个存储块(在其偏移量映射中表示)执行循环。该循环开始于块525,其中部署代理从目标软件镜像的偏移量映射获取当前存储块(从第一块开始)的块偏移量;然后通过将块偏移量与其镜像地址相加来计算出存储当前存储块的存储位置的存储地址(被称作当前存储位置)。继续至块530,部署代理在块映射中将当前存储位置的块计数器加1(以表示其也被目标镜像使用)。在块535进行测试以验证目标软件镜像的所有存储块是否都已经被处理。如果没有,活动流程返回至块525以对目标软件镜像的下一存储块重复相同的操作。反之,退出循环,并且方法500在同心白色/黑色停止圆530处结束。
因此,创建软件镜像的快照的操作非常快速,这是因为不需要复制相应的存储块。
图6示出了描述与根据本发明的一个实施例的快照删除操作相关的活动的流程的活动示意图,其操作由方法600来表示。
方法600开始于黑色开始圆605,然后当删除废弃软件镜像的请求一被提交至部署代理(例如来自应用程序)就进行到块610。响应于此,部署代理在块615存取废弃软件镜像的偏移量映射。然后对废弃软件镜像的每个存储块(在其偏移量映射中表示)执行循环。循环开始于块620,其中部署代理从废弃软件镜像的偏移量映射获取当前存储块(从第一块开始)的块偏移量;然后通过将其块偏移量与其镜像地址相加来计算出存储当前存储块的存储位置的存储地址(被称作当前存储位置)。继续至块625,部署代理将块映射中的当前存储位置的块计数器减1(以表示其不再被废弃软件镜像使用);具体的,如果当前存储位置仅被废弃软件镜像使用,则其块计数器成为0,表示当前存储位置是空闲的。现在在块630处进行测试以验证是否所有的废弃软件镜像的存储块都已经被处理。如果没有,则活动流程返回至块620,以对废弃软件镜像的下一存储块重复相同的操作。反之,通过向下至块635退出循环;此时,部署代理删除废弃软件镜像的镜像头。方法600然后在同心的白色/黑色停止圆640处结束。
因此,删除软件镜像的操作也非常快速,这是因为不需要对存储块进行任何实际动作。
图7示出了描述了与根据本发明的一个实施例的快照切换操作相关的活动的流程的活动示意图,其操作由方法700来表示。
方法700开始于黑色开始圆705,然后当切换至另一软件镜像的请求一被提交至部署代理就进行到块710。响应于此,部署代理在块715处将存储块从重定位位置恢复至当前软件镜像的引导位置(如在其引导列表中指出的)。继续至块720,部署代理将存储在其他软件镜像的引导位置(如在其引导列表中所指出的)中的存储块重定位至重定位部分。现在参考块725,部署代理将其他软件镜像的引导块复制到他们的引导位置。活动流程继续至块730,在此,部署代理更新头索引以指向其他软件镜像的镜像头。
此时,部署代理在块735关闭计算机,然后再启动计算机,从而从其引导位置中的其他软件镜像的引导块重新引导计算机;结果,对应于其引导块的其他软件镜像的操作系统的一部分和部署代理被加载至计算机的工作存储器(从而由部署代理完全如上所述为每个访问其他软件镜像的所选存储块的请求提供服务)。方法700然后在同心白色/黑色停止圆740处停止。
因此,切换至其他软件镜像的操作(例如,用于恢复至计算机的先前快照)非常快速,这是因为仅需要复制对应的引导块。这在具体应用中可能非常有用(例如,当在云计算结构中提供多个软件镜像用于根据需要使用时)。
图8示出了描述了与根据本发明的一个实施例的快照输出的操作相关的活动的流程的活动示意图,其操作由方法800表示。
方法800开始于黑色开始圆805,然后当将所选软件镜像输出至外部设备(例如,可移动存储单元或远程服务器)上的请求一被提交至部署代理就进行到块810。响应于此,部署代理在块815存取所选软件镜像的偏移量映射。然后对所选软件镜像的每个存储块(如在其偏移量映射中所指出的)执行循环。循环开始于块820,其中部署代理从所选软件镜像的偏移量映射中获取当前存储块的块偏移量(从第一块开始)。
然后活动流程根据当前存储块的块偏移量的值在块825处分叉。在当前存储块的块偏移量等于无效值(表示当前存储块没有被使用)时,部署代理在块830处为当前存储块分配默认值(例如,通过将其所有位都设置为0)。反之,在当前存储块的块偏移量具有有效值(表示当前存储块被使用)时,则部署代理在块835处通过将其块偏移量与其镜像地址相加来计算出镜像部分中应存储当前存储块的存储位置的存储地址(被称作当前存储位置)。现在在块840处进行测试,以验证当前存储位置是否已经被重定位至重定位部分(即,在当前存储位置的存储地址(如在其引导列表中所指出的)等于当前软件镜像的引导地址之一)。如果是,则部署代理在块845将当前存储位置设置为等于相应的重定位存储位置(通过相应地替换其存储地址)。方法800然后向下进行到块850;该点还在当前存储位置还没有被重定位时从块840直接到达。此时,部署代理从当前存储位置获取当前存储块。在任何情况下,活动的流程在块855处(来自块830或块850)合并;部署代理现在将当前存储块复制到外部设备。
现在在块860进行测试以验证是否所选软件镜像的所有存储块都已经被处理。如果没有,则活动的流程返回至块820,以对所选软件镜像的下一存储块重复相同操作。反之,退出循环,并且方法800在同心白色/黑色停止圆865处结束。
最后,图9示出了描述了与本发明的一个实施例的快照输入的操作相关的活动的流程的活动示意图,其操作由方法900来表示。
方法900开始于黑色开始圆905,然后当输入来自外部设备(例如,可移动存储单元或远程服务器)的外部软件镜像的请求一被提交至部署代理就进行到块910。响应于此,部署代理在块915存取外部设备上的外部软件镜像。继续至块920,部署代理在头部分为外部软件镜像创建新的镜像头;外部软件镜像的镜像头包括偏移量映射,具有多个对应于所输入的软件镜像的大小的块偏移量;以及引导列表,被设置为所输入软件镜像的引导地址(如在与其相关的外部设备中所指定的)。
然后对外部软件镜像的每个存储块执行循环。循环开始于块925,部署代理从外部设备获取当前存储块(从第一块开始)。进行到块930,部署代理在镜像部分中识别空闲的可以接收当前存储块的存储位置(称作当前存储位置)。部署代理然后在块935将当前存储位置的块计数器设置为1(以表示其现在正被外部软件镜像使用)。继续至块940,部署代理通过从当前存储位置的存储地址减去当前存储块的镜像地址来计算出当前存储位置的块偏移量;当前存储块的块偏移量然后被存储在外部软件镜像的偏移量映射中。在块945,当前存储块现在被存储在当前存储位置中。
现在在块950处进行测试,以验证是否外部软件镜像的所有存储块都已经被处理。如果没有,活动的流程返回至块925,以对外部软件镜像的下一存储块重复相同操作。反之,退出该循环,并且方法900在同心的白色/黑色停止圆955处结束。
上述技术还可以被用于在计算机上部署软件镜像。在这个方面,现在参考图10A-图10D,其示出了表示可以被用于实施根据本发明的一个实施例的部署处理的主软件部件的任务的协作图。具体地,这些附图描述了系统的静态结构(通过相应部件,用参考标号1000表示为一个整体),以及其动态行为(通过一系列交换的消息,每个消息代表相应动作,用累计的序列号表示)。
从图10A开始,计算机100通过网络1005,例如局域网(LAN),连接至服务器计算机(或简称服务器)1010。
服务器1010(连同分别用标号1015和1030表示的工作存储器和硬盘)运行部署管理器1035,例如IBM公司的IBM TivoliProvisioning Manager for OS Deployment(或TPM for OSD)的IBM Tivoli Provisioning Manager for Images(或TPMfI)(IBM和Tivoli是IBM公司的商标);部署管理器1035被用于自动化部署与其连接的任何(客户)计算机上的软件镜像1040(存储在相应存储区中)。
具体地,无论何时新软件镜像(用标号1040N表示)将被部署在计算机100上,操作员1040通过部署管理器1035选择这些计算机100和新软件镜像1040C,例如,通过与运行其他客户计算机的浏览器连接,图中未示出(动作“A1:选择”)。响应于此,部署管理器1035启动计算机100。因此,假设计算机100不具有起作用的操作系统,其通过网络1005引导。具体的,计算机100的引导装载程序没有发现任何可引导设备,随后运行网络引导装载程序,例如,嵌入在其网络适配器中的预引导执行环境(PXE)。网络引导装载程序利用例如基于动态主机配置协议(DHCP)的动态地址服务来从服务器1010(作为DHCP服务器)获取用于计算机100的动态地址,其还提供下载至计算机100的RAM盘中(即被看做大容量存储器的工作存储器115的一部分)的网络引导程序的地址,然后被运行。网络引导程序,例如Windows预安装环境(WinPE),Windows是微软公司的商标,提供了最小操作系统1055,其包括部署代理260(动作“A2:网络引导”)。
部署代理260通过定义其镜像部分205、头部分210(没有任何镜像头)、块映射230(镜像部分205中所有存储位置的块计数器被设置为0以表示它们是空闲的)、头索引235和重定向部分240(动作“A3:初始化”)。部署代理260然后从服务器1010下载新软件镜像1040N的引导块;为此,部署代理260作为远程存取启动程序与服务器计算机1035的远程存取服务器1060交互,例如基于iSCSI协议(动作“A4:下载”)。部署代理260然后在头部分210中创建用于新软件镜像1040N的新镜像头(用标号215N表示);镜像头215N包括偏移量映射,具有多个对应于新软件镜像1040N的大小的块偏移量(所有都被设置为无效值,在该种情况下,还表示对应的存储块在硬盘130中不可用),以及引导列表被设置为新软件镜像1040N的引导地址,如在与其相关的相应储存库中指出的(动作“A5:配置”)。部署代理260现在可以将新软件镜像1040N的引导块存储在镜像部分205中的相应引导位置中,在此以暗灰色和标号250N示出。同时,在镜像头215N的偏移量映射中的每个引导块的块偏移量被设置为相应的引导地址;此外,在块映射230中的每个引导位置的块计数器被设置为1,表示现在其被新软件镜像1040N使用(动作“A6:存储”)。此时,部署代理260关闭然后启动计算机100。
因此,如图10B所示,计算机100现在从引导块250N引导,从而将对应于其引导块250N(用标号255N表示)和部署代理260的新软件镜像1040N的操作系统的一部分加载至工作存储器115(动作“A7:本地引导”)。计算机100操作期间的存取新软件镜像1040N的所选存储块的每个请求现在都由部署代理260的流驱动器提供服务(其再次覆盖操作系统255N的标准文件系统驱动器(图中未示出))。
具体地,文件系统驱动器接收存取所选存储块的请求,例如来自应用程序的请求,图中未示出;文件系统驱动器将该请求传送至部署代理260(动作“A8:存取请求”)。当所选存储块已经被请求读取时,部署代理260验证所选存储块在硬盘130中是否可用(如镜像头240N的偏移量映射中的相应块偏移量所指出的)。当所选存储块在硬盘130中不可用时(即,其块偏移量等于无效值),则部署代理260将该请求传送至操作系统255N的远程存取驱动器(图中未示出)(在该示例中,在争论中作为iSCSI启动程序);远程存取驱动器通过远程存取服务器1060从软件镜像1040N(在服务器1010上)下载所选存储块。远程存取驱动器然后将所选存储块返回至部署代理260(动作“A9.10:下载”)。部署代理260通过如上所述执行相应写操作来将所选存储块存储在硬盘130中(在该种情况下,所选存储块总是存储在镜像部分205的空闲存储位置中),从而逐渐地用以灰色表示的新软件镜像1040N的存储块填充镜像部分205(动作“A9.11:写”)。反之,如果所选存储块已经在硬盘130中可用(即,其块偏移量具有有效值),则部署代理260通过执行如上所述的相应读操作来直接从其获取所选存储块(动作“A9.20.读”)。在两种情况下,部署代理260将所选存储块返回至文件系统驱动器,其依次将其返回至应用程序(动作“A10:返回”)。当所选存储块已经被请求写时,部署代理260通过执行如上所述的相应写操作来将其直接写入硬盘130(动作“A11:写”)。因此,新软件镜像1040N可以被正常更新(如同其已经被完全部署在计算机100上),即使部署过程仍在进行。
现在参考图10C,以完全异步的方式,部署代理260周期地确认(例如每10-100ms)服务器1010、计算机100和/或网络1005的工作负荷;如果工作负荷低于预定阈值(表示相应的资源在该时刻是低利用的,例如因为在服务器1010和/或计算机100上没有执行动作,以及网络1005中的通信量低),则部署代理260通过远程存取服务器1060下载在硬盘130中还不可用的新软件镜像1040N的新存储块(例如,其在镜像头215N的偏移量映射中的块偏移量等于无效值的第一个)(动作“A12:下载”)。部署代理260然后如上所述将新存储块写入硬盘130(动作“A13:写”)。以该方式,可以保证新软件镜像1040N的所有存储块最终都被下载(即使他们从未被使用);然后这个发生了,可以禁止部署代理260的流功能(然后还将计算机100与服务器1010断开连接)。
上述流技术使得计算机100准备好在非常短的时间内使用-正好在新软件镜像1040N的引导块250N已经被存储在硬盘130中之后,即使部署过程仍在进行(例如,在对于典型大小的10-200M字节的引导块的1-2分钟之后);计算机100的操作然后完全正常(其如往常一样直接从硬盘130引导),无论硬盘130中的新软件镜像1040N的其他存储块是否可用,仅在其存取仍在从服务器1010被下载的存储块时,计算机100的性能稍微下降。此外,使计算机100准备好使用所需的时间与新软件镜像1040N的大小无关。网络1005的使用也随着时间减少(例如,使用对数定律),这是因为一旦存储块已经被存取一次,在计算机100上越来越多的存储块就将已经可用。在该方面,应该注意这种流技术与本领域已知的根据需要提供软件镜像的技术无关。事实上,在已知流技术中,软件镜像的存储块仅为了他们的立即使用而被下载至计算机上。然而,这些存储块不是永久存储在计算机上(即,他们在被使用后和计算机被关闭之后的任何情况下都将消失),从而为了任何再次使用,他们必须再次被下载;因此,计算机可以从不与服务器断开连接。事实上,即使当存储块被预提取时,他们仅保留在计算机上直到他们(可能的)再次使用;类似的,即使当存储块的本地高速缓存被使用时,仅很少的存储块保留在本地高速缓存中供他们的再次使用(在任何情况下,本地高速缓存中最近使用的存储块最终被驱逐,用于存储新存储块)。
相同的流技术还可以被用于(与上述快照切换操作结合)在计算机100上部署其他新软件镜像1040。为此,如图10D中所示,操作员1045选择其他新软件镜像(用标号1040N’表示(动作“A14:选择”)。响应于此,如上部署代理260通过远程存取服务器1060从服务器1010下载新软件镜像1040N’的引导块。此时,部署代理260将来自重定位存储位置的存储块(如果有)恢复至当前软件镜像的引导位置,如在其引导列表中所指出的(动作“A16:恢复”)。部署代理260然后将存储在新软件镜像1040N’的引导位置中的存储块重定位至重定位部240,在此他们用标号245N’表示(动作“A17:重定位”)。部署代理260然后在头部210中为新软件镜像1040N’创建新镜像头(用标号215N’表示),偏移量映射包括多个对应于新软件镜像1040N’的大小的块偏移量,以及引导列表被设置为新软件镜像1040N’的引导地址(动作“A18:配置”)。部署代理260现在可以将新软件镜像1040N’的引导块存储在他们的引导位置(被示出为深灰色并用标号250N’表示),同时相应地更新镜像头215N’的偏移量映射和块映射230)。此时,部署代理260关闭并开启计算机100,从而从其引导块250N’引导其,因而加载(至工作存储器115中)对应于其引导块250N’和部署代理的新软件镜像1040N’的操作系统的一部分,其将完全如上所述为存取新软件镜像1040N’的每个请求提供服务(动作“A20:重引导”)。
上述解决方案需要知道每个软件镜像的引导块。为此,例如,可以相应地准备软件镜像。在这方面,参考图11,示出了表示可以被用于实现将被用在根据本发明的一个实施例的解决方案中的一般软件镜像的准备过程的主软件部件(整体用标号1100来表示)的任务的协作图。
为此,服务器1010包括主软件镜像(或简称主镜像)1105的储存库;每个主镜像1105提供相应软件镜像的基本版本(例如,通过获取其先前被安装的施主计算机的硬盘的内容来创建),其中与施主计算机的任何配置相关的具体内容(例如,驱动器和注册设置)都已经被去除。服务器1010还包括储存模块1110;而每个模块1110包括用于软件镜像必须被部署的客户计算机的相应配置的特定内容。
操作员1045通过部署管理器1035为特定类型的计算机(由具有其部署代理260的相应辅助计算机100’表示)选择软件镜像(包括所选主镜像1105和所选模块1110)(动作“B1:选择”)。响应于此,部署管理器1035通过传递所选软件镜像的标识符来唤醒辅助计算机100’上的部署代理260(动作“B2:唤醒”)。因此,部署代理260安装所选软件镜像作为远程盘(即,通过在争论中在该示例中作为iSCSI启动程序),用于通过远程存取服务器1060对其远程存取。结果是,创建被辅助计算机100’排他地存取的临时软件镜像(或简称临时镜像)1115;临时镜像1115简单地通过指向所选主镜像1105和所选模块1110的存储块的索引结构来定义,即没有对其进行复制。临时镜像1115被安装为使能块跟踪功能,从而跟踪被存取的临时镜像1115的任何存储块的镜像地址(动作“B3:安装”)。
此时,部署代理260在临时镜像1115上模拟辅助计算机100’的引导序列(直到加载部署代理);例如,在微软Windows中,部署代理260读取MBR、引导扇区、bootmgr.exe文件、boot\bcd文件、系统注册表、winload.exe文件、在系统注册表中指定的驱动文件、以及部署代理(动作“B4:模拟引导”)。一旦模拟引导序列已经被完成,部署代理260卸载临时镜像1115(动作“B5:卸载”)。部署代理260然后将临时镜像1115提交至部署管理器1035(动作“B6:提交”)。响应于此,部署管理器1035从临时镜像1115建立新软件镜像(或简称新镜像)1120(简单地通过其索引结构定义);此外,新镜像1120与在模拟引导过程中已经被存取的存储块的列表相关,其存储块定义了相应引导块(动作“B7:建立”)。
自然,为了满足本地和特定要求,本领域技术人员可以对上述解决方案应用很多逻辑和/或物理修改和替换。更具体地,尽管该解决方案已经参考其一个或多个实施例被描述为具有一定程度的特定性,但是应该理解对形式和细节以及其他实施例的各种省略、代替和改变都是可能的(例如,关于数值和组成)。具体地,即使没有在上述描述中阐述具体细节以提供对其的更透彻的理解,本发明的不同实施例也可以被实施;反之,已知的特征可能已经被省略或简化以不用不必要的细节来模糊本说明。此外,尤其旨在,结合所公开的解决方案的任何实施例描述的特定元件和/或方法步骤可以结合在为了一般设计选择的任何其他实施例中。
例如,如果用等同方法实现相同解决方案(通过使用具有其多个步骤或部分的相同功能的类似步骤、去除不必要的一些步骤、或增加其他额外步骤),类似的考虑也适用;此外,这些步骤可以以不同的顺序、同时或以交叉方式(至少部分)被执行。
尽管所提出的技术已经具体地被设计为在物理计算机上使用,但是其在虚拟机上的应用也不被排除。此外,软件镜像可以包括任何软件程序(例如,仅仅是没有任何应用程序和/或数据的操作系统);类似的,存储块可以包括任何类型的信息(例如,与操作系统或应用程序相关的一个或多个扇区、文件、库、目录、其组合或部分)。
即使在上述描述中参考了完全安装了一个或多个软件镜像的计算机(从而不需要网络连接),但是相同的技术也可以应用于仅部分安装在计算机硬盘上的软件镜像(当计算机被恢复至软件镜像时重新启动软件镜像的部署)。
相同的技术还可以应用于任何其他操作系统,而无论其引导顺序如何。例如,在Linux(Linus Torvalds的商标)中,引导块包括(除了部署代理之外)具有GRBU引导程序的MBR,以及具有核和initrd文件系统的/boot目录;在该种情况下,在引导顺序过程中,BIOS加载包括GRBU的MBR,GRBU找到/boot目录并加载核和initrd文件系统,GRBU在核上引导,核启动initrd文件系统,以及initrd文件系统启动部署代理。
在任何情况下,上述存取功能可以通过任何等同结构(甚至没有任何部署代理)来实现。
计算机的硬盘可以以不同方式来组织;例如,在替换实施方式中,存储块被重新定位至镜像部分的空闲存储位置(不需要任何专用的重定位部分)。此外,任何其他控制结构可以被用于将软件镜像的每个存储块与其被存储的相应的存储位置相关联;例如,对于每个软件镜像,偏移量映射可以直接包括存储每个存储块的存储位置的存储地址(或其任何其他标志),引导块也可以在偏移量映射中被识别(例如通过相应的标记)等等。可替换地,当存储块被重定位时,可以将该存储块与使用它的每个软件镜像的偏移量映射中的相应重定位存储位置的存储地址相关;以该方式,偏移量映射总是直接提供存储每个存储块的实际存储位置(在镜像部分或在重定位部分中)的存储地址。
任何其他默认值可以与没有被使用的存储块相关;然而,不排除没有被使用的所有软件镜像的存储块与公用预定义存储位置相关的可能性(所有存储块然后以完全相同的方式被读取)。
在该种情况下,也可以简化写操作(即,通过简单地区分存储将被写的存储块的存储位置仅被当前软件镜像使用还是与其他软件镜像共享的情况)。
块映射可以使用任何等同结构来代替(写操作被相应更新)。例如,没有任何东西阻止提供存储表示每个存储位置的可用性的标志的位映射,而只提供被使用的存储位置的块计数器(总是高于0);除此之外或可替换的,还可以使用存储在每个存储位置中的存储块来存储软件镜像的标志。
类似的考虑应用于上述的其他操作(即,快照创建操作、快照删除操作、快照切换操作、快照输出操作以及快照输入操作)。当然,这些操作不以限制的方式被解释,上述相同的解决方案也可以仅支持他们中的一些和/或其他操作(例如,仅操作系统的快照的管理)。
在计算机切换至其他软件镜像时的恢复重定位存储块的步骤不是严格必须的;例如,也可以维持所有软件镜像的引导块总是存储在相应引导位置中,进而总是维持重定位相应存储块(从而使得切换操作更快,但是以浪费硬盘空间为代价)。
软件镜像可以使用来自任何外部源(例如,可移动存储装置)的上述流技术来部署。可替换地,也可以维持流处理总是有效,即使在软件镜像已经被完全部署之后(例如,用于响应于将相应块偏移量复位为无效值,下载最新版本的存储块)。如果仅以任何其他频率或仅在特定周期期间(例如在晚间)对计算机、服务器、网络或其任意组合监视工作量,或者如果在工作量低于阈值(在流处理总是保持有效时该特征可以被省略)的同时下载两个或更多存储块,应用类似的考虑。在任何情况下,所提出的技术完全与软件镜像如何在客户计算机上部署无关(例如,即使没有任何服务器计算机的手动操作)。软件镜像还可以以不同方式准备(例如,通过实际上引导辅助计算机并跟踪在引导顺序过程中被存取的存储块以确认其引导块)。
如果程序(可以被用于实现本发明的每个实施例)以不同方式构建,或者如果提供了其他模块或功能,应用类似的考虑;类似的,存储结构可以是其他类型,或可以被等同实体(不必须包括物理存储媒介)代替。程序可以采用任何适于被任何数据处理系统使用或与其连接的形式(例如,位于虚拟机中);具体的,程序可以是外部或驻留软件、固件或微码(在例如将被编译或翻译的目标码中或者源码中)。此外,可以提供作为在任何计算机可用介质上实现的制造产品的程序,该介质可以是适于包含、存储、通信、传递、或传输该程序的任何部件。例如,该介质可以是电子的、磁性的、光学的、电磁的、红外线的或半导体类型;这样的介质的示例是固定盘(程序被预加载)、可移动盘、磁带、卡、线路、光纤、无线连接、网络、广播波等等。在任何情况下,根据本发明的一个实施例的解决方案使其本身被实现,即使使用硬件结构(例如,集成在半导体材料芯片中)或软件和适于在其他配置上编程的硬件的结合。
可替换地,该系统具有不同结构或包括等同部件,或其具有其他操作特性。在任何情况下,其每个部件可以分成多个部件,或两个或更多部件可以组合在一起形成单个部件;此外,每个部件可以被复制以支持并行执行相应操作。还应该指出不同部件之间的任何交互通常不需要连续(除非不同指定),并且可以直接或间接通过一个或多个中介。具体地,系统可以基于不同结构(例如,广域、全局、蜂窝或卫星网络),以及使用任何类型(有线和/或无线)的连接。在任何情况下,每个计算机可以具有其他结构或可以包括类似元件(例如高速缓冲存储器,临时存储器程序或部分);此外,可以使用任何数据处理实体(例如PDA、移动电话等)或多个实体的组合来代替该计算机。

Claims (14)

1.一种方法(200-900;A1-A20),用于在包括大容量存储器(130)的数据处理实体(100)上管理多个软件镜像,大容量存储器具有多个存储位置,每个存储位置具有在大容量存储器中的相应存储地址,每个软件镜像包括多个存储块,每个存储块具有在软件镜像中的相应存储地址,方法包括以下步骤:
将所有软件镜像的至少一部分的每个存储块的一个版本存储(500,900)在相应的存储位置中;
提供(525-530,935-940)将每个存储块与存储存储块的存储位置相关联的控制结构(215i,230);
重定位(720)存储在当前软件镜像的引导位置中的存储块,每个软件镜像的引导位置是具有如下存储地址的存储位置,所述存储地址等于包括如下存储块的软件镜像的引导块的镜像地址,所述存储块是引导数据处理实体直至加载适于存取软件镜像的存储块的存取功能(260)所需的存储块;
将当前软件镜像的引导块存储(725)至相应的引导位置;
从在相应引导位置中的当前软件镜像的引导块引导(735)数据处理实体,从而加载存取功能;以及
通过存取功能,完成(300,400)存取当前软件镜像的被选择存储块的每个请求,存取功能在由控制结构提供的相关存储位置中存取所选存储块。
2.根据权利要求1的方法(200-900),其中大容量存储器(130)包括镜像部分(205),用于存储非重定位存储块,以及重定位部分(240),用于存储重定位存储块,以及其中对于每个软件镜像,控制结构(215i,230)包括偏移量映射(220i),提供在存储每个非重定位存储块的镜像部分中的存储位置的存储地址的指示,以及引导列表(225i),提供相应引导块的镜像地址的指示,存取功能(260)在相应镜像地址没有被包括在由当前软件镜像的引导列表提供的引导块的镜像地址中时,存取镜像部分的存储位置中具有由当前软件镜像的偏移量映射提供的存储地址的所选存储块,否则存取重定位部分的相应存储位置中的所选存储块。
3.根据权利要求1或2的方法(200-900),其中存取所选存储块的步骤(300)包括:
通过在所选存储块被存储在非存储位置上时,返回(325,350)默认值,或者
返回(330-350)从由控制结构(215i)提供的相关存储位置获取的所选存储块,
来从大容量存储器读取(300)所选存储块。
4.根据权利要求1至3中任一项的方法(200-900),其中存取(400)所选存储块的步骤包括:
通过在所选存储块被存储在非存储位置时,将所选存储块存储(425-430,485)至空闲存储位置,并将所选存储块与控制结构(215i)中的空闲存储位置相关(435),
在存储在相关存储位置中的存储块仅被当前软件镜像使用时,将所选存储块存储(440-460,485)在由控制结构(215i)提供的相关存储位置中,或者
在存储在相关存储位置中的存储块与至少其他软件镜像共享时,将所选存储块存储(440-450,465-475,485)在空闲存储位置中并将所选存储块与控制结构(215i)中的空闲存储位置相关,
由此将所选存储块写入(400)大容量存储器。
5.根据权利要求4的方法(200-900),其中控制结构(215i,230)包括块映射(230),提供用于每个存储位置的块计数器,表示多个软件镜像共享存储在存储位置中的存储块,写入(400)所选存储块的步骤还包括:
当所选存储块被存储在非存储位置时,将空闲存储位置的块计数器设置(430)为1,或
在存储在相关存储位置中的存储块与至少一个其他软件镜像共享时,减少(465,475)相关存储位置的块计数器,并将空闲存储位置的块计数器设置为1。
6.根据权利要求1至5中任一项的方法(200-900),还包括:响应于从源软件镜像创建目标软件镜像的请求(510),执行如下步骤:
将存储源软件镜像的每个存储块的存储位置与控制结构(215i,230)中的目标软件镜像的相应存储块相关(515-535)的步骤。
7.根据权利要求6的方法(200-900),当从属于权利要求5时,其中相关(515-535)的步骤包括:
将存储源软件镜像的每个存储块的存储位置的块计数器增加1。
8.根据权利要求1至7中任一项的方法(200-900),还包括:响应于删除废弃软件镜像的请求(610),执行如下步骤:
去除废弃软件镜像的每个存储块与在控制结构(215i,230)中存储废弃软件镜像的存储块的存储位置的相关性的步骤。
9.根据权利要求8的方法(200-900),当直接或间接从属权利要求5时,其中去除(615-635)相关性的步骤包括:
将存储废弃软件镜像的每个存储块的存储位置的块计数器减少(625)1。
10.根据权利要求1至9中任一项的方法(200-900),还包括:响应于从先前软件镜像切换至当前软件镜像的请求(710),执行如下步骤:
将被重定位的存储块从先前软件镜像的引导位置恢复(715)至对存储在当前软件镜像的引导位置中的存储块进行重定位(720)之前的先前软件镜像的引导位置。
11.根据权利要求1至10中任一项的方法(200-900),还包括,响应于将选择的软件镜像输出至外部设备的请求(810),执行如下步骤:
通过在所选软件镜像的存储块存储在非存储位置时将存储块设置为其他默认值,来读取(815-850)所选软件镜像的每个存储块,否则,从由控制结构(215i)提供的相关存储位置获取所选软件镜像的存储块,以及
将所选软件镜像的每个存储块复制(855)到外部设备。
12.根据权利要求1至11中任一项的方法(200-900),还包括,响应于从其他外部设备输入外部软件镜像的请求(910),执行如下步骤:
从其他外部设备获取(925)外部软件镜像的每个存储块,以及
通过将外部软件镜像的存储块存储在其他空闲存储位置中并将外部软件镜像的存储块与控制结构(215i)中的其他空闲存储位置相关来写入(930-945)外部软件镜像的每个存储块。
13.根据权利要求1至12中任一项的方法(A1-A20),还包括以下步骤:
请求(A14)将来自外部源(1015)的新软件镜像部署在数据处理实体(100)上;
从外部源下载(A15)新软件镜像的引导块至数据处理实体上;
重定位(A17)存储在新软件镜像的引导位置中的存储块;
将新软件镜像的引导块存储(A19)在相应引导位置中;
从在相应引导位置中的新软件镜像的引导块引导(A20)数据处理实体,从而加载适于部署新软件镜像的流功能;以及
通过流功能完成(A8-A10)读取新软件镜像的其他选择存储块的每个请求,流功能(A9.10)从外部源下载其他所选存储块,将其他所选存储块存储(A9.11)至仍然还空闲的存储位置中,以及当其他所选存储块被存储在非存储位置时,将其他所选存储块与控制结构(215i)中的仍然还空闲的存储位置相关,否则从由控制结构提供的相关存储位置读取(A9.20)其他所选存储块。
14.一种系统(100),包括用于执行根据权利要求1至13中任一项方法(200-600;A1-A20)的步骤的装置(200-600;1000)。
CN201110370120.7A 2010-12-14 2011-11-15 使用共享存储块管理多软件镜像的方法和系统 Expired - Fee Related CN102591675B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP10194864.4 2010-12-14
EP10194864 2010-12-14

Publications (2)

Publication Number Publication Date
CN102591675A true CN102591675A (zh) 2012-07-18
CN102591675B CN102591675B (zh) 2015-01-28

Family

ID=46200627

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110370120.7A Expired - Fee Related CN102591675B (zh) 2010-12-14 2011-11-15 使用共享存储块管理多软件镜像的方法和系统

Country Status (3)

Country Link
US (1) US9052918B2 (zh)
JP (1) JP5767565B2 (zh)
CN (1) CN102591675B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996667B2 (en) 2010-04-27 2015-03-31 International Business Machines Corporation Deploying an operating system
US9052918B2 (en) 2010-12-14 2015-06-09 International Business Machines Corporation Management of multiple software images with shared memory blocks
US9058235B2 (en) 2010-12-13 2015-06-16 International Business Machines Corporation Upgrade of software images based on streaming technique
US9086892B2 (en) 2010-11-23 2015-07-21 International Business Machines Corporation Direct migration of software images with streaming technique
US9230113B2 (en) 2010-12-09 2016-01-05 International Business Machines Corporation Encrypting and decrypting a virtual disc
CN113486349A (zh) * 2015-03-27 2021-10-08 英特尔公司 存储器扫描方法和装置

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567042B (zh) * 2010-12-14 2015-04-15 国际商业机器公司 利用引导块重定位来管理多个软件镜像的方法和系统
US10372463B1 (en) * 2013-11-27 2019-08-06 EMC IP Holding Company LLC Provisioning a computerized device with an operating system
US10475079B2 (en) * 2014-06-06 2019-11-12 Adobe Inc. Application integrated advertising display control
US9400741B1 (en) * 2014-06-30 2016-07-26 Emc Corporation Reclaiming space from file system hosting many primary storage objects and their snapshots
WO2016067404A1 (ja) * 2014-10-30 2016-05-06 株式会社日立製作所 計算機システム
US10114702B2 (en) * 2016-01-06 2018-10-30 International Business Machines Corporation Method and system to discover and manage distributed applications in virtualization environments
US10019252B1 (en) * 2016-04-07 2018-07-10 Nutanix, Inc. Virtualizing installers
CN107766251B (zh) * 2017-11-08 2021-02-02 苏州浪潮智能科技有限公司 加载image的检测方法、系统、设备及可读存储介质
US11237838B2 (en) 2020-01-02 2022-02-01 Western Digital Technologies, Inc. Storage system and method for enabling a direct accessible boot block in a memory die

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040088367A1 (en) * 2002-10-31 2004-05-06 Paragon Development Systems, Inc. Method of remote imaging
US20080010639A1 (en) * 2006-05-24 2008-01-10 Lanrev Lp System and method for remotely re-imaging a computer system
CN101256527A (zh) * 2008-03-12 2008-09-03 中兴通讯股份有限公司 一种引导程序的备份方法及其备份装置
US20100205594A1 (en) * 2009-02-10 2010-08-12 Microsoft Corporation Image-based software update

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6075858A (en) 1995-10-27 2000-06-13 Scm Microsystems (U.S.) Inc. Encryption key system and method
US5991876A (en) 1996-04-01 1999-11-23 Copyright Clearance Center, Inc. Electronic rights management and authorization system
US6098158A (en) 1997-12-18 2000-08-01 International Business Machines Corporation Software-enabled fast boot
US6567774B1 (en) 1998-01-30 2003-05-20 Compaq Computer Corporation Method and system for configuring and updating networked client stations using a virtual disk and a snapshot disk
US6973447B1 (en) * 2000-03-23 2005-12-06 International Business Machines Corporation System apparatus and method for supporting multiple partitions including multiple systems in boot code
US8140683B2 (en) 2000-12-07 2012-03-20 International Business Machines Corporation Method and system for selecting an operating system at user login on a target device
WO2002065275A1 (en) * 2001-01-11 2002-08-22 Yottayotta, Inc. Storage virtualization system and methods
US6920555B1 (en) 2001-03-10 2005-07-19 Powerquest Corporation Method for deploying an image into other partition on a computer system by using an imaging tool and coordinating migration of user profile to the imaged computer system
US7428636B1 (en) 2001-04-26 2008-09-23 Vmware, Inc. Selective encryption system and method for I/O operations
FR2824646B1 (fr) 2001-05-09 2003-08-15 Canal Plus Technologies Procede de selection d'une image de logiciel executable
US7103747B2 (en) 2001-06-28 2006-09-05 Hewlett-Packard Development Company, L.P. Memory table and memory manager for use in managing memory
US20030126242A1 (en) 2001-12-28 2003-07-03 Chang Albert H. Network boot system and method using remotely-stored, client-specific boot images created from shared, base snapshot image
US7209874B2 (en) 2002-02-25 2007-04-24 Zoran Corporation Emulator-enabled network connectivity to a device
US7379982B2 (en) 2002-04-15 2008-05-27 Bassam Tabbara System and method for custom installation of an operating system on a remote client
JP2003316595A (ja) 2002-04-23 2003-11-07 Casio Comput Co Ltd インストール方法、ファイル更新方法、プログラム及びコンピュータシステム
US7313793B2 (en) 2002-07-11 2007-12-25 Microsoft Corporation Method for forking or migrating a virtual machine
US7107385B2 (en) 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US7062517B2 (en) 2002-08-14 2006-06-13 Hitachi, Ltd. Method and apparatus for centralized computer management
US6857069B1 (en) 2003-03-24 2005-02-15 Cisco Technology, Inc. Modified operating system boot sequence for iSCSI device support
US7360072B1 (en) 2003-03-28 2008-04-15 Cisco Technology, Inc. iSCSI system OS boot configuration modification
US6925533B2 (en) 2003-05-07 2005-08-02 International Business Machines Corporation Virtual disk image system with local cache disk for iSCSI communications
US7281247B2 (en) 2003-06-24 2007-10-09 Microsoft Corporation Software image creation in a distributed build environment
GB2407893B (en) 2003-11-06 2010-01-20 Intuwave Ltd A method of rapid software application development for a wireless mobile device
US20050160150A1 (en) 2004-01-20 2005-07-21 Su-Hwa Kao Apparatus and method for managing and transporting virtual disks over a network to networked stations
JP4900760B2 (ja) 2004-03-31 2012-03-21 株式会社日立製作所 Osイメージのデプロイメントマシン及び方法
JP4604543B2 (ja) * 2004-04-30 2011-01-05 日本電気株式会社 計算機、計算機起動方法、管理サーバ装置およびプログラム
US8230095B2 (en) 2004-05-07 2012-07-24 Wyse Technology, Inc. System and method for integrated on-demand delivery of operating system and applications
US7424601B2 (en) 2004-07-07 2008-09-09 Yongyong Xu Methods and systems for running multiple operating systems in a single mobile device
US7664834B2 (en) 2004-07-09 2010-02-16 Maxsp Corporation Distributed operating system management
US7269722B1 (en) 2004-07-26 2007-09-11 Sun Microsystems, Inc. Preview of UNIX boot process from multi-user level
JP4736370B2 (ja) * 2004-07-27 2011-07-27 株式会社日立製作所 ホスティング環境構築方法および計算機システム
US8346886B2 (en) 2004-09-08 2013-01-01 Red Hat, Inc. System, method, and medium for configuring client computers to operate disconnected from a server computer while using a master instance of the operating system
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
TWI267752B (en) * 2005-01-17 2006-12-01 Lite On Technology Corp Multi-mode computer system and operating method thereof
US7509530B2 (en) 2005-01-19 2009-03-24 Sonic Solutions Method and system for use in restoring an active partition
US7512833B1 (en) 2005-05-09 2009-03-31 Adam C. Murphy Universal imaging utility program
US7536541B2 (en) 2006-03-07 2009-05-19 Novell Inc. Parallelizing multiple boot images with virtual machines
US7653794B2 (en) 2006-05-08 2010-01-26 Microsoft Corporation Converting physical machines to virtual machines
JP4725798B2 (ja) * 2006-06-21 2011-07-13 日本電気株式会社 コンピュータシステム、ネットワークブートシステム、osイメージ切替方法、osイメージ切替プログラム
US7809919B2 (en) 2006-07-26 2010-10-05 Hewlett-Packard Development Company, L.P. Automatic data block misalignment detection and correction in a computer system utilizing a hard disk subsystem
JP4366698B2 (ja) 2006-07-27 2009-11-18 日本電気株式会社 計算機、計算機システム、及びディスクイメージ配布方法
US8387038B2 (en) 2006-08-14 2013-02-26 Caterpillar Inc. Method and system for automatic computer and user migration
US9086917B1 (en) 2006-10-17 2015-07-21 Manageiq, Inc. Registering and accessing virtual systems for use in a managed system
US8032351B2 (en) 2006-11-30 2011-10-04 Symantec Corporation Running a virtual machine directly from a physical machine using snapshots
US20080141015A1 (en) 2006-12-06 2008-06-12 Glen Edmond Chalemin System and method for operating system deployment in a peer-to-peer computing environment
US8312115B2 (en) 2006-12-21 2012-11-13 1E Limited Network booting apparatus and method
JP2010522370A (ja) 2007-03-20 2010-07-01 サンギュ イ 移動型仮想マシンイメージ
US8331366B2 (en) 2007-04-11 2012-12-11 Dell Products L.P. System and method for deployment of a software image to a plurality of target devices
US8245022B2 (en) 2007-06-01 2012-08-14 Dell Products L.P. Method and system to support ISCSI boot through management controllers
US20090049160A1 (en) 2007-08-14 2009-02-19 Dell Products L.P. System and Method for Deployment of a Software Image
US8782637B2 (en) 2007-11-03 2014-07-15 ATM Shafiqul Khalid Mini-cloud system for enabling user subscription to cloud service in residential environment
GB2455106B (en) * 2007-11-28 2012-08-01 Icera Inc Memory errors
JP2009176151A (ja) * 2008-01-25 2009-08-06 Tripeaks Kk 情報処理装置およびその起動方法
US7953833B2 (en) 2008-01-31 2011-05-31 Wanova Technologies Ltd. Desktop delivery for a distributed enterprise
US20090240953A1 (en) 2008-03-19 2009-09-24 Safenet, Inc. On-disk software image encryption
SG158757A1 (en) 2008-07-10 2010-02-26 Fast And Safe Technology Pte L Method and apparatus for protecting data in computers
US8434093B2 (en) 2008-08-07 2013-04-30 Code Systems Corporation Method and system for virtualization of software applications
US8510352B2 (en) * 2008-10-24 2013-08-13 Microsoft Corporation Virtualized boot block with discovery volume
US9274714B2 (en) * 2008-10-27 2016-03-01 Netapp, Inc. Method and system for managing storage capacity in a storage network
US8701106B2 (en) 2008-11-30 2014-04-15 Red Hat Israel, Ltd. Hashing storage images of a virtual machine
US20100174894A1 (en) 2009-01-07 2010-07-08 Lenovo (Singapore) Pte, Ltd. Method, Apparatus, and System for Configuring an Operating System on a Target Computer
JP5521437B2 (ja) * 2009-01-29 2014-06-11 日本電気株式会社 携帯端末装置、ソフトウェア更新方法及びプログラム
US9164689B2 (en) * 2009-03-30 2015-10-20 Oracle America, Inc. Data storage system and method of processing a data access request
US8112505B1 (en) 2009-10-20 2012-02-07 Wanova Technologies, Ltd. On-demand block-level file system streaming to remote desktops
US9130912B2 (en) 2010-03-05 2015-09-08 International Business Machines Corporation System and method for assisting virtual machine instantiation and migration
US8996667B2 (en) 2010-04-27 2015-03-31 International Business Machines Corporation Deploying an operating system
US8407662B2 (en) 2010-06-25 2013-03-26 Wyse Technology Inc. Apparatus and method for network driver injection into target image
CN103221921B (zh) 2010-11-23 2016-06-22 国际商业机器公司 利用流技术的软件映像的直接迁移
WO2012076266A1 (en) 2010-12-09 2012-06-14 International Business Machines Corporation Computer-readable storage mediums for encrypting and decrypting a virtual disc
DE112011104356B4 (de) 2010-12-13 2014-05-15 International Business Machines Corporation Aktualisieren von Software-Images auf der Grundlage von Streaming-Technik
CN102567042B (zh) 2010-12-14 2015-04-15 国际商业机器公司 利用引导块重定位来管理多个软件镜像的方法和系统
JP5767565B2 (ja) 2010-12-14 2015-08-19 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ソフトウェア・イメージの管理方法、コンピュータ・プログラム、およびシステム(共有メモリ・ブロックを用いた複数のソフトウェア・イメージの管理)

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040088367A1 (en) * 2002-10-31 2004-05-06 Paragon Development Systems, Inc. Method of remote imaging
US20080010639A1 (en) * 2006-05-24 2008-01-10 Lanrev Lp System and method for remotely re-imaging a computer system
CN101256527A (zh) * 2008-03-12 2008-09-03 中兴通讯股份有限公司 一种引导程序的备份方法及其备份装置
US20100205594A1 (en) * 2009-02-10 2010-08-12 Microsoft Corporation Image-based software update

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996667B2 (en) 2010-04-27 2015-03-31 International Business Machines Corporation Deploying an operating system
US9086892B2 (en) 2010-11-23 2015-07-21 International Business Machines Corporation Direct migration of software images with streaming technique
US9230113B2 (en) 2010-12-09 2016-01-05 International Business Machines Corporation Encrypting and decrypting a virtual disc
US9230118B2 (en) 2010-12-09 2016-01-05 International Business Machines Corporation Encrypting and decrypting a virtual disc
US9626302B2 (en) 2010-12-09 2017-04-18 International Business Machines Corporation Encrypting and decrypting a virtual disc
US9058235B2 (en) 2010-12-13 2015-06-16 International Business Machines Corporation Upgrade of software images based on streaming technique
US9195452B2 (en) 2010-12-13 2015-11-24 International Business Machines Corporation Upgrade of software images based on streaming technique
US9052918B2 (en) 2010-12-14 2015-06-09 International Business Machines Corporation Management of multiple software images with shared memory blocks
CN113486349A (zh) * 2015-03-27 2021-10-08 英特尔公司 存储器扫描方法和装置
CN113486349B (zh) * 2015-03-27 2024-04-09 英特尔公司 存储器扫描方法和装置

Also Published As

Publication number Publication date
JP5767565B2 (ja) 2015-08-19
US20120151202A1 (en) 2012-06-14
JP2012128839A (ja) 2012-07-05
US9052918B2 (en) 2015-06-09
CN102591675B (zh) 2015-01-28

Similar Documents

Publication Publication Date Title
CN102591675B (zh) 使用共享存储块管理多软件镜像的方法和系统
JP5724477B2 (ja) 移行プログラム、情報処理装置、移行方法、及び情報処理システム
JP5026509B2 (ja) マシンから仮想マシンへの変換
JP5649184B2 (ja) ブート・ブロックの再配置によって複数のソフトウェア・イメージを管理するための方法、コンピュータ・プログラムおよびシステム
US10067835B2 (en) System reset
US9600369B2 (en) Operating system recovery method and apparatus, and terminal device
CN102193817B (zh) 简化物理和虚拟部署的管理
CN102207896A (zh) 虚拟机崩溃文件生成技术
JP2011118873A (ja) 自動化されたモジュール型のセキュアな起動ファームウェアの更新
US9852029B2 (en) Managing a computing system crash
CN113342365A (zh) 操作系统部署方法、装置、设备及计算机可读存储介质
US7506115B2 (en) Incremental provisioning of software
US20060047927A1 (en) Incremental provisioning of software
KR101552580B1 (ko) 모바일 기기를 포함하는 시스템 복원 및 멀티 운영체제를 지원하는 백업 방법
JP2013214122A (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
CN102681859A (zh) 一种从USB大容量存储设备中启动Windows操作系统的方法
KR100947136B1 (ko) 소프트웨어의 증분 프로비져닝
CN118779070A (zh) 一种业务恢复方法和相关设备
CN113645046A (zh) 一种网卡驱动安装方法、主服务器及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150128

Termination date: 20201115

CF01 Termination of patent right due to non-payment of annual fee