一种热插拔故障恢复方法及分布式设备与流程

文档序号:18600890发布日期:2019-09-03 22:38阅读:517来源:国知局
一种热插拔故障恢复方法及分布式设备与流程
本发明涉及数据通信
技术领域
,具体而言,涉及一种热插拔故障恢复方法及分布式设备。
背景技术
:随着网络技术的不断发展,人们对网络的可靠性、灵活性要求越来越高。需要在核心节点处使用高端分布式设备网络设备,以加快设备的运行速度和减少负载压力。分布式设备在进行业务板卡(包括线卡、交换卡等)热插拔时,一旦某个模块的处理流程发生异常,就有可能导致该业务板卡不能够继续加载或卸载,甚至造成主控卡上的相关任务死循环、信号量死锁或任务挂起等故障,最终导致整个设备系统故障。实际使用中,当业务板卡运行出错或自动重启时,在主控卡上就会出现业务板卡热插拔的动作。为了保证分布式设备的高可靠性,就产生了对业务板卡热插拔故障恢复的需求。针对业务板卡热插拔时出现的故障,现有技术中,针对故障的解除,理论上有不恢复故障业务板卡和自动恢复故障业务板卡两种做法。但是,不恢复故障业务板卡的时效性太差,自动恢复故障业务板卡可能使得整个设备系统更不稳定,甚至造成整个设备系统重启的严重问题,不能保证整个设备系统的高可靠性。技术实现要素:本发明提供了一种热插拔故障恢复方法及分布式设备,旨在当设备主控卡上出现业务板卡热插拔时,有效提高对业务板卡热插拔故障恢复的能力以及设备的可靠性。第一方面,本发明实施例提供的一种热插拔故障恢复方法,应用于分布式设备,所述分布式设备包括两个主控卡和至少一个业务板卡,所述两个主控卡的其中一个作为主用主控卡,另一个作为备用主控卡,所述方法包括:对所述至少一个业务板卡进行遍历,在所述遍历过程中检测到出现过加载故障的业务板卡在位时,判断所述出现过加载故障的业务板卡是否已进行过预设次数的故障恢复;如是,禁用所述出现过加载故障的业务板卡;否则,重启所述出现过加载故障的业务板卡进行再次加载。优选地,所述对所述至少一个业务板卡进行遍历的步骤之前,所述方法还包括:依次接收所述至少一个业务板卡发送的加载请求,对所述至少一个业务板卡进行加载,记录每个业务板卡已进行过加载故障恢复的次数,并将每个业务板卡的数据信息备份到所述备用主控卡;分别对每个业务板卡的加载过程进行健康检测,判断每个业务板卡是否出现加载故障;当任意一个业务板卡在加载过程中出现加载故障时,重启所述主用主控卡,在所述主用主控卡和所述备用主控卡之间进行主备倒换,并将出现过加载故障的业务板卡进行卸载隔离。优选地,所述分别对每个业务板卡的加载过程进行健康检测,判断每个业务板卡是否出现加载故障的步骤中,所述方法包括:计算对每个业务板卡进行加载的加载时间,并判断所述加载时间与预设时间的大小关系;当所述加载时间小于所述预设时间时,判断所述业务板卡加载正常,并停止对该业务板卡的加载过程进行健康检测;当所述加载时间大于所述预设时间时,判断所述业务板卡出现了加载故障。第二方面,本发明实施例提供的一种热插拔故障恢复方法,应用于分布式设备,所述分布式设备包括两个主控卡和至少一个业务板卡,所述两个主控卡的其中一个作为主用主控卡,另一个作为备用主控卡,所述方法包括:对所述至少一个业务板卡进行遍历,当检测到出现过卸载故障的业务板卡在位时,判断所述出现过卸载故障的业务板卡是否已进行过预设次数的卸载故障恢复;如是,禁用所述出现过卸载故障的业务板卡;否则,重启所述出现过卸载故障的业务板卡进行再次加载。优选地,所述对所述至少一个业务板卡进行遍历的步骤之前,所述方法还包括:侦测对所述业务板卡进行卸载的操作;当侦测到对一业务板卡进行卸载的操作时,判断所述操作是否是重启该业务板卡;所述操作是重启该业务板卡时,将该业务板卡的数据信息备份到所述备用主控卡;对该业务板卡的卸载过程进行健康检测,判断该业务板卡是否出现卸载故障;当该业务板卡出现卸载故障时,重启所述主用主控卡,在所述主用主控卡和所述备用主控卡之间进行主备倒换,将出现卸载故障的业务板卡进行卸载隔离。优选地,所述判断所述操作是否是重启该业务板卡的步骤之后,所述方法还包括:当所述操作不是重启该业务板卡时,对所述业务板卡进行卸载后禁用所述业务板卡。优选地,所述对业务板卡的卸载过程进行健康检测,判断每个业务板卡是否出现卸载故障的步骤中,所述方法包括:计算对每个业务板卡进行卸载的卸载时间,并判断所述卸载时间与预设时间的大小关系;当所述卸载时间小于所述预设时间时,判断所述业务板卡卸载正常,并停止对该业务板卡的卸载过程进行健康检测;当所述卸载时间大于所述预设时间时,判断所述业务板卡出现了卸载故障。第三方面,本发明实施例提供的一种分布式设备,用于对该分布式设备的业务板卡加载故障进行恢复,所述分布式设备包括两个主控卡和至少一个业务板卡,所述两个主控卡的其中一个作为主用主控卡,另一个作为备用主控卡,所述分布式设备主用主控卡包括:热插拔模块,用于对所述至少一个业务板卡进行遍历,在所述遍历过程中检测到出现过加载故障的业务板卡在位时,判断所述出现过加载故障的业务板卡是否已进行过预设次数的故障恢复;故障恢复模块,用于在所述出现过加载故障的业务板卡没有进行过预设次数的故障恢复时,重启所述出现过加载故障的业务板卡进行再次加载;在所述出现过加载故障的业务板卡进行过预设次数的故障恢复时,禁用所述出现过加载故障的业务板卡。优选地,所述主用主控卡还包括:所述热插拔模块,用于依次接收所述至少一个业务板卡发送的加载请求,对所述至少一个业务板卡进行加载;热备份模块,用于记录每个业务板卡已进行过加载故障恢复的次数,并将每个业务板卡的数据信息备份到所述备用主控卡;健康检测模块,用于分别对每个业务板卡的加载过程进行健康检测,判断每个业务板卡是否出现加载故障;及重启模块,用于当任意一个业务板卡在加载过程中出现加载故障时,重启所在的主用主控卡;所述备用主控卡包括主备倒换模块,用于当主用主控卡重启时,控制所述主用主控卡和所在的备用主控卡之间进行主备倒换,并将出现过加载故障的业务板卡进行卸载隔离。优选地,所述健康检测模块还用于计算对每个业务板卡进行加载的加载时间,并判断所述加载时间与预设时间的大小关系;当所述加载时间小于所述预设时间时,判断所述业务板卡加载正常,并停止对该业务板卡的加载过程进行健康检测;当所述加载时间大于所述预设时间时,判断所述业务板卡出现了加载故障。第四方面,本发明实施例提供的一种分布式设备,用于对该分布式设备的业务板卡卸载故障进行恢复,所述分布式设备包括两个主控卡和至少一个业务板卡,所述两个主控卡的其中一个作为主用主控卡,另一个作为备用主控卡,所述分布式设备主用主控卡包括:热插拔模块,用于对所述至少一个业务板卡进行遍历,当检测到所述出现过卸载故障的业务板卡在位时,判断所述出现过卸载故障的业务板卡是否已进行过预设次数的卸载故障恢复;故障恢复模块,用于在所述出现过卸载故障的业务板卡没有进行过预设次数的卸载故障恢复时,重启所述出现过卸载故障的业务板卡进行再次加载;并用于在所述出现过卸载故障的业务板卡已进行过预设次数的卸载故障恢复时,禁用所述出现过卸载故障的业务板卡。优选地,所述分布式设备主用主控卡还包括:热插拔模块,用于侦测对所述业务板卡进行卸载的操作;当侦测到对一业务板卡进行卸载的操作时,判断所述操作是否是重启该业务板卡;热备份模块,用于当所述操作是重启该业务板卡时,将该业务板卡的数据信息备份到所述备用主控卡;健康检测模块,用于对该业务板卡的卸载过程进行健康检测,判断该业务板卡是否出现卸载故障;及重启模块,用于当该业务板卡出现卸载故障时,重启所在的主用主控卡;所述备用主控卡包括主备倒换模块,用于在所述主用主控卡和所在的所述备用主控卡之间进行主备倒换,将出现卸载故障的业务板卡进行卸载隔离。优选地,所述故障恢复模块还用于当所述操作不是重启该业务板卡时,对所述业务板卡进行卸载后禁用所述业务板卡。优选地,所述健康检测模块,还用于计算对每个业务板卡进行卸载的卸载时间,并判断所述卸载时间与预设时间的大小关系;当所述卸载时间小于所述预设时间时,判断所述业务板卡卸载正常,并停止对该业务板卡的卸载过程进行健康检测;当所述卸载时间大于所述预设时间时,判断所述业务板卡出现了卸载故障。本发明实施例提供的一种板卡热插拔故障恢复方法及分布式设备,通过判断业务板卡是否出现加载故障或卸载故障,以及根据出现过加载故障或卸载故障的业务板卡是否已进行过预设次数的故障恢复,并对出现过加载过故障或卸载故障的业务板卡按照预设次数进行有条件地恢复,既能保证故障恢复的可能性,也能保证设备的可靠性和稳定性。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应该看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1是本发明实施方式提供的一种分布式设备的示意图。图2是本发明实施方式提供的一种分布式设备的功能模块框图。图3是本发明实施方式提供的一种分布式设备业务板卡热插拔故障恢复的方法的流程图。图4是本发明实施方式提供的另一种分布式设备业务板卡热插拔故障恢复的方法的流程图。图5是本发明实施方式提供的一种对业务板卡故障能够恢复的概率与尝试恢复次数的关系曲线图。图中标记分别为:分布式设备100热插拔模块101故障恢复模块102热备份模块103健康检测模块104主备倒换模块105重启模块106具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。如图1所示,是本发明实施例提供的一种分布式设备100的示意图,所述分布式设备100可以包括两个主控卡和至少一个业务板卡。当所述两个主控卡的其中一个作为主用主控卡时,另一个作为备用主控卡。所述主用主控卡和所述备用主控卡相互之间可进行主备倒换。本实施例中,所述两个主控卡分别为MPU0和MPU1,当所述MPU0作为主用主控卡时,所述MPU1作为备用主控卡。当所述MPU0作为备用主控卡时,所述MPU1作为主用主控卡。所述业务板卡分别表示为LPU0、LPU1和LPU2。所述MPU0和MPU1均可对业务板卡LPU0、LPU1和LPU2进行访问和控制。如图2所示,是所述分布式设备100的功能模块框图。本实施例中,所述分布式设备100可以包括热插拔模块101、故障恢复模块102、热备份模块103、健康检测模块104、主备倒换模块105和重启模块106,上述各功能模块相互配合用于对分布式设备100出现的业务板卡热插拔故障,如卸载故障和加载故障,进行有限次数的恢复,既能保证业务板卡故障能最大概率的被恢复也能保证分布式设备100的系统稳定性,具体方法将在以下进行详细描述。下面结合图3和图4对上述各功能模块进行详细描述。如图3所示,示出了本发明实施方式提供的一种分布式设备业务板卡热插拔故障恢复的方法,图3所示的方法用于对分布式设备100的业务板卡加载故障进行恢复。如图4所示,示出了本发明实施方式提供的另一种分布式设备业务板卡热插拔故障恢复的方法,用于对分布式设备100的业务板卡卸载故障进行恢复。其中,图3所示的分布式设备业务板卡热插拔故障恢复的方法可以包括以下步骤。步骤S101:依次接收所述至少一个业务板卡发送的加载请求,对所述至少一个业务板卡进行加载,记录每个业务板卡已进行过加载故障恢复的次数,并将每个业务板卡的数据信息备份到所述备用主控卡。本实施例中,所述步骤S101可由所述热插拔模块101和热备份模块103执行。其中,可设置一计数值用于记录每个业务板卡进行过加载故障的恢复次数。每个业务板卡对应的所述计数值在启动加载时自加1,并在加载成功后被清零。其中,在分布式设备100被启动后,所述MPU0首先被选为主用主控卡,所述MPU1作为备用主控卡。所述热插拔模块101依次接收所述业务板卡LPU0、LPU1和LPU2发送的加载请求,根据所述加载请求分别对所述业务板卡LPU0、LPU1和LPU2进行加载。另外,热备份模块103将所述用于记录每个业务板卡进行过加载故障的恢复次数记录于业务板卡信息库中,以便对出现过加载故障的业务板卡进行相应的恢复。并将每个业务板卡的数据信息从所述MPU0批量同步备份到所述MPU1。步骤S102:分别对每个业务板卡的加载过程进行健康检测,判断每个业务板卡是否出现加载故障。本实施例中,所述步骤S102可由所述健康检测模块104执行。其中,所述健康检测的具体过程可以是,但不限于以下过程。在每个业务板卡进行加载时,首先计算对每个业务板卡进行加载的加载时间。然后判断所述加载时间与预设时间的大小关系。当所述加载时间小于所述预设时间时,判断所述业务板卡的加载过程为正常状态,并关闭健康检测,以停止对该业务板卡进行健康检测。当所述加载时间大于所述预设时间时,判断所述业务板卡的加载过程出现了加载故障,所述健康检测的过程无法停止,会导致所述加载时间持续增加,从而根据该加载时间即可判断业务板卡是否出现了加载故障。步骤S103:当任意一个业务板卡在加载过程中出现加载故障时,重启所述主用主控卡,在所述主用主控卡和所述备用主控卡之间进行主备倒换,并将出现过加载故障的业务板卡进行卸载隔离。本实施例中,所述步骤S103可由所述主备倒换模块105和重启模块106执行。其中,当所述至少一个业务板卡中的任意一个业务板卡在加载过程中出现加载故障时,所述重启模块106对MPU0进行重启。同时所述主备倒换模块105将主用主控卡由MPU0切换为MPU1。并将出现过加载故障的业务板卡进行卸载隔离。步骤S104:对所述至少一个业务板卡进行遍历,在所述遍历过程中检测到出现过加载故障的业务板卡在位时,判断所述出现过加载故障的业务板卡是否已进行过预设次数的故障恢复。若所述出现过加载故障的业务板卡没有进行过预设次数的故障恢复,执行步骤S105,否则执行步骤S106。本实施例中,所述步骤S104可由所述热插拔模块101执行。其中,所述MPU1作为主备倒换后的主用主控卡,对所述业务板卡LPU0、LPU1和LPU2进行遍历,检测出现过加载故障的业务板卡(例如,LPU1)是否在位。当检测到出现过加载故障的业务板卡在位时,判断所述出现过加载故障的业务板卡是否已进行过预设次数的故障恢复。本实施例中,所述业务板卡信息库中存储有与所述业务板卡对应的计数值,所述计数值用于记录所有在位业务板卡的状态。例如,当所述在位业务板卡对应的计数值为0时,表示该业务板卡在主备倒换前为正常工作的业务板卡或已经卸载成功的业务板卡,不需要对其进行恢复。当所述在位业务板卡对应的计数值为1时,表示该业务板卡在主备倒换前为故障业务板卡,需要对其重启尝试恢复。当所述在位业务板卡对应的计数值大于1时,表示该业务板卡在主备倒换前为故障业务板卡,并且已经尝试恢复过一次,在恢复时再次出现故障,导致本次主备倒换。因此可以不对这种业务板卡进行恢复,因为恢复过一次未成功,再次恢复的成功率会大大降低并可能导致系统不稳定。当然,其它实施例中,也可以设置当所述标识大于2时,再禁止之后的恢复操作。步骤S105:如不是,重启所述出现过加载故障的业务板卡进行再次加载,以进行加载故障的恢复。本实施例中,所述步骤S105可由所述故障恢复模块102执行。其中,当判断出所述出现过加载故障的业务板卡没有进行过预设次数的故障恢复时,所述主用主控卡可控制重启所述出现过加载故障的业务板卡进行再次加载,以对该业务板卡进行尝试恢复。由于对业务板卡进行尝试恢复的成功概率与尝试恢复次数的关系如图5所示。为了提高分布式设备100的可靠性和稳定性,所述预设次数可以选为1、2或3。本实施例中,所述预设次数优选为1。即仅对业务板卡尝试恢复一次。S106:如是,禁用所述出现过加载故障的业务板卡。本实施例中,所述步骤S106可由所述故障恢复模块102执行。其中,当判断出所述出现过加载故障的业务板卡进行过预设次数的故障恢复时,所述主用主控卡(如MPU1,倒换后的主用主控卡)可发出告警信息,并禁用所述出现过加载故障的业务板卡。进一步地,图4所示的分布式设备业务板卡热插拔故障恢复的方法可以包括以下步骤。步骤S201:侦测对所述业务板卡进行卸载的操作。本实施例中,所述步骤S201可由所述热插拔模块101执行。例如,本实施例中,假设所述MPU0作为主用主控卡,所述MPU1作为备用主控卡。所述MPU0实时对所述业务板卡LPU0、业务板卡LPU1和业务板卡LPU2进行卸载的操作进行侦测。步骤S202:当侦测到对一业务板卡进行卸载的操作时,判断所述操作是否是重启该业务板卡。本实施例中,所述步骤S202可由所述热插拔模块101执行。步骤S203:当所述操作是重启该业务板卡时,将该业务板卡的数据信息备份到所述备用主控卡。本实施例中,所述步骤S203可由所述热备份模块103执行。其中,当所述MPU0侦测到对所述业务板卡LPU0、业务板卡LPU1和业务板卡LPU2的任意一个进行卸载的操作为重启时,将该业务板卡的数据信息备份到所述备用主控卡。步骤204:对该业务板卡的卸载过程进行健康检测,判断该业务板卡是否出现卸载故障。本实施例中,所述步骤S204可由所述健康检测模块104执行。其中,作为当前主用主控卡的所述MPU0对该业务板卡的卸载过程进行健康检测,并判断该业务板卡是否出现卸载故障。本实施例中,所述健康检测的具体过程可以是,但不限于以下过程。在每个业务板卡进行卸载时,首先计算对每个业务板卡进行卸载的卸载时间。然后判断所述卸载时间与预设时间的大小关系。当所述卸载时间小于所述预设时间时,判断所述业务板卡的卸载过程为正常状态,并关闭健康检测,以停止对该业务板卡进行健康检测。当所述卸载时间大于所述预设时间时,判断所述业务板卡的卸载过程出现了卸载故障。步骤S205:当该业务板卡出现卸载故障时,重启所述主用主控卡,在所述主用主控卡和所述备用主控卡之间进行主备倒换,将出现卸载故障的业务板卡进行卸载隔离。本实施例中,所述步骤S205可由所述主备倒换模块105和重启模块106执行。其中,当所述MPU0判断出该业务板卡出现卸载故障时,所述重启模块106对主控MPU0进行重启。同时所述主备倒换模块105实现当前主用主控卡和备用主控卡之间的主备倒换。本实施例中,将主用主控卡由MPU0替换为MPU1,另外,出现卸载故障的业务板卡进行卸载隔离。步骤S206:对所述至少一个业务板卡进行遍历,当检测到所述出现过卸载故障的业务板卡在位时,判断所述出现过卸载故障的业务板卡是否已进行过预设次数的卸载故障恢复。若所述出现过卸载故障的业务板卡没有进行过预设次数的卸载故障恢复时,执行步骤S207,否则执行步骤S208。本实施例中,所述步骤S206可由所述热插拔模块101执行。其中,所述MPU1对所述业务板卡LPU0、业务板卡LPU1和业务板卡LPU2进行遍历,检测出现过卸载故障的业务板卡是否在位。当检测到出现过加载故障的业务板卡在位时,判断所述出现过卸载故障的业务板卡是否已进行过预设次数的故障恢复。步骤S207:在所述出现过卸载故障的业务板卡没有进行过预设次数的卸载故障恢复时,重启所述出现过卸载故障的业务板卡进行再次加载,以进行卸载故障的恢复。本实施例中,所述步骤S207可由所述故障恢复模块102执行。其中,当判断出所述出现过卸载故障的业务板卡没有进行过预设次数的故障恢复时,重启所述出现过卸载故障的业务板卡进行再次加载,以对该业务板卡进行尝试恢复。由于对业务板卡进行尝试恢复的成功概率与尝试恢复次数的关系如图5示。为了提高分布式设备100的可靠性和稳定性,所述预设次数可以选为1、2或3。本实施例中,所述预设次数优选为1。即仅对业务板卡尝试恢复一次。步骤S208:在所述出现过卸载故障的业务板卡已进行过预设次数的卸载故障恢复时,禁用所述出现过卸载故障的业务板卡。本实施例中,所述步骤S208可由所述故障恢复模块102执行。其中,当判断出所述出现过卸载故障的业务板卡进行过预设次数的故障恢复时,所述MPU1发出告警信息,并禁用所述出现过卸载故障的业务板卡。步骤S209:当所述操作不是重启该业务板卡时,对该业务板卡进行卸载后禁用该业务板卡。本实施例中,所述步骤S209可由故障恢复模块102执行。当所述主用主控卡(例如MPU0)侦测到对所述业务板卡LPU0、业务板卡LPU1和业务板卡LPU2的任意一个进行卸载的操作不重启时,对该业务板卡进行卸载后禁用所述业务板卡。本发明实施例提供的一种分布式设备业务板卡热插拔故障恢复的方法及分布式设备,通过判断业务板卡是否出现加载故障或卸载故障,以及根据出现过加载故障或卸载故障的业务板卡是否已进行过预设次数的故障恢复,并对出现过加载过故障或卸载故障的业务板卡按照预设次数进行有条件地恢复,既能保证热插拔故障的恢复能力,也能保证设备的稳定性。在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。需要说明的是,在本文中,术语“包括”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1