CN103838519A - 存储介质库中存储介质的高效分布和选择的方法和装置 - Google Patents
存储介质库中存储介质的高效分布和选择的方法和装置 Download PDFInfo
- Publication number
- CN103838519A CN103838519A CN201310591445.7A CN201310591445A CN103838519A CN 103838519 A CN103838519 A CN 103838519A CN 201310591445 A CN201310591445 A CN 201310591445A CN 103838519 A CN103838519 A CN 103838519A
- Authority
- CN
- China
- Prior art keywords
- storage medium
- library
- storehouse
- string
- librarian
- 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
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B15/00—Driving, starting or stopping record carriers of filamentary or web form; Driving both such record carriers and heads; Guiding such record carriers or containers therefor; Control thereof; Control of operating function
- G11B15/675—Guiding containers, e.g. loading, ejecting cassettes
- G11B15/68—Automatic cassette changing arrangements; automatic tape changing arrangements
- G11B15/689—Control of the cassette changing arrangement
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B65—CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
- B65G—TRANSPORT OR STORAGE DEVICES, e.g. CONVEYORS FOR LOADING OR TIPPING, SHOP CONVEYOR SYSTEMS OR PNEUMATIC TUBE CONVEYORS
- B65G1/00—Storing articles, individually or in orderly arrangement, in warehouses or magazines
- B65G1/02—Storage devices
- B65G1/04—Storage devices mechanical
- B65G1/137—Storage devices mechanical with arrangements or automatic control means for selecting which articles are to be removed
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B15/00—Driving, starting or stopping record carriers of filamentary or web form; Driving both such record carriers and heads; Guiding such record carriers or containers therefor; Control thereof; Control of operating function
- G11B15/675—Guiding containers, e.g. loading, ejecting cassettes
- G11B15/68—Automatic cassette changing arrangements; automatic tape changing arrangements
- G11B15/6885—Automatic cassette changing arrangements; automatic tape changing arrangements the cassettes being conveyed within a cassette storage location, e.g. within a storage bin or conveying by belt
Landscapes
- Engineering & Computer Science (AREA)
- Mechanical Engineering (AREA)
- Automatic Tape Cassette Changers (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
一种装置,包括:网络接口、存储器、以及处理器。所述处理器与所述网络接口和所述存储器耦合。所述处理器被配置为:确定存储介质库的状态、以及至少部分基于存储介质库的状态确定存储介质库内多个可分布组件的分布。所述处理器还被配置为响应于所述确定存储介质库内多个可分布组件的分布,发出根据所述分布而分布所述存储介质库中所述多个可分布组件的命令。
Description
技术领域
本发明主题的实施例一般地涉及大容量存储系统的领域,并且更具体地涉及存储介质库中存储介质的高效移动。
背景技术
在诸如数据中心的处理大量数据的场景中使用大容量存储系统。尽管这些大容量存储系统中的许多使用大量单独的存储介质,并且被设计为在较少人力介入的情况下运行,但是这些系统内存储介质的移动可能是缓慢并低效的。减少移动存储介质所花费的时间量可以减少特定软件程序空闲等待移动完成的时间量,并且减少移动量可以对电力成本有积极影响。
发明内容
本发明主题的实施例包括一种方法,其中确定存储介质库内多个可分布组件的分布。所述方法还根据所述分布,确定所述多个可分布组件当前没有遍布存储介质库而分布。响应于前述确定,发出一个或多个命令的集合,以根据所述分布将所述多个可分布组件的一个或多个移动到存储介质库的不同位置。
本发明主题的实施例包括一种方法,其中确定存储介质库中驱动的位置。响应于所述确定,确定可用于被进行读或写的存储介质是否位于距所述驱动的第一距离内。如果确定所述存储介质不位于距所述驱动的第一距离内,则确定第一存储介质是否位于距第一驱动的第二距离内。所述第二距离远于所述第一距离。如果确定所述存储介质位于距所述驱动的第一距离内或第二距离内,则使得所述存储介质可用于由第一驱动读或写。
本发明主题的实施例包括一种装置。所述装置包括:网络接口;存储器;以及处理器,与所述网络接口和所述存储器耦合。所述处理器被配置为确定存储介质库的状态;以及确定存储介质库内多个可分布组件的分布。所述分布的确定至少部分基于存储介质库的状态。所述处理器还被配置为响应于确定所述多个可分布组件的分布,发出根据所述分布而分布存储介质库内所述多个可分布组件的命令。
附图说明
通过参照附图,本实施例可以得到更好地理解,并且各种目的、特征和优点对于本领域技术人员而言将变得明显。
图1示出库管理器与用于在带库内分布临时数据盘(scratch cartridge)的综合穿梭装置(shuttle complex)之间的交互。
图2示出库管理器可以执行的用于将临时数据盘分布到带库中的互连的库串(library string)集合的示例操作的第一流程图。
图3示出库管理器可以执行的用于将临时数据盘分布到带库中的互连的库串集合的示例操作的第二流程图。
图4示出被设计来高效地发现可用带驱动和临时数据盘、最小化临时数据盘行进的距离的带库系统。
图5示出库管理器可执行来找到可用带驱动和临时数据盘的示例操作的流程图。
图6示出被设计来与其他请求的服务结合分布临时数据盘的带库系统。
图7示出库管理器在服务其他请求时可以执行来分布临时数据盘的示例操作的流程图。
图8示出具有库管理器的示例计算系统。
具体实施方式
下面的描述包括包含本发明主题的技术的示例性系统、方法、技术、指令序列和计算机程序产品。然而,要理解,所述实施例可以没有这些特定细节而实践。例如,尽管示例参考带库,但是发明主题不限于此,并且还可以应用于其他大容量存储系统。在其他示例中,没有详细示出公知的指令实例、协议、结构和技术,以便不模糊描述。
大容量存储系统可以采取许多形式。一个常见的形式是硬驱动阵列。这在一次访问所有信息是有利的时候特别有用。另一种类型称为存储库或存储介质库,其包含大量可移除存储介质以及多个可以对此可移除介质进行读写的驱动。当需要存储大量数据但是不经常访问时,存储介质库特别有用。带库和带盘分别是存储介质库和存储介质的示例。因为如果在特定类型的存储介质库的上下文中讨论发明主题中包含的概念将更易于理解,所以以下将使用带库和带盘。发明主题并不限于此,并且可以应用于任何存储介质库。
已经开发了允许易于扩展和自动化的功能性的带库技术。例如,各个带库系统被称为库框架(frame)。这些系统是包含一个或多个带驱动、带盘、用于带盘的存储(以下称为盘)和能够从其存储位置移动盘并将起插入未使用的带驱动(反之亦然)的机械臂或其他机构的大的单一的系统。库框架可以包含不同数量的带驱动和盘。例如,一个库框架可包含五个带驱动和五十个盘。这是可能的,因为不是所有盘都在一次使用,而是花费大多数时间存储。很可能的是,在同一时间仅小部分盘在使用中。
库框架可以并排连接以形成库串。带框架在每侧具有门或开放空间,允许舱室(car)在各个库框架之间移动。因此,如果五个库框架被安排在库串中,则第一库框架可以使用其机械臂来将带放入舱室内。舱室然后可以行进到第五库串,所述第五库串然后可以使用其机械臂以移除盘并将其插入带驱动或存储位置。库串还可以通过穿梭连接(shuttle connection)而连接以形成综合穿梭装置。穿梭连接连接至以行布置的至少两个库串,并允许舱室在库串之间行进,类似于舱室在库框架之间行进一样。以下将使用术语“带库”来指代综合穿梭装置,除非进行特定的区分。
盘可以存在于至少两种状态下。第一状态是可用于被任何请求的软件程序写入的盘。这些可用盘(以下称为“临时数据盘”)可以是自从被添加到带库还没有被写入的新盘或者是之前被软件程序写入但不再需要的盘。第二种是被分配给特定软件程序的盘。这些盘(以下称为“已分配盘”)已经被特定软件程序写入,并且可以从未来的某个点读取。已分配盘被限制于由其被分配到的软件程序使用。
带库可以由设计为从对盘进行读写的软件提取带库操作的软件进行管理。管理带库的软件或系统称为“库管理器”。库管理器可以作为带库的组件而存在,或者可以在带库之外而存在,但是可以以允许在带库和库管理器之间通信的方式连接。当以下使用术语“带库”时,其包括库管理器。当引用与带库通信的库管理器时,库管理器正与带库内的其他组件通信,并且不描述为分开的实体。
库管理器可以提供用于其他软件的接口,其使得使用带库比如果将软件直接与带库接口连接时的情况更容易。例如,替代搜索所有单独的盘和驱动来找到可用者,软件从库管理器请求文件处理。库管理器然后找到适当的盘和驱动,指示带库将盘安装到驱动中,并且提供文件处理,所述文件处理当写入时将数据写入适当驱动。
将盘从库串内的源位置移动到目标位置所需的平均时间可以小于十秒。将盘从一个库串内的源位置移动到相邻库串内的目标位置所需的时间可以是接近四十秒。平均时间随着进一步的扩展而增加。因此,如果盘位于一个远离可用驱动的库串中,则请求盘的使用的程序可能等待接近四十秒。
等待将盘安装到带驱动所花费的时间是不能花费来处理数据或实现任务的时间。带库在来回移动盘时不能完成其他请求,使得问题进一步复杂。此外,电力构成大数据中心的最大成本之一,因此,通过降低用电量而优化现有解决方案可能对电力成本有影响。运营带库中所涉及的移动越多,使用的电力越多。因此,降低等待请求花费的时间量和用电量可以是对于利用带库的设施的重要目标。
可以使用各种度量来测量带库的性能。例如,如上所述,可以使用软件程序等待带库服务请求的时间量。这可以与数据吞吐率和其他方面结合以确定服务请求所需的总时间长度。此外,如上所述,电力使用量和成本可以是有用的度量。也可以使用这些的间接度量。例如,跟踪服务请求时盘行进的距离可以用于测量带库的效率,因为通常行进的距离越长,花费的时间越长。类似的,通常,需要的移动越多,需要的电力越多。因此,总移动的降低可以带来更快更高效的操作以及更低的开销。
此外,带库的目标可以是当没有请求未决时来回移动各种组件。例如,如果软件程序对盘进行请求,则在使得其可用之前移动此盘所花费的任何时间是软件程序正等待的时间。如果没有请求未决,则带库可以将此盘移动得更接近可用带驱动,减少响应于请求的行进量,因此减少软件程序等待的时间量。换言之,如果带库可以在实际请求之前预期盘的移动,则带库可以通过在没有请求未决时移动盘而减少软件程序等待的时间量。
带库可以被设计为提高定位和移动临时数据盘到已经被选择用于使用的驱动的效率。通过根据特定分布而分布临时数据盘,带库减少当被软件程序请求时临时数据盘行进至到达可用驱动的距离。减少临时数据盘行进以服务软件程序请求的距离减少了软件程序等待的时间量。
图1示出库管理器和用于在带库内分布临时数据盘的综合穿梭装置之间的交互。图1包括带库系统100,包括库管理器102和综合穿梭装置110。综合穿梭装置110包括三个库串:库串A、库串B和库串C。每个库串的表示被分为三个部分,一个用于临时数据盘112的集合,一个用于已分配盘114的集合,并且一个用于带驱动116的集合。所有集合112、114和116可以是空的。每个库串以一种方式连接,其允许诸如通过穿梭连接(未示出)将盘从任何库串移动到任何另外的库串。
阶段A表示带库的开始状态。库串A中存在十一个临时数据盘,并且库串B或库串C中没有临时数据盘。库串A中有八个已分配盘,库串B中有五个已分配盘,并且库串C中有七个已分配盘。库串A中有两个带驱动,在库串B中有一个带驱动,并且库串C中有两个带驱动。
在诸如阶段A中在一个库串中有非常大数量的临时数据盘的场景是不常见的。库串的常见配置包括一个具有输入输出插槽的库框架,所述输入输出插槽用于将盘插入带库和从带库移除盘。当扩展带库以包括多个库串时,额外的库串可能没有具有输入输出插槽的库框架,因为盘可以从具有输入输出插槽的库串移动到其他库串。因此,当管理员插入盘时,他们将全部以具有输入输出插槽的库串开始,潜在地产生了所有临时数据盘在单个库串中的场景。
在阶段B,库管理器102确定综合穿梭装置110的当前状态。库管理器102可以以各种方式实现,并因此库管理器102如何确定综合穿梭装置110的当前状态可以类似地变化。例如,库管理器102可以维持表示综合穿梭装置110的状态的数据。因为软件与库管理器102而不是综合穿梭装置110通信,所以库管理器102可以响应于软件请求更新表示综合穿梭装置110的状态的数据。在这些实现中,库管理器102被通知综合穿梭装置110并非响应于来自库管理器102的请求而进行的任何行动。在其他实现方式中,库管理器102可以以规则的间隔轮询综合穿梭装置110,以得到综合穿梭装置110的当前状态。这可以涉及轮询综合穿梭装置110或轮询每个单独的库串。此外,库管理器102可以确定在请求时综合穿梭装置110的状态。
在阶段C,库管理器102确定是否应当将任何临时数据盘分布到其他库串。例如,库管理器102可以确定因为库串B和库串C在阶段A没有任何临时数据盘,所以至少一个临时数据盘可以从库串A移动到库串B和库串C。库管理器102然后发送一系列指令到综合穿梭装置110或综合穿梭装置110的各个组件以便重分布临时数据盘112。
阶段D示出在库管理器102已经发出一系列指令到综合穿梭装置110以将一个临时数据盘从库串A分布到库串B和库串C之后的综合穿梭装置110。特定系列指令将根据实施方式而变化。例如,在实现小计算机系统接口(SmallComputer System Interface,SCSI)的带库中,库管理器102可以发出两个“移动介质”命令,指定要移动的介质(指定临时数据盘)和目标库串(库串B和库串C)。
此实施例提供了满足尽可能多的库串具有至少一个临时数据盘的基本条件的技术。如果临时数据盘112的数量小于库串的数量,则至少一个库串将没有临时数据盘,但是这对于任何实施例都是成立的。此外,在库串中仅有一个临时数据盘意味着如果此库串中的带驱动可用并且此库串中的临时数据盘用于满足请求,则库串没有更多临时数据盘。库管理器102然后将另一临时数据盘分布到可用的库串。在短时间段内有许多对于临时数据盘的请求的场景中,库管理器102仍然可以结束从其他库串传送临时数据盘。
阶段E示出了在库管理器102已经发出了一系列指令至综合穿梭装置110以尽可能均匀地分布临时数据盘112之后的综合穿梭装置110。库管理器102试图分布临时数据盘112,使得每个库串具有同等数量的临时数据盘。因此,库管理器102将临时数据盘112的总数除以库串的数量。如果库串的数量能够整除临时数据盘112的总数,则每个库串中临时数据盘112的数量将是相等的。如果库串的数量不能整除临时数据盘112的数量,如在此示例中,则至少一个库串将比其他库串具有更少的临时数据盘112。在此示例中,有十一个临时数据盘112和3个库串。因此,两个库串将具有四个临时数据盘,并且一个库串将具有三个临时数据盘。
假设临时数据盘的数量不小于库串的数量,则此实施例对每个库串提供了至少一个临时数据盘,并且可以对每个库串提供多个临时数据盘。因此,在使用库串中的带驱动满足单个请求之后库串将没有临时数据盘的可能性较小。此技术导致与仅确保每个库串有一个临时数据盘的效率相等或更高。例如,假设库串C中的两个带驱动是唯一可用的带驱动116,并且库管理器102接收两个对于临时数据盘112的请求。如阶段D所示出的综合穿梭装置110将能够满足一个请求,然后将从另一库串移动一个临时数据盘。因此,库串C在满足两个请求之后将没有临时数据盘。另一方面,如阶段E所示的综合穿梭装置110将能够满足两个请求,而不用从另一库串移动临时数据盘,导致更高效的操作。此外,库串C在满足两个请求之后将仍然具有两个临时数据盘。
然而,此实施例仍然可能在某些场景下导致低效操作。例如,假设带库具有两个库串,并且第一库串具有十个带驱动,第二库串具有一个带驱动。具有空闲(free)带驱动的第一库串的概率大于第二库串。因此,如果均匀分布临时数据盘,则第一库串将可能在第二库串使用所有其临时数据盘之前使用其所有临时数据盘。因此,库管理器然后将从第二库串向第一库串重分布临时数据盘。此问题通过与每个库串中带驱动的数量成比例地分布临时数据盘而解决。
阶段F示出了在库管理器102已经发出一系列指令到综合穿梭装置110以与每个库串中带驱动的数量成比例地分布临时数据盘112之后的综合穿梭装置110。库管理器102可以通过首先将带库中临时数据盘的总数除以带库中带驱动的总数并取结果的底值(floor)而确定到达每个库串的临时数据盘的数量。库管理器102然后取结果,并乘以每个库串中带驱动的数量以得到各个库串中临时数据盘的数量。如果第一步骤中的数量导致分数值,则将还剩下临时数据盘。库管理器102可以以各种方式分布这些,并且可以基于剩下多少临时数据盘而改变方法。例如,库管理器102可以从具有最大数量的带驱动的库串开始并且以降序进行逐一分布剩余的临时数据盘。如果临时数据盘剩余的数量小,则库管理器102可以将临时数据盘留在其源库串中,以避免花费电力和从对于综合穿梭装置110的使用的未来请求潜在地分走时间。
在对应于阶段F的综合穿梭装置110的表示中,库管理器102移动两个临时数据盘到串B,并且移动四个临时数据盘到串C,在库串A中剩下五个临时数据盘。为了确定这些数量,库管理器102首先将临时数据盘的总数(11)除以带驱动的总数(5)。在取商的底数之后,这导致值“2”。库管理器102然后将此值乘以每个库串中带驱动的数量。因此,库管理器确定四个临时数据盘应该进入库串A和库串C中(2乘以2),并且两个临时数据盘应该进入库串B中(2乘以1)。还剩余一个临时数据盘,其留在源库串A中。尽管结果看起来与阶段E中的结果非常接近,但是对于大量临时数据盘,结果在相似度上继续分化。例如,如果存在22个临时数据盘,则阶段E中使用的实施例将导致两个库串中7个临时数据盘、一个库串中8个临时数据盘。阶段F中使用的实施例将导致两个库串中8个临时数据盘、一个库串中4个临时数据盘、两个临时数据盘待分布,如由库管理器102所确定的。
由于带库使用的潜在随机性质,没有集合分布可以是最高效的。因此,库管理器102可以跟踪综合穿梭装置110的模式,并且在一些实施例中,库管理器102可以使用使用模式来确定如何分布临时数据盘。例如,库管理器102可以确定第一库串使用第二库串两倍的临时数据盘,尽管其具有相同数量的带驱动。库管理器102然后可以基于使用模式,将其分布到第二库串的带驱动两倍多的带驱动分布到第一库串。
此外,库管理器102可以包括所有讨论的实施例和技术,并且在它们之间动态选择。例如,库管理器102可以确定在某些使用下由库串与每个库串包含的带驱动成比例地使用临时数据盘。因此,库管理器102可以预期这些使用相应分布盘。库管理器102还可以确定在其他时间使用模式随机出现,并因此可以在这些库串之间均匀分布临时数据盘。
尽管上述示例涉及所有临时数据盘在一个库串中开始的库串的集合,但是发明主题不限于此。例如,三个库串中的两个可包含多个临时数据盘,而第三库串一个也不包含。库管理器102然后可以将临时数据盘从两个具有多个临时数据盘的库串分布到第三库串。换言之,所移动的特定临时数据盘可以在任何库串中开始,并且被分布到任何其他库串。
在库串内也可以应用类似技术。例如,库管理器102可以确保遍布库串均匀分布临时数据盘,最大化临时数据盘将位于具有可用带驱动的库框架内的概率。如果特定库串具有五个库框架和十个临时数据盘,则库管理器102可以将两个临时数据盘分布到每个库框架。还可以使用其他分布,诸如按驱动数量和基于使用模式分布临时数据盘。对于具有比库框架少的临时数据盘的库串,可以以一种方式分布临时数据盘,使得最小化行进到可用驱动的距离,如上所述。
发明主题不限于临时数据盘。类似的技术还可以应用到分布已分配盘。一个库串或库框架中已分配盘的数量可以大于其他库串或库框架中已分配盘的数量。因此,可以使用与上述类似的技术分布这些已分配盘。
当带库具有多个穿梭连接时,可以使用类似技术。例如,假设综合穿梭装置110具有三个连接库串A、库串B和库串C的穿梭连接。可以具有与位于一个库串中的三个穿梭连接关联的三个舱室。如果全部三个舱室位于库串A中,并且临时数据盘要从库串C移动到库串A,则舱室之一一路行进至库串C以取回临时数据盘。库管理器102可以分布舱室,使得舱室和任一库串之间的距离最小化,或更高效地执行移动。例如,如果有三个库串和三个穿梭连接,则库管理器102可以在每个库串保持一个舱室。如果对于三个库串仅有一个穿梭连接,则库管理器102可以在库串B中保持单个舱室,使得一个库串初始移动行进的距离最大化。库管理器102还可以使用使用模式来确定舱室的高效位置。例如,在具有三个穿梭连接和三个库串的带库中,库管理器102可以确定带库系统100从一个库串取出临时数据盘比从其他库串取出临时数据盘更频繁。因此,库管理器可以决定在保持较大量临时数据盘的库串中保持两个舱室。
图2和图3示出库管理器可以执行来将临时数据盘分布到带库中互连的库串集合的示例连接的流程图。
在块200,库管理器检索带库状态信息。带库状态信息(状态信息)可以提供关于带库配置的细节,如在带库中存在多少库串,在每个库串中存在多少库框架,每个组件如何互连等等。状态信息还可以提供所有可移动组件的当前位置和任何未决或进展中的操作。库管理器可以检索其需要的信息的子集,通过遍及处理在需要时检索更多信息而补充信息。库管理器可以通过从综合穿梭装置请求信息、通过将对于各块信息的请求(单独的或组合成一个)发送到综合穿梭装置或通过将其维持在存储器中而编译所述信息,从而检索状态信息。在库管理器检索状态信息之后,控制然后进行到块202。
在块202,库管理器确定每个库串应当具有的临时数据盘的数量,其将基于所使用的分布而变化。例如,在上述第一分布中,库管理器试图在每个库串中具有至少一个临时数据盘。因此,对于每个库串的临时数据盘的总数是1。以下,将通过“#GOAL_SC”来标识临时数据盘的总数。对于此分布,唯一的目的是每个库串具有一个临时数据盘。因此,任何具有多于一个临时数据盘的库串将具有“剩余”临时数据盘。对于此特定分布,可以忽略剩余的临时数据盘。
在上述第二分布中,库管理器试图在库串之间均匀分布临时数据盘。因此,库管理器通过将带库中的临时数据盘的总数除以库串的总数而确定#GOAL_SC。剩余的临时数据盘的数量将是从确定#GOAL_SC而得的任何余数。因为剩余的临时数据盘的数量将小于库串的数量,所以库管理器可以选择不分布剩余的临时数据盘。在库串的数量大并且很少库串具有大部分临时数据盘的实施方式中,库管理器可以选择将一个剩余的临时数据盘分布到尽可能多的库串。
在上述第三分布中,库管理器试图与每个库串中带驱动的数量成比例地分布临时数据盘。确定此的一种方式是将带库中临时数据盘的总数除以带库中库串的总数,然后取结果的底值。此恒定值然后乘以每个库串中带驱动的数量,以得到对于每个各自的库串的#GOAL_SC。这与之前两个分布不同在于每个库串具有不同#GOAL_SC,而在之前的分布中,每个库串具有相同#GOAL_SC。剩余临时数据盘的数量将小于带库中带驱动的数量。库管理器可以选择不分布剩余临时数据盘,或可以选择以各种方式分布它们。例如,库管理器可以将剩余盘尽可能均匀地分布到每个库串,或可以将它们分布到具有最大数量的带驱动的库串中。
在上述第四分布中,库管理器基于带库的使用模式确定分布。使用使用模式,库管理器可以对每个库串确定单独的#GOAL_SC。例如,如果库串确定第一库串使用第二库串的临时数据盘两倍多的临时数据盘,则库管理器可以对第一库串分配第二库串两倍多的临时数据盘。这可以与库串中带驱动的数量无关地发生。剩余的临时数据盘的数量将基于使用模式而变化。由于通过基于使用历史而确定分布所承受的增加的复杂度,库管理器可以考虑临时数据盘的总数,因此一起消除剩余的临时数据盘。在库管理器已经对每个库串确定#GOAL_SC之后,控制然后进行到块204。
在块204,库管理器开始第一循环,其中其确定库串具有大于其各自#GOAL_SC的数量的临时数据盘。循环通过生成如果没有已经可用的所有库串的列表而开始。使得列表中的第一库串是当前库串。控制然后进行到块206。
在块206,库管理器确定当前库串是否具有比当前库的#GOAL_SC更多的临时数据盘。如果当前库串具有比当前库串的#GOAL_SC更多的临时数据盘,则控制进行到块210。如果当前库串具有比此库串的#GOAL_SC更少的临时数据盘,则控制进行到块208。
在块208,库管理器将当前库串的指示(如标识符)记录到新列表(以下称为MOVE_TO列表)。库管理器还可以记录位于当前库串中的临时数据盘的当前数量减去当前库串的#GOAL_SC。此值表示临时数据盘的当前数量与当前库串的盘的总数之间的差。以下此值将称为特定库串的#DIFF_SC。MOVE_TO列表上的所有库串都将具有负#DIFF_SC。控制然后进行到块212。
如果在块206库管理器确定当前库串具有大于#GOAL_SC的数量的临时数据盘,则控制进行到块210。在块210,库管理器将当前库串的指示(如标识符)和当前库串的#DIFF_SC记录到新列表,以下称为MOVE_FROM列表。MOVE_FROM列表上的所有库串将具有正#DIFF_SC。控制然后进行到块212。
控制从块208和块210进行到块212。在块212,库管理器确定在所有库串的列表中是否存在更多库串。如果在所有库串的列表中存在更多库串,则控制回到块204。如果所有库串已经迭代过,则控制进行到块214。
在块214,第一循环结束。库管理器将已经迭代了每个库串。库管理器将具有两个列表,MOVE_TO列表和MOVE_FROM列表,每个指示库串的不相交集(disjoint set)和各个#DIFF_SC值。已经具有与其#GOAL_SC相等的数量的临时数据盘的库串将不出现在任一列表上。控制然后进行到图3中的块316。
在块316,库管理器开始第二循环,其中,库管理器将临时数据盘从具有正#DIFF_SC的库串分布到具有负#DIFF_SC临时数据盘的那些库串。所述循环通过选择MOVE_TO列表的第一库串作为当前目标库串而开始。MOVE_FROM列表的第一库串被选择为当前源库串。在每个接下来通过的循环中,库管理器选择MOVE_TO列表中的下一库串。控制然后进行到块318。
在块318,库管理器生成并发出移动命令,指定临时数据盘应该从源库移动到目标库。有些实施方式可以生成命令,保存命令,然后最后发出所有移动命令。如果库管理器确定目标库串具有负#DIFF_SC值,则控制也回到块318,创建对于当前目标库串特定的分布循环。控制然后回到块320。
在块320,库管理器递减当前源库#DIFF_SC值并递增当前目标库#DIFF_SC值。递减并递增各个#DIFF_SC值反映了在发出移动命令的情况下带库的当前状态。如果没有发出移动命令,则其反应在移动命令之后其将处于的带库的状态。控制然后回到块322。
在块322,库管理器确定对于当前源库串的#DIFF_SC值是否大于零。如果当前源库串具有大于零的#DIFF_SC值,则控制进行到块325。如果当前源库没有大于零的#DIFF_SC值,则控制进行到块324。
在块324,库管理器将指示MOVE_FROM列表中的当前源库串的指针移动到MOVE_FROM列表中的下一库串。因为当前源库串不再具有多余临时数据盘,所以MOVE_FROM列表中的下一库串变为新的源。控制然后进行到块325。
如果在块322库管理器确定当前源库串仍具有多余临时数据盘,则控制进行到块325。控制也从块324进行到块325。在块325,库管理器确定当前目标串的#DIFF_SC值是否小于零。负#DIFF_SC值指示当前目标串具有比临时数据盘的总数更少的临时数据盘。如果库管理器确定当前目标库串具有负#DIFF_SC,则控制回到块318。如果库管理器确定当前目标库串没有负#DIFF_SC,则控制进行到块326。
在块326,库管理器将指示MOVE_TO列表中当前目标库串的指针移动到MOVE_TO列表中的下一库串。因为当前目标库串不再具有比所述总数更少的临时数据盘,所以MOVE_TO列表中的下一库串变为新目标。控制然后进行到块327。
在块327,库管理器确定MOVE_TO列表中是否存在更多库串。这可通过检验MOVE_TO指针是否正指向列表中的最后的库串而确定。如果库管理器确定在MOVE_TO列表中有更多库串,则控制回到块316。如果库管理器确定MOVE_TO列表中没有更多库串,则控制进行到块328。
在块328,库串结束临时数据盘分布循环。临时数据盘根据库管理器使用的特定分布而在库串之间分布,除了任何剩下的临时数据盘外。库管理器可以选择如上所述分布剩余的临时数据盘或按原样留下它们。
当程序请求使用临时数据盘时,库管理器首先搜索临时数据盘。在找到临时数据盘之后,库管理器然后搜索可用带驱动。如果在三个库串的第一个中找到临时数据盘,并且唯一可用带驱动在第三个中,则库管理器将临时数据盘从第一库串移动到第三库串。如果第三库串具有临时数据盘,则此移动不必要并且是低效的。
此外,如上所述,即使临时数据盘的高效分布也不会使得带库使用更可预测。尽管一些程序将以规律间隔运行,并且可以以可预测间隔请求带库的使用,但是许多程序不是这样。因此,可能存在突发的、未预期的对于使用带库的请求的增长,使得库管理器不能做好准备。此外,即使当程序以规律间隔运行时,程序读或写的数据量可能是不同的,导致不可预测的带驱动可用性。例如,在特定服务器上备份数据的备份程序可以每天相同时间运行。但是许多备份程序进行增量备份,仅备份从最近备份起改变的数据。因此,如果非常少的数据改变,则库管理器选择的特定带驱动可能被使用非常短的时间段。如果大部分数据改变,则库管理器选择的特定带驱动可能被使用长时间段。这种不可预测性可能导致库管理器搜索包含不可用带驱动的库串以外的临时数据盘的场景。
图4示出了被设计来高效找到可用带驱动和临时数据盘、最小化临时数据盘行进的距离的带库系统。
图4示出带库400,包括库管理器402和三个库串A、B和C。每个库串的表示被分为三个部分,一个用于临时数据盘412的集合,一个用于临时数据盘414的集合,并且一个用于带驱动416的集合。集合412、414和416的任一可以是空的。每个库串以一种方式连接,其允许诸如通过穿梭连接(未示出)将盘从任何库串移动到任何另外的库串。
在阶段A,库管理器402选择最近最少使用的带驱动。库管理器402可以保持跟踪各个带驱动和其使用,或可以查询每个带驱动以发现每个带驱动最近是何时被使用的。在此示例中,库串B中的带驱动是最近最少使用的带驱动,因此被库管理器402选择。库管理器402然后确定在与所选择的带驱动相同的库串中是否存在临时数据盘。如果是,则库管理器402使用来自与所选择的带驱动相同的库串的临时数据盘。如果不是,则库管理器402选择下一最近最少使用的带驱动。
在阶段B,库管理器402选择下一最近最少使用的带驱动,位于库串C中。库管理器402再次确定与所选择的带驱动相同的库串中是否存在任何临时数据盘。如果是,则库管理器402使用来自与所选择的带驱动相同的库串的临时数据盘。如果不是,则库管理器402按照从最近最少使用到最近最常使用的顺序继续选择可用带驱动,并且确定相同库串中是否存在临时数据盘。如果它们位于与之前选择的带驱动相同的库串中,则库管理器402可以跳过可用带驱动,因为它已经确定在此库串中没有临时数据盘。
在阶段C,库管理器402已经选择每个可用带驱动并确定在与可用带驱动相同的库串中没有临时数据盘。库管理器402再次选择最近最少使用的带驱动,位于库串B中。库管理器402然后确定任何相邻库串中是否存在临时数据盘。如果相邻库串中存在临时数据盘,则库管理器402选择临时数据盘。在此示例中,库管理器找到库串A中的临时数据盘。
在阶段D,库管理器402发出移动命令,指示带库400将在阶段C从库串A找到的临时数据盘移动到库串B。库管理器402还发出安装命令,指示带库400安装在阶段C找到的临时数据盘。为了安装临时数据盘,将临时数据盘插入可用带驱动中。
在一些实施例中,如果在任一具有可用带驱动的库串中没有可用临时数据盘,则库管理器402将如上所述选择最近最少使用的带驱动。但是如果在相邻库串中没有找到临时数据盘,则库管理器402将不搜索距离较远的库串。而是,库管理器402将搜索可用驱动的列表,直到找到另一库串中的可用带驱动。库管理器402然后将搜索与具有第二选择的带驱动的库串相邻的库串。同样,如果在相邻库串中没有找到临时数据盘,则库管理器402将继续搜索列表,直到其找到第三库串中的第三可用带驱动。重复此过程,直到穷尽列表或在与可用驱动相邻的库串中找到临时数据盘。如果没有找到临时数据盘,则重复过程,但是库管理器402搜索距离两个库串远的库串。此递增的搜索半径继续,直到找到临时数据盘。
图5示出库管理器可以执行来找到可用带驱动和临时数据盘的示例操作的流程图。
在块500,库管理器生成所有可用带驱动的列表。列表将用于以最近最少使用的顺序找到可用带驱动,因此可以从最近最少使用的带驱动到最近最常使用的带驱动进行排序。库管理器可以不要列表就完成此处理,轮询每个带驱动以查看其是否可用以及其最近什么时候使用。在生成所有可用带驱动的列表之后,控制进行到块502。
在块502,库管理器开始初始搜索循环,其尝试找到与可用带驱动相同的带库中的临时数据盘。库管理器初始化循环,从块500中生成的列表选择最近最少使用的带驱动作为当前临时数据盘。如果没有生成列表,则库管理器直接搜索最近最少使用的带驱动的带库。在每个另外的通过循环中,库管理器选择位于还没有检查的库串中的下一最近最少使用的可用带驱动。控制然后进行到块504。
在块504,库管理器确定在与当前带驱动相同的库串中是否存在临时数据盘。库管理器可以通过参考其保持跟踪的带库状态信息、轮询库串、或基于特定实现采取其他行动,而确定在与当前带驱动相同的库串中是否存在临时数据盘。如果库管理器确定在与当前带驱动相同的库串中存在临时数据盘,则控制进行到块522。如果库管理器确定在与当前带驱动相同的库串中不存在临时数据盘,则控制进行到块506。
在块506,库管理器确定是否存在更多未检验的可用带驱动。库管理器将依赖于在块500进行的特定行动进行确定。为了更高效地搜索库串,库管理器将忽略在已经在之前的迭代中检验的库串中的带驱动。如果库管理器确定存在更多未检验的可用带驱动,则控制回到块502。如果库管理器确定没有更多未检验的可用带驱动,则控制进行到块508。
在块508,库管理器结束第一临时数据盘搜索循环。在过程中的此时,库管理器已经搜索所有具有可用带驱动的库串,并且发现没有库串有临时数据盘。控制然后进行到块510。
在块510,库管理器开始第二搜索循环,其中搜索与最近最少使用的带驱动最接近的临时数据盘。库管理器通过选择最近最少使用的带驱动并将变量N初始化为1而开始循环。变量N表示与要搜索的包含最近最少使用的带驱动的库串远离的库串的数量。在每个另外的迭代,库管理器递增N。控制然后进行到块512。
在块512,库管理器确定是否存在与所选择的带驱动距离N个库串的临时数据盘。在块510开始的第一通过循环,N将是1,并因此库管理器将对于临时数据盘搜索相邻库串。在块510开始的第二通过循环,N将是2,并因此库管理器将搜索两个库串远的库串。如果库管理器确定存在与选择的带驱动距离N个库串的临时数据盘,则控制进行到块520。如果库管理器确定没有与所选择的带驱动N个库串远的临时数据盘,则控制进行到块514。
在块514,库管理器确定是否存在更多未检验的库串。库管理器可以通过计算带驱动和边缘库串之间的库串的数量而确定这一点。库管理器然后选择与最远边缘库串的距离,并将此距离与N进行比较。如果N等于距最远边缘库串的距离,则已经检验所有库串。如果库管理器确定存在更多未检验的库串,则控制回到块510。如果库管理器确定没有更多未检验的库串,则控制进行到块516。
在块516,库管理器完成第二搜索循环。库管理器已经找不到可用临时数据盘,因此所有盘都在使用中。控制然后进行到块518。
在块518,库管理器或者对请求使用临时数据盘的程序发出报错,或者延迟处理请求,直到临时数据盘变为可用。可以做出报错或其他通知以警告操作员所有临时数据盘都正在被使用。
如果库管理器在块512发现临时数据盘,则控制进行到块520。在块520,库管理器发出移动命令,将临时数据盘从源库串移动到目标库串。目标库串是具有最近最少使用的带驱动的库串。控制然后进行到块522。
如果库管理器在块504发现临时数据盘,则控制进行到块522。控制还从块520进行到块522。在块522,库管理器发出安装命令,指定可用带驱动和位于具有可用带驱动的库串中的临时数据盘。带库因此将临时数据盘安装到可用带驱动中,使得其可用于请求的程序。
优化带库的临时数据盘和其他组件的分布与优化可用带驱动和临时数据盘的选择一起,可以提高带库的效率。但是通过利用各种组件的移动以实现同时多任务可以获得额外的效率。例如,如果临时数据盘不均匀分布,则库管理器可能希望以有效方式重分布它们,如上所述。但是如果库管理器正在一次服务很大数量的请求,则库管理器可能不能停止服务那些请求以重分布临时数据盘。
当带库服务请求时,存在传送盘的各种机构在空的时候从一个位置移动到另一个位置的情况。这可能是浪费的移动。例如,假设带库具有三个库串。第一库串包含十个临时数据盘和用于单个穿梭连接的舱室。第三库串不包含临时数据盘。如果带库接收请求以从第三带库取到盘并将其移动到另一个,则舱室在从第一带库行进到第三带库时将典型地是空的。但是,可以设计带库,使得舱室将十个临时数据盘之一从第一带库移动到第三带库,一次实现两个目标。
图6示出了被设计来与其他请求的服务结合分布临时数据盘的带库系统。图6示出了带库600,包括库管理器602和三个库串A、B和C。每个库串的表示被分为三个部分,一个用于临时数据盘612的集合,一个用于已分配盘614的集合,并且一个用于带驱动616的集合。集合612、614和616的任一可以是空的。每个库串以一种方式连接,其允许诸如通过穿梭连接(未示出)将盘从任何库串移动到任何另外的库串。还示出了软件程序604。
在阶段A,软件程序604从库管理器602请求使用盘。此场景可以在软件程序604之前请求临时数据盘以向其写数据的时候发生。在软件程序604完成写数据之后,库管理器602将盘分配到软件程序604。在一段时间之后,软件程序604再次请求使用盘以读取之前写入的数据或写入更多数据。库管理器602在从软件程序604接收到使用盘的请求之后,确定所请求的盘在库串C中,并且可用带驱动在库串B中。库管理器602还确定穿梭连接舱室的位置。在此示例中,假设舱室在库串A中。
在阶段B,库管理器602确定库串C没有临时数据盘。库管理器602可通过轮询库串、查找库管理器602跟踪的状态数据中临时数据盘的数量、或对于特定实现所特定的其他方式,查询特定库串中临时数据盘的数量。
在阶段C,库管理器602确定在库串A(舱室的起始位置)中存在临时数据盘。库管理器602还确定将临时数据盘移动到库串C可能对效率有有益的影响。例如,如果库管理器602被配置为均匀分布临时数据盘,如上所述,则库管理器602可以确定通过将临时数据盘从库串A移动到库串C,分布变得更接近均匀分布。因此,库管理器602发出命令,将临时数据盘从库串A移动到库串C。
在阶段D,带库600将临时数据盘从库串A移动到库串C。带库600首先将临时数据盘加载到用于穿梭连接的空舱室中。带库600然后使得舱室沿着从库串A到库串C的穿梭连接移动。带库600然后将临时数据盘部署到库串C中。
在阶段E,库管理器602发出命令,将所请求的盘从源库串(库串C)移动到目标库串(库串B)。因为软件程序604请求盘的使用,所以盘安装到带驱动中。在阶段A,库管理器602确定唯一可用的带驱动在库串B中。因此,为了将盘安装到可用带驱动中,库管理器602发出命令,将所请求的盘从库串C移动到库串B。
在阶段F,带库600将所请求的盘从库串C移动到库串B。类似于阶段D,库串600首先将所请求的盘移动到用于穿梭连接的空舱室中。带库600然后使得舱室沿着从库串C到库串B的穿梭连接移动。带库600然后使得所请求的盘部署到库串B中。
在阶段G,库管理器602发出命令,以将所请求的盘安装到可用带驱动中。
在阶段H,带库600将盘安装到可用驱动中。带库600将盘从穿梭连接将其部署到的地方移动到可用带驱动所处的库框架中。带库600然后使得库框架机械臂将盘插入带驱动中。
舱室空的穿梭连接的任何移动潜在地是低效的。如果库管理器602仅发出命令将所请求的盘从库串C移动到库串B,则舱室将在空的时候从库串A移动到库串C。上述带库600通过使用通常将部分浪费运动的组件的移动递增改进带库600的状态,而提高效率。
在一些实施例中,库管理器不限于在服务请求时重分布临时数据盘。如果库管理器接收多个请求,则那些请求可以重新排序或组合以提高效率。例如,假设具有三个库串的带库和具有位于第一库串的舱室的一个穿梭连接。库管理器可以得到两个请求,第一请求请求从第三库串移动盘到第二库串,第二请求请求从第一库串移动盘到第三库串。如果库管理器以此顺序完成请求,则舱室行进总共六个库串。库管理器可以重排序请求,或者组合请求以将所行进的库串的数量降低为三。替代首先完成第一个请求,库管理器将第二请求的盘从舱室起始的第一库串移动到第三库串。库管理器然后将第一请求的盘加载到舱室中,并将其移动到第二库串。
图7示出库管理器可以执行来在服务其他请求时分布临时数据盘的示例操作的流程图。
在块700,库管理器接收安装盘的请求。如上所述,这可以在软件程序之前已经写到特定盘并且希望从同一盘读取或向其写入时发生。控制然后进行到块702。
在块702,库管理器确定所请求的盘是否要移动到另一库串。此场景在唯一可用的带驱动位于与具有请求的盘的库串不同的库串中时出现。如果所请求的盘在与可用带驱动相同的库串中,则不进行库串之间的移动。如果库管理器确定所请求的盘要移动到另一库串,则控制进行到块704。如果库管理器确定所请求的盘不移动到另一库串,则控制进行到块718。
在块704,库管理器确定用于穿梭连接的舱室是否位于与所请求的盘相同的库串中。如果库管理器确定舱室位于与所请求的盘相同的库串中,则控制进行到块714。如果库管理器确定舱室不位于与所请求的盘相同的库串中,则控制进行到块706。
在块706,库管理器确定具有所请求的盘的库串是否缺少临时数据盘。目标值可以以任何数量的方式来确定,包括作为分布算法的一部分或由管理员手工设置。例如,在上述示例分布中,每个特定分布具有在每个库串中的临时数据盘的数量的目标。如果库管理器被配置为均匀分布临时数据盘,则存在三个库串,并且存在九个临时数据盘,因此目标将是每个库串中有三个临时数据盘。因此,库管理器将具有少于三个临时数据盘的库串认为是缺少临时数据盘。如果库管理器确定在具有所请求的盘的库串中缺少临时数据盘,则控制进行到块708。如果库管理器确定在具有所请求的盘的库串中不缺少临时数据盘,则控制进行到块716。
在块708,库管理器确定具有可用舱室的任何库串是否具有过量临时数据盘。如上块706所述,每个库串可具有库串应具有的临时数据盘的数量的目标值。如果特定库串具有比库串的目标值高的数量的临时数据盘,则其具有过量临时数据盘。如果库串具有过量临时数据盘但没有可用舱室,则通过将舱室移动到具有过量临时数据盘的库串将损失一些效率。如果库管理器确定库串具有过量临时数据盘和可用舱室,则控制进行到块710。如果库管理器确定没有库串有过量临时数据盘和可用舱室,则控制进行到块716。
在块710,将临时数据盘加载到位于具有过量临时数据盘的库串中的可用舱室。还将临时数据盘经由舱室移动到包含所请求的盘的库串中。控制然后进行到块712。
在块712,将临时数据盘部署到包含所请求的盘的库串中。所请求的盘然后加载到带有临时数据盘的舱室中。所请求的盘然后经由舱室移动到具有可用带驱动的库串中。控制然后进行到块718。
如果库串确定舱室加载到与在块704所请求的盘相同的库串中,则控制进行到块714。在块714,所请求的盘使用位于包含所请求的盘的库串中的舱室,移动到具有带驱动的库串中。因为舱室位于与所请求的盘相同的库串中,所以通过等待另一舱室移动到相同库串,没有获得效率。控制然后进行到块718。
如果在块706库管理器确定包含所请求的盘的库串没有过量临时数据盘,则控制进行到块716。如果库管理器确定没有库串包含过量临时数据盘和包含可用舱室,则控制也进行到块716。在块716,将可用舱室移动到包含所请求的盘的库串中。所请求的盘加载到舱室中,并且舱室将所请求的盘运送到具有可用带驱动的库串中。控制然后进行到块718。
如果在块702库管理器确定所请求的盘位于与可用带驱动相同的库串中,则控制进行到块718。控制还从块712、块714和块716进行到块718。在块718,所请求的盘安装到可用带驱动中。所请求的盘可以从包含穿梭连接的库框架移动到包含可用带驱动的库框架(如果两者不同)。库框架机械臂然后将所请求的盘插入可用带驱动。处理结束。
发明主题不限于在库串之间移动盘,并且也可用于提高各个库串内的移动的效率。换言之,相同库串内的库框架之间的盘的移动可类似于库串之间盘的移动而优化。此外,多数示例讨论带库仅具有一个穿梭连接。发明主题不限于此,并且可应用于具有任何数量的库框架、库串和穿梭连接的带库。此外,参考利用最近最少使用的算法来从组件集合选择特定组件。发明主题不限于使用最近最少使用的算法,并且可使用其他算法,包括最近最常使用的算法、基于组件利用的算法、随机选择算法等。
作为示例流程图,流程图以实施例可以违背的示例顺序示出了本操作(例如,操作可以以与图示不同的顺序和/或并行执行)。许多特定操作将依赖于实际实现。例如,如果库管理器不是与带库组件通信的唯一接口,则需要额外操作。此外,如所述,如果库管理器或其他相关软件保持关于带库的更新的状态信息,则在任何流程图中不进行信息的收集。一些优化操作没有包括在所述流程图中,因为它们对于本领域技术人员是明显的。例如,如果带库的当前状态是使得需要较少操作来实现盘的期望分布,则库管理器可以领先盘的任何分布。换言之,如果带库的当前状态足够接近目标状态,则通过进一步分布盘获得的效率可能小于分布盘的成本。
尽管库框架讨论为并排连接,但是它们可以以允许盘从一个传送到另一个的任何方式连接。此外,将库管理器描述为进行许多操作。发明主题不限于此。在一些实现中,所讨论的与库管理器交互的软件程序可以直接与带库交互,并且可以实现所有讨论的技术。库管理器可以是带库一部分或与带库分开,如被包含作为耦合到带库的分开的服务器。所述功能性除了可以以软件实现外,还可以以硬件或固件或所有这三者的组合实现。此外,库管理器可以是不同软件应用的集合,其交互以执行这里所述的操作。例如,与带库的实际接口可以包含在位于服务器上的SCSI卡中。库管理器将与SCSI卡接口连接,并且SCSI卡将通过发出实际命令并从带库接收响应或其他消息而与带库接口连接。
遍及全文讨论效率的概念。效率可以以多种方式定义,包括没有具体讨论的方式。例如,常常将效率讨论为与组件行进的距离、组件在位置之间行进所花费的时间、或使用的电力的成本或量相联系。但是效率还可以应用于诸如降低系统的磨损量或类似地延长特定组件的寿命的方式。这样,当讨论效率时,发明主题不限于所引用的特定类型的效率。
所属技术领域的技术人员知道,本发明主题的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明主题的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明主题的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明主题各方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
参照根据本发明主题实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明主题的各方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
计算机程序指令还可以加载到计算机、其它可编程数据处理装置、或其他设备,以使得在计算机、其它可编程数据处理装置、或其他设备上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图中的一个或多个方框中规定的功能/动作的处理。
图8示出具有库管理器的示例计算系统。计算系统包括处理器单元801(可能包括多处理器、多核、多节点和/或实现多线程等)。计算系统包括存储器803。存储器包括具有策略分布和盘选择(库管理器)805的库管理器。存储器803可以是系统存储器(例如,高速缓存、SRAM、DRAM、零电容器RAM、双晶体管RAM、eDRAM、EDO RAM、DDR RAM、EEPROM、NRAM、RRAM、SONOS、PRAM等的一个或多个)或上述可能的机器可读介质实现的任何一个或多个。计算系统还包括总线811(例如,PCI、ISA、PCI直连,总线,总线,NuBus总线等)、I/O设备809(例如,键盘、鼠标、监视器、麦克风、扬声器等)、网络接口807(例如,ATM接口、以太网接口、帧中继接口、SONET接口、无线接口等)、高速缓存817(例如,直接映射高速缓存、双向集合结合高速缓存、全面结合高速缓存等)和存储设备813(例如,光存储、磁存储等)。高速缓存817可以是低级高速缓存(例如,处理器中包含的L1高速缓存)或高级高速缓存(例如,L2高速缓存、L3高速缓存等)。库管理器805包含实现上述实施例的功能性。库管理器805如上所述运行,在带库的各个部分之间分布临时数据盘和其他组件。库管理器805还响应于请求选择可用带驱动的临时数据盘。此外,库管理器805可以以一种方式管理请求,使得同时完成多个目标,如在服务请求的同时分布盘或重排序和组合请求以提高效率。尽管库管理器803描述为驻留在存储器803中,但是这些功能性的任一可以部分(或完全)以硬件实现和/或在处理单元801上实现。例如,功能性可以用专用集成电路、在处理单元801中实现的逻辑、在外围设备或卡上的协处理器等实现。此外,功能性可以包含在其他组件中,如与作为网络接口807的一部分的带库的接口。此外,实现可包括图8中没有示出的更少的或更多的组件(例如,视频卡、音频卡、额外网络接口、外围组件等)。处理单元801、存储设备813、网络接口807、高速缓存817和I/O设备809耦合到总线8111。尽管示出为耦合到总线811,但是存储器803可以耦合到处理单元801。
尽管参照各个实现和开发而描述了实施例,但是将理解,这些实施例是说明性的,并且发明主题的范围不限于此。总的来说,如这里所述的大容量存储系统的技术可以以与任何硬件系统或软件系统一致的设施实现。许多变化、修改、添加和改进是可能的。
对于这里描述为单个实例的组件、操作或结构提供了多个实例。最后,各个组件、操作和数据存储之间的界限某种程度上是任意的,并且特定操作是在特定说明的配置的上下文中说明的。可预期功能性的其他分配并且其可以落入发明主题的范围内。总的来说,在示例性配置中呈现为分开的组件的结构和功能性可以实现为组合的结构或组件。类似的,呈现为单个组件的结构和功能性可以实现为分开的组件。这些和其他变化、修改、添加和改进可落入发明主题的范围内。
Claims (18)
1.一种方法,包括:
确定存储介质库内多个可分布组件的分布;
根据所述分布,确定所述多个可分布组件当前没有遍布存储介质库而分布;以及
响应于所述确定所述多个可分布组件的分布、以及所述根据所述分布确定所述多个可分布组件当前没有遍布存储介质库而分布,发出一个或多个命令的集合,以根据所述分布将所述多个可分布组件的一个或多个移动到存储介质库的不同位置。
2.如权利要求1所述的方法,其中所述多个可分布组件包括存储介质和存储介质舱室之一,其中所述存储介质舱室运送存储介质。
3.如权利要求1所述的方法,其中所述分布是以下分布之一:所述多个可分布组件的至少一个可分布组件位于相同类型的每个库单元内的分布、多个可分布组件以相等数目分布于相同类型的库单元之间的分布、所述多个可分布组件与每个库单元内的特定组件的计数成比例地在相同类型的库单元之间分布的分布、以及至少部分基于存储介质库的使用模式的分布。
4.如权利要求1所述的方法,其中发出一个或多个命令的集合,以根据所述分布将所述多个可分布组件的一个或多个移动到所述存储介质库的不同位置:
对多个库单元中的每个库单元确定目标值,其中所述目标值能够对于所述多个库单元中的每个库单元而单独确定或者能够被确定为单个目标值并应用到所述多个库单元中的每个库单元;
从所述多个库单元确定第一库单元,所述多个可分布组件中位于所述第一库单元中的可分布组件的计数小于所述第一库单元目标值;
从所述多个库单元确定第二库单元,所述多个可分布组件中位于所述第二库单元中的可分布组件的计数大于所述第二库单元目标值;以及
响应于所述从所述多个库单元确定第一库单元,所述多个可分布组件中位于所述第一库单元中的可分布组件的计数小于所述第一库单元目标值、以及所述从所述多个库单元确定第二库单元,所述多个可分布组件中位于所述第二库单元中的可分布组件的计数大于所述第二库单元目标值,发出一个或多个命令的集合,以将所述多个可分布组件的一个或多个从所述第二库单元移动到所述第一库单元。
5.如权利要求4所述的方法,其中对于所述多个库单元中的每个库单元的目标值至少部分基于以下项之一:恒定值、所述多个可分布组件中可分布组件的计数、所述多个库单元中库单元的计数、每个各自的库单元中组件的类型的计数、以及存储介质库的使用模式。
6.如权利要求1所述的方法,其中所述确定存储介质库内所述多个可分布组件的分布至少部分基于以下之一:
至少部分表示存储介质库的状态的数据;以及
与存储介质库用于至少部分确定存储介质库的状态的通信。
7.如权利要求1所述的方法,其中所述多个可分布组件包括带盘,所述存储介质库包括带库,并且库单元是库框架和库串之一。
8.一种方法,包括:
确定存储介质库中第一驱动的位置;
响应于所述确定存储介质库中第一驱动的位置,确定第一存储介质是否位于距第一驱动的第一距离内,其中所述第一存储介质可用于被进行读或写;
响应于确定第一存储介质不位于距第一驱动的第一距离内,确定第一存储介质是否位于距所述第一驱动的第二距离内,其中所述第二距离远于所述第一距离;以及
响应于确定第一存储介质位于距第一驱动的第一距离内或第二距离内,使得第一存储介质可用于由第一驱动读或写。
9.如权利要求8所述的方法,还包括:
响应于确定第一存储介质不位于距第一驱动的第一距离内,确定存储介质库中第二驱动的位置,其中所述第二驱动位于与所述第一驱动不同的库单元中;
响应于确定存储介质库中第二驱动的位置,确定第一存储介质是否位于距第二驱动的第一距离内;以及
响应于确定第一存储介质位于距第二驱动的第一距离内,使得第一存储介质可用于由第二驱动读或写。
10.如权利要求8所述的方法,其中所述可分布组件包括带盘,所述存储介质库包括带库,并且库单元是库框架和库串之一。
11.一种装置,包括:
网络接口;
存储器;以及
处理器,与所述网络接口和所述存储器耦合,被配置为:
确定存储介质库的状态;
至少部分基于存储介质库的状态,确定存储介质库内多个可分布组件的分布;以及
响应于确定存储介质库内所述多个可分布组件的分布,发出根据所述分布而分布存储介质库内所述多个可分布组件的命令。
12.如权利要求11所述的装置,其中存储介质库包括所述装置。
13.如权利要求11所述的装置,其中所述多个可分布组件包括多个存储介质和多个存储介质舱室之一,其中所述存储介质舱室运送存储介质。
14.如权利要求13所述的装置,其中所述多个存储介质包括带盘,并且所述存储介质库包括带库。
15.如权利要求11所述的装置,其中存储介质库内所述多个可分布组件的分布至少部分基于存储介质库的操作中预期的效率提高而确定。
16.如权利要求11所述的装置,其中所述网络接口与存储介质库耦合。
17.如权利要求12所述的装置,其中所述存储介质库还包括多个存储介质驱动,其中所述多个存储介质驱动的每个被配置为读存储介质和写存储介质。
18.如权利要求17所述的装置,其中所述处理器还被配置为:
接收安装存储介质的请求;
确定一个或多个存储介质驱动的集合,其中所述存储介质驱动可用于主控存储介质;
确定一个或多个可分布组件的集合,其中所述可分布组件可用于被安装;
响应于确定一个或多个存储介质驱动的集合和确定一个或多个可分布组件的集合,选择一个或多个存储介质驱动的集合之一、以及一个或多个可分布组件的集合之一,其中所述存储介质驱动和存储介质至少部分基于所述存储介质驱动与所述存储介质之间的距离而选择;以及
发出至少一个命令以将所选择的存储介质安装到所选择的存储介质驱动中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/683,433 US8903539B2 (en) | 2012-11-21 | 2012-11-21 | Efficient distribution and selection of storage media in a storage medium library |
US13/683,433 | 2012-11-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103838519A true CN103838519A (zh) | 2014-06-04 |
Family
ID=50728695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310591445.7A Pending CN103838519A (zh) | 2012-11-21 | 2013-11-21 | 存储介质库中存储介质的高效分布和选择的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (4) | US8903539B2 (zh) |
CN (1) | CN103838519A (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8903539B2 (en) | 2012-11-21 | 2014-12-02 | International Business Machines Corporation | Efficient distribution and selection of storage media in a storage medium library |
US9933942B2 (en) | 2015-11-16 | 2018-04-03 | International Business Machines Corporation | Method for dimensioning and reconfiguring of a storage system with removable media |
US10170147B2 (en) * | 2016-11-22 | 2019-01-01 | International Business Machines Corporation | Moving cartridges within a shuttle complex |
US10403322B2 (en) | 2016-11-22 | 2019-09-03 | International Business Machines Corporation | Moving a car within a shuttle complex based upon library string data chunk counts |
US10366723B2 (en) * | 2017-04-25 | 2019-07-30 | International Business Machines Corporation | System and method for distributing shuttle cars in a data storage library shuttle complex |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6842841B1 (en) * | 1999-09-21 | 2005-01-11 | Storage Technology Corporation | Method and system for dynamically selecting tape drives to connect with host computers |
US6885911B1 (en) * | 2002-10-07 | 2005-04-26 | Storage Technology Corporation | Track anomaly detection in an automated data storage library |
US7672754B1 (en) * | 2009-02-10 | 2010-03-02 | International Business Machines Corporation | Balancing of data tape cartridges in tape libraries with pass-through mechanism |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4932826A (en) | 1987-01-27 | 1990-06-12 | Storage Technology Corporation | Automated cartridge system |
US4864511A (en) | 1987-01-27 | 1989-09-05 | Storage Technology Corporation | Automated cartridge system |
US5463758A (en) * | 1993-08-02 | 1995-10-31 | International Business Machines Corporation | System and method for reducing seek time for read operations in mirrored DASD files |
US5479581A (en) | 1993-12-30 | 1995-12-26 | Storage Technology Corporation | Multiple library media exchange system and method |
US6693758B2 (en) | 2000-11-10 | 2004-02-17 | Quantum Corporation | Tape cartridge transport magazine for an automated tape cartridge autoloader/library system |
US6519678B1 (en) | 2001-09-10 | 2003-02-11 | International Business Machines Corporation | Virtualization of data storage drives of an automated data storage library |
US6810306B1 (en) | 2002-10-07 | 2004-10-26 | Storage Technology Corporation | Data storage library status monitoring |
US20090177836A1 (en) * | 2008-01-09 | 2009-07-09 | Yasuyuki Mimatsu | Methods and apparatuses for managing data in a computer storage system |
US8628239B2 (en) * | 2009-07-15 | 2014-01-14 | Teradyne, Inc. | Storage device temperature sensing |
US8812799B2 (en) * | 2009-12-11 | 2014-08-19 | International Business Machines Corporation | Cluster families for cluster selection and cooperative replication |
US8903539B2 (en) | 2012-11-21 | 2014-12-02 | International Business Machines Corporation | Efficient distribution and selection of storage media in a storage medium library |
US8903538B2 (en) | 2012-11-21 | 2014-12-02 | International Business Machines Corporation | Efficient movement of storage media in a storage media library |
-
2012
- 2012-11-21 US US13/683,433 patent/US8903539B2/en not_active Expired - Fee Related
-
2013
- 2013-02-14 US US13/767,370 patent/US8897911B2/en not_active Expired - Fee Related
- 2013-11-21 CN CN201310591445.7A patent/CN103838519A/zh active Pending
-
2014
- 2014-10-14 US US14/513,401 patent/US9399553B2/en not_active Expired - Fee Related
-
2016
- 2016-07-25 US US15/218,964 patent/US9701476B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6842841B1 (en) * | 1999-09-21 | 2005-01-11 | Storage Technology Corporation | Method and system for dynamically selecting tape drives to connect with host computers |
US6885911B1 (en) * | 2002-10-07 | 2005-04-26 | Storage Technology Corporation | Track anomaly detection in an automated data storage library |
US7672754B1 (en) * | 2009-02-10 | 2010-03-02 | International Business Machines Corporation | Balancing of data tape cartridges in tape libraries with pass-through mechanism |
Also Published As
Publication number | Publication date |
---|---|
US20140142742A1 (en) | 2014-05-22 |
US20140142743A1 (en) | 2014-05-22 |
US9701476B2 (en) | 2017-07-11 |
US8897911B2 (en) | 2014-11-25 |
US20150032251A1 (en) | 2015-01-29 |
US20160332816A1 (en) | 2016-11-17 |
US8903539B2 (en) | 2014-12-02 |
US9399553B2 (en) | 2016-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103838519A (zh) | 存储介质库中存储介质的高效分布和选择的方法和装置 | |
CN103502956B (zh) | 运行时动态性能偏斜消除的方法和系统 | |
US9218141B2 (en) | Managing write operations to an extent of tracks migrated between storage devices | |
US10540296B2 (en) | Thresholding task control blocks for staging and destaging | |
US8141095B2 (en) | Recording medium storing data allocation control program, data allocation control device, data allocation control method, and multi-node storage-system | |
US20120030425A1 (en) | Parity declustered storage device array with partition groups | |
CN104081354A (zh) | 在可缩放环境中管理分区 | |
CN103797770A (zh) | 一种共享存储资源的方法和系统 | |
CN109725826A (zh) | 管理存储系统的方法、设备和计算机可读介质 | |
CN104123100A (zh) | 控制存储设备阵列中的数据存储 | |
CN103562872A (zh) | 双活动系统的多个资源的资源分配 | |
US20140304479A1 (en) | Grouping tracks for destaging | |
US20150134914A1 (en) | Destage grouping for sequential fast write tracks | |
CN109804392B (zh) | 服务网络维护分析和控制 | |
CN111860804B (zh) | 分形计算装置、方法、集成电路及板卡 | |
US20150370647A1 (en) | Directed backup for massively parallel processing databases | |
CN103150245A (zh) | 确定数据实体的访问特性的方法和存储控制器 | |
CN104040508A (zh) | 填充来自第一高速缓存的轨道的第一步幅以向第二高速缓存中的第二步幅写入 | |
CN103838518A (zh) | 存储介质库中存储介质的高效移动的方法和装置 | |
CN105824576A (zh) | 用于准确预测使用寿命的去重跟踪方法和系统 | |
WO2020033558A1 (en) | System and method for a distributed ledger for information technology asset management | |
Breitgand et al. | Network aware virtual machine and image placement in a cloud | |
US10038744B1 (en) | Intelligent core assignment | |
CN110874344B (zh) | 数据迁移方法、装置及电子设备 | |
US20130159120A1 (en) | Point of sale data systems and methods |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140604 |