用于分布式集群存储网络的动态资源分配的制作方法

文档序号:7914097阅读:310来源:国知局
专利名称:用于分布式集群存储网络的动态资源分配的制作方法
技术领域
本发明涉及存储控制器系统,更具体地说,本发明涉及实现为包含多个节点、并且内嵌缓存功能的分布式集群(cluster)的存储控制器系统,例如IBM SAN卷控制器(IBM 是IBM公司在美国和/或其他国家的注册商标)。
背景技术
本发明集中关注该系统中两种功能(转发层和用于提供写缓冲资源的缓存)的交互以及这两种功能如何处理I/O请求。理解本发明需要对这些内容进行说明。转发层允许在系统中的任何节点上接收I/O请求,并将此请求转发到实际负责服务该请求的另一节点。在可扩展以包括许多节点的系统中,通常使用此技术以使成员节点分担整个系统的工作,并且允许每个节点只负责处理整个系统的工作的子集。此技术允许使用较简单的算法,并且这些算法也倾向于更容易地扩展以在较大的系统中执行。这与允许系统中的任何节点处理任何请求、尤其是其中需要相对于系统中其他节点接收的其他请求一致地处理这些请求的算法形成对照。当处理转发的I/O请求时,转发节点一般仍参与I/O过程。具体而言,转发节点仍负责执行到/来自主机的数据传输,并将完成状态发送给主机,即使根据其对I/O请求的处理,转发目标节点是该数据和状态的源和/或宿。有时可能完全移交请求,这样在转发请求之后,转发节点不用进一步对请求负责,交换成为纯粹在请求发起方和转发目标节点之间的交换。但是,由于连接发起方主机和转发节点/转发目标节点的结构(fabric)基础设施施加的限制和/或接口连接转发节点和所述结构的适配技术中的限制,所以此功能并非始终可行。具体而言,用于写命令的过程要求转发节点请求主机将数据发送到该节点中的缓冲区,然后将该缓冲区的内容发送到转发目标节点内的进一步的缓冲区。一种实现此发送的方案包括以下步骤(参考图2)200.主机将I/O写请求发送到第一节点202.第一(转发)节点将请求转发到第二(转发目标)节点204.第二节点决定处理,分配接收数据的缓冲区,然后将数据请求发送到第一节
占206.第一节点分配缓冲区,然后将数据请求发送到主机208.主机发送数据,并且数据被接收到206处定义的第一节点的缓冲区中210.通知第一节点完成数据传送,并开始将数据传送到204处定义的第二节点的缓冲区212.通知第二节点完成数据传送,并使用已接收数据恢复处理写I/O请求需要指出,预分配接收数据的缓冲区是诸如基于光纤通道(FibreCharmel)的存储网络中的重要操作要求。还需指出,这些缓冲区的较昂贵,这意味着它们需要在处理I/O 请求时明确分配给该I/O请求,而非被假设可用。因此,在上面的序列中,主机不会在200随请求一起发送写数据;而是等待,直到在206要求其发送数据。类似地,转发节点不会发送数据,直到转发目标节点要求其这样做。这种行为有助于防止结构中出现数据在发送之后由于接收方缺少缓冲而无法被接收的阻塞情况,并且这种行为是一种可以区分如何在存储网络内执行数据传送以及如何以传统方式执行数据传送的重要特征。但是上述方案的一个结果是,与其中I/O完全在第一节点内处理的等效过程相比,整个I/O过程包括的步骤更多,并且从开始到结束的用时更长,该等效过程包括以下步骤(参考图3)300.主机将I/O写请求发送到第一节点302.第一节点决定处理,分配接收数据的缓冲区,然后将数据请求发送到主机304.主机发送数据,并且数据被接收到302处定义的第一节点的缓冲区中306.通知第一节点完成数据传送,并且使用已接收数据恢复处理写I/O请求针对数据交换的额外准备会对主机的总处理时间产生巨大影响,可能是必须等待 I/O请求的时间的三倍(与本地处理情况相比),并且可能造成整体系统性能方面的巨大代价。可以使用下面的步骤序列缩短这种额外的处理时间(参考图4)400.主机将I/O写请求发送到第一节点402.第一节点分配缓冲区,然后将数据请求发送到主机404.主机发送数据,并且数据被接收到402处定义的第一节点的缓冲区中406.第一(转发)节点将请求和数据一起转发到第二(转发目标)节点408.第二节点使用已接收数据处理I/O请求上述序列避免了 I/O过程期间为实现数据传输第一节点和第二节点之间的额外消息交换,与第一序列相比,这样可显著改善状况。这种更精简的过程确实需要在处理I/O 之前执行某些额外工作,以便满足存在缓冲区空间来执行306处的数据传输的要求。转发目标节点必须将权限(一般称为“信用”)发送给转发节点,该信用允许转发节点在以后发送一定数量的写数据,并且转发节点必须接收到这种信用才能执行所述发送。发送会消耗信用,因此当转发目标节点执行并完成I/O过程,并且缓冲区空间再次空闲时,它必须针对预期的进一步的I/O创建进一步的信用并将其发送到转发节点。诸如IBM SAN卷控制器(下文称为“SVC” )之类的缓存控制器内的缓存功能实现非易失性写缓存,由此它通过将请求数据放入非易失性存储器(最经常位于两个节点内), 然后立即完成主机1/0,来处理写I/O。在以后的某一时刻,它会使数据“降级”(destage), 此操作涉及将对该数据的写命令发送到作为该数据的常规位置的盘。当收到对该写命令的确认时,可以将数据从非易失性存储器内容中删除。主机看到其I/O请求的响应时间远短于请求被直接发送到盘情况下的响应时间,从而提高了系统性能。非易失性缓存适当地适应于在数据存储系统中提供写缓冲区资源。但是避免立即发出该写命令是很常见的。通过这种方式可实现多种优点。例如, 如果主机接下来发送针对同一位置的进一步的写I/O请求,则可以通过使用后写入的数据替换现有数据来处理该新的写I/O请求。在以后的某一时刻,当执行写降级时,只需将最新数据修订版发送到盘,从而节省了执行的盘操作的数量。另一重要优点是当主机应用产生大量写I/O的猝发时,可以迅速将其接收到非易失性写缓存中,并且将I/O猝发转发到可能需要长得多的时间来处理整个猝发的盘。因此, 主机的工作猝发的完成速度比需要等待磁盘的情况下的完成速度更快得多,从而再次提高了系统性能。但是,如果主机的工作负载在很长时间内超出支持盘子系统的能力,这种方案可能引起问题。例如,当盘子系统出现故障,并进入降低性能模式时,可能会出现问题。在这种情况下,控制器内的高速缓冲存储器空间会耗尽,并且在这种情况下,写I/O处理必须等待将由降级写操作完成产生的可用空间。这些写操作中的很多实际上将需要等待缓慢的控制器处理写1/0(因为正是缓慢的控制器占用大部分写缓存),因此有可能所有正在处理的 I/O由于仅仅一个支持盘中的缓慢的I/O处理而被积压。此问题的解决方案是限制任何一个支持盘子系统可以占用的高速缓冲存储器的数量。当执行此方案时,I/O不会在被接收时自动获得授予的缓冲区空间。具体而言,如果写I/O发往被判定为已占用其合理系统资源份额的盘,则暂停对该写I/O的处理,直到该盘所占用的系统资源份额和/或其处理I/O的能力发生变化,从而判定其有资格被授予进一步的资源。在此期间,允许其他被处理的、到可接受地处理I/O以及已占用资源量少于其有资格占用资源量的盘子系统的I/O请求继续。在SVC内实现的缓存功能是许多缓存控制器的缓存功能的典型,因为对于任何给定的主机卷(vdisk),它只能在系统的一个或两个节点上支持I/O。转发层在缓存层“之上” 使用(从而转发层在缓存层之前处理给定的主机I/O),因此,这允许系统中的所有节点接收针对vdisk的1/0,并且该I/O随后被转发到能够处理该I/O的最多两个节点之一。现在观察上述优化转发方案与所述缓存分区算法交互时会发生什么情况。在所述缓存算法能够判定盘子系统所占用的资源量是否大于其合理份额之前,所述优化转发方案提前分配相对较少的缓冲资源。如果所述缓存算法执行延迟I/O处理,则它阻止I/O占用更多缓存资源,但是该I/O已经占用了转发节点内的缓冲区空间。这可迅速导致转发节点用尽缓冲区空间而不能服务于任何I/O请求。这意味着出现了尝试通过缓存分区方案解决的同一问题,尽管这里耗尽的是转发节点的转发缓冲区资源,而不是转发目标节点的缓存缓冲区资源。上面参考图2描述的较慢转发算法不会出现这种问题。它会在步骤204等待缓存决定处理1/0,然后才将缓冲区资源提交给请求,这样它只将缓冲区资源分配给其盘子系统被判定为值得分配更多资源的I/O。但是此机方案显著延长了 I/O的处理时间。现在需要可以最短响应时间处理转发的写1/0,但是不会导致在这些I/O的子集运行很慢时由于资源用尽而产生的问题的技术。

发明内容
因此,本发明在第一方面提供了一种可以在具有主计算机系统和存储子系统的分布式集群存储网络中运行的装置,包括多个存储控制节点,每个节点可通过运行响应于来自所述主计算机系统的请求,将数据写入存储装置;位于所述多个存储控制节点中的第一节点上的转发层,可通过运行将数据转发到所述多个存储控制节点中的第二节点;位于所述多个存储控制节点中的每个节点上的缓冲区控制组件,可通过运行为要写入所述存储装置的数据分配缓冲区资源;以及位于所述多个存储控制节点中的每个节点上的所述缓冲区控制组件和所述转发层之间的通信链路,可通过运行将所述缓冲区资源的限制状态指示符 (indicator)发送到所述转发层。所述装置可以进一步包括模式选择器组件,所述模式选择器组件响应于在所述转发层接收到所述限制状态指示符,选择写操作的限制模式,所述操作限制模式要求在所述第一存储控制节点可通过运行分配用于所述数据的缓冲区资源以及转发所述数据之前,在所述第二存储控制节点上分配缓冲区资源并且通知所述分配。优选地,位于所述多个存储控制节点中的每个节点上的所述缓冲区控制组件和所述转发层之间的所述通信链路进一步可通过运行将所述缓冲区资源的非限制状态指示符发送到所述转发层。优选地,所述模式选择器组件响应于在所述转发层上接收到所述非限制状态指示符,选择写操作的非限制模式,所述操作非限制模式将所述存储控制节点中的所述第二节点提供的预定资源信用的使用权授予所述第一节点并允许将写请求和所述数据一起从所述存储控制节点中的所述第一节点转发到所述第二节点。优选地,所述分布式集群存储网络包括存储虚拟化控制器。在第二方面,提供了一种运行具有主计算机系统和存储子系统的分布式集群存储网络的方法,包括以下步骤在所述多个存储控制节点中的第一节点上接收将数据从所述主计算机系统写入存储装置的请求;由所述多个存储控制节点中的所述第一节点上的转发层将所述数据转发到所述多个存储控制节点中的第二节点;由所述多个存储控制节点中的每个节点上的缓冲区控制组件为要写入所述存储装置的数据分配缓冲区资源;以及将所述缓冲区资源的限制状态指示符发送到所述转发层。所述方法可以进一步包括响应于在所述转发层上接收到所述限制状态指示符,选择写操作的限制模式,所述操作限制模式要求在所述第一存储控制节点可通过运行分配用于所述数据的缓冲区资源以及转发所述数据之前在所述第二存储控制节点上分配缓冲区资源并且通知所述分配。所述方法可以进一步包括使用位于所述缓冲区控制组件和所述转发层之间的通信链路将所述缓冲区资源的非限制状态指示符发送到所述转发层。所述方法可以进一步包括响应于在所述转发层上接收到所述非限制状态指示符,选择写操作的非限制模式,所述操作非限制模式将由所述存储控制节点中的所述第二节点提供的预定资源信用的使用权授予所述存储控制节点中的所述第一节点并允许将写请求和所述数据一起从所述存储控制节点中的所述第一节点转发到所述第二节点。优选地,运行所述分布式集群存储网络包括运行存储虚拟化控制器。在第三方面,提供了包括计算机程序代码的计算机程序,所述计算机程序代码当被加载到计算机系统并在上面执行时,将导致所述计算机系统执行根据第二方面的方法的所有步骤。因此,本发明的优选实施例在缓冲区控制层和转发层之间引入新的通信。本质上, 缓存功能发送指示特定I/O集合是否迅速得到处理、或者它们是否因为底层子系统的积压而被延迟处理的状态。该指示发送到所有节点,并且在这些节点上使用以控制转发层处理写请求的方式。当通知转发层在不延迟的情况下处理I/O时,转发层会使用更快的方案,立即分配缓冲区并向主机请求数据,并且会将数据和I/O请求一起转发以最小化额外的处理时间。当通知转发层延迟处理I/O时,转发层将仅转发请求消息,并且仅在接收到明确
7的数据请求时分配缓冲区,该请求也用于指示该特定I/O过程已被授予资源和有资格被处理。


现在将参考附图,仅作为示例描述本发明的优选实施例,在所述附图中图1示出根据本发明的优选实施例的装置的安排;图2至4示出根据现有技术的操作方法的步骤;以及图5和6示出根据本发明的优选实施例的操作方法的步骤。
具体实施例方式在优选SVC实施例中,负责从非易失性缓存提供缓冲区资源的缓冲区控制组件维护每Vdisk (主机卷)级别上的状态,所述状态指示该Vdisk是否在“限制资源”模式下运行(从而已知资源用尽),或者对于为新的主机I/O分配资源来说是否允许vdisk在“非限制资源”模式下运行。SVC集群基础结构被用于将此状态通知给所有节点上的转发层。在每个节点内,在需要转发的情况下,转发层使用此状态在两个完全分离的用于处理写I/O的路径之间做出判定(在接收主机I/O的节点也是能够运行缓存功能的节点之一的情况下,直接将I/O传送到缓存,根本不需要转发层分配任何缓冲区,并且不需要使用此处的算法)。参考图1,其示出包括主机102的系统100,主机102可通过运行与一对存储控制节点(节点1、节点幻104、106进行通信以将数据从主机102写入存储子系统108中保持的存储装置。存储控制节点104、106可通过运行使用缓冲区资源110、112来保留写数据,之后再将写数据降级到存储子系统108中保持的存储装置。存储控制节点104、106进一步包括可通过运行转发写数据的转发层118、120。存储控制节点104、106进一步包括控制缓冲区资源110、112的缓冲区控制组件114、116。缓冲区资源110、112不时地受到资源限制。 存储控制节点104、106配备有位于缓冲区控制组件114、116和转发层118、120之间的通信链路122、124,以便传送指示缓冲区资源110、112中的一个或多个目前受到资源限制、或者替代地指示缓冲区资源110、112中的一个或多个目前不受这种资源限制的指示符。转发层 118、120进一步配备有模式选择器126、128,用于响应于通过通信链路122、IM接收到指示符而选择操作模式,从而在“限制资源”操作模式和“非限制资源”操作模式之间进行选择。在“限制资源”模式下,流程如下所示(参考图5)500.主机将I/O写请求发送到第一节点502.第一(转发)节点将所述请求转发到包含能够针对该vdisk处理I/O的缓存功能的第二(转发目标)节点504.第二节点的缓存层决定处理,分配接收数据的缓冲区,然后将数据请求发送到第一节点506.第一节点分配缓冲区,然后将数据请求发送到主机508.主机发送数据,并且数据被接收到506处定义的第一节点的缓冲区中510.通知第一节点完成数据传送,并开始将数据传送到504处定义的第二节点的缓冲区
512.通知第二节点完成数据传送,并且缓存层使用已接收数据恢复处理写I/O请求在“非限制资源”模式下,在处理I/O之前有一个额外的设置流程(参考图6)600.第二(转发目标)节点分配一些缓冲区资源602.第二节点将信用发送给第一(转发)节点,授权该节点发送定义数量的写数据然后在实际接收I/O时执行以下写I/O流程604.主机将I/O写请求发送到第一节点606.第一节点分配缓冲区,并将数据请求发送到主机608.主机发送数据,然后数据被接收到606处定义的第一节点的缓冲区中610.第一(转发)节点将请求和数据一起转发到包含能够针对该vdisk处理I/O 的缓存功能的第二(转发目标)节点612.通知第二节点接收到I/O请求和数据,并且缓存层使用已接收数据处理I/O 请求完成I/O请求之后,使用被释放的缓冲区资源重复设置循环并针对将来的I/O为转发节点提供新的信用。信用消息可以最优地附着(piggyback)在沿相同方向流动的其他消息上以便最小化由此引起的开销。分布式I/O系统领域的技术人员将理解,这些流程所使用的资源需要充分地分离,以避免由于不同路径以不同次序分配相同资源而出现的死锁。本领域的技术人员将理解,本发明的优选实施例可在工业上应用,以便在运行分布式集群存储网络时提供有利的效率。本领域的技术人员将理解,本发明的优选实施例中的方法的部分或全部可以适当地及有用地体现在一个逻辑装置或多个逻辑装置中,所述逻辑装置包括被安排为执行方法步骤的逻辑元件,并且此类逻辑元件可以包括硬件组件、固件组件或它们的组合。本领域的技术人员同样将理解,根据本发明的优选实施例的逻辑安排的部分或全部可以适当地体现在一个包括执行方法步骤的逻辑元件的逻辑装置中,且此类逻辑元件可以包括例如位于可编程逻辑阵列或专用集成电路中的逻辑门之类的组件。此类逻辑安排可以进一步体现在用于使用例如虚拟硬件描述语言临时或永久地在此类阵列或电路中建立逻辑结构的使能元件中,所述虚拟硬件描述语言可以使用固定的或可传输的承载介质进行存储和传输。将理解,上述方法和安排还可以适当地在一个或多个处理器(图中未示出)上运行的软件中全部地或部分地执行,并且将理解,所述软件可以通过位于诸如磁盘或光盘等之类的任何适当的数据载体(图中也未示出)上的一种或多种计算机程序元素的形式提供。用于传输数据的通道同样可以包括所有类型的存储介质以及信号承载介质,例如有线或无线信号承载介质。方法通常被认为是实现所需结果的前后一致的步骤序列。这些步骤要求对物理量进行物理操作。一般而言(尽管并非一定),这些物理量采取能够被存储、传输、组合、比较以及以其他方式操作的电信号或磁信号的形式。主要出于常用的原因,有时方便地将这些信号称为位、值、参数、项目、元素、对象、符号、字符、项、数量等。但需要指出,所有这些术语和类似的术语与相应的物理量关联并且只是应用于这些物理量的适当标签。本发明可以进一步适当地体现为用于计算机系统的计算机程序产品。这种实施方式可以包括一系列计算机可读指令,所述计算机可读指令既可以固定在有形介质,例如,诸如软盘、CD-ROM、ROM或硬盘之类的计算机可读介质上,也可以使用调制解调器或其他接口设备,通过包括但不限于光通信线路或模拟通信线路之类的有形介质传输到计算机系统, 或者使用包括但不限于微波、红外线或其他传输技术的无线技术无形地传输到计算机系统。计算机可读指令系列体现本文前面所述的全部或部分功能。本领域的技术人员将理解,此类计算机可读指令可以使用若干与很多种计算机体系结构或操作系统结合使用的编程语言进行编写。进一步地,此类指令可以使用现在或将来的任何存储技术进行存储,所述存储技术包括但不限于半导体、磁或光,或者使用现在或将来的任何通信技术进行传输,所述通信技术包括但不限于光、红外线或微波。可以构想此类计算机程序产品能够作为附带打印或电子文档的可移除介质分发,例如,作为预加载到计算机系统,例如,位于系统ROM或固定盘上的套装软件,或者通过例如因特网或万维网之类的网络,从服务器或电子公告板发行。作为一种替代,本发明的优选实施例可以通过计算机实现的服务部署方法的形式实现,所述服务部署方法包括部署计算机程序代码的步骤,所述计算机程序代码当被部署到计算机基础设施并在上面执行时,可通过运行导致所述计算机系统执行所有方法步骤。作为进一步的替代,本发明的优选实施例可以通过上面具有功能数据的数据载体的形式实现,所述功能数据包括功能计算机数据结构,所述功能计算机数据结构当被加载到计算机系统并在上面执行时,将使所述计算机系统执行所有方法步骤。本领域的技术人员将理解,在不偏离本发明范围的情况下,可以对上述示例性实施例做出许多改进和修改。
权利要求
1.一种可以在具有主计算机系统和存储子系统的分布式集群存储网络中运行的装置, 该存储子系统具有多个存储控制节点,每个节点可通过运行响应于来自所述主计算机系统的请求,将数据写入存储装置,包括位于所述多个存储控制节点中的第一节点上的转发层,可通过运行将数据转发到所述多个存储控制节点中的第二节点;位于所述多个存储控制节点中的每个节点上的缓冲区控制组件,可通过运行为要写入所述存储装置的数据分配缓冲区资源;位于所述多个存储控制节点中的每个节点上的所述缓冲区控制组件和所述转发层之间的通信链路,可通过运行将所述缓冲区资源的限制状态指示符发送到所述转发层。
2.如权利要求1中所述的装置,进一步包括模式选择器组件,所述模式选择器组件响应于在所述转发层上接收到所述限制状态指示符,选择写操作的限制模式,所述操作限制模式要求在所述第一存储控制节点可通过运行分配用于所述数据的缓冲区资源以及转发所述数据之前在所述第二存储控制节点上分配缓冲区资源并且通知所述分配。
3.如权利要求1或权利要求2中所述的装置,位于所述多个存储控制节点中的每个节点上的所述缓冲区控制组件和所述转发层之间的所述通信链路进一步可通过运行将所述缓冲区资源的非限制状态指示符发送到所述转发层。
4.如权利要求3中所述的装置,所述模式选择器组件响应于在所述转发层上接收到所述非限制状态指示符,选择写操作的非限制模式,所述操作非限制模式将所述存储控制节点中的所述第二节点提供的预定资源信用的使用权授予所述第一节点并允许将写请求和所述数据一起从所述存储控制节点中的所述第一节点转发到所述第二节点。
5.如上述任一权利要求中所述的装置,其中所述分布式集群存储网络包括存储虚拟化控制器。
6.一种运行具有主计算机系统和存储子系统的分布式集群存储网络的方法,包括以下步骤在所述多个存储控制节点中的第一节点上接收将数据从所述主计算机系统写入存储装置的请求;由所述多个存储控制节点中的所述第一节点上的转发层将所述数据转发到所述多个存储控制节点中的第二节点;由所述多个存储控制节点中的每个节点上的缓冲区控制组件为要写入所述存储装置的数据分配缓冲区资源;将所述缓冲区资源的限制状态指示符发送到所述转发层。
7.如权利要求6中所述的方法,进一步包括,响应于在所述转发层上接收到所述限制状态指示符,选择写操作的限制模式,所述操作限制模式要求在所述第一存储控制节点可通过运行分配用于所述数据的缓冲区资源以及转发所述数据之前在所述第二存储控制节点上分配缓冲区资源并且通知所述分配。
8.如权利要求6或权利要求7中所述的方法,进一步包括使用位于所述缓冲区控制组件和所述转发层之间的通信链路将所述缓冲区资源的非限制状态指示符发送到所述转发层。
9.如权利要求8中所述的方法,进一步包括,响应于在所述转发层上接收到所述非限制状态指示符,选择写操作的非限制模式,所述操作非限制模式将所述存储控制节点中的所述第二节点提供的预定资源信用的使用权授予所述第一节点并允许将写请求和所述数据一起从所述存储控制节点中的所述第一节点转发到所述第二节点。
10.如权利要求6至9中任一权利要求中所述的方法。其中运行所述分布式集群存储网络包括运行存储虚拟化控制器。
11.一种包括计算机程序代码的计算机程序,所述计算机程序代码当被加载到计算机系统并在上面执行时,将导致所述计算机系统执行根据权利要求6至10中任一权利要求中的方法的所有步骤。
全文摘要
分布式集群存储网络中的一种装置、方法和计算机程序,所述装置包括根据主机的请求将数据写入存储装置的存储控制节点;位于第一节点上的转发层,用于将数据转发到第二节点;位于每个节点上的缓冲区控制器,用于为要写入的数据分配缓冲区;以及位于每个节点上的所述缓冲区控制器和所述转发层之间的通信链路,用于将所述缓冲区资源的限制状态指示符或非限制状态指示符发送到所述转发层。模式选择器选择要求在所述第一节点可以分配缓冲区和转发数据之前在所述第二节点上分配缓冲区资源并且通知所述分配的操作限制模式,或者将所述第二节点提供的预定资源信用的使用权授予所述第一节点并允许转发写请求和数据的操作非限制模式。
文档编号H04L12/56GK102577278SQ201080046958
公开日2012年7月11日 申请日期2010年8月26日 优先权日2009年10月19日
发明者C·F·芬特, J·E·林德利, W·J·斯凯尔斯 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1