首页> 中国专利> 选择包括首要和次级群集上的端口的路径以用于将位于首要卷的数据传输到次级卷

选择包括首要和次级群集上的端口的路径以用于将位于首要卷的数据传输到次级卷

摘要

所提供的是一种用于选择包括首要和次级群集上的端口的路径的方法、系统和程序,所述路径用于将位于首要卷的数据传输到次级卷。接收将数据从首要存储位置拷贝到次级存储位置的请求。从多个首要群集中确定针对所述首要存储位置的拥有者首要群集,其中所述多个首要群集被配置为访问所述首要存储位置。确定在所述拥有者首要群集上是否存在至少一个端口,其提供到所述次级存储位置的可用路径。响应于确定在所述拥有者首要群集上存在至少一个端口,其可用于传输到所述次级存储位置,选择所述拥有者首要群集上的一个端口,以用于将数据拷贝到所述次级存储位置。

著录项

  • 公开/公告号CN101310250A

    专利类型发明专利

  • 公开/公告日2008-11-19

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN200680042775.9

  • 申请日2006-11-14

  • 分类号G06F3/06;G06F11/20;H04L29/08;

  • 代理机构北京市中咨律师事务所;

  • 代理人于静

  • 地址 美国纽约

  • 入库时间 2023-12-17 21:06:40

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2013-04-03

    授权

    授权

  • 2009-01-14

    实质审查的生效

    实质审查的生效

  • 2008-11-19

    公开

    公开

说明书

技术领域

本发明涉及用于选择包括首要和次级群集上的端口的路径以用于将位于首要卷的数据传输到次级卷的方法、系统和程序。

背景技术

存储网络中的主机系统可以通过多个路径与存储控制器通信。存储控制器可以包括单独的存储群集,其中每个存储群集能够访问存储装置并提供要访问存储装置的冗余。如果存储群集发生故障,则主机可以进行故障修复,使用其它存储控制器来访问存储装置。

在某些系统体系结构中,被写入首要存储系统中的首要卷的数据可以在位于次级存储系统的次级卷被镜像,以协助数据恢复和数据部署。典型地,当应用系统正将新数据写到首要存储设备时,这样的双重或影子拷贝被建立。国际商业机器公司(IBM)提供了用于在位于单独站点的次级卷镜像首要卷的扩展远程拷贝(XRC)和对等远程拷贝(PPRC)解决方案。这些系统提供了一种方法,用于将数据持续镜像到远程站点以便在从其持续地镜像数据的首要站点出现故障期间进行故障修复。这样的数据镜像系统还可以出于非恢复目的(诸如在远程站点的本地访问)而提供附加的远程拷贝。在这样的备份系统中,数据在卷对中被保存。卷对包括首要存储设备中的一个卷和次级存储设备中的对应卷,所述对应卷包括在首要卷中保存的数据的相同拷贝。

首要存储控制器可以保存关于卷对中的首要和次级卷的拷贝关系信息。首要存储控制器可以通过将首要卷数据传输到次级存储控制器来管理在次级卷上对首要卷的初始拷贝的建立,所述次级存储控制器用于管理对拷贝关系中的次级卷的访问。在初始拷贝建立后,接着首要存储控制器将对于卷对中的首要卷的更新传送到次级卷。

在首要存储控制器中的适配器(其可以位于不同的首要群集(处理复合体(complex)))和次级存储控制器(其也可以具有多个群集)中的适配器之间可以存在多个路径。在某些系统中,首要存储控制器可以使用加载均衡,以选择一路径用于将首要卷的数据传送到次级存储控制器,以便写入拷贝关系中的次级卷。

在本领域中存在对于下述改进技术的需要,所述技术用于选择路径用于在拷贝关系中的首要和次级卷之间传送数据。

发明内容

所提供的是一种用于选择包括首要和次级群集上的端口的路径的方法、系统和程序,所述路径用于将位于首要卷的数据传输到次级卷。接收将数据从首要存储位置拷贝到次级存储位置的请求。从多个首要群集中确定针对所述首要存储位置的拥有者首要群集,其中所述多个首要群集被配置为访问所述首要存储位置。确定在所述拥有者首要群集上是否存在至少一个端口,其提供到所述次级存储位置的可用路径。响应于确定在所述拥有者首要群集上存在至少一个端口,其可用于传输到所述次级存储位置,选择所述拥有者首要群集上的一个端口,以用于将数据拷贝到所述次级存储位置。

附图说明

现在将仅通过示例并参考以下附图来描述本发明的实施例:

图1示出了网络计算环境的实施例。

图2示出了存储控制器的实施例。

图3和4示出了用于选择首要和次级端口以用于传输数据的端口信息的实施例。

图5a、5b、6和7示出了用于选择首要和次级群集上的端口以用于在首要和次级卷之间传输数据的操作的实施例。

具体实施方式

图1示出了网络计算环境的实施例。多个主机2可以向首要存储控制器4提交输入/输出(I/O)请求,以访问位于首要存储装置8中的首要卷6(例如,逻辑单元号、逻辑设备等)的数据。首要存储控制器4包括两个或更多首要群集10a、10b(示出两个)。主机I/O请求可以被提交到群集10a或10b,以写入首要存储装置8。

每个首要群集10a、10b包括一个或更多网络适配器12a、12b、12c、12d(在每个群集10a、10b中示出两个),以提供在网络18上与次级存储控制器16中的两个或更多次级群集14a、14b的通信。每个次级群集14a、14b具有一个或更多网络适配器20a、20b、20c、20d(在每个群集14a、14b中示出两个),以使能在网络18上与首要群集10a、10b的通信。次级群集14a、14b管理对次级存储装置24中的卷22的访问。

存储控制器4、16可以包括本领域已知的存储控制器或者服务器,诸如国际商业机器(IBM)的Enterprise Storage Server(ESS)(EnterpriseStorage Server是IBM的注册商标)。可替换地,存储控制器可以包括相对于高端的企业存储服务器而言的低端存储服务器。每个存储控制器中的群集包括单独的处理系统,并且可以位于不同的功率边界并用单独的硬件组件实现,诸如在单独母板上实现的每个群集。主机2可以包括本领域已知的计算设备,诸如服务器、大型机、工作站、个人计算机、手持式计算机、膝上型计算机、电话设备、网络设备等等,它们能够将I/O请求传送到首要存储控制器4以访问首要存储装置8。主机2可以在网络18或者某种其它连接上连接到首要存储控制器4。网络18可以包括存储区域网络(SAN)、局域网(LAN)、内联网、因特网、广域网(WAN)、对等网络等等。首要8和次级24存储装置可以包括存储设备阵列,诸如简单磁盘捆束(JBOD)、直接存取存储设备(DASD)、独立磁盘冗余阵列(RAID)、虚拟化设备、磁带存储装置、闪速存储器等等。

图2示出了存储控制器50(诸如图1中示出的首要4和次级16存储控制器)中的组件的实施例。存储控制器50包括两个群集52a、52b,诸如群集10a、10b、14a、14b。每个群集52a、52b包括处理器复合体54a、54b、高速缓存56a、56b、以及非易失性存储单元(NVS)58a、58b,以便在高速缓存56a、56b中备份数据用于某些类型的写操作。群集52a、52b从主机2接收I/O请求,并且缓冲所述请求并将其各自的高速缓存56a、56b中的数据写入所附接的存储装置。每个群集10a、10b包括由处理器复合体54a、54b执行的存储管理软件60a、60b,以管理I/O请求。

存储管理软件60a、60b可以保存关于首要存储装置8中的首要卷6与次级存储装置24中的次级卷22(即,卷对)之间的拷贝关系的信息,从而对于关系中的首要卷6的任意更新被拷贝到该关系中的相应的次级卷22,从而该关系中的次级卷22保存相关联的首要卷6的镜像拷贝。在初始拷贝阶段,该关系中的首要卷6中的数据被异步地拷贝到次级卷8。例如,可以对首要卷6进行虚拟时间点拷贝,并且接着在虚拟拷贝(诸如IBMFlashCopy操作)中指示的数据被异步地从首要卷6拷贝到次级卷(IBM和FlashCopy是IBM的注册商标)。在初始拷贝阶段之后,对首要卷6的更新可以被同步地拷贝到次级卷22,从而当写数据处于拥有所述关系中的次级卷的次级群集14a、14b的高速缓存中、以及写数据的拷贝位于非拥有群集14a、14b的NVS中之时,针对更新返回完成。

总线62提供通信接口,用于使能群集52a、52b之间的通信。总线可以包括本领域已知的任意通信接口或者网络通信接口,所述任意通信接口诸如外围组件互连(PCI)总线或者其它总线接口,所述网络通信接口诸如广域网(WAN)、存储区域网络(SAN)、局域网(LAN)、因特网、无线网络等等。每个群集52a、52b进一步包括一个或更多适配器64a、64b,以使能在网络18上的通信以及提供到另一存储控制器中的群集的适配器的连接。专用于特定群集52a、52b的适配器64a、64b可以位于群集的母板的板上,或者位于插入到群集52a、52b的母板上的扩展卡槽中的扩展卡中。可替换地,适配器可以由群集共享。每个适配器64a、64b包括适配器逻辑66a、66b,以管理网络通信。每个适配器64a、64b可以包括一个或更多物理端口,以提供网络18中的单独连接。

群集52a、52b二者都能够在共享存储总线72上访问存储系统70a、70b中的卷68a、68b,所述共享存储总线72可以使用本领域已知的适当的存储通信接口。存储管理软件60a、60b还可以保存将成为所附接的存储装置70a、70b中的特定卷68a、68b的拥有者的群集52a、52b的分配,从而拥有者群集52a、52b通过高速缓存写数据以及执行针对卷的写入来处理对群集所拥有的这些卷68a、68b的写入。

图3示出了次级卷首要端口信息80的实施例,其提供了关于首要群集适配器12a、12b上的首要端口的信息,所述首要群集适配器12a、12b可被用于与次级群集14a、14b通信以访问所标识的次级卷22。信息80包括次级卷标识符(ID)82以及关于可被用于访问所标识的次级卷的首要端口的信息的列表84。此列表84中的每个条目可以包括首要端口ID 86a...86n、首要端口的状态88a...88n(活动或禁用),以及首要端口86a...86n所在的首要群集90a...90n,即,具有包括所标识的端口的适配器的首要群集90a...90n。此信息可以被保存用于与次级卷22的拷贝关系中的每个首要卷6,即卷对。

图4示出了次级卷次级端口信息100的实施例,其提供了关于次级群集适配器20a、20b、20c、20d上的次级端口的信息,所述次级群集适配器20a、20b、20c、20d可被用于与次级群集14a、14b通信以访问次级卷22。信息100包括次级卷标识符(ID)102以及关于可被用于访问所标识的次级卷的次级适配器20a、20b、20c、20d中的次级端口的信息的列表104。此列表104中的每个条目可以包括次级端口ID 106a...106n、次级端口的状态108a...108n,以及次级端口106a...106n所在的拥有者次级群集110a...110n,即,具有包括所标识的端口的适配器的次级群集。此信息可以被保存用于每个卷对。

图5a和5b示出了由首要群集10a、10b中的组件执行的操作,用于将作为初始拷贝或者随后的同步的一部分的数据从首要卷6拷贝到拷贝关系中的次级卷22。所述操作可以由首要群集中的存储管理软件60a、60b执行,或者由存储管理软件60a、60b和适配器逻辑66a、66b二者执行。响应于处理(在框200)将数据从首要存储位置(卷)6拷贝到次级存储位置(卷)22的请求,处理请求的存储管理软件60a、60b从多个首要群集10a、10b中确定(在框202)首要存储位置6的拥有者首要群集。拥有者首要群集10a、10b可以通过处理首要卷6的标识符号码来确定,因为此号码可以映射到拥有者首要群集10a、10b或者从拥有者首要群集10a、10b导出。可替换地,存储管理软件60a、60b可以保存将首要卷6关联于其拥有者首要群集10a、10b的表。接着确定(在框204)在拥有者首要群集适配器12a、12b、12c、12d上是否存在至少一个端口,其提供到次级卷的可用路径。存储管理软件60a、60b可以处理针对次级卷的条目80(图3),以接收数据以便确定是否存在一个首要端口86a...86n,其拥有首要群集90a...90n是所确定的进行拷贝操作的首要卷6的拥有者首要群集10a、10b,以及确定所确定的首要端口86a...86n之一是否具有活动的或可用的端口状态88a...88n,其指示出到次级存储控制器16的连接是运转的。

如果(在框204)在拥有具有要拷贝的数据的首要卷6的首要群集10a、10b的适配器12a、12b、12c、12d上不存在首要端口,则存储管理软件60a、60b选择(在框206)未拥有首要卷6的一个首要群集上的可用端口,以用于将数据拷贝到次级存储位置。如果存在多个端口可用,则存储管理软件60a、60b可以使用加载均衡算法或其它选择技术来选择可用端口。否则,如果(在框204)存在可用的首要端口,则选择(在框208)拥有者首要群集10a、10b上的一个可用端口,以用于将数据拷贝到次级存储卷22。

框210-218的操作可以由存储管理软件60a、60b或由适配器逻辑66a、66b执行。如果操作由适配器逻辑66a、66b执行,则拷贝请求被转发到所选择的端口,并且包括所选择的端口的适配器64a、64b中的适配器逻辑66a、66b执行框210-218的操作,以选择次级群集上的端口和路径,在所述路径上将传输数据以拷贝到次级卷22。

在框210,从多个次级群集中确定要接收数据的次级卷22的拥有者次级群集14a、14b。拥有者次级群集14a、14b可以通过处理针对次级卷22的标识符号码来确定,因为该号码可以映射到拥有者次级群集14a、14b。可替换地,存储管理软件60a、60b或适配器逻辑66a、66b可以保存将次级卷22关联于其拥有者次级群集14a、14b的表。接着确定(在框212)在所确定的拥有者次级群集适配器20a、20b、20c、20d上是否存在至少一个端口,其提供到次级卷22的可用路径。存储管理软件60a、60b或适配器逻辑66a、66b可以处理针对次级卷的条目100(图4),以接收数据以便确定是否存在一个次级端口106a...106n,其拥有首要群集110a...110n是所确定的要接收数据的次级卷22的拥有者次级群集14a、14b,以及确定所确定的次级端口106a...106n之一是否具有活动的或可用的端口状态108a...108n,其指示出到次级端口的连接是运转的。

如果(在框212)在拥有要接收数据的次级卷22的次级群集14a、14b的适配器20a、20b、20c、20d上不存在次级端口,则在未拥有次级卷22的一个次级群集14a、14b上选择(在框214)可用端口,以用于将数据拷贝到次级卷22。否则,如果(在框212)存在可用的次级端口,则在拥有者次级群集14a、14b上选择(在框216)一个可用的次级端口,以接收要写入次级存储卷22的数据。如果存在多个可用端口,则可以使用加载均衡算法来选择可用端口。其它选择技术可以被用于选择可用端口,例如循环法(round robin)等等。接着,要拷贝的数据在包括首要和次级群集中的适配器上的所选择端口的路径上被传输(在框218)。

通过图5a和5b所描述的操作,选择标准优选地选择分别拥有要进行拷贝操作的首要和次级卷的首要和次级群集上的适配器上的端口。如果在拥有首要和次级卷的首要和次级群集上存在多个可用端口,则加载均衡可以被用于选择具有分别拥有首要和次级卷的首要和次级群集上的端口的路径。

在一实施例中,存储管理软件60a、60b可以执行框200-208的操作,并接着将拷贝请求转发到包括所选择端口的适配器12a、12b、12c、12d。接着,接收拷贝请求的适配器卡上的适配器逻辑66a、66b可以执行框210-218的操作,以选择要使用的一个次级群集14a、14b上的次级端口,并接着在包括所选择的首要和次级端口的路径上传输针对次级卷22的数据。

图6示出了由存储管理软件60a、60b单独执行或者结合适配器逻辑66a、66b执行的操作的实施例,所述操作用于将数据从首要卷6传输到拷贝关系中的次级卷22以建立初始镜像拷贝。一旦启动(在框250)执行初始拷贝操作以便异步地将数据从首要卷6传送到拷贝关系中的次级卷22的操作,存储管理软件60a、60b创建(在框252)要拷贝到次级卷的首要卷的虚拟拷贝,诸如IBM FlashCopy。虚拟拷贝可以包括具有针对要拷贝的首要卷中的每个磁道的位的位图以及其它管理信息。在位图中指示的磁道接着被异步地拷贝到卷对中的次级卷,并且当磁道被拷贝之时该位被设置。存储管理软件60a、60b以及可能还有的适配器逻辑66a、66b执行(在框254)图5a和5b中的框202-216的操作,以在首要和次级群集(优选地为拥有者首要和次级群集)上选择端口。接着具有所选择的首要端口的适配器在包括所选择端口的路径上将数据传输(在框256)到一个次级群集14a、14b(优选地为拥有者次级群集)。

框258-262示出了由接收要写入的数据的次级群集14a、14b中的存储管理软件60a、60b所执行的操作。如果(在框258)拥有者次级群集14a、14b接收了要写入的数据(其中拥有者次级群集可以从目标次级卷中确定),则拥有者次级群集14a、14b高速缓存(在框260)所接收的数据,并返回(在框262)完成。在之后某个时间,数据从高速缓存56a、56b(图2)转储清除(flush)到次级卷22。否则,如果(在框258)非拥有者次级群集接收了要写入的数据,则非拥有者群集将数据发送(在框264)到拥有者次级群集14a、14b,并且控制进行到框260,其中拥有者次级群集高速缓存数据。图6的操作包括异步拷贝,因为当数据被高速缓存时,针对写操作返回完成。在被镜像拷贝到次级存储控制器16的首要卷6中的所有数据从高速缓存转储清除到次级存储装置24之后,将针对初始拷贝返回完成。

图7示出了在初始拷贝被建立之后拷贝对于拷贝关系中的首要卷6的更新的操作的实施例。一旦启动(在框300)将对于首要卷6的更新同步地拷贝到拷贝关系中的次级卷22的操作,存储管理软件60a、60b执行(在框302)图5a中的框202-208的操作,以选择首要群集(优选地为首要卷的拥有者首要群集)上的首要端口。存储管理软件60a、60b(或适配器逻辑66a、66b)接着可以使用加载均衡来选择(在框304)包括首要群集上的所选择端口和任意一个次级群集上的一个可用端口的路径。在可替换实施例中,图5a和5b中的框210-216的操作可以被用于选择路径中的次级端口。具有所选择的首要端口的首要适配器12a、12b、12c、12d在所选择的路径上将数据传输(在框306)到一个次级群集14a、14b。

框308-312示出了由接收要写入的数据的次级群集14a、14b中的存储管理软件60a、60b所执行的操作的实施例。如果(在框308)拥有者次级群集14a、14b接收了要写入的数据(其中拥有者次级群集可以从目标次级卷号码中确定),则拥有者次级群集14a、14b在其高速缓存56a、56b中高速缓存(在框310)所接收的数据,并将数据的拷贝发送到其它次级群集中的NVS 58a、58b。接着在拷贝被存储在NVS 58a、58b之后,返回(在框312)完成。在之后某个时间,数据从高速缓存56a、56b(图2)转储清除到次级卷22。否则,如果(在框308)非拥有者次级群集接收了要写入的数据,则非拥有者群集将要写入的数据存储(在框314)到NVS 58a、58b,并且将数据的拷贝发送到拥有者次级群集,以存储到拥有者高速缓存56a、56b中。

所述的实施例提供了以下技术,所述技术用于选择群集的适配器上的端口,以用于将首要卷的数据传输到拷贝关系中的次级卷,以改进拷贝性能。在某些实施例中,优选地在分别拥有在拷贝操作中涉及的首要和次级卷的首要和次级群集上选择端口,以便避免不得不执行将数据从非拥有者群集传送到拥有该卷的群集的额外操作。

附加的实施例细节

所述操作可以被实现为方法、装置或制品,所述方法、装置或制品使用标准编程和/或工程技术来产生软件、固件、硬件或它们的任意组合。所描述的操作可以实现为“计算机可读媒体”中保存的代码,其中处理器可以从所述计算机可读媒体中读取并执行所述代码。计算机可读媒体可以包括以下媒体,例如磁存储媒体(例如硬盘驱动器、软盘、磁带等等)、光存储装置(CD-ROM、DVD、光盘等等)、易失性和非易失性存储器设备(例如EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪速存储器、固件、可编程逻辑等等)。实现所述操作的代码还可以用硬件逻辑(例如集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等等)实现。而且,实现所述操作的代码可以用“传输信号”实现,其中传输信号可以通过空间或通过传输媒体(诸如光纤、铜线等等)来传播。对代码或逻辑进行了编码的传输信号可以进一步包括无线信号、卫星传输、无线电波、红外信号、蓝牙等等。对代码或逻辑进行了编码的传输信号能够由发射站发射并由接收站接收,其中在传输信号中进行编码的代码或逻辑可以在接收站和发射站或设备上的硬件或计算机可读媒体中被解码和存储。“制品”包括可实现代码的计算机可读媒体、硬件逻辑和/或传输信号。对实现所述操作的实施例的代码进行了编码的设备可以包括计算机可读媒体或硬件逻辑。当然,本领域技术人员将会了解,在没有脱离本发明的范围的情况下,可以对这种配置做出很多修改,并且所述制品可以包括本领域中已知的适当的信息承载媒体。

除非以别的方式明确规定,否则术语“一实施例”、“实施例”、“若干实施例”、“该实施例”、“这些实施例”、“一个或更多实施例”、“某些实施例”以及“一个实施例”都是指本发明的一个或更多实施例(但并不是全部实施例)。

除非以别的方式明确规定,否则术语“包括(including)”、“包括(comprising)”、“具有”及其变体都意味着“包括但不局限于”。

除非以别的方式明确规定,否则所列举的项目列表并不意味着任何或所有项目是互斥的。

除非以别的方式明确规定,否则术语“一”、“一个”和“该”全都意味着“一个或更多”。

除非以别的方式明确规定,否则,相互通信的设备不需要在相互之间进行连续通信。此外,相互通信的设备可以直接通信,或者通过一个或更多中介进行间接通信。

结合若干个相互通信的组件来对实施例进行的描述并不意味着需要所有这些组件。相反,多种可选的组件被描述,以便说明关于本发明的大量的可能实施例。

此外,虽然可以按照连续顺序来描述过程步骤、方法步骤、算法等等,但是这些过程、方法和算法也可以被配置成按照可替换的顺序工作。换句话说,任何可被描述的步骤顺序或序列并不必然表示所述步骤需要按照该顺序来执行。这里描述的过程的步骤可以按照任何实际顺序来执行。此外,某些步骤可以被同时执行。

当在这里描述单个设备或制品的时候,很明显,可以用一个以上的设备/制品(无论它们是否进行协作)来替换单个设备/制品。同样,如果在这里描述了一个以上的设备或制品(无论它们是否进行协作),很明显,可以用单个设备来替换一个以上的设备或制品,或者可以用不同数量的设备/制品来替换所示数量的设备或程序。可替换地,设备的功能和/或特征可以由一个或更多未被明确描述成具有所述功能/特征的其它设备来实现。因此,本发明的其它实施例不需要该设备自身。

图3和4提供了在首要和次级端口上保存的信息的实施例,以使能对具有拥有拷贝关系中的首要和次级卷的首要和次级群集上的端口的路径的选择。在可替换实施例中,信息可以以不同类型的数据结构、连同用于选择针对I/O操作的路径的附加或不同信息一起保存。

图5a、5b、6和7描述的操作示出了按照某种顺序出现的某些事件。在可替换实施例中,某些操作可以依照不同顺序执行、修改或移除。此外,可以在上述逻辑中添加步骤,并且这些步骤仍旧符合所描述的实施例。此外,这里所述的操作可以顺序地出现,或者某些操作可以被并行地处理。而且,这些操作可以由单个处理单元执行,或者由分布式处理单元执行。

上文中对本发明各种实施例的描述是出于说明和描述目的而给出的。其并非意图进行穷举,或是将本发明限制在所公开的确切形式。根据上述教导,很多的修改和变化都是可行的。本发明的范围并非由此详细描述所限制,而是由权利要求所限定。上述说明、示例和数据提供了制造和使用本发明中的成分的完整描述。由于本发明的很多实施例都可以在不脱离本发明的精神和范围的情况下实现,因此本发明存在于所附的权利要求中。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号