具有高效卡盘弹出的数据存储库 本发明涉及数据存储库,它把多种磁带或者其它数据存储卡盘保存在不同的槽中。更具体地说,本发明涉及一个数据存储库,它通过自动地把卡盘移动到物理存储槽从而有效地使用了物理I/O槽(“I/O”),并使用功能地址来将虚拟的卡盘弹出到该I/O槽中。
许多数据处理系统需要大量的数据存储器,用来进行有效的访问、修改和重新存储数据。数据存储被典型地分成几个不同的级别,每个级别展现一个不同的数据存取时间或者数据存储成本。第一个或最高等级的数据存储器涉及电子的存储器,通常为动态的或者静态的随机存取存储器(“DRAM”或“SRAM”)。电子的存储器采取半导体集成电路的形式,其中数百万字节的数据可以被储存在一个电路中,经测试,存取这样的字节的数据只需毫微秒的时间。由于存取是完全电子化的,所以电子存储器可提供最快速的数据存取。
第二等级的数据存储通常涉及直接存取存储器(“DASD”)。直接存取存储器包括,例如,磁盘或光盘。数据位以微小的可变换的磁点或光点被储存在一张盘的表面,它代表构成数据位的二进制值“1”和“0”。有磁性的直接存取存储器包括一张或更多涂有剩磁材料的盘片。盘片被旋转地安装在有防护的环境中。每张盘被分成许多同心轨道,或者彼此隔开的圆周。数据被连续地、一比特一比特地沿着每个轨道储存。一个存取机构,称为磁头磁盘组件(“HDA”)典型地包括一个或更多读/写头,并提供给直接存取存储器,以便当盘旋转着经过磁头时,用于从或向盘表面沿着轨道传送数据。直接存取存储器可以存储千兆字节的数据,而且经测试这样存取数据的时间为几毫秒(比电子存储器慢几个数量级)。因为这需要在盘和HDA上物理地定位所需数据地存储位置,所以存取储存在直接存取存储器中的数据的速度要比电子存储器的慢。
第三或者更低等级的数据存储器包括磁带、磁带库和光盘库。库数据的存取比电子的或者直接存取存储器数据的存取要慢很多,因为它需要一个机器人或者一个人来选择和装载所需的数据存储媒体。这些存储系统的一个优点是存储大约几G的大量数据的成本比较低。此外,磁带存储器对于做备份是特别有用的。也就是说,储存在数据存储分层结构的较高级别的数据要复制在磁带上以妥善保管。存取储存在磁带和/或库的数据目前的速度大约是处于秒这样的数量级上。
当今市场上有许多不同的数据存储库,包括由美国国际商用机器公司(IBM)制作的样品。许多当今的数据存储库使用小型计算机系统接口(“SCSI”)媒体转换器标准。此标准为“中心定位的”(“location centric”),因为它要求主机在该系统中通过指定源和目标位置来管理卡盘运动。每个位置是一个能够支撑一个卡盘的地点,也被称为一个单元。在制造时或在系统安装或配置时,每个单元被给定一个固定的单元地址。在制造时或在系统安装或配置时,每个单元被给定一个固定的单元地址。该SCSI媒体转换器协议定义了四种单元类型:媒体输送单元、存储单元、I/O单元和数据传送单元。在物理术语中,媒体输送单元是一个存取器抓取器,一个存储元件是一个存储槽,一个I/O单元是一个库I/O槽或通过槽,一个数据传送单元是一个可移动的媒体驱动器。
在SCSI接口中需要从一个单元移动到另一个单元。典型地,从一个单元移动到另一个单元是SCSI接口启动软件的职责,也称为独立的软件卖主程序设计(independent software vendor programming)。这包括在I/O槽和存储槽之间的移动。
即使当今一些数据存储库在商业上获得了相当的成功,IBM的工程师们仍在不断地探索以改善这些系统的性能和效率。一个潜在的热点是库弹出卡盘和接收插入的卡盘的方法。然而数据存储库只有有限的110个槽用来传送卡盘出入库。当一个操作员想要在不干扰存取器运动的前提下装载许多卡盘到一个库中时,就得把卡盘插入到I/O槽中。因此,如果I/O槽填满了,弹出/插入操作就会被阻滞,直到独立的软件卖主程序设计?使用SCSI接口把插入的卡盘移动到存储槽为止。
另外,多个库从I/O槽传送卡盘到库的速度是缓慢的,因为他们依赖操作员用库控制面板发出命令到主机上。这是因为,需要主机通过发出适当的命令到库机器人装置,以管理卡盘的插入操作。如果主机离库很远,形势可能会不妙,因为操作员(和库控制面板)位于主机上,但是在库里,操作员必须手动地从I/O槽中插入或移动卡盘。因此,增加大量的卡盘的过程可能会让你在库的I/O站和控制面板之间往返多次。
此外,当独立的软件卖主程序设计需要手动或自动地弹出一些卡盘,操作员必须确保每个卡盘都有一个空的I/O槽来存放。否则,该企图可能被阻塞,导致错误、失败,或其它延迟。由于这些和其它原因,已知的数据存储库必须被改善。
一般地,本发明涉及一种数据存储库,通过利用功能地址以指导虚拟卡盘从存储槽移动到I/O槽而有效地使用I/O槽,同时保持软件相容性。更具体地,一个中心定位主机依据功能存储地址和功能I/O地址来管理卡盘运动。在现实中,库有多个卡盘接收槽,它包括物理I/O槽和物理存储槽。相对于该物理I/O槽和物理存储槽,功能I/O地址和功能存储地址是主机在管理卡盘定位时所用的虚拟位置。因此,主机对卡盘位置的认知受限于它们的功能地址。该库有一个将物理地址与功能地址关联的变换表。
最初,收到一个主机发出的弹出命令。该弹出命令要求把一个卡盘从一个源功能存储地址传送到一个目标功能I/O地址。为响应该弹出命令,不论该卡作何物理运动,库都会向该主机报告,该弹出命令已成功地完成。该库首先把一个功能I/O地址传给包含该卡盘的物理存储槽。当一个物理I/O槽有效时,库就把卡盘移动到那里,并且,或者把卡盘的功能I/O地址与物理I/O槽相联,或者卡盘的功能I/O地址注册为空。
因此,在一个实施例中,可以执行本发明以提供一种在数据存储库中管理弹出操作方法。另一实施例中,本发明用以提供一个设备,比如一个数据存储库,通过对它的配置来管理弹出操作,如这里所说明的那样。另一实施例,本发明用来提供一个信号载体,它包括一个机读指令程序,由一个数字化数据处理设备执行,以在一个数据存储库完成用于管理弹出的操作。另一实施例涉及有多个互相连接的电导元件的逻辑电路,用以在一个所述的数据存储库中执行操作。
本发明为其用户提供了许多显著的优点。比如,主机工作量减少了,这是因为该主机可以不等物理弹出完成就直接弹出卡盘,而不管物理I/O槽当时是否可用。另一优点,本发明在主机和图书馆控制器之间保持很大的软件相容性。本发明还提供许多其它优点和利益,这些将通过以下的对本发明的描述而变得非常显然。
图1是一个按照本发明的数据存储系统的硬件组件及其相互连接的方框图。
图2是按照本发明的数字数据处理机的方框图。
图3显示了按照本发明的示例性信号载体。图4描述了按照本发明的卡盘引入顺序的流程图。
图5是按照本发明的用于处理主机弹出命令的操作顺序的一个流程图。
在考虑到以下有关于该附图的详细描述之后,对本专业中的技术人员来说本发明的特性、目标和优点将变得更加明显。 硬件组件和相互连接序言
本发明的一个方面涉及到一个数据存储系统,它可由各种硬件组件及其互相连接来实现,如图1所示的一个例子。图1显示了一个数据存储库100,它与上级主机102连接。库100可包括一种或不同类型的便携式数据存储媒体,比如磁带、光盘、可写CDs等等。为了便于参考,库100中的便携式数据存储媒体被称为“卡盘”。主机
在其它可能的功能中,主机102向库100提供数据,用于在该卡盘上存储,并发送请求到库100以从该卡盘上检索数据。主机可以是各种类型的硬件,比如一个数字数据处理计算机、逻辑电路、离散电路组件结构、人机接口等等。例如,主机102可能包括一个使用比如AIX操作系统的IBM RS/6000机器。主机102还与接口104和主机目录120相连接。接口104确保主机102与操作员交换信息,并且可包括控制面板、视频监视器、计算机键盘/鼠标或其它适当的人/机接口。
主机120在库100中利用中心定位命令管理数据,并且可使用SCSI接口媒体转换器协议,作为一个例子。主机通过在该系统中指定源和目标位置来管理卡盘运动。按照本发明,源位置和目标位置是功能地址而不是物理存储地点。功能地址也可以认为是虚构的或虚拟的存储地址,因为它们在库100中未必对应于物理存储地点(尽管它们可能偶然对应)。虽然如此,为了满足主机的中心定位特性,主机102给每一个功能地址关联了不同的物理属性,比如媒体输送单元、存储单元、输入/输出单元或数据传送单元。在图例中,主机的功能地址包括“功能I/O地址”(主机理解为I/O槽)和“功能存储地址”(主机理解为存储槽)。例如,主机的功能地址可根据库100的配置相对主机102建立,并且不会经常变化。映射具有不同的基础层,映射将主机的功能地址与称为“物理存储地址”的实际存储地点相关联。该配置为库100带来几个好处,正如下面详细讨论的。
为了支持按照功能地址对数据存储库100的管理,主机102保持主机目录表120。从该主机的角度看,主机目录表120将每一个功能地址与储存在其中的任意数据存储卡盘进行交叉引用。表1显示了该目录表120的一个实例。每一行描述一个功能地址,并且交叉引用该地址:
1.在数据存储库100中虚构位置的类型由功能地址表示。在主机102的操作过程中,功能地址是否为“功能I/O地址”或“功能存储地址”的信息是固定不变的。
2.功能地址是否包括卡盘的信息在图书馆100的正常操作中是不断变化的。
3.该卡盘的标识符(如果有的话)被储存在该功能地址中;如解说的那样,标识的一种类型是通过卷序列号(“VOLSER”)表达的。此信息在库100的正常操作期间是变化的。功能地址(固定的)类型(固定的)满的还是空的?(可变的)VOLSER(可变的) 001功能存储地址满929475 002功能存储地址满988928 003功能存储地址满329820 004功能存储地址满NONE ………… 098功能I/O地址满333820 099功能I/O地址空NONE 100功能I/O地址空NONE 表1:主机类型驱动器
数据存储库100包括一个驱动器106,它与库100的卡盘进行读/写操作。如果需要的话,库100可以使用多个驱动器106。每一个驱动器106包括合适的硬件,以在库100中存取数据存储卡盘的格式。例如,在磁带卡盘的情况下,驱动器106可包括一个IBM3590型磁带驱动器。如下所述,卡盘通过机器人装置被引向驱动器106。物理卡盘的存储和管理
库100还包括物理移动并储存卡盘的装备。例如,物理存储槽114,当卡盘不使用时,它就用来存放卡盘。物理存储槽114包括架子或其它数据存储库隔间。
物理I/O槽112用来传送卡盘到库100或从库100传送出来。物理I/O槽112包括任意标识的、已知的、留出的、定位的,或者为操作员指明的在库中将卡盘插入和拔出的槽。使用I/O槽112,操作员可以引入卡盘到库100(“插入”操作)或把卡盘从库100取出(“弹出”操作)。操作员可以访问物理I/O槽112,而不会扰乱机器人装置112或驱动器106的操作(比如通过一个外置的门),尽管这是没有必要的。物理I/O槽112的一些例子包括“通过”槽、托架、运送器、定义为I/O槽的普通存储型槽,等等。
为了在驱动器106、I/O槽112和存储槽114之间移动卡盘,库100包括机器人装置110。机器人装置110分别通过通路110a、110b和110c存取这些组件。该机器人装置110可以由任何适当的卡盘运动机构比如机器人臂、完整的卡盘装载器械、运送器、可在x-y坐标系上移动的抓爪等等来实现。控制器
库100在控制器108的监督下操作:它从主机102接收命令一要求控制器从一个功能地址移动到另一功能地址。控制器108通过接口比如电线/电缆、一个或多个总线、光缆纤维线路、无线传输、智能通信信道,等等来与主机102通信。除了主机-控制器接口,它构成了一个“控制”通路,库100还包括一个在主机102和驱动器106之间携带数据的“数据”通路。
控制器108包括一个数字数据处理机、逻辑电路、离散电路组件构造或其它自动机构,并按照适当的程序设计、物理配置等等进行操作。为了提供一个具体实例,控制器108可包括一个IBM PowerPC处理器。
参考虚构的“功能地址”,在收到从主机102处发来的中心定位命令后,控制器108把这些命令翻译为库100中的物理位置,并通过指导机器人装置110实现该请求的操作。为了在主机的功能地址和库的物理存储位置之间映射,控制器108维护了一个包括库映射表116和库状态表118的库数据库。
对于每一功能地址,该库映射表116就标识出一个相应的物理存储器地址,如果它已经与功能地址关联的话。表2显示库映射表116的一个实例。在这个实例中,该物理存储器地址包括一个机器人抓爪的水平-垂直坐标。功能地址(固定的)功能地址类型(固定的)相关物理地址(可变的)001存储(1,1)左002存储(1,1)右003存储(1,2)左004存储不相关的… ……098 I/O (4,5)左099 I/O 不相关的100 I/O不相关的 表2:库映射表
库状态表118(表3)列出了在库100中所有物理存储器地址。此列表信赖于库100的物理配置,它建立在制造、初始配置等等之上。而且,对于每一物理存储器地址来说,该库状态表118说明:
1.物理存储器地址是否包含卡盘,这是可随时变化的。
2.所谓的物理配置包括物理存储器地址(例如,读/写驱动器、存储槽、I/O槽等等)。这在一个适当的时间内是固定不变的,例如在库的初始配置时。
3.卡盘的该VOLSER或其他标识被存储在物理存储地址中。
当卡盘在库中移动时,上述内容随时变化。物理地址(固定的)满的还是空的?(可变的)物理地址的配置(固定的)VOLSER(可变的)(1,1)左满存储槽929475(1,1)右满存储槽988928(1,2)左满存储槽329820 … … … …(4,5)左满I/O槽333820(5,8)右空I/O槽NONE…………(10,10)右空驱动器NONE 表3:库状态表示例性的数字数据处理装置
控制器108可通过不同的形式实现,包括例如一个数字数据处理设备。此设备可以通过不同的硬件组件及相互连接而体现。图2所示的数字数据处理设备就是一个实例。设备200包括一台与存储器204耦合的处理机202,例如一台微处理器或其它处理机器。在本例中,存储器204包括一个快速存取存储器206和非易失性存储器208。这个快速存取存储器206可包括随机存取存储器(“RAM”),并可用来存储由处理器202执行的程序设计指令。非易失性存储器208例如可以由一个或多个磁性数据存储盘组成,例如一个硬盘驱动器、一个磁带驱动器或任何其它适当的存储设备组成。设备200还包括一个输入/输出210,例如电线、总线、电缆、电磁连接或其它装置,用于处理机202与设备200的其它外部硬件的数据交换。
尽管有先前具体的描述,普通专业技术人员会意识到在不偏离本发明的范围的前提下,上面讨论的设备可以在一台不同结构的机器中得以实现。作为一个特例,组件206的208可以除去。此外,存储器204可以在处理机202中提供,或甚至在设备200外部提供。逻辑电路
与先前讨论的数字数据存储设备相反,本发明的一个不同的实施例没有使用计算机执行指令而是使用逻辑电路来实现控制器108。依赖于本申请在速度、费用工具制造成本等等方面的具体要求,逻辑电路可以通过构造一种有数千微小的集成晶体管的专用集成电路(“ASIC”)来实现。这样一个ASIC可以与CMOS、TTL、VLSI或其它适当的结构一起执行。其它的替换包括数字信号处理芯片(“DSP”)、离散的电路(例如电阻器、电容器、二极管、电感器和晶体管)、现场可编程门阵列(“FPGA”)、可编程逻辑阵列(“PLA”)等等。 操作
除上述各个硬件实施例之外,本发明的另一方面涉及以下讨论的一种方法。信号载体
在图1-2的内容中,这样的方法是由,例如通过操作控制器108而实现的,用来执行不同顺序的机读指令,控制器108是由一个数字数据处理设备200体现的。这些指令可以位于不同类型的信号载体上。本发明的一个方面涉及一种编程产品,它由包含一个机读指令程序信号载体组成,数字数据处理机通过执行此程序来完成数据存储库100中的弹出操作管理。
此信号载体可由例如,包含在控制器108中的RAM(图中未示)组成,如快速存取存储器206所示那样。做为选择,本指令可以包含在另一个信号载体中,例如一个磁性的数据存储软盘300(图3),可由处理机200直接或间接地访问。不管是否包含在存储器206、软盘300或其它地方,本指令可以储存在多种机读数据存储媒体中,例如直接存取存储器(例如,常规的“硬盘驱动器”,大量廉价磁盘阵列(“RAID”)或另一种直接存取存储器(DASD),磁带,电子只读存储器(例如,只读存储器,可擦可编程只读存储器,或电可擦除只读存储器),光存储器(例如,CD-ROM,WORM,DVD,数字光带),钻孔纸卡或其它适当的信号载体,包括传输媒体,例如数字和模拟通信链路和无线电。在本发明的一个实施例,计算机可读的指令可以包含由一种语言比如“C”编译的软件目标代码。逻辑电路
与上面讨论的信号载体相反,本发明的方法可以由逻辑电路实现,而不必用处理机来执行指令。在本实施例中,逻辑电路在控制器108中执行,并且被配置以执行操作来实现本发明的这种方法。逻辑电路可以用多种不同类型的电路执行,如上面所讨论的那样。卡盘插入
为提供一个本发明的实例,图4显示了卡盘入口序列400/450。为简化说明,但是没有任何特意的限制,图4的例子在对图1所示的硬件组件和互相连接的上述讨论中被描述。
在例程400中,控制器108管理库100,使它自动地从物理I/O槽112中排出新的卡盘。这帮助操作员确保I/O槽没有装满,从而避免操作员插入更多卡盘。这还有助于弹出操作,因为控制器108更可能找到一个可用的物理I/O槽。流程400的另一个好处是控制器108能自动地识别进入到物理I/O槽112的卡盘的外部配置。序列400自动地从物理槽I/O、112中排出卡盘,而不管任何主机的干涉。
序列400在步骤402中被初始化。在步骤404中,控制器108确定是否有新的卡盘放置到I/O槽112中。按照所需的重复计划,此步骤可以通过物理地检查物理的I/O槽112(“查询”)而完成,每当物理输入/输出槽的门被打开时,就查询物理I/O槽112。作为替换,一些或所有的物理I/O槽112可包括传感器,当卡盘被接收时,它们被激活。当步骤404发现一个新插入的卡盘时,控制器108就存取库状态表118,以标识排空的物理存储槽114(步骤406),然后移动这个插入的卡盘(步骤408)。步骤408也更新库状态表118来显示卡盘存在于空的存储槽。在卡盘插入处,步骤408能迅速地清除物理I/O槽112,以便其它的插入或弹出操作。而且,主机102看不见此步骤。
在步骤408之后,控制器108使主机102知道卡盘的出现。首先,控制器108从库映射表116中选择一个可用的功能输入/输出地址,并更新库映射表116,以使功能输入/输出地址与当时存有卡盘的物理存储槽关联(步骤410)。在步骤410之后,流程400返回到步骤404来处理其它新插入的卡盘。
除序列400以外,序列450通过控制器108被执行以帮助主机102完成卡盘插入操作。序列450开始于步骤412。在步骤414,控制器108确定是否接收到任何主机命令。响应主机状态命令,控制器108把这个新近接收的卡盘报告给主机102(步骤413)。具体地,控制器108把卡盘的功能I/O地址(来自步骤410)和VOLSER报告给主机102。这就是主机102如何获悉卡盘在库的存在,也就是说,通过查询控制器108而知道的。在主机102知道新的卡盘存在于功能输入/输出地址(通过步骤413)之后,主机102(图中未示)通过更新它的主机目录表120作出反应,显示功能输入/输出地址为“满”,并输入卡盘的VOLSER或其它标识。稍后,主机程序设计命令主机102把卡盘从它的功能I/O地址移动到功能存储器地址。当这种情况发生时,主机102发送一个适当的“插入”命令,控制器108在步骤414中接收此命令。接到步骤414的插入命令后,控制器108会立即自动发出插入已经完成的报告(步骤416)。为确切地执行插入操作,控制器108执行特定的附加步骤(步骤416的一部分),主机是看不见这些附加的步骤的。换句话说,因为卡盘已经位于一个物理存储槽中,所以不需要物理的移动。取而代之,控制器108从库映射表116中选择一个可用的功能存储器地址,并把它与卡盘的物理存储器地址通过更新库映射表116相关联(步骤416)。在库映射表116中,控制器108还通过把功能输入/输出地址列表为“无联系的”,从而去除早先的卡盘功能输入/输出地址的关联。在步骤416之后,控制器108返回到步骤414来等候另一个主机命令。
通过本公开,普通的专业技术人员应该认识到在不偏离本发明的前提下序列400、450的操作顺序是可以改变的。而且,虽然为了简化图解,上述的序列400,450已经以一种严密的连续的形式描述出来,但是操作400,450中的一部分可以使用硬件中断或多任务来执行为不同的卡盘所做的并行操作等等。卡盘弹出
图5显示了弹出卡盘序列500的一个实例。为了便于说明,但是没有特意限制,图1所示的硬件组件和相互连接的上下文中描述了图5的这个实例。
有利地是,控制器108来管理库100,去执行一个直接的虚拟的弹出操作,以便使主机102不会因为感觉到物理I/O槽已满而被阻滞。如以下所示,立刻把一个功能输入/输出地址与该卡盘的当前的物理存储槽关联,就可以完成该项任务,而不管物理I/O槽是否可用。
步骤500在步骤502被初始化。在步骤504中,控制器108收到一个来自主机102的弹出请求。这个弹出请求是按照主机程序设计的中心定位指令,它告诉控制器108把卡盘从指定的功能存储器地址移动到指定的可用的功能输入/输出地址中去。为了迅速地响应主机的请求,控制器108做出弹出操作请求已完成的报告(步骤506)。在这个时候,主机102可把该卡盘从主机目录表120中删除(该步骤在图中未示)。做为选择,主机102可以待到卡盘从库或另一个适当的地方被物理地移走为止。这是由查询控制器108决定的。为了确切地执行弹出请求,控制器108执行一些其它的主机102看不见的特定的步骤。换句话说,控制器108更新库映射表116以释放当前与物理存储槽关联的功能存储器地址,并用指定的功能输入/输出地址替换功能存储器地址(步骤506)。这达到了一种近似的直接的虚拟弹出,因为主机102认为卡盘现在位于一个I/O槽中。
如上所述,作为步骤504-506的替换,主机的弹出请求可省略功能I/O地址,让控制器108标识、选择和报告(当查询时)可用的功能输入/输出地址。
在步骤506之后,控制器108检查物理I/O槽是否可用(步骤510)以真正地弹出卡盘。如果不是,控制器108在步骤512等候,然后重复步骤510。每执行一次步骤512,例如,就将要弹出的卡盘排序,它每前进一步,一个物理I/O槽就成为可使用的。
当一个物理110槽可用时,控制器108把目标卡盘移动到这个可用的物理I/O槽中(步骤514)。然后,这个控制器108更新库映射表116(步骤516),以便使卡盘的当前的功能输入/输出地址被关联到卡盘的物理输入/输出地址中,而不是关联到先前所占的存储槽的物理存储器地址。另外,控制器108更新库状态表118以显示卡盘在物理I/O槽中的存在。
在步骤516之后,控制器108等到卡盘从它的物理I/O槽中被操作员、另一个机器等移走。在这个时候,控制器108更新库映射表116和库状态表118以显示从库中去除卡盘(步骤517)。作为替换,控制器108可省略步骤516,在这种情况下卡盘移到物理I/O槽不被记录。在步骤517之后,弹出流程500在步骤518结束。 其他实施例
上面公开了本发明的多个实施例,有一点要清楚,本专业中的技术人员可以在不偏离附加权利要求所规定的本发明的范围的前提下做出各种改变和改进。此外,虽然本发明的各单元可以单数形式描述或要求,但是除非明确地说明限制用单数,可用复数。另外,普通专业技术人员会认识到操作顺序必须是为了解释和申明的目的,而以一种特殊的顺序提出,但是本发明可有不同的顺序。