存储分类的系统和方法

文档序号:6533810阅读:201来源:国知局
存储分类的系统和方法
【专利摘要】在一个或多个计算机系统上执行的分类系统(900)包括处理器(912)和耦合到所述处理器的存储器(914)。所述存储器包括发现引擎(932),其经配置以遍历非易失性存储器存储区,以通过跟踪从文件系统挂载点经过文件系统对象并到磁盘对象的一个或多个文件,发现所述一个或多个文件在一个或多个计算机存储系统中的身份和位置。分类器(934)经配置以将所述一个或多个文件分类成分类类别。所述一个或多个文件被与所述分类类别关联并存储在至少一个数据结构中。同时提供方法。
【专利说明】存储分类的系统和方法

【技术领域】
[0001] 本发明涉及服务器和存储系统的发现、迀移和转换处理,并且更具体地,涉及用于 快速和准确分类计算机存储的系统和方法。

【背景技术】
[0002] 计算机技术以极快的速度发展。根据经常引用的摩尔定律,存储器芯片容量每隔 两年翻倍,以及处理器芯片上的处理器数量翻倍。类似的"定律"适用于计算机存储。遗 憾的是,随着计算机和存储技术的这种显着增长带来的优势不能容易地集成到运行信息技 术(IT)中心或数据中心中,所述中心必须在正在更新和维护IT设备和程序期间,继续处理 "在线"处理请求(例如,银行交易、生产机械控制、气象监测或搜索)。数据中心不能容易地 关闭,因为需要它们的活动以保持企业等运行。使IT中心现代化是具有许多复杂性的精细 过程,这不仅需要理解更广泛系统的底层配置,同时也必须考虑正在操作的程序(即处理) 之间的依赖性。
[0003] 管理数据中心的复杂性来自于许多影响因素。例如,当数据中心随需求增长时,出 现瓶颈和对资源的竞争。零碎补丁必须尽快管理以解决紧迫问题。鉴于负责管理中心的工 作人员是不稳定的,记录的中心的细节可能未以相同的方式记录。此外,软件需要不断更 新,以保持符合不断变化的软件的新版本和新标准。
[0004] 因此,重要的是能够在自动工具的协助下快速地表征与数据中心的基础结构相关 联的软件和硬件。考虑到每秒生成的新数据,以及因此必须由中心的员工频繁供应以保存 大量数据的存储,特别重要地是能够理解存储数据的硬件的类型,特别是当正在修改或整 修中心时。


【发明内容】

[0005] 一种在一个或多个计算机系统上执行的分类系统包括处理器和耦合到所述处理 器的存储器。所述存储器包括发现引擎,其经配置以遍历非易失性存储器存储区,以通过跟 踪从文件系统挂载点经过文件系统对象并到磁盘对象的一个或多个文件,发现所述一个或 多个文件在一个或多个计算机存储系统中的身份和位置。分类器经配置以将所述一个或多 个文件分类成分类类别。所述一个或多个文件被与所述分类类别关联并存储在至少一个数 据结构中。
[0006] 一种用于分类存储区的方法,包括:发现一个或多个文件在一个或多个计算机系 统中的身份和位置;通过跟踪从文件系统挂载点经过文件系统对象到磁盘对象的所述一个 或多个文件而解析存储区分类的类型,来将所述一个或多个文件分类成多个分类类别;在 存储介质上存储的至少一个数据结构中,将所述一个或多个文件与所述分类类别相关联。
[0007] 结合附图阅读,通过本发明示例性实施例的以下详细说明,这些和其他特征和优 点将变得显而易见。

【专利附图】

【附图说明】
[0008] 本发明将参照下面的附图提供优选实施例的以下描述细节,其中:
[0009] 图1是示意性示出根据一个实施例的存储分类表的示意图;
[0010] 图2是示出根据一个实施例的用于存储发现和分类的系统/方法的方块/流程 图;
[0011] 图3是示出根据一个实施例的存储数据模型的方块/流程图;
[0012] 图4是示意性示出根据一个实施例的磁盘分类表的示意图;
[0013] 图5是示出根据一个实施例的生成物理磁盘分类表的物理磁盘分类的系统/方法 的方块/流程图;
[0014] 图6是示意性地示出根据一个实施例的物理磁盘分类表的示意图;
[0015] 图7是示出根据另一实施例的用于物理磁盘存储分类的系统/方法的方块/流程 图;
[0016] 图8是示出根据另一实施例的用于协调/比较多个分类方法的系统/方法的方块 /流程图;
[0017] 图9是示出根据另一个实施例的用于组合多个分类方法的系统/方法的方块/流 程图;和
[0018] 图10是示出根据本发明原理的用于实施所述方法的示例性系统的方块/流程图。

【具体实施方式】
[0019] 根据本发明原理,提供涉及例如数据中心内的服务器和存储系统到新的数据中 心、计算机集合或计算机类系统内的服务器和存储系统到云等的发现、迀移和变换处理的 方法和系统。为了实现现代化,信息技术(IT)中心的软件和硬件结构需要在转换(例如, 现代化)之前被发现和分类。发现和分类处理往往涉及慎重而繁琐的工作。这项工作往往 是昂贵的,且很容易出错。为了实现成本降低和减少错误,公开用于IT中心的存储基础设 施(数据中心)或其它存储器存储区(例如,非易失性存储器存储区)的发现和分类任务 的自动化。
[0020] 本原理提供了包含在数据中心或其他存储装置或设施内的存储区的快速和准确 的分类。为提高精度的目的,描述备选存储分类方法。这些可以包括在文件系统的抽象级 别上运行的存储分类方法(例如,已安装存储驱动器分类方法)。另一个存储分类方法运 行在物理磁盘的抽象级别。此外,描述用于协调多个存储分类方法的结果的逻辑。本原理 的一个目标在于:对特定文件系统处的存储区类型分类,其特征在于挂载点。这在其中转 换关系到企业应用(通过软件组件(诸如,Web服务器、应用服务器和数据库)实现)的许 多应用中是重要的考虑因素。然后,通常重要的是要知道与这些企业应用(除了较窄应用 意义上的数据,包括配置、程序代码、日志等)相关的数据实际存储的位置。具体而言,多个 转换任务关注存储是服务器本地还是远程,并且在后者的情况下,它是网络附加存储(NAS) 还是存储区域网络(SAN)。NAS意味着远程系统提供文件系统抽象,而SAN意味着它提供块 设备抽象。在服务器上,数据被存储在文件系统中,以及现有的发现方法往往可以跟踪数据 到文件系统。因此,特别关注的任务在于对如何存储文件系统分类,以便结合现有方法,可 以知道应用数据被存储的位置。该方法也可以应用于其中应用使用原始卷的情况,因为在 某些数据库中发生此特定情况。在该情况下,我们从数据库或有问题的逻辑卷(而不是文 件系统)进行跟踪。在下文中,文件系统被示意性地描述为出发点。
[0021] 向否则为人工密集型存储分类任务注入自动化将降低成本并增加分类处理的精 度,并此外由于分类的改进级别的细节、精度和标准化,减少了对存储基础结构的目标转换 的成本。这些廉价和可靠的方法可以在变换过程被应用到一个或多个特定的存储区类型。 通常,针对被评估以便升级或已就绪以便转换的一个或多个服务器(主机)中存在的每个 服务器(主机)文件系统进行存储区分类。对于每个发现的文件系统,通过这些方法产生 的记录可报告主机、挂载点(从操作系统和应用的角度,作为文件系统的标识)、文件系统 类型和对应的存储区分类。这些概念(或抽象)的名称对于不同的操作系统略有不同,但 这些概念因此广泛存在;例如,在一个实施例中,包括在记录的挂载点部分中表示大多数 Windows?文件系统的驱动器字母,因为它们对于应用服务于相同的目的。存储系统的分类 名可包括例如网络附加存储(NAS)、存储区域网络(SAN)、Ldisk(表示单个本地磁盘)、独立 磁盘冗余阵列(RAID)(表示本地RAID)、可移除和模糊(即,使用可用信息不能得到先前的 值)。
[0022] 如将被本领域技术人员可以理解的,本发明的各个方面可以体现为系统、方法或 计算机程序产品。因此,本发明的方面可采取如下形式:完全硬件实施例、完全软件实施例 (包括固件、驻留软件、微代码等),或者实施例组合可所有通常本文被称为作为"电路"、"模 块"或"系统"的软件和硬件方面。此外,本发明的各方面可以采取在一个或多个计算机可 读介质中体现的计算机程序产品的形式,该计算机可读介质具有体现在其上的计算机可读 程序代码。
[0023] 可以使用一个或多个计算机可读介质的任何组合都。该计算机可读介质可以是计 算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是例如(但不限于) 电子、磁、光、电磁、红外或半导体系统、装置或设备,或上述的任何合适组合。计算机可读 存储介质的更具体例子(非穷举列表)将包括以下:具有一个或多个导线的电连接、便携 式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器 (EPROM或闪存)、光纤、便携式压缩盘只读存储器(CD-ROM)、光存储设备、磁存储设备,或者 任何前述的适当组合。在本文档的上下文中,计算机可读存储介质可以是能够包含或由指 令执行系统、装置或设备使用或连接其的任何有形介质。
[0024] 计算机可读信号介质可以包括传播数据信号,计算机可读程序代码体现于其中, 例如在基带中或作为载波的一部分。该传播信号可以采取任何的多种形式,包括(但不限 于)电磁、光学或任何合适的组合。计算机可读信号介质可以是不是计算机可读存储介质 并可以传递、传播或传输通过指令执行系统、装置或设备使用或结合其的程序的使用任何 计算机可读介质。
[0025] 计算机可读介质上嵌入的程序代码可使用任何适当的介质传输,包括(但不限 于)无线、有线、光纤电缆、RF等,或者上述的任何合适组合。用于执行本发明各方面的操作 的计算机程序代码可以一个或多个编程语言的任何组合编写,包括面向对象的编程语言, 诸如Java、Smalltalk、C++或类似物和常规的过程编程语言,诸如"C"编程语言或类似的编 程语言,或者数据库查询语言(诸如SQL)或脚本语言(诸如Perl)。程序代码可以在用户 计算机上完全执行,在用户计算机上部分执行,作为独立的软件包,部分地在用户计算机上 且部分地在远程计算机上或完全在远程计算机或服务器上。在后一种情形中,远程计算机 可以通过任何类型的网络连接到用户计算机,包括局域网(LAN)或广域网(WAN),或可连接 到外部计算机(例如,通过使用因特网服务提供商的因特网)。
[0026] 以下参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和 /或框图描述本发明的各个方面。但可以理解,流程图和/或框图的每个方框以及流程图 和/或框图中块的组合可以通过计算机程序指令来实现。这些计算机程序指令可以被提供 给通用计算机、专用计算机或其他可编程数据处理设备的处理器以产生机器,以使得指令 (其通过计算机或其他可编程数据处理设备的处理器执行)创建用于实现在流程图和/或 方框图方框或方框中指定的功能/操作。
[0027] 这些计算机程序指令也可以被存储在可以引导计算机、其它可编程数据处理设备 或其他装置以特定方式起作用的计算机可读介质中,使得存储在计算机可读介质中的指令 产生制造品,其包括实现在流程图和/或方框图方框或多个方框中指定的功能/动作的指 令。该计算机程序指令也可以被加载到计算机、其它可编程数据处理设备或其它设备,以使 得在计算机、其它可编程设备或其它设备上执行一系列操作步骤,以产生计算机实现的处 理,使得在计算机或其他可编程设备上执行的指令提供用于实现在流程图和/或方框图方 框或多个方框中指定的功能/动作的处理。
[0028] 在附图中的流程图和框图说明了根据本发明各个实施例的系统、方法和计算机程 序产品的可能实施方式的架构、功能和操作。在这方面,流程图或框图中的每个块可以表示 模块、分段或代码部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。还应当 指出,在一些可替换实施方式中,块中提到的功能可以不按图中指出的顺序发生。例如,连 续显示的两个块可以实际上基本上同时执行,或者这些块有时可以相反的顺序执行,这取 决于所涉及的功能。还应当指出,框图和/或流程图中的每个块以及框图和/或流程图说 明中的块的组合可以由执行指定功能或动作的基于特殊用途硬件的系统或特殊用途的硬 件和计算机指令的组合来实现。
[0029] 现在参考其中相同的标号表示图中相同或相似元件的附图并最初参考图1,将示 例性地参照存储区分类表10描述存储区分类方法。图1包括示例性分类方法(图2)的预 期输出。一个示例性存储区分类方法运行在文件系统的抽象级别(称为已安装存储驱动器 分类方法)。参考图2和3更详细地描述该方法,图2和3分别描绘自动存储区分类系统/ 方法100和存储数据模型200。
[0030] 图2中的存储区分类方法100的目的在于产生图1的存储区分类表10。对于每个 发现的文件系统,通过该方法100生成的记录可报告主机或服务器名称12("CLIENT_HOST_ NAME")、挂载点("M0UNTP0INT")14、文件系统类型("FILESYS_TYPE")16和相应的存储区 分类("分类")18。主机或服务器名称12示出了通用条目"系统1,系统2..系统7"用于 说明的目的。但是应当注意,每个主机可以存在一个或多个文件服务器。挂载点指用于安 装并提供到其他卷的入口点的专用文件系统对象。挂载点可在文件系统上的目录中创建, 它给出了对安装的卷的根目录的参考。事实上,任何空目录可以被转换为挂载点。安装的 卷可以使用任何文件系统格式化。图1的表格10提供了一种方法以对安装在特定挂载点 的文件系统的存储区类型进行分类。
[0031] 接下来是图2的分类方法的每个步骤的更详细描述。参考图2,框/流程图描述 生成存储区分类的系统/方法。存储区分类的该示例性实施例在文件系统的基础上工作。 图2中具有火柴人的块可涉及某种程度的人为干预,但也可以是完全自动化的。图2的自 动化存储区发现和分类方法100包括:在块102的发现步骤,在块116的磁盘分类步骤,在 块114的NAS存储区分类步骤,在块136的磁盘存储分类步骤以及在块128的主机到存储 区表形成步骤。在块102的发现步骤优选地在块114的NAS分类步骤和在块136的磁盘存 储区分类步骤之前完成。在块116的磁盘分类步骤优选地在块136的磁盘存储区分类步骤 之前完成。磁盘分类步骤116也优选地在该方法100的其他步骤的执行之前完成并独立于 发现步骤102的具体执行。块128的主机到存储区表形成步骤将在块114和136产生的记 录合并到图1示意性地示出的存储区分类表10中。可以以修改由块102和116产生的输 入表的频率重复整个方法。
[0032] 在块102的发现使用计算机系统执行,以收集存储区数据(例如,在客户端侧)并 将所收集的数据解析成表格(其他实施例可使用其他数据结构)。在存在要被分类的文件 系统的服务器上执行块102的至少某些部分。这样的系统产生或提供表格,例如,目录表 104、安装表106、服务表108、对象表110和依赖性表112。这些表104-112提供分析的原始 数据。原始数据馈送NAS存储分类块114和磁盘存储分类块136的逻辑。目录表104可包 括待分析的系统硬件或软件目录。目录表104也可以在其他的方法中使用,为简单起见,这 些方法将从其他图中省略。
[0033] 在一个实施例中,可以根据国际商业机器公司?的Galapagos?系统生成表格。另 一实施例可使用另一发现系统,诸如IBM?Tivoli?应用依赖管理器。发现步骤102以 后的步骤需要能生成存储区数据结构,表示服务器中配置的存储区。示例性存储区数据结 构示于图3,也就是说,其以在服务器操作系统上看见的方式将文件系统链接到磁盘对象。
[0034] Galapagos?区分三个层次的中间件项目,称为安装、服务和对象(表106,108和 110)。它还将文件系统和存储区看作中间件,因为它们的软件构造非常适合同一个数据模 型。中间件抽象的第一个最外层是安装。安装可仅仅是安装的程序,而不运行处理。在主 机上可以有某种产品的多个安装,例如以多个不同的版本。中间件抽象的第二级(服务) 通常对应于正在运行的处理,或者在计算机到计算机通信意义上对应于服务,监听端口。对 于存储区和文件系统的情况,该服务可在一定程度上被认为是嵌入在操作系统中的运行处 理。
[0035] 其次,大多数服务还托管其他项目。其范围可以从清理数据对象,例如在具体活动 对象(如队列)上的文件或数据库和数据库表格到完整的应用。WebsphereApplication Server?(WAS)可托管应用程序。在存储区的情况下,单独的文件系统是对象。所有这些项 目(例如,安装,服务和对象)将以名称"对象"被捆绑在一起,以便于参考。依赖性表110 包含不同对象之间的依赖性,例如,数据库中的数据被保存在特定文件系统内,或者文件系 统在特定的逻辑卷上实施。参见图3。
[0036] 磁盘分类块116使用人来分类已知存储驱动器,这产生磁盘对象,并将其排列到 表格中,诸如不例性磁盘分类表300 (参见图4)。磁盘分类表300由磁盘存储分类块136在 分类磁盘对象的处理中进行搜索,其链接到主机文件系统。应当理解,磁盘类别类型可被进 一步分类成保护和不受保护的(例如,RAID)的类别/分类。
[0037] 在本实施例中,NAS存储区分类块114通过文件系统类型排他地识别NAS存储区 (因为在NAS中,远程服务器提供文件系统抽象,所以在其文件系统正在被分类的服务器上 没有对应磁盘对象)。NAS文件系统的类型包括例如NFS%、CIFS、AFS%或DFS,这里,追加 到NFS和AFS的" % "表示通配符,从而覆盖诸如NFS、NFS4、NFSD和NFSv3的文件系统类 型。用于分类存储区为NAS的示例性代码位于子查询中,由^NAS_FS_SORT表示为METHOD 语句,其位于其后的SQL查询中。在图3的示例性存储数据模型200中,从挂载点到NAS的 路径记为如METHOD202 的 ^NAS_FS_SORT。
[0038] 磁盘存储区分类块136根据它们实施的磁盘对象分类不是NAS的文件系统。从文 件系统挂载点到磁盘的链接通过从框遍历到框形成,所述对象(表示在对象表格110中) 沿流程线(表示在依赖性表112中),这两者都表示在图3的存储区数据模型200中。换 句话说,通过从文件系统挂载点经过任何中间文件系统对象到磁盘对象来跟踪表,形成链 接。一旦从该处理获得磁盘,可以通过首先链接到创建它的安装(例如,存储驱动器),然后 通过在用于存储区分类304的磁盘分类表300中查找已安装的存储区驱动器302获得其分 类。因此,存储区分类可链接回挂载点。
[0039] 用于根据磁盘分类块分类存储区的示例性代码位于子查询中,在图3中表示为: 位于下方的SQL查询部分中(也在图3中指出)的'FS_DevFile_LVM_Disk_In'asMETHOD 204,rFS_DevFile_LVM_Disk_Out,asMETHOD206,rFS_DevFile_Disk,asMETHOD 208,FS_DisVasMETHOD210语句。在此,FS=文件系统,LVM=逻辑卷管理器,以及 DevFile=设备文件。在块136的磁盘存储区分类步骤通过从文件系统挂载点开始,经过中 间文件系统对象,经过磁盘对象,经过安装(其创建磁盘)并最后到分类本身而跟踪表,来 解析存储区类型。
[0040]NAS分类块114和磁盘存储区分类块136 -起用于将存储区类型解析成多个不同 分类。在一个实施例中,可以采用七个分类,从而产生记录(例如,图1中的行),并将它们 标记为[1]NAS记录、[2]SAN记录、[3]Ldisk记录、[4]RAID记录、[5]可移除记录、[6]模糊 记录和[7]未知记录。还可以包括其他分类。详细地说,该分类包括:[1]"NAS"表示"网络 附加存储";[2] "SAN"表示"存储区域网络";[3] "Ldisk"表示没有RAID保护的本地SCSI 磁盘;[4] "RAID"表示采用RAID保护的本地SCSI磁盘;[5] "可移除"表示可拆卸的存储 区(如闪存盘);[6] "模糊"指示通过已安装存储驱动器确定的分类不能被解析到[1]至 [5]之一。"模糊"记录的底层存储区可是Ldisk、SAN或RAID。[7] "未知"表示在磁盘分 类表300中对于发现的磁盘(由所安装的存储驱动器生成)无分类存在。
[0041] 图2的方法的备选步骤可进一步包括块118的模糊解析步骤和未知解析步骤,这 两者都可涉及人为干预。因为之前步骤的结果的模糊性,模糊解析步骤118可能需要人来 运行主机或存储控制台上的其他命令以分类存储区或调查物理服务器、网络或存储区本身 以分类存储区。
[0042] 还构想了模糊解析块118可以另外具有内置存储器和识别已处理模糊记录的逻 辑(例如,由个人在之前运行期间分类),所述记录现在可以通过其唯一主机名和挂载点识 另IJ。对于这些已处理的模糊记录,可以基于在记录分类表120中记录的之前结果,将正确分 类提供给主机到存储区表形成块128中的存储区分类表10。这样,由个人解析的模糊记录 总是在记录分类表120中保持已解析,作为[2]SAN记录至[5]可移除记录之一。因此,每 次图2的方法再次运行时,由个人进行的昂贵步骤都不会丢失,特别是在转换之前的发现 和分类的相对较短的时间帧期间。在此期间,文件系统不太可能显著改变,并因此可进行发 现和分类的多次迭代,而记录分类表120不会显著改变。模糊解析块还可以包含与其他分 类方法相关的自动化。
[0043] 未知解析块122使用人来产生新的分类130,用于安装之前在磁盘分类表300中没 有包括的存储区驱动器。新的分类130被反馈回磁盘分类块116,使得磁盘分类表300可以 被更新以包括新的分类130。同样,一旦完成,由个人执行的昂贵搜索/步骤在大多自动的 存储区发现和分类方法102中不会丢失。
[0044] 应当注意,如下所述的SQL查询内的union语句结合各子查询NAS_FS_ SORTrasMETHOD202,rFS_DevFile_LVM_Disk_In,asMETHOD204,rFS_DevFile_ LVM_Disk_0ut,asMETHOD206,,FS_DevFile_Disk,asMETHOD208,以及[e],FS_ disVasMETHOD210-生成的分类记录一起生成存储区分类表10,因此完成在块128的主 机至存储区表形成步骤。
[0045] 参见图3,示意性示出根据一个实施例的存储区数据模型200。图2的NAS存储区 分类块114通过文件系统名称排他性地识别NAS存储区。用于将存储区分类为NAS的逻辑 位于子查询中,记为位于SQL查询内的'NAS_FS_S0RT'asMETHOD语句202。从挂载点 212到NAS的路径记为在存储数据模型200上的"NAS_FS_S0RT"asMETHOD202。
[0046] 从文件系统挂载点212到一个磁盘或多个磁盘230(例如,在Linux上)或232(例 如,在AIX或Windows?上)的链路由框穿越到框形成,对象(在对象表110中表示)沿着框 之间的流程线(表示在依赖性表112中)。对象可包括设备文件214、216、224、226和228,卷 组218,逻辑卷220和222,等等。换句话说,通过从文件系统挂载点212,经过任何中间文件 系统对象214、216、218、220、222、224、226和228,到磁盘对象230、232跟踪表来形成链路。 一旦从该过程获得磁盘230、232,该磁盘就通过安装表106链接到已安装存储驱动器(其产 生该磁盘),然后,使用与磁盘关联的已安装存储驱动器302,可以在磁盘分类表300中查找 存储区分类(图4)。存储区分类304因此被链接回挂载点212。在本实施例中,用于根据磁 盘分类块分类存储区的示例性代码位于下方SQL查询部分中的子查询中:'FS_DevFile_ LVM_Disk_In'asMETHOD204, 'FS_DevFile_LVM_Disk_0ut'asMETHOD206, 'FS_ DevFile_Disk,asMETHOD208,,FS_Disk,asMETHOD210 语句。
[0047] 参见图4,描绘由一个实施例使用的示例性"磁盘分类表"300,其按照本发明原理 链接硬件/软件驱动器到存储区分类。图4的表格示出已安装存储驱动器列302和分类列 304。磁盘分类表300在图2的方法100中描绘。还应当注意:在图5中描绘自动磁盘分 类,其与方法200 (图3)和磁盘分类表300 (图4)的不同之处在于它探测用于分类的物理 磁盘对象本身。物理磁盘是指磁盘的操作系统概念,与逻辑卷相反。探测在这种情况下指 查询操作系统对象,或者关于该对象查询操作系统。在实体对象意义上的物理磁盘可以驻 留也可以不驻留在其中执行查询的同一服务器中。这实际是按照本发明原理的希望的分类 的一部分。
[0048] 参见图5,物理磁盘分类方法400引入表征物理磁盘的具体步骤。该物理磁盘分类 方法400从代表物理磁盘本身的配置和文件提取磁盘分类。它产生物理磁盘分类表450,稍 后将由图7的存储区分类系统/方法600用于产生存储区分类表610。方法600采用某些 与已针对图2的存储区分类系统/方法100 (其生成存储区分类表10)描述的过程类似的 过程。
[0049] 在下文中更详细地描述的发现处理收集并编目必要的属性,以回答在物理磁盘分 类方法400中提出的一些问题。图6示出当运行物理磁盘分类方法400时所使用(在每个 磁盘的对象/记录的基础上)的属性及其说明的表500。
[0050] 物理磁盘分类方法400开始于块402的物理磁盘层,其中根据在块406是否需要 处理更多记录的检查,在块404获得第一个或下一个物理磁盘记录。块402对于每个记录 重复并当没有发现更多记录时在块408停止。在这种方法中,每个物理磁盘记录经过一系 列的问题:块410中的磁盘可移除?块414中的是主机系统的集成驱动电子设备(IDE)的 磁盘部分?块418中的SCSI磁盘具有世界范围ID(WffID) ?问题流由肯定是响应中 断。如果为"是",记录的分类响应于在块410的问题在块412被写为"可移除",响应于在块 414的问题在块416被写为"Ldisk",响应于块418的问题在块420被写为"SAN"。如果对 块410、414和418的问题的响应都是"否",则该记录的分类在块422中写为"Ldisk"。一 旦记录了物理磁盘分类,该方法就重复,直到如由块402控制的,没有更多记录将被处理。
[0051] 应当理解,可以使用该方法进行更多限制数量的磁盘分类,包括例如,[2]SAN、[3] Ldisk和[5]可移除。还应当理解,替代或除了那些描述的,可以采用其他类似的命令和分 类。在此特定实施例中,在仅采用块410、414和418的问题时,可以不进行硬件RAID的分 类(在图2中记为" [4]RAID记录")。该示例示出:备选分类方法(如方法100)可相对于 方法400改进分类的质量。然而,可以构想,使用加入到流程的另外问题,物理磁盘分类方 法400可以扩展以提供更精确的分类,如"RAID"等。
[0052] 表500概括针对物理磁盘分类方法400定义的属性。在该表500中,特定属性502 被命名,在说明中被描述并被分配给数据库表和列名506 (即,图2的"对象表" 110)。
[0053] 需要其他发现过程以填充在表500中描述的属性。发现的某些方面已经在发现步 骤102和存储区数据模型200的描述中讨论。下文描述的物理磁盘发现处理提供回答在块 410、414和418中的问题的信息。发现过程收集在分类每个属性中利用的原始信息。中间 解析步骤(代码未包含在图5中)有助于将物理磁盘分类为在具体属性列502中标注的如 图6所示的"可移除"、下一个"IDE"、最后"WWID"。后续段落将描述收集原始信息的命令。
[0054] 对于Windows?操作系统,可从"Windows管理规范"(WMI)发现"可移除"(在块410 的问题)和"IDE"存储(在块414的问题)的原始信息,丽I是一种接口,通过该接口,可 以经由公共信息模型标准交换硬件(即,软件驱动器)管理信息。这可以通过使用Windows 管理规范查询语言(WQL)查询"select*fromwin32_system"更具体地执行。对于Linux 操作系统,可以通过链接从FDISK、"pr〇C/USb"和"proc/ide"收集的信息来解析"可移除" 和 "IDE" 存储区。使用命令"less/proc/usb/usb" 和 "less/proc/ide/ide",可获取"可移 除"和"IDE"的描述。对于其它操作系统可以构想相似的发现过程。还应当理解,取代或除 了那些描述的,可以使用其他类似的命令。
[0055] 如果SCSI磁盘具有世界范围ID(WffID),则它是通过SAN生成。因此,根据图5的 方框418,分类是SAN。存在或缺少世界WffID可以通过查询来检查。这仅仅是例示。可使 用用于发现WffID或用于确定缺乏WffID的其它方法。
[0056] 参见图7,描绘其他存储区分类方法600,其运行在物理磁盘的抽象层。图6描绘 存储区分类方法600。如前所述,图7中具有火柴人的块可涉及某种程度的人为干预,但也 可以完全自动。该方法600包括:在框602的发现步骤、物理磁盘分类方法步骤400 (在图 5描述),以及另一磁盘到存储区分类步骤636。更详细地,磁盘到存储区分类步骤636将 磁盘对象-现在分类和存储在物理磁盘分类表450中-链接回文件系统挂载点(或反之亦 然)。
[0057] -旦所有的物理磁盘记录已在块400分类,磁盘记录和它们相应的分类可以被链 接到挂载点,以通过随后块636产生存储区分类,用于磁盘至存储区分类步骤。这可以相对 于在第一分类法100中所述的过程的一部分正向或反向进行。该过程主要涉及依赖性表 112和对象表110。具体而言(对于反向示例),现在已分类的物理磁盘到挂载点的链接从 存储区数据模型200 (图3)的磁盘230、232经过中间框214、214、218、224、226、228进行到 挂载点212。中间遍历可涉及对象-表示中间文件系统对象的框214、214、218、224、226、 228,诸如设备文件214、216、224、226以及228和逻辑卷220、222和依赖性(连接图3中框 的链路或箭头)。对象和依赖性通过分别查询对象表110和依赖性表112获得。一旦已处 理所有的记录,产生用于一个或多个计算机或整个IT中心的存储区分类表610。存储区分 类表610与图1的表10类似或相同,其中呈现文件系统在服务器/主机上的分类。
[0058] 磁盘分类表之间的主要差异在于:物理磁盘分类表500包含(在IT系统中所有发 现的物理磁盘的)磁盘记录与它们对应的存储区分类,而基于驱动器的磁盘分类表300可 包括已安装的存储驱动器和它们相应的存储区分类。而且,磁盘分类表300可以采用人来 指定存储区分类给所有已知的软件驱动器(其管理特定类型的硬件)。
[0059] 可以通过图8中描绘的方法700(协调存储区分类的方法)协调备选存储区分类。 结合存储区分类方法100和600可以改进在存储区记录上呈现的每个分类的准确性并可放 大分类跨所有存储区记录的覆盖范围。
[0060] 参见图8,示出了根据本发明的原理的协调存储区分类700的方法。方法700协调 存储区分类,始于至少两个不同的存储区分类方法(例如,方法100 (表10)和方法600 (表 610)。第一方法100由图2表示以及第二方法由图7表示。在块712中,方法700协调不 同的分类方法(100和600)之间的存储区分类,并如果两个(或更多)分类方法产生不同 的结果则在块726产生不一致标志。这种不一致标志可用于提醒迀移工程师或系统管理员 一个或多个方法中的自动化决策逻辑做出不正确分类的可能性。警觉到该问题,迀移工程 师或系统管理员可以通过更详细地检查实际硬件和硬件状态而选择解决不一致。
[0061] 开始于存储区分类表10和610,块702评估一个或两个表的所有记录,直到完成。 在框704,从一个或两个表(10和610)选择一个或多个类似的记录,其中,在两者存在相似 记录的公共和预期情况下,需要两个记录具有相同的主机名和挂载点。在块706,执行是否 评估了所有记录的检查。如果已经全部被处理,则程序进行到方框708并终止。否则,在块 711确定是否只有一个分类结果存在(例如,1)只有一条具有特定主机名和挂载点的记录 存在,或2)只有一个类似记录具有分类)。
[0062] 如果在块711只有一个分类结果存在,状态标志(例如,1个结果)被写入到在协 调后的存储区分类表710(其中存储协调后的结果)中的比较状态表724。在块720,用于 主机名和挂载点的该唯一现有分类736被写到协调后的存储区分类表710。
[0063] 如果在块711中对于主机名和挂载点发现超过一个的结果,在块712确定分类是 否等价。如果分类是等价的,在块714中将等价标志写入到比较状态表724。在块716,将 主机名和挂载点的分类734写到协调后的存储区分类表710。
[0064] 如果在块712中分类不等价,在块728中,可从优选分类选择表730选择优选分类 732。其后,优选分类被写入到协调后的存储区分类表710中的比较状态表724。块728提 供了可确定是否存在不一致或可以解决以提供等效结果的逻辑。备选地,在方框728可使 用其它逻辑来分类记录(例如,当可用时,诸如"总是选择图7的优选分类"之类的规则)。 其他规则也可以适用。例如,因为RAID分类可能对于方法100是唯一的(如前面已说明的 那样),从分类方法600产生的类似记录可以被分类为Ldisk。在这种情况下,两个相似的 记录已被正确分类。但是,RAID分类比Ldisk分类更精确。因此,在块728的其它逻辑和 规则有机会解决在分类中的差异之后,比较状态724需要被写入到协调后的存储区分类表 710。不一致或等价标志的写入(作为比较状态724)分别取决于分类误差是否由一种方法 做出,或更精确的分类是否通过一种方法做出。
[0065] 不仅至少两个示例性方法之间的分类是不同的(由于表中的错误),而且硬件的 覆盖范围也可在它们之间变化。这些可由在发现中所实施的软件(例如,操作系统和级别、 文件系统)和硬件覆盖程度来初步确定。只有一种分类方法可例如产生结果。在图8中有 三个解析流程。所述方法逻辑通过导致分类732、734和736的三个流程之一,控制每个存 储区记录的分类。每个记录的分类被写入到协调后的存储区分类表710。
[0066] 分类置信度从分类734减小到分类736减小到分类732 (对于分类732,例外之处 是更精确,因为分类通过一种方法进行)。在第一分类734中,分类方法指示相同的分类结 果,并因此分类734的结果几乎肯定是正确的。在第二分类736中,只有一个分类结果是可 用的,所以它被写入。在第三分类732中,指示不一致,并且因此必须进行最佳选择。在第 三分类732中,可以根据块728中的"其它逻辑"选择缺省方法。例如,有时可优先于第一 分类方法而选择第二分类方法600(图7),因为在执行过程中,至少就分类物理磁盘而言, 它可比第一分类方法涉及较少的人为干预。根据优选的分类选择表730,也可希望保留方法 100的存储区分类,因为可以通过这样的方法实现像RAID的更具体的分类。
[0067] 优选的分类选择表730可包含在执行方法600期间获取的某些存储区分类以及在 执行方法600中获取的某些存储区分类。表730可最初由专家形成并后来通过专家经验修 改。进一步设想:存储区分类选择可取决于与每条记录(主机和挂载点对)关联的附加属 性。该方法可以在整个表产生附加产物。进一步设想:两种以上的方法(例如,多个方法) 可以集成到图8的决策逻辑,而实质上不改变根据本发明原理的决策流程。
[0068] 实施图2的示例性存储区分类方法100的如下结构化查询语言(SQL)查询现在将 示例性地给出作为示例。下面呈现SQL代码,用于记载图2的方法100的一些块的查询。 SQL代码被包括在本文中仅作为示例性实施。
[0069] 应当理解,使用任意命名约定(将被理解为出于说明目的)编写该查询。因此, 图2的目录表104在查询中被引用为"inventory_gal_unix",图2的安装表106在查询中 被引用为"middleware_install_gal",图2的服务表108在查询中被引用为"middleware_ service_gal",图2的对象表110在查询中被引用为"middleware_object_gal",以及图2 的依赖性表112在查询中被引用为"middleware_dependencies_gal"。同样,每个表格的前 缀"dbname"指示数据库名。
[0070] 以目前的形式,该SQL查询报告属性,除了在表10中发布并因此在本实施例中说 明的那些属性。查询中的所有属性是:[a]用于分类存储区的方法("METHOD");[b]在表 10 指出的主机名("client_host_name");[c]主机操作系统("client_os");[d]发现 状态("discovery_status_client");[e]如表 10 指出的挂载点("mountpoint"),[f] 第一属性("FS.fyi_mw_subclass");[g]文件系统("filesys_type");[h]以GB计的 文件系统大小("size_GB");[i]使用的文件系统的百分比("FS.pct_uSed");[j]所有 者("FS.owner");[k]所有者组("FS.owner_group");[1]权限("FS.permission"); [m]第二个属性("FS.name"); [η]表300中表示的已安装存储驱动器("install.mw_ distribution_name"); [ο]在表 10 和 300 中指出的分类("CLASSIFICATION")。
[0071] 如前所述,SQL "union"语句将各种子查询(通过对象表110解析NAS存储区或 跟踪路径)绑定在一起,如图3的存储数据模型200所示。"where"语句主要用于将表的操 作限于仅包括存储相关的对象。
[0072] 此后,已包括SQL实施例以至少部分地记录实现上述一些方法的逻辑/代码。注 意:出现在查询中的函数"sanitize_size_GB"规范化文件系统容量,以千兆字节为单位报 告文件系统容量。
[0073] select distinct ,NAS一FS一SORT,as METHOD, FS.host name as client host name, Server, os name as client-os, FS.discovery-status as discovery一status一client, FS. alias as mountpoint, FS.fyimwclass, FS.fyi mw subclass as fllesys_type, dbname. sanitize size_GB(FS. size) as size GB, FS.pctused, FS. owner, FS.owner group, FS.permission, FS.name, 'Not Relevant' as mw一distribution-name, fNASf as CLASSIFICATION from dbname. middleware object gal as FS, dbname. inventory gal unix as Server where FS.host name = Server.hostname and fyi mw class = 'FSf and object type = 'mount* and (fyi-mw subclass like 'NFS%' or fyi mw subclass like 'CIFS' or fyi mw subclass like fAFS %' or
[0074] fyi_mw_subclass like tDFS') union select distinct ,FSJDevFile_LVM_Disk_In, as METHOD, FS.host name as client_host_name, Server.os一name as client_os, FS.discovery status as discovery_status_client, FS. alias as mountpoint, FS.fyi_mw_class, FS.fyi_mw_subclass as filesys type, dbname.sanitize_size_GB(FS. size) as size_GB, FS.pctused, FS. owner, FS.owner group, FS.permission, FS .name, install. mw distribution name, diskname.type as CLASSIFICATION from dbname.middleware object gal as FS join dbname.middleware_dependencies_gal as FS2DeviceFileLink on FS.mwid_gal = FS2DeviceFileLink.this_mwid_gal join dbname.middleware_object_gal as DeviceFile on DeviceFiIe. mwid_gal = FS2DeviceFileLink.other_mwid_gal join dbname.middleware_dependencies_gal as DeviceFile2LVLink on DeviceFile. mwid gal = DeviceFile2LVLink.other_mwid_gal join dbname.middleware object gal as LV on LV.mwid gal = DeviceFile2LVLink.this_mwid gal join dbname.middleware dependencies gal as LV2DeviceFileLink on LV.mwid_gal = LV2DeviceFileLink.other_mwid_gal
[0075] join dbname.middleware object gal as DISK on LV2DeviceFileLink.this_mwid_gal = DISK.mwid gal join dbname.middleware service gal as service on service.mwid_^al = DISK,service mwid gal join dbname.middleware install gal as install on install.mwid_gal = service.INSTALL_MWID_GAL join dbname.inventory gal unix as Server on FS.hostname = Server.hostname left join dbname.diskname classified as diskname on diskname.name = install. mw_distribution_name where FS.host_name = Server.host-name and FS.fyi_mw_cLass = TS1 and FS. object type = 'mount' and DeviceFile. fyi mw class = 'FS' and DeviceFile. object type = fbdevf and DeviceFile2LVLink.direction = 'in* and LV.fyi_mw class = fBDEV and LV.fyi一mw一subclass = 'LVM, union select distinct ,FS_DevFile_LVM_Disk_Out, as METHOD, FS.host_name as client host_name, Server. os_ name as client一os, FS.discovery_status as discovery-status一client, FS. alias as mountpoint, FS.fyimw-class, FS.iyi mw subclass as filesys type,
[0076] dbname. sanitize_size_GB(FS. size) as size GB, FS.pct_used, FS. owner, FS.owner_group, FS.permission, FS.name, install.mw一distribution_name, diskname.type as CLASSIFICATION from dbname.middleware_object_gal as FS join dbname. middleware_dependencies_gal as FS2DeviceFiIeL!nk on FS2DeviceFileLink.this mwid gal = FS.mwid一gal join dbname.middleware object gal as DeviceFile on DeviceFile.mwid gal = FS2DeviceFiIeLink.other_mwid join dbname.middleware dependencies gal as DeviceFiIe2LVLink on DeviceFile2LVLink.other mwid gal = DeviceFile.mwid_gal join dbname.middleware object gal as LV on LV.mwid gal = DeviceFile2LVLink.this_mwid_gal join dbname.middleware dependencies gal as LV2DeviceFileLink on LV2DEviceFileLink.this mwid gal = LV.mwid_gal join dbname. middleware object gal as DISK on DISK.mwid gal = LV2DeviceFileLink.other mwidgal join dbname. inventory gal unix as Server on FS. hostname = Server.host name join dbname.middleware service gal as service on service. mwid_gal = DISK.service_mwid_gal join dbname.middleware install gal as install on install.mwid_gal = service.INSTALL MWID GAL left join dbname.diskname_classilled as diskname on diskname. name = install. mw_distribution_name
[0077] where FS.fyi_mw_class = 'FS* and FS.object_type = 'mount' and DeviceFile. fyi mw class = 'FSr and DeviceFile. object type = 'bdev' and LV.fyi_mw_class = ?BDEV and LV.fyi mw subclass = fLVM' and LV2DeviceFileLink. direction = fout? and DlSK.fyimwsubclass = 'DISK* union select distinct S_DevFile_Disk' as METHOD, FS.host name as client host name, Server. os_name as client-os, FS.discovery一status as discovery_status一client, FS. alias as mountpoint, FS . fy i_mw_class, FS.fyi_mw_subclass as filesys type, dbname.sanitize_size_GB(FS.size) as size_GB, FS.pct_used, FS. owner, FS.owner group, FS.permission, FS.name, install, mw distribution name, diskname.type as CLASSIFICATION from dbname.middleware_object_gal as FS join dbname.middleware dependencies gal as FS2DeviceFile on FS.mwid_gal = FS2DeviceFile.this_mwid_gal
[0078] join dbname.middleware_object_gal as DeviceFile on DeviceFile.mwid gal = FS2DeviceFile.other_mwid_gal join dbname.middleware_dependencies_gal as DeviceFile2DISK on DeviceFile.mwid gal = DeviceFile2DISK.other_mwid_gal join dbname.middleware object gal as DISK on DISK.mwid gal = DeviceFile2DISK.this_mwid gal join dbname.middleware service gal as service on service. mwid_gal = DISK.service_mwid_gal join dbname.middleware_install_gal as install on install.mwid gal = service.INSTALL_MWID_GAL join dbname.inventory gal unix as Server on FS.hostname = Server.host name left join dbname.diskname_classified as diskname on diskname.name = install.mw distribution-name where FS.fyi_mw_class = fFS' and FS.object type = 'mount' and DeviceFile.fyi一mw-class = 'FS' and DeviceFile. object type = 'bdev' and DISK.fyi mw_class='BDEV and DISK.fyi mw_subclass = 'DISK' and diskname. class = 'BDEV and diskname. subclass = tDISKf union select distinct ,FS Disk,as METHOD, FS.host name as client_host_name, Server.os_name as client os,
[0079] FS.discovery_status as discoveryjstatus_client, FS. alias as mountpoint, FS.fyi一mw_class, FS.fyi_mw_subclass as filesys type, dbname. sanitize size GB(FS. size) as size GB, FS.pctused, FS. owner, FS.owner_group, FS.permission, FS.name, install.mw distribution name, diskname.type as CLASSIFICATION from dbname.middleware object-gal as FS join dbname.middleware dependencies gal as FS2DISK on FS.mwid_gal = FS2DISK.other_mwid_gal join dbname.middleware_object_gal as DISK on DISK.mwid_gal = FS2DISK.this_mwid gal join dbname.middleware servicegal as service on service.mwid gal = DISK.service mwid gal join dbname. middleware install_gal as install on install. mwid_gal = semce.INSTALLJVTWID GAL join dbname.inventory_gal unix as Server on FS.hostname = Server .hostname left join dbname.diskname classified as diskname on diskname.name = install. mw_distribution_name where FS.fyi- niw-class = 'FS' and FS.object type = 'mount* and DISK.fyi_mw_subclass = 'DISK' and
[0080] DlSK.fyi_mw_subcIass = 'DISK' and diskname. class = tBDEV and diskname. subclass = fDISK1
[0081] 参考图9,将磁盘分类方法400和存储区分类方法100紧密集成改进了在存储记录 上呈现的每个分类的准确性(例如,文件系统的主机名称和挂载点),并且放大跨所有存储 记录的分类的覆盖范围。图9描述了示例性的紧密集成的方法800。方法800的描述将在 以后使用示例性SQL代码扩充。有关该方法800的一个重要观察在于,在块802中,在磁盘 分类表步骤中的查找分类是不被发现覆盖的分类的捕获步骤,需要该发现以响应在块410、 414和418中提出的问题。换句话说,如果发现代理或过程在收集可移除、IDE和WffID状态 (上面参考图5描述)中没有成功,这是因为它们在发现过程中未运行或由于合适的发现代 理对于特定的操作系统不存在(未设计),则在框802中的查找步骤可使用例如表300分类 存储区。
[0082] 在块836中的磁盘存储区链接将不是NAS的文件系统链接到磁盘对象(即,物理 磁盘)。从文件系统挂载点到磁盘的链接通过从框遍历到框进行,所述对象(在对象表110 中表示)沿流程线(在依赖性表112中表示),这两者都表示在图3的存储区数据模型200 中。换句话说,通过从文件系统挂载点经过任何中间文件系统对象到磁盘对象追踪表而进 行链接。
[0083] 由于在块836获取磁盘,在块802中的查找步骤首先链接到创建它的安装,例如, 存储驱动器。然后,已安装存储驱动器302可以查找磁盘分类表300以获得存储区分类304。 因此,存储区分类可链接回挂载点。从块802产生的分类可以包括[2]SAN、[3]Ldisk、[4] RAID、[5]可移除、[6]模糊或[7]未知。
[0084] 在块824中的存储区表形成步骤将由块114、412、416、420和802写入的结果合并 到存储区分类表10。因此,接下来将描述用于实现图9的方法800的SQL查询的一部分。
[0085] 需要注意:在此保留如上所述执行图2的示例性存储区分类方法100的SQL查询 的先前约定。这部分内容包括SQL代码:其记录表遍历,覆盖示例性"挂载点"对象到图3的 "disk"对象路径,FS_DevFile_LVM_Disk_In语句204。用于实现图9的方法的完整SQL代 码通过改变每个其他"挂载点"到"磁盘"路径进行设计,如将关于FS_DeVFile_LVM_Disk_ In路径204进行描述的那样。
[0086]SQL"union"语句将主要通过SQL"where"子句施加额外约束的不同子查询绑定 在一起。正如前面所描述的,"where"约束用于将表的操作限于仅包括存储相关的对象。 "where"语句提供进一步的限制,其将路径限于导向到特定分类(即,可移除或磁盘或SAN) 或表查找(例如,表300)。后缀已被添加以指定每个METHOD的目的(实际上,在这种情况 下,"METHOD"的列标题是子查询)。新的方法包括:
[0087] I)FS_DevFile_LVM_Disk_in_removable_>分类为可移除;
[0088] 2)FS_DevFile_LVM_Disk_in_IDE->分类为磁盘;
[0089] 3)FS_DevFile_LVM_Disk_in_ffffID->分类为SAN ;
[0090] 4) FS_DevFile_LVM_Disk_in_disk_Classification_Table_>在表300中查找磁 盘分类。
[0091] SQL以这样的方式编写:对每个可能的路径测试每个单独的记录。额外的 SQL "where"限制如下:l)FS_DevFileJL VM_Disk_in_removable是DISK, description like' % removable % '。对于2)FS_DevFile_LVM_Disk_In_IDE的其他SQL "where" 限制是a)DISK, description not like ' % removable % '和b)DISK, description like ' % IDE % '。对于3)FS_DevFile_LVM_Disk_In_ffffID的其他SQL限制是a)DISK. description not like' %removable% '和b)DISK, description not like' % IDE % '和c)DISK, description like ' % WffID % '。对于4)FS_DevFile_LVM_Disk_ In_Disk_Classification_Table的其他SQL限制是a)DISK. description not like'%removable%'和b)DISK. description not like' %IDE%'和c)DISK, description not like,^醫娜'。
[0092] 应当理解,字符串removable%'IDE%'和ffffID%'实际上不是 在主机系统上运行的发现脚本的主要输出,而是由中间解析过程附加的项(其可被认为是 发现引擎或分类器的一部分),其统一各种操作系统的各种字段和文件中发现的主要输出。 如根据表500 (图6)讨论的那样,针对该分类处理收集的主要输出通常对于每个操作系统 是唯一的。
[0093] FS_DevFile_LVM_Disk_In路径204的SQL查询如下:
[0094] select distinct ,FS_DevFiIe_LVM_Disk_In_Removable f as METHOD, FS.host_name as client host name, Server.os name as client os, FS.discovery status as discovery一status-client, FS. alias as mountpoint, FS . fyi mw class, FS.fyi_mw_subclass as filesys__type, dbname.sanitize_size_GB(FS.size) as size_GB, FS.pct-used, FS. owner, FS.owner group, FS.perniission, FS.name, install, mw distribution name, Removable' as CLASSIFICATION from dbname.middleware_object gal as FS join dbname.middleware_dependencies_gal as FS2DeviceFileLink on FS.mwid gal = FS2DeviceFileLirik.this_mwid_gal join dbname.middleware object_gal as DeviceFile on DeviceFile. mwid_gal = FS2DeviceFileLink.other_mwid_gal; join dbname.middleware dependencies-gal as DeviceFile2LVLink on De\iceFile. mwid_gal = DeviceFiIe2LVLink.other mwid gal join dbname.middleware object gal as LV
[0095] on LV.mwid gal = DeviceFileZLVLink.thisjmwid gal join dbname.middleware_dependencies_gal as LV2DeviceFileLink on LV.mwid gal = LV2DeviceFileLink.other _mwid_gal join dbname.middleware object gal as DISK on LV2DeviceFileLink.this_mwid_gal = DISK.mwid gal join dbname.middleware service gal as service on service, mwid gal -- DISK.service mwid gal join dbname.middlewarejinstall gal as install on install.mwid_gal = service. INSTALL_MWID_GAL join dbname.inventory gal unix as Server on FS.host一name = Server.host一name where FS.host_name = Server.host一name and FS.fyi_mw_class = 'FS' and FS. object type = 'mount' and DeviceFile.fyimwclass = 'FS1 and DeviceFile.object一type = 'bdev* and DeviceFile2LVLink.direction = 'in' and LV.fyi_mw_class = 'BDEV and LV.fyimwsub class = 1LVM1 and DISK.description like '%Removable%' union select distinct ,FS_DevFile_LVM_Disk_In_IDE* as METHOD, FS.host一name as client_host一name, Server.os-name as dient_os, FS.discovery status as discovery status-client, FS. alias as mountpoint,
[0096] FS.fyi_mw一class, FS.fyi_mw_subclass as filesys_type, dbname.sanitize一size一GB(FS.size) as size一GB, FS.pctused, FS. owner,FS.owner一group, FS.pennission, FS.name, install, mw distribution name, Ldisk* as CLASSIFICATION from dbname.middleware一object_gal as FS join dbname.middleware一dependencies一gal as FS2DeviceFileLink on FS.mwid_gal = FS2DeviceFileLink.this_mwid_gal join dbname.middleware-object一gal as DcviceFile on DeviceFiIe.mwid_gal = FS2DeviceFileLmk.other_mwid_gaI join dbname.middleware一dependencies一gal as DeviceFile2LVLink on DeviceFile.mwid_gal = DeviceFile2LVLink.other_mwid_ gal join dbname.middleware object gal as LV on LV.mwidAgal = DeviceFile2LVLink.this mwid gal join dbname.middleware dependencies gal as LV2DeviceFileLink on LV.mwid gal = LV2DeviceFiIeLink. other mwid gal join dbname.middleware-object-gal as DISK on LV2DeviceFileLink.this_mwid_gal = DISK.mwid_gal join dbname.middleware一service_gal as service on service, mwid gal = DISK.service mwid gal join dbname.middleware_install一gal as install on install.mwid gal = service. INSTALL MWID GAL join dbname.inventory gal unix as Server on FS.host_name = Server.host name
[0097] where FS.host_name = Server.hostjname and FS.fyi_mw_class = TSf and FS. object type = 'mount' and DeviceFile.fyi_mw_class = 'FSf and DeviceFile.object type =,bdev' and DeviceFile2LVLink. direction = in' and LV.fyi_mw_ class = fBDEV and LV.fyi_mw_ subclass = 'LVM' and DISK.description not like '%Removable%f and DISK.description like 'o/oIDE%' union select distinct FS DevFile LVM Disk In WWID' as METHOD, FS.host name as client host name, Server, os一name as.client os, FS.discovery status as discovery status client, FS. alias as mountpoint, FS.fyi-mw_class, FS.fyi mw-subclass as filesys type, dbname. sanitize size_GB(FS· size) as size一GB, FS.pctused, FS. owner, FS.owner group, FS. permission, FS.name, install, mw distribution name, 1SAN' as CLASSIFICATION from dbname.middleware一object一gal as FS
[0098] join dbname.middleware_dependencies_gal as FS2DeviceFileLink on FS.mwid gal = FS2DeviceFileLink.this_mwid_gal join dbname.middleware object gal as DeviceFiIe on DeviceFile. mwid gal = FS2DeviceFileLink.other mwid gal join dbname.middleware一dependencies gal as DeviceFile2LVLink on DeviceFiIe. mwid gal = DeviceFile2LVLink.other_mwid_gal join dbname.middleware object gal as LV on LV.mwid gal = DeviceFile2LVLink.this mwid gal join dbname.middleware dependencies_gal as LV2DeviceFileLink on LV.mwid_gal = LV2DeviceFileLink.other_mwid_gal join dbname.middleware object gal as DISK on LV2DeviceFi]eLink.this_mwid_gal = DISK.mwid gal join dbname.middleware_service_gal as service on service.mwid gal = DISK, service mwid_gal join dbname.middleware install gal as install on install.mwid_gal = service.INSTALL_MWID_GAL join dbname. inventory gal unix as Server on FS.host一name = Server, host-name where FS.host一name = Server.host_name and FS.fyimwclass = 'FS1 and FS.objec ype = f mount1 and DeviceFile. fyi_mw_class = TS1 and DeviceFile. object_type = 'bdev' and DeviceFile2LVLink. direction = 'in* and LV.fyi_mw_class = 'BDEV and LV.fyi mw subclass = *LVM' and DISK.description not like f%Removable%f and
[0099] DISK.description not like 'VoIDE%* and DISK.description like ^/?WWID%1 union select distinct <FS_DevFile_LVM_Disk_In_Disk Classification Table* as METHOD, FS.host name as client host name, Server.os一name as client_os, FS.discovery一status as discovery一status_client, FS. alias as mountpoint, FS.fyi_mw一class, FS.fyi mw subclass as filesys type, dbname.sanitize size GB(FS.size) as size GB, FS. pct_used, FS. owner, FS.owner group, FS.permission, FS.name, install.mw_distribution_name, diskname.type as CLASSIFICATION from dbname.middleware object gal as FS join dbname.middleware dependencies_gal as FS2DeviceFileLink on FS.mwid_gal = FS2DeviceFiLeLink.this_mwid_gal join dbname.middleware_object_gal as DeviceFile on DeviceFile.mwid gal = FS2DeviceFileLink.other mwidgal join dbname.middleware dependenciesgal as DeviceFile2LVLink on DeviceFile. mwid_gal = DeviceFile2LVLink.other mwid gal join dbname.middleware一object_gaI as LV on LV.mwid gal = DeviccFilc2LVLink.this mwid gal join dbname.middleware dependencies gal as LV2DeviceFileLink
[0100] on LV.mwidAgal = LV2DeviceFileLink.other_mwid_gal join dbname.middleware object gal as DISK on LV2DeviceFileLirik.this_mwid_gal = DISK.mwidgal join dbname.middleware service gal as service on service.mwid_gal = DISK.service mwid gal join dbname.middleware-install一gal as install on install.mwidgal = service.INSTALLMWIDGAL join dbname.inventory_gal_unix as Server on FS.hostname = Server .host_name left join dbname.diskname-classified as diskname on diskname. name = install. mw_distribution_name where FS.host name = Server.host name and FS.fyi_mw_class = fFSf and FS.objecttype = 'mount1 and DeviceFile.fyi mw class = 1FS1 and DeviceFile.object type = fbdev* and DeviceFile2LVLink. direction = 'in' and LV.fyi mw class = fBDEV and LV.fyimwsubclass = 'LVM1 and DISK, description not like '%Removable%f and DISK, description not like '%IDE%' and DISK.description not like '?/?WWID%*
[0101] 参考图10,系统900被示例性地描述以实施本发明的原理。但是应当理解,本原理 也可以执行于分布式系统或网络,并且可以包括一个或多个个体的输入。系统900以基本 的形式示出,并且可以被包括在较大的系统或网络中,可以在云计算节点中使用,可以用作 服务器或一组服务器,等等。这些实施例是示例性的合适应用,并非旨在暗示在此描述的实 施例的范围或功能的任何限制。无论如何,系统900能够被实施和/或执行本文所阐述的 任何功能。
[0102] 系统900可以用于众多其它通用或专用计算系统环境或配置。适合于系统900的 公知计算系统、环境和/或配置的示例可以包括(但不限于)个人计算机系统、服务器计算 机系统、瘦客户机、胖客户端、手持式或膝上型设备、基于微处理器的系统、机顶盒、可编程 消费电子产品、网络PC、小型机系统、大型计算机系统,数据中心和包括任何上述系统或设 备的分布式云计算环境等。
[0103] 系统900可以在由计算机系统执行的计算机系统可执行指令(诸如,程序模块) 的一般上下文中描述。通常,程序模块可以包括例程、程序、对象、组件、逻辑、数据结构等 等,它们执行特定任务或实现特定的抽象数据类型。系统900可以在分布式云计算或其它 网络环境中执行,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环 境或网络中,程序模块可以位于本地和包括存储器存储设备的远程计算机系统存储介质 中。
[0104] 系统900以通用计算设备的形式示出。计算机系统900的组件可以包括(但不限 于)一个或多个处理器或处理单元912、系统存储器914和耦合包括系统存储器914和处理 单元912的各种系统组件的总线916。
[0105]总线916表示任意多种类型的总线结构中的一个或多个,包括存储器总线或存储 器控制器、外围总线、加速图形端口,以及使用任何各种总线体系结构的处理器或局部总 线。通过示例的方式(而非限制),该体系结构包括工业标准体系结构(ISA)总线、微通道 体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、外围组 件互连(PCI)总线等。
[0106]计算机系统900可以包括各种计算机系统可读介质。该介质可以是通过计算机系 统900访问的任何可用的介质,并且它包括易失性和非易失性介质,可移动和不可移动介 质。
[0107]系统存储器914可以包括易失性存储器形式的计算机系统可读介质,诸如随机存 取存储器(RAM) 918和/或高速缓冲存储器920。计算机系统900还可以包括其他可移动 /不可移动、易失性/非易失性计算机系统的存储介质。仅仅通过示例的方式,系统存储器 914可以提供用于读取和写入不可移动、非易失性磁介质(例如,硬盘驱动器)。虽然未示 出,可以提供用于读取和写入可移动、非易失性磁盘(例如,"软盘")磁盘驱动器,以及用于 读出或写入可移动,非易失性光盘的光盘驱动器,诸如⑶-ROM,DVD-ROM或其它光学介质。 在这样的实例中,每个驱动器可以通过一个或多个数据介质接口连接到总线916。如将要进 一步描述的以及下面描述的,存储器914可以包括具有被配置成根据本发明原理的执行实 施例的功能的一组程序模块(例如,至少一个)的至少一个程序产品。
[0108]分类系统模块930可被存储在存储器914中。分类系统模块930可以包括例如操 作系统、一个或多个应用程序、其它程序模块和程序数据。该模块930可以包括分析工具或 用于非易失性或永久性存储器存储的分类和分配存储器的各种表的工具,如参照图1-9进 行说明。模块930执行如本文所述的实施例的功能和/或方法。
[0109]计算机系统900还可以与一个或多个输入/输出设备进行通信926,诸如键盘,指 示设备、显示器924等;,使用户能够与计算机系统900进行交互的一个或多个设备;和/ 或使计算机系统900与一个或多个其他计算设备进行通信的任何设备(例如,网络适配器 或卡928、调制解调器等)。计算机系统900可以通过网络适配器928与一个或多个外部设 备或网络922进行通信,诸如局域网(LAN)、广域网(WAN)、云和/或公共网络(例如,互联 网)。网络适配器928经由总线916与计算机系统的其它组件进行通信。
[0110] 应当理解,虽然未示出,也可以结合计算机系统900采用其它的硬件和/或软件模 块。示例包括(但不限于):微代码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、 RAID系统、磁带驱动器和数据档案存储系统等。在一个特别有用的实施例中,系统900采用 或用于存储区分类的数据中心环境中。
[0111] 在一个实施例中,模块930经配置以分析一个或多个数据中心950、952上的存储 系统或其他计算机系统。一个或多个计算机系统、服务器、服务器集合、网络或数据中心 950、952可以包括可以按本发明原理进行分类的多个不同的存储器硬件配置。数据中心 950和952可以是根据本原理的发现和分类方法的目标。但是应当理解,也可以构想其它存 储器存储系统、环境等。
[0112]在一个特别有用的实施例中,程序模块930包括发现引擎932,其经配置以发现一 个或多个文件在一个或多个计算机系统中(例如,在数据中心)的身份和位置。"文件"是 通用术语,是指并包括文件系统、文件目录(例如,UNIX实现目录为文件)、挂载点,对象存 储等。发现引擎932遍历存储器存储区系统,以识别具有存储内容或文件的存储设备的属 性。
[0113] 发现引擎932逻辑地发现文件(例如,挂载点),然后跟随链接到物理存储(例如, 通过逻辑卷、本地磁盘驱动器,参见图3)。这可以以逐文件的方式进行,直到所有的文件被 读取。发现引擎932采用至少一个分类器934以将文件分类成分类并将分类与相应文件相 关联。该分类可基于硬件或存储器类型、存储器的速度(例如,基于其上存储文件的位置), 存储器的位置等。分类器可以包括不同的方法(例如,方法100、方法400等),每个方法至 少产生被合并或组装成最佳分类结果的部分分类结果。分类结果可包括:当比较时被标记 的多个分类方法之间的差异比较(以提供任何差异的指示(例如,不一致、等价、1个结果, 等等))。
[0114] 发现和分类这两个过程相互交织。例如,已在图10的同一系统900上一起示出发 现引擎932和分类器(多个)934。其他系统可以在不同系统上具有发现引擎932和分类器 (多个)934。发现引擎932可以运行在一个或多个系统上,所述系统的存储属性需要被发 现然后被分类,而分类器(多个)934可以在分析系统上运行,其中已收集来自一个或多个 系统的发现结果。
[0115] 已经描述了用于存储区分类的系统和方法的优选实施例(其旨在是示例性的而 不是限制性的),应该注意,本领域技术人员可以根据上述教导做出修改和变化。因此,应当 理解,可以在公开的具体实施例中做出改变,其在由所附权利要求书概述的本发明的范围 之内。已经以专利法要求的细节和具体程度描述了本发明的各方面,在所附权利要求书中 提出了所要求和希望保护的事物。
【权利要求】
1. 一种在一个或多个计算机系统上执行的分类系统(900),包括: 处理器(912); 耦合到所述处理器的存储器(914),所述存储器包括: 发现引擎(932),其经配置以遍历非易失性存储器存储区,以通过跟踪从文件系统挂载 点经过文件系统对象并到磁盘对象的一个或多个文件,发现所述一个或多个文件在一个或 多个计算机存储系统中的身份和位置;以及 至少一个分类器(934),其经配置以将所述一个或多个文件分类成分类类别,所述一个 或多个文件被与所述分类类别关联并存储在至少一个数据结构中。
2. 如权利要求1所述的系统,其中,所述分类类别包括其上存储所述一个或多个文件 的存储器的类型以及所述一个或多个文件的位置。
3. 如权利要求1所述的系统,其中,所述分类类别包括如下的至少一个:网络附加存储 (NAS)、存储区域网络(SAN)、磁盘和可移除。
4. 如权利要求3所述的系统,其中,使用独立磁盘冗余阵列(RAID)分类,将所述磁盘的 分类类别进一步分类成保护和不受保护。
5. 如权利要求1所述的系统,其中,所述分类类别包括其中需要进一步的信息来确定 不同的分类类别类型的模糊类。
6. 如权利要求1所述的系统,其中,所述分类类别包括未知类。
7. 如权利要求1所述的系统,其中,所述至少一个分类器包括对象表和依赖性表中的 一个或多个以分析所述一个或多个文件。
8. 如权利要求1所述的系统,其中,使用已安装存储驱动器方法或物理磁盘分类方法 中的一个来分类所述一个或多个文件。
9. 如权利要求1所述的系统,其中,所述至少一个数据结构包括随每个已发现文件系 统记录有主机或服务器名称、挂载点和所述分类类别的存储区分类。
10. -种用于分类存储区的方法(100),包括: 发现(102) -个或多个文件在一个或多个计算机系统中的身份和位置; 通过跟踪从文件系统挂载点经过文件系统对象到磁盘对象的所述一个或多个文件而 解析存储区分类的类型,来将所述一个或多个文件分类(136)成多个分类类别;以及 在存储介质上存储的至少一个数据结构中,将所述一个或多个文件与所述分类类别相 关联(128)。
11. 如权利要求10所述的方法,其中,所述分类类别包括其上存储所述一个或多个文 件的存储器的类型以及所述一个或多个文件的位置。
12. 如权利要求10所述的方法,其中,所述分类类别包括如下的至少一个:网络附加存 储(NAS)、存储区域网络(SAN)、磁盘和可移除。
13. 如权利要求10所述的方法,其中,所述分类类别包括其中需要进一步的信息来确 定不同的分类类别类型的模糊类以及未知类。
14. 如权利要求10所述的方法,进一步包括:使用包括对象表和依赖性表的一个或多 个表解析所述一个或多个文件的身份和位置,以提供用于分类分析的数据。
15. 如权利要求10所述的方法,其中,分类包括:使用已安装存储驱动器分类方法或物 理磁盘分类方法,分类所述一个或多个文件。
16. 如权利要求15所述的方法,其中,分类包括使用所述已安装存储驱动器分类方法 和所述物理磁盘分类方法两者进行分类,并进一步包括: 比较(712)由所述已安装存储驱动器分类方法和所述物理磁盘分类方法两者生成的 相似记录;和 使用标志指示所述记录之间的相似性(714)或差异(726)。
17. 如权利要求16所述的方法,其中,如果没有对应记录存在,所述标志可包括等价、 不一致和单个结果中的一个。
18. 如权利要求10所述的方法,其中,关联所述一个或多个文件包括:将具有每个已发 现文件系统或物理磁盘以及具有主机或服务器名称、挂载点和所述分类类别的存储区分类 存储在存储区分类表中。
19. 一种包括用于分类存储区的计算机可读程序的计算机可读存储介质,其中,当在计 算机上执行时所述计算机可读程序使所述计算机执行以下步骤: 发现(102) -个或多个文件在一个或多个计算机系统中的身份和位置; 通过跟踪从文件系统挂载点经过文件系统对象到磁盘对象的所述一个或多个文件而 解析存储区分类的类型,来将所述一个或多个文件分类(136)成多个分类类别;以及 在存储介质上存储的至少一个数据结构中,将所述一个或多个文件与所述分类类别相 关联(128)。
20. 如权利要求19所述的计算机可读存储介质,其中,所述分类类别包括其上存储所 述一个或多个文件的存储器的类型以及所述一个或多个文件的位置。
21. 如权利要求19所述的计算机可读存储介质,其中,所述分类类别包括如下的至少 一个:网络附加存储(NAS)、存储区域网络(SAN)、磁盘和可移除。
22. 如权利要求19所述的计算机可读存储介质,其中,所述分类类别包括其中需要进 一步的信息来确定不同的分类类别类型的模糊类以及未知类。
23. 如权利要求19所述的计算机可读存储介质,进一步包括:使用包括对象表和依赖 性表的一个或多个表解析所述一个或多个文件的身份和位置,以提供用于分类分析的数 据。
24. 如权利要求19所述的计算机可读存储介质,其中分类包括:使用已安装存储驱动 器分类方法和物理磁盘分类方法分类所述一个或多个文件,所述计算机可读存储介质进一 步包括如下步骤: 比较(712)由所述已安装存储驱动器方法和所述物理磁盘分类方法两者生成的相似 记录;和 使用标志指示所述记录之间的相似性(714)或差异(726),其中,如果没有对应记录存 在,所述标志可包括等价、不一致和单个结果中的一个。
25. 如权利要求19所述的计算机可读存储介质,其中,关联所述一个或多个文件包括: 将具有每个已发现文件系统或物理磁盘以及具有主机或服务器名称、挂载点和所述分类类 别的存储区分类存储在存储区分类表中。
【文档编号】G06F17/30GK104508662SQ201380024978
【公开日】2015年4月8日 申请日期:2013年5月10日 优先权日:2012年5月10日
【发明者】N·尤科夫, A·M·帕拉卡, B·M·普费茨曼, W·R·雷奥尔, P·乌尔班内茨 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1