一种BIOS程序的异常处理方法及装置与流程

文档序号:12464132阅读:311来源:国知局
一种BIOS程序的异常处理方法及装置与流程

本发明涉及通信领域,尤其涉及一种BIOS程序的异常处理方法及装置。



背景技术:

服务器的应用越来越广,金融、政府、教育等关键领域对服务器可靠性、稳定性提出了更高的要求。

BIOS(Basic Input Output System,基本输入输出系统)被固化到服务器主板的存储介质中,BIOS保存着服务器最重要的基本输入输出的程序、开机后自检程序和系统自启动程序等,BIOS的主要功能是为服务器提供最底层的、最直接的硬件设置和控制,因此,BIOS的可靠性和重要性不言而喻。

传统服务器往往采用单BIOS设计,即一台服务器上仅有一个BIOS,这种设计可靠性较差。当出现BIOS程序异常或者存储介质损坏时,需要等待专业的运维人员进行修复后才能恢复业务,业务中断较长时间往往会给客户带来较大的经济损失。



技术实现要素:

本发明实施例提供了一种BIOS程序的异常处理方法及装置,用以实现当第一BIOS程序发生故障时,能够启动第二BIOS作为主BIOS程序进行业务处理。

第一方面,本发明实施例提供了一种BIOS程序的异常处理方法,包括:

第一BIOS是物理设备N个BIOS程序中的一个BIOS程序,N为大于或等于2的整数,且第一BIOS程序为用于启动所述物理设备的主BIOS程序。

在确定所述第一BIOS程序发生故障后,确定所述N个BIOS程序中的第二BIOS程序作为主BIOS程序,触发第二BIOS程序以主BIOS程序的角色启动所述设备。

由于在确定第一BIOS程序发生故障后将第二BIOS以主BIOS程序的角色重启设备,使得设备在短时间内即可解决BIOS故障问题,不会造成该设备所需进行的业务处理长时间中断,减少由于BIOS程序故障而带来的损失。

结合第一方面,在第一方面的第一种可能的实现方式中,该方法还包括对BIOS程序升级过程中发生的升级故障进行处理的方法。首先获取对第一BIOS程序所在存储介质进行读写的权限,然后对第一BIOS程序进行升级,若对第一BIOS程序升级成功,则对该设备中的其他BIOS程序中的部分或全部进行升级。若对第一BIOS程序升级失败,即确认第一BIOS程序发生故障,可以按照前述方法将第二BIOS程序作为主BIOS程序,并触发第二BIOS程序以主BIOS程序的角色启动该设备。

由于获取了对第一BIOS程序的读写权限,使得能够通过带外管理方式对第一BIOS程序进行升级,即对第一BIOS程序进行升级所用的物理通道与执行第一BIOS程序进行业务处理所用的物理通道不同,使得能够在该设备进行业务处理的同时对第一BIOS程序进行升级,而无需中断业务。

结合第一方面,在第一方面的第二种可能的实现方式中,在确定第一BIOS程序是否发生故障时,可以通过看门狗监测第一BIOS程序是否发生故障。通过看门能够狗检测到由于程序潜在错误或恶劣环境干扰等因素而导致的第一BIOS程序异常,此外,看门狗还能够对发生故障的第一BIOS程序进行复位。

结合第一方面,在第一方面的第三种可能的实现方式中,还可以通过监测在第一预设时间内第一BIOS通过硬件接口发送的信号,来判断第一BIOS程序是否发生故障。看门狗是通过接收软件信号来检测第一BIOS程序是否发生故障,若设备还未开启看门狗,还可以通过检测第一BIOS程序通过硬件接口发送的信号来判断第一BIOS程序是否发生故障。

结合第一方面,在第一方面的第四种可能的实现方式中,还可以通过CPLD监控第一BIOS程序是否发生故障。若通过CPLD监测到第一BIOS程序所在存储介质的硬件接口信号发生异常,则确定第一BIOS程序发生故障。在一些情况下,由于第一BIOS程序所在存储介质的硬件接口信号异常,导致该存储介质无法正常工作,进而使得第一BIOS程序也无法正常工作,此时可以通过CPLD监测第一BIOS程序是否能够正常运行。

结合第一方面和第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,在通过CPLD监测到第一BIOS发生故障后,可以清除CPLD中用于表示第一BIOS发生故障的标识,该标识被清除后,CPLD将发送复位信号以使该设备复位,即以第二BIOS程序为主程序启动设备。

结合第一方面,在第一方面的第六种可能的实现方式中,该设备还可以包括M个ME,M为大于等于2的整数,并对作为主ME的第一ME进行监控,在确定第一ME发送故障后,确定该M个ME中的第二ME作为主ME,并触发第二ME以主ME的角色启动设备。

由于ME运行的稳定性、可靠性也非常重要,在本发明实施例中还可以对ME进行监控,在确定主ME发送故障后,将第二BIOS以主BIOS程序的角色启动设备,使设备恢复正常工作,减少由于ME故障而带来的损失。

第二方面,本发明实施例提供了一种BIOS程序的异常处理装置,包括确定模块和触发模块。

其中,确定模块用于确定第一BIOS程序发生故障,所述第一BIOS程序是N个BIOS程序中的一个BIOS程序,N为大于或等于2的正整数,所述第一BIOS程序是在所述第一BIOS程序发生故障前用于启动物理设备的主BIOS程序;在确定所述第一BIOS程序发生故障后,确定所述N个BIOS程序中的第二BIOS程序为主BIOS程序。

触发模块用于在所述确定模块确定所述第二BIOS程序为主BIOS程序后,触发所述第二BIOS程序以主BIOS程序的角色启动所述设备。

结合第二方面,在第二方面的第一种可能的实现方式中,该装置还包括升级模块,用于:获取第一BIOS程序所在存储介质的读写权限;对第一BIOS程序进行升级;若对第一BIOS程序升级成功,则对所述第二BIOS程序进行升级。

结合第二方面,在第二方面的第二种可能的实现方式中,所述确定模块,具体用于:通过看门狗确定第一BIOS程序是否发生故障。

结合第二方面,在第二方面的第三种可能的实现方式中,所述确定模块,具体用于:若在预设时间内没有监测到第一BIOS通过硬件接口发送的信号,则确定第一BIOS发生故障。

结合第二方面,在第二方面的第四种可能的实现方式中,所述确定模块,具体用于:通过CPLD监控所述第一BIOS程序所在存储介质的硬件接口信号;若通过CPLD监测到所述第一BIOS程序所在存储介质的硬件接口信号异常,则确定第一BIOS程序发生故障。

结合第二方面和第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述触发模块,还用于:清除所述CPLD中用于表示所述第一BIOS程序发生故障的标识,以使所述CPLD触发所述第二BIOS程序以主BIOS程序的角色启动设备。

结合第二方面,在第二方面的第六种可能的实现方式中,所述确定模块,还用于:确定第一管理引擎ME发生故障,所述第一ME是M个ME中的一个ME程序,M为大于或等于2的整数,所述第一ME是在所述第一ME发生故障前用于启动所述物理设备的主ME;在确定所述第一ME发生故障后,确定所述M个ME中的第二ME为主ME。

所述触发模块,还用于触发所述第二ME以主ME的角色启动设备。

第三方面,提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,BMC(Baseboard Management Controller,基板管理控制器)执行该计算机执行指令来实现上述第一方面或者第一方面的各种可能的实现方式提供的BIOS程序的异常处理方法。

第四方面,提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中。BMC可以从计算机可读存储介质读取该计算机执行指令,执行该计算机执行指令来实施上述第一方面或者第一方面的各种可能的实现方式提供的BIOS程序的异常处理方法。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍。

图1为现有技术中带外管理软件连接示意图;

图2为本发明实施例提供的BIOS程序的异常处理方法流程示意图之一;

图3为本发明实施例提供的BIOS程序的异常处理方法流程示意图之二;

图4为本发明实施例提供的BIOS程序的异常处理方法流程示意图之三;

图5为本发明实施例提供的BIOS程序的异常处理方法流程示意图之四;

图6为本发明实施例提供的BIOS程序的异常处理方法流程示意图之五;

图7为本发明实施例提供的BIOS程序的异常处理方法流程示意图之六;

图8为本发明实施例提供的BIOS程序的异常处理装置的结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。

为了解决设备中的BIOS程序发生异常的问题,本发明实施例提供了一种BIOS程序的异常处理方法及装置。

本发明实施例提供的方法可应用于固化有至少两个BIOS程序的物理设备中,其中,至少两个BIOS程序可以被固化于同一存储介质中,也可以被固化于不同的存储介质中。上述存储介质可以是非易失存储器,也可以是Flash存储芯片,获取其他存储介质,本发明实施例对此不做限制。

在本发明实施例中,当BIOS程序发生异常时,优选采用带外管理的方式对BIOS程序的控制。带外管理,即通过不同的物理通道传送管理控制信息和数据信息,控制面和数据面完全独立,互不影响。采用带外管理的方式,使得BIOS程序正在运行即通过数据面通道进行业务处理时,也可以通过控制面通道对其进行控制,使得对BIOS进行管理的操作可以在设备进行业务处理的过程中,而不必在设备处于待机状态时,即开机但未进行业务处理时才能对BIOS进行管理。

用于实现带外管理的软件,例如BMC(Baseboard Management Controller,基板管理控制器)等,与设备的业务系统可以是完全分离或部分分离,图1所示的即为带外管理软件与设备的业务系统完全分离的示意图。带外管理软件可以对业务系统进行管理,例如对业务电源进行管理(上电或下电等)、提供远程KVM(Keyboard Video Mouse,键盘、显示、鼠标)功能以及提供镜像挂载的功能以方便用户对业务系统的管理;带外管理软件还可以对设备的硬件进行管理,例如,监控CPU(Central Processing Unit,中央处理器)、内存、硬盘、网卡的工作状态,以便及时发现异常;此外,带外管理软件还可以提供多种用户接口供用户通过带外管理软件对设备进行管理,例如基于WEB、SSH、FTP的接口。

目前,带外管理软件BMC对上下电、温度、调速、告警、故障诊断等进行管理。其中,BMC对BIOS进行管理时,可以通过LPC(Low Pin Count,低管脚数接口)与BIOS进行通信,监控上电过程中的BIOS以及业务系统的状态;或者,还可以通过SPI(Serial Peripheral Interface,串行外设接口)与固化在SPI Flash芯片中的BIOS进行通信,在获取读写权限后可以对固化在SPI Flash中的BIOS进行固件升级。

下面详细介绍本发明实施例提供的BIOS程序的异常处理方法。

参见图2,为本发明实施例提供的BIOS程序的异常处理方法的流程示意图,该方法可以由带外管理软件(例如BMC)执行。如图所示,该方法包括以下步骤:

步骤201、确定第一BIOS程序发生故障。

其中,第一BIOS程序是被固化于设备的存储介质上的N个BIOS程序中的一个BIOS程序,N为大于等于2的整数,且第一BIOS程序为第一BIOS程序发送故障前用于启动该设备的主BIOS程序。

步骤202、在确定第一BIOS程序发生故障后,确定这N个BIOS程序中的第二BIOS程序作为主BIOS程序。

可选地,当N为大于2的整数时,在确定这N个BIOS程序中的第二BIOS程序作为主BIOS程序时,可以根据预先设置的优先级,从除第一BIOS程序外的N-1个BIOS程序中将优先级最高的BIOS程序确定为作为主程序的第二BIOS程序,也可以随机从除第一BIOS程序外的N-1个BIOS程序中选取一个BIOS程序作为主程序,本发明实施例对此不做限制。

步骤203、在确定第二BIOS程序为主BIOS程序后,触发第二BIOS程序以主BIOS程序的角色启动该设备。

应当理解,本发明实施例中所使用的“第一BIOS程序”和“第二BIOS程序”是为了用于区分,而非特指某个BIOS程序。

在一些实施例中,实现上述步骤201时,可以通过看门狗确定第一BIOS程序是否发生故障,如图3所示。由于程序可能有潜在的错误,或者设备受到外界电磁场的干扰造成寄存器和内存数据的混乱,导致程序陷入死循环,无法继续正常工作,而看门狗可以定期的查看芯片的工作情况,一旦发生错误就向芯片发出重启信号;看门狗发出的命令在程序的中断中拥有最高的优先级。

看门狗,又叫watchdog timer(监视时钟),是一个定时器电路,输入端可以接收第一BIOS发送的信号,输出端可以输出复位信号给第一BIOS。当第一BIOS程序运行正常时,周期性地向看门狗发送一个信号(俗称“喂狗”),表示第一BIOS程序运行正常,看门狗在接收到信号后,将计时器清零,并重新计时。当第一BIOS程序运行异常,则无法向看门狗发送信号,而看门狗由于在设定时间内未接收到信号,则向第一BIOS发送复位信号,以使第一BIOS复位。

看门狗在设定时间内未接收到信号后,还可以向带外管理软件发送信号,以通知带外管理软件第一BIOS程序发生故障,带外管理软件在接收到看门狗发送的用于表示第一BIOS程序发生故障的信号后,执行上述步骤202和步骤203,即确定第二BIOS为主BIOS,并触发第二BIOS程序以主BIOS程序的角色启动该设备。

可选地,当带外管理软件接收到看门狗的发送的用于表示第一BIOS程序发生故障的信号后,还可以向用户提示警告信息,以使用户知晓第一BIOS程序运行异常,需要切换至第二BIOS程序,业务系统将被复位。用户可以在知晓第一BIOS程序发生异常后,检测第一BIOS程序发生异常的原因。

在具体实现时,看门狗可以独立于带外管理软件,也可以集成于带外管理软件中,本发明实施例对此不做限制。

在另外一些实施例中,实现上述步骤201时,带外管理软件可以监控第一BIOS通过硬件接口发送的信号,如图4所示,第一BIOS程序若运行正常,则会通过硬件接口发送信号。带外管理软件在监测到第一BIOS通过硬件接口发送信号后,将计时器清零,并重新计时;若带外管理软件在预设时间内没有监测到第一BIOS通过硬件接口发送的信号,则确认第一BIOS程序发生异常。

看门狗是通过接收软件信号来检测第一BIOS程序是否发生故障,若设备还未开启看门狗,还可以通过检测第一BIOS程序通过硬件接口发送的信号来判断第一BIOS程序是否发生故障。因此,可以将上述两种实施例相结合,以更及时发现第一BIOS程序发生故障。

此外,在一些情况下,由于硬件上是电气信号异常,可能会导致第一BIOS程序所在的存储介质无法正常工作,进而导致设备的业务系统不断复位,在此种情况下,看门狗或带外管理监控第一BIOS通过硬件接口发送信号的监控机制可能无法正常启动,此时,可以通过CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)进行监控。

如图5所示,当CPLD监测到第一BIOS程序所在的存储介质的硬件电气信号异常时,CPLD将用于标识该存储介质是否正常的标识位设置为用于表示异常的标识;CPLD可以在将该标识位设置为异常标识后主动向带外管理软件发送信号,也可以由带外管理软件定时对CPLD中的该标识位进行扫描,当带外管理软件根据该标识位上的标识确定第一BIOS程序不能正常运行时,则确定第二BIOS程序为主BIOS程序,同时清除CPLD中该用于表示异常的标识。

可选地,CPLD中用于表示异常的标识被清除后,CPLD可以直接触发设备复位,即触发第二BIOS程序以主BIOS程序的角色启动该设备。当然,也可以确定出第二BIOS程序为主BIOS程序后,由带外管理软件触发第二BIOS程序以主BIOS程序的角色启动该设备。

本发明实施例提供的BIOS程序异常处理方法,还可以应用于对BIOS程序进行升级时。在现有技术中,对BIOS程序进行升级,必须在设备处于待机的情况下进行,即设备还未开始进行业务处理时,这就使得升级过程必须中断业务,而对于需要24小时不间断的交易系统、数据库等业务系统来说,现有技术的升级过程十分不便。

而本发明实施例中,由于可以采用带外管理软件通过带外管理的方式,使得数据面的业务处理和控制面的固件升级可以同时进行。当需要运行第一BIOS程序以进行业务处理时,通常先将业务处理所需的程序拷贝至内存中,通过运行内存中的程序以进行业务处理,因此,此时通过与数据面独立的控制面对第一BIOS程序进行升级,并不会影响业务处理的进程。能够应用于需要业务系统不间断的设备中。

带外管理软件先获取第一BIOS程序所在存储介质的读写权限,以使带外管理软件能够对第一BIOS程序进行更新。升级过程可以如图6所示,带外管理软件获取到新版本的BIOS程序时,先为作为主BIOS程序的为第一BIOS程序进行更新升级,若升级成功,则继续为该设备中N个BIOS程序中除第一BIOS程序外的其他BIOS程序进行升级。具体地,当N为大于2的整数时,可以根据预先设置的优先级,按照优先级由高到低的顺序对未进行BIOS程序进行升级;或者,对其他BIOS程序进行升级的顺序也可以是随机的;此外,还可以仅对除第一BIOS程序外的其他BIOS程序中的部分BIOS程序进行升级,可以对部分BIOS程序暂不升级,待设备运行负荷较低时再对余下的BIOS程序进行升级,本发明实施例对此不做限制。

若对第一BIOS程序升级失败,即第一BIOS程序无法正常运行发生故障,则可以按照前述方法,确定第二BIOS程序作为主BIOS程序,然后触发第二BIOS程序以主BIOS程序的角色启动该设备。

通常情况下,管理引擎(Management Engine,ME)随BIOS一同固化在设备主板的存储介质中,系统启动阶段需要ME完成设备管理的一些信息配置,ME的稳定与否也将影响到设备在启动阶段的运行。

由于ME对设备在启动阶段的重要性,且ME在发生故障后往往不能自动恢复,需要重新加载固件程序,本发明实施例还可以在一个设备中固化多个ME程序,以使在作为主ME程序的第一ME程序发生故障时,可以切换至其他ME工作,以保证设备的正常运行。

通常会将作为主ME程序的第一ME程序镜像到设备的主板上,设备的主板可以将该设备的硬件信息发送给带外管理软件,带外管理软件可以根据硬件信息,通过SMLink(System Management Link,系统管理链路)与设备主板进行通信。如图7所示,当检测到第一ME程序运行异常,或者第一ME主动上报异常时,带外管理软件可以确定第二ME程序为主ME程序,并触发第二ME以主ME程序的角色启动该设备。带外管理软件还可以向第一ME发送复位指令,以使第一ME进行复位,并从第二ME中拷贝固件程序。

一般来说,一个存储介质中固化有一个BIOS程序和一个ME程序,即通常第一BIOS程序和第一ME程序会被固化于同一存储介质中,因此,往往在确定第一BIOS程序或第一ME程序发生异常时,确定另一存储介质中的第二BIOS程序和第二ME程序为主BIOS程序和主ME程序。当然,也可以在同一存储介质中固化多个BIOS程序和/或多个ME程序,本发明实施例对此不做限制。

通过上述实施例,实现了在确定第一BIOS程序发生故障后将第二BIOS以主BIOS程序的角色重启设备,使得设备在短时间内即可解决BIOS故障问题,不会造成该设备所需进行的业务处理长时间中断,减少由于BIOS程序故障而带来的损失。在确定第一BIOS程序是否发生故障时,可以通过看门狗监测第一BIOS程序的软件信号,也可以由带外管理软件监测第一BIOS程序通过硬件接口发送的信号,还可以通过CPLD监测第一BIOS程序所在存储介质的硬件信号,由于可以从多方面对第一BIOS程序进行监控,实现了在不同场景下均能够及时发现第一BIOS程序发生故障,并及时解决。当需要对BIOS进行固件升级时,带外管理软件可以在设备进行业务处理时对BIOS进行固件升级,避免了由于固件升级而必须中断业务所带来的不便。此外,在本发明实施例中还可以对ME进行监控,并在ME发生故障时切换至第二ME进行工作。

基于相同的技术构思,本发明实施例还提供了一种BIOS程序的异常处理装置,用以实现上述方法实施例。参见图8,为本发明实施例提供的BIOS程序异常处理装置的结构示意图,如图所述,该装置包括:确定模块801和触发模块802,进一步地,还装置还可以包括升级模块803。

其中,确定模块801用于确定第一BIOS程序发生故障,所述第一BIOS程序是N个BIOS程序中的一个BIOS程序,N为大于或等于2的整数,所述第一BIOS程序是在所述第一BIOS程序发生故障前用于启动物理设备的主BIOS程序;在确定所述第一BIOS程序发生故障后,确定所述N个BIOS程序中的第二BIOS程序为主BIOS程序。

触发模块802用于在所述确定模块确定所述第二BIOS程序为主BIOS程序后,触发所述第二BIOS程序以主BIOS程序的角色启动所述设备。

进一步地,该装置还可以包括升级模块803,用于获取第一BIOS程序所在存储介质的读写权限;对第一BIOS程序进行升级;若对第一BIOS程序升级成功,则对所述第二BIOS程序进行升级。

可选地,确定模块801,可以通过看门狗确定第一BIOS程序是否发生故障。

可选地,确定模块801,也可以检测第一BIOS通过硬件接口发送的信号,若在预设时间内没有监测到第一BIOS通过硬件接口发送的信号,则确定第一BIOS发生故障。

可选地,确定模块801,还可以通过CPLD监控所述第一BIOS程序所在存储介质的硬件接口信号;若通过CPLD监测到所述第一BIOS程序所在存储介质的硬件接口信号异常,则确定第一BIOS程序发生故障。

可选地,若确定模块801通过CPLD监测到第一BIOS程序发送故障,触发模块802还用于:清除所述CPLD中用于表示所述第一BIOS程序发生故障的标识,以使所述CPLD触发所述第二BIOS程序以主BIOS程序的角色启动设备。

可选地,确定模块801还可以用于:确定第一管理引擎ME发生故障,所述第一ME是M个ME中的一个ME程序,M为大于或等于2的整数,所述第一ME是在所述第一ME发生故障前用于启动所述物理设备的主ME;在确定所述第一ME发生故障后,确定所述M个ME中的第二ME为主ME。此时,触发模块802,还用于触发所述第二ME以主ME的角色启动设备。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,BMC执行该计算机执行指令来实现上述BIOS程序的异常处理方法实施例。

本发明实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中。BMC可以从计算机可读存储介质读取该计算机执行指令,执行该计算机执行指令来实施BIOS程序的异常处理方法的实施例。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1