WO2017059721A1 - 一种信息存储方法和装置、及服务器 - Google Patents

一种信息存储方法和装置、及服务器 Download PDF

Info

Publication number
WO2017059721A1
WO2017059721A1 PCT/CN2016/090846 CN2016090846W WO2017059721A1 WO 2017059721 A1 WO2017059721 A1 WO 2017059721A1 CN 2016090846 W CN2016090846 W CN 2016090846W WO 2017059721 A1 WO2017059721 A1 WO 2017059721A1
Authority
WO
WIPO (PCT)
Prior art keywords
field
control information
information
partition
area
Prior art date
Application number
PCT/CN2016/090846
Other languages
English (en)
French (fr)
Inventor
邓红波
徐东
Original Assignee
中兴通讯股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 中兴通讯股份有限公司 filed Critical 中兴通讯股份有限公司
Publication of WO2017059721A1 publication Critical patent/WO2017059721A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance

Definitions

  • the present application relates to, but is not limited to, the field of servers, and more particularly to an information storage method and apparatus, and a server.
  • the BMC Boardoard Management Controller
  • the BMC implements the power-on, power-off and reset functions of the payload, the FRU (Field Replaceable Unit) information management function, the SDR (Sensor Data Record) information management function, and the local SEL (System Event Log, System event log) function, panel lighting, status inquiry, sensor scanning function, KCS (Keyboard Controller Style) communication function, BIOS (Basic Input and Output System) reporting SEL recording function, status monitoring Function (board reset), S5 status monitoring, fan speed control and measurement, board startup mode configuration, single-board watchdog function, RMCP (Remote Management Control Protocol) function, board sleep, wake-up, Power management, Node Manage function, WEB (network), command line, KVMS (Keyboard Video Mouse Storage), hardware abnormal monitoring and other functions.
  • LPC Low pin Count
  • BIOS/OS operation system
  • the current system it is basically reported through the LPC channel.
  • the limitations of reporting through such channels are many, such as low efficiency, long reporting time, and the BIOS cannot read and write such channels, and are not suitable for recording hardware abnormalities discovered by the BIOS.
  • an abnormality occurs in the payload, a large amount of abnormal information may be generated in a short period of time, and the information needs to be quickly reported and recorded.
  • the hardware abnormality discovered by the BIOS is particularly important for locating the hardware problem in the server.
  • the readable and writable channel reports the exception information generated by the payload.
  • the embodiment of the invention provides an information storage method and device, and a server, which can improve the speed of reporting abnormal information generated by a payload.
  • an embodiment of the present invention provides an information storage method, where the method includes:
  • control information corresponding to the shared memory wherein the control information is used by the payload to store the abnormality information in the memory device according to the control information, and setting the control information according to the storage result of the abnormality information;
  • the abnormality information is read from the shared memory according to the control information, and the abnormality information is copied to the hard disk.
  • control information includes total control information
  • the setting control information corresponding to the shared memory includes:
  • the partition is divided into the shared memory, and the partition information corresponding to the partition is set in the total control information, where the shared memory includes a BIOS area, an OS area, and a user state area.
  • the total control information includes the following fields: a dwFlag field, a dwBiosBegin field, a dwBiosEnd field, a dwOsBegin field, a dwOsEnd field, a dwUserBegin field, and a dwUserEnd field;
  • the dwFlag field is used to indicate whether the shared memory has been initialized
  • the dwBiosBegin field is used to indicate a BIOS area start address, and the dwBiosEnd field is used to indicate a BIOS area end address;
  • the dwOsBegin field is used to indicate an OS area start address
  • the dwOsEnd field is used to indicate an OS area end address
  • the dwUserBegin field is used to indicate a user state area start address, and the dwUserEnd word The segment is used to indicate the end address of the user state area;
  • Setting the partition information corresponding to the partition in the total control information includes:
  • the value of each field in the total control information is correspondingly set; wherein, when the dwFlag field is set to a predetermined first value, it indicates that the shared memory has been initialized.
  • the dwBiosBegin field and the dwBiosEnd field are set according to the partition address of the BIOS area, and the dwOsBegin field and the dwOsEnd field are set according to the partition address of the OS area, and the dwUserBegin field and the dwUserEnd field are set according to the partition address of the user state area.
  • control information further includes area control information and segment control information
  • the reading the abnormality information from the shared memory according to the control information includes:
  • the segment control information of each segment in the partition is read, the storage area of the abnormal information stored in the payload is obtained according to the segment control information, and the abnormal information is read according to the storage area.
  • the satisfying the reading condition comprises: timing of a preset periodic timer to expire.
  • an embodiment of the present invention further provides an information storage method, the method comprising: scanning a memory device; reading control information set in the memory device; and storing abnormal information in the memory device according to the control information And setting control information according to the storage result of the abnormality information.
  • control information includes total control information and area control information.
  • the method further includes:
  • partition information includes a start address and an end address of the partition
  • Partition initialization is performed on the partition, wherein the initializing includes setting corresponding zone control information.
  • the area control information includes the following fields: a dwAreaFlag field, a dwAreaCtrSize field, a dwSectionCount field, and a dwFirstSecAddr field;
  • the dwAreaFlag field is used to indicate whether the corresponding partition has enabled the information recording function
  • the dwAreaCtrSize field is used to indicate the size of the control information of the corresponding partition
  • the dwSectionCount field is used to indicate the number of segments included in the corresponding partition
  • the dwFirstSecAddr field is used to indicate the start address of the first segment in the corresponding partition.
  • control information further includes segment control information
  • Performing partition initialization on the partition includes: segmenting the partition, and setting segment control information corresponding to each segment; wherein each segment is used to store abnormal information of different categories;
  • the segment control information includes the following fields: a SecName field, a dwSecCtrSize field, a dwSecBegin field, a dwSecEnd field, a dwSecRead field, and a dwSecWrite field;
  • the SecName field is used to indicate the name of the current segment
  • the dwSecCtrSize field is used to indicate the size of the control information of the current segment.
  • the dwSecBegin field is used to indicate a start address of an information recording area of the current segment.
  • the dwSecEnd field is used to indicate an end address of an information recording area of the current segment.
  • the dwSecRead field is used to indicate a data area read pointer in the segment, and is used by the board management controller BMC to start reading from where the pointer points, and to rewrite the pointer according to the read result;
  • the dwSecWrite field is used to indicate a data area write pointer in the segment, and is used for the payload to start writing the exception information from a place pointed by the pointer, and rewriting the pointer according to the write result.
  • the storing the abnormality information in the memory device according to the control information, and setting the control information according to the storage result of the abnormality information includes:
  • an embodiment of the present invention further provides an information storage device located in a server.
  • the device On the board management controller (BMC), the device includes:
  • a first setting unit configured to: set control information corresponding to the shared memory; wherein the control information is used by the payload to store abnormal information in the memory device according to the control information, and set according to a storage result of the abnormal information The control information;
  • the reading unit is configured to read the abnormality information from the shared memory according to the control information when the reading condition is satisfied, and copy the abnormality information to the hard disk.
  • control information includes total control information
  • the first setting unit includes:
  • a partitioning module configured to divide a partition in the shared memory
  • the first setting module is configured to set the partition information corresponding to the partition in the total control information, where the shared memory includes three partitions: a BIOS area, an OS area, and a user state area.
  • the total control information includes the following fields: a dwFlag field, a dwBiosBegin field, a dwBiosEnd field, a dwOsBegin field, a dwOsEnd field, a dwUserBegin field, and a dwUserEnd field;
  • the dwFlag field is used to indicate whether the shared memory has been initialized
  • the dwBiosBegin field is used to indicate a BIOS area start address, and the dwBiosEnd field is used to indicate a BIOS area end address;
  • the dwOsBegin field is used to indicate an OS area start address
  • the dwOsEnd field is used to indicate an OS area end address
  • the dwUserBegin field is used to indicate a user state area start address, and the dwUserEnd field is used to indicate a user state area end address;
  • the first setting module is configured to: correspondingly set a value of each field in the total control information according to a result of three partitions of a BIOS area, an OS area, and a user state area; wherein, setting a dwFlag field to a predetermined first value
  • the dwBiosBegin field and the dwBiosEnd field are set according to the partition address of the BIOS area, and the partition address is set according to the OS area.
  • the dwOsBegin field and the dwOsEnd field set the dwUserBegin field and the dwUserEnd field according to the partition address of the user state area.
  • control information further includes area control information and segment control information
  • the reading unit includes:
  • the determining module is configured to read the area control information corresponding to each partition, and determine, according to the dwAreaFlag field in the area control information, whether the partition has been used by the payload;
  • the abnormal information reading module is configured to: when the partition has been used by the payload, read segment control information of each segment in the partition, acquire a storage area of the abnormal information stored in the payload according to the segment control information, and according to the storage The area reads the exception information.
  • the satisfying the reading condition comprises: timing of a preset periodic timer to expire.
  • the embodiment of the present invention further provides an information storage device, which is located on a payload in a server, where the device includes:
  • a scanning unit configured to scan a memory device
  • control information reading unit configured to read control information set in the memory device
  • the writing unit is configured to store the abnormality information in the memory device according to the control information, and set the control information according to the storage result of the abnormality information.
  • control information includes total control information and area control information.
  • the device further includes: a second setting unit, configured to: acquire the partition information before the writing unit stores the abnormality information in the memory device; perform partition initialization on the partition, where the partition information includes the partition A start address and an end address, the initialization including setting corresponding zone control information.
  • a second setting unit configured to: acquire the partition information before the writing unit stores the abnormality information in the memory device; perform partition initialization on the partition, where the partition information includes the partition A start address and an end address, the initialization including setting corresponding zone control information.
  • the area control information includes the following fields: a dwAreaFlag field, a dwAreaCtrSize field, a dwSectionCount field, and a dwFirstSecAddr field;
  • the dwAreaFlag field is used to indicate whether the corresponding partition has enabled the information recording function
  • the dwAreaCtrSize field is used to indicate the size of the control information of the corresponding partition
  • the dwSectionCount field is used to indicate the number of segments included in the corresponding partition
  • the dwFirstSecAddr field is used to indicate the start address of the first segment in the corresponding partition.
  • control information further includes segment control information
  • the second setting unit includes: a segment setting module, configured to segment the partition, and set segment control information corresponding to each segment; wherein each segment is used to store abnormal information of different categories;
  • the segment control information includes the following fields: a SecName field, a dwSecCtrSize field, a dwSecBegin field, a dwSecEnd field, a dwSecRead field, and a dwSecWrite field;
  • the SecName field is used to indicate the name of the current segment
  • the dwSecCtrSize field is used to indicate the size of the control information of the current segment.
  • the dwSecBegin field is used to indicate a start address of an information recording area of the current segment.
  • the dwSecEnd field is used to indicate an end address of an information recording area of the current segment.
  • the dwSecRead field is used to indicate a data area read pointer in the segment, and is used by the BMC to start reading from where the pointer points, and rewriting the pointer according to the read result;
  • the dwSecWrite field is used to indicate a data area write pointer in the segment, and is used for the payload to start writing the exception information from a place pointed by the pointer, and rewriting the pointer according to the write result.
  • the writing unit includes:
  • a partition confirmation module configured to confirm a corresponding partition by using total control information
  • a segmentation confirmation module configured to determine, after the partition is initialized, a segment to which the abnormality information should be stored according to the SecName field in the segment control information
  • Writing a module configured to acquire a dwSecWrite field in the segment control information, start writing the exception information from a point pointed to by the pointer in the dwSecWrite field, and after writing the exception information, rewriting the pointer to point to the exception information The next address of the tail address.
  • an embodiment of the present invention further provides a server, where the server includes any one of the foregoing information storage devices disposed on a BMC in a server; the server further includes any one of the foregoing configured on a payload in the server. Information storage device.
  • the embodiment of the invention further provides a computer readable storage medium storing computer executable instructions, the above information storage method of the first aspect being implemented when the computer executable instructions are executed.
  • the embodiment of the invention further provides a computer readable storage medium storing computer executable instructions, the above information storage method of the second aspect being implemented when the computer executable instructions are executed.
  • the technical solution provided by the embodiment of the present invention includes: creating a shared memory in a local memory; and simulating the shared memory as a memory device; and setting control information corresponding to the shared memory; wherein the control The information is used by the payload to store the abnormality information in the memory device according to the control information, and set the control information according to the storage result of the abnormality information; when the read condition is met, read from the shared memory according to the control information The abnormal information is taken, and the abnormal information is copied to the hard disk.
  • the BIOS part of the payload can directly access the shared memory set in the BMC, and the data of the abnormal information is reported faster by the shared memory reading and writing mode, and can be reported to be reported in a short time.
  • the need for more abnormal information, high efficiency, and short reporting time can improve the success rate of hardware problems in the server by hardware anomalies discovered by the BIOS.
  • Figure 2 is a schematic diagram of the BMC using a function to emulate reserved memory as a PCI/PCIE memory device
  • FIG. 3 is a schematic diagram of shared memory management and division according to an embodiment of the present invention.
  • 4A is a schematic diagram of steps of implementing a black box program on a BMC according to an embodiment of the present invention
  • 4B is a schematic diagram of steps of implementing a black box subroutine in a BIOS area according to an embodiment of the present invention
  • 4C is a schematic diagram of implementation steps of an OS black box program according to an embodiment of the present invention.
  • 4D is a schematic diagram of an implementation of a user state black box according to an embodiment of the present invention.
  • FIG. 5 is a schematic structural diagram of an information storage device according to an embodiment of the present invention.
  • FIG. 6 is a schematic structural diagram of another information storage device according to an embodiment of the present invention.
  • the abnormal information of the embodiment of the present invention is described by taking black box information as an example.
  • the server includes two parts: BMC and payload.
  • the payload includes three parts: BIOS, OS and user mode.
  • BIOS, OS and user mode respectively run black box modules.
  • the black box module can report black box information to the BMC respectively. Reporting black box information to the BMC is fixed.
  • the OS and user status report the black box information to the BMC. You can start or stop reporting according to the user's settings.
  • an embodiment of the present invention provides an information storage method, where the method includes the following steps:
  • Step 110 Create shared memory in local memory; and simulate the shared memory as a memory device;
  • Step 120 Set control information corresponding to the shared memory, where the control information is used by the payload to store abnormal information in the memory device according to the control information, and set the control information according to a storage result of the abnormal information;
  • step 110 and step 120 is a process in which the BMC completes the initialization of the shared memory. After the BMC completes the initialization of the shared memory, after the step 110 is completed, the payload can be scanned to the BMC virtual memory device. After the completion, the payload can read and write operations on the memory device.
  • Step 130 When the read condition is met, the abnormality information is read from the shared memory according to the control information, and the abnormality information is copied to the hard disk.
  • control information includes total control information
  • the setting control information corresponding to the shared memory includes:
  • the partition is divided into the shared memory, and the partition information corresponding to the partition is set in the total control information, where the shared memory includes a BIOS area, an OS area, and a user state area.
  • the total control information includes the following fields: a dwFlag field, a dwBiosBegin field, a dwBiosEnd field, a dwOsBegin field, a dwOsEnd field, a dwUserBegin field, and a dwUserEnd field;
  • the dwFlag field is used to indicate whether the shared memory has been initialized
  • the dwBiosBegin field is used to indicate a BIOS area start address, and the dwBiosEnd field is used to indicate a BIOS area end address;
  • the dwOsBegin field is used to indicate an OS area start address
  • the dwOsEnd field is used to indicate an OS area end address
  • the dwUserBegin field is used to indicate a user state area start address, and the dwUserEnd field is used to indicate a user state area end address;
  • the setting the partition information corresponding to the partition in the total control information includes:
  • the value of each field in the total control information is correspondingly set; wherein, when the dwFlag field is set to a predetermined first value, it indicates that the shared memory has been initialized.
  • the dwBiosBegin field and the dwBiosEnd field are set according to the partition address of the BIOS area, and the dwOsBegin field and the dwOsEnd field are set according to the partition address of the OS area, and the dwUserBegin field and the dwUserEnd field are set according to the partition address of the user state area.
  • control information will be described in more detail.
  • control information further includes area control information and segment control information
  • the reading the abnormality information from the shared memory according to the control information includes:
  • the segment control information of each segment in the partition is read, the storage area of the abnormal information stored in the payload is obtained according to the segment control information, and the abnormal information is read according to the storage area.
  • the satisfying the reading condition includes: a preset periodic timer The timing is up.
  • an embodiment of the present invention provides an information storage method, where the method includes the following steps:
  • step 210 the memory device is scanned.
  • the payload can scan to the BMC virtual memory device.
  • Step 240 Read control information set in the memory device.
  • Step 250 Store abnormal information in the memory device according to the control information, and set control information according to a storage result of the abnormal information.
  • control information includes total control information and area control information.
  • the method further includes:
  • Step 220 Obtain partition information; the partition information includes a start address and an end address of the partition;
  • Step 230 performing partition initialization on the partition, wherein the initializing includes setting corresponding area control information.
  • step 230 when a plurality of partitions are included, each partition is initialized separately.
  • the area control information includes the following fields: a dwAreaFlag field, a dwAreaCtrSize field, a dwSectionCount field, and a dwFirstSecAddr field;
  • the dwAreaFlag field is used to indicate whether the corresponding partition has enabled the information recording function
  • the dwAreaCtrSize field is used to indicate the size of the control information of the corresponding partition
  • the dwSectionCount field is used to indicate the number of segments included in the corresponding partition
  • the dwFirstSecAddr field is used to indicate the start address of the first segment in the corresponding partition.
  • zone control information will be described in more detail.
  • control information further includes segment control information
  • Performing partition initialization on the partition includes:
  • Segmenting the partition and setting segment control information corresponding to each segment; wherein each segment is used to store different categories of abnormal information;
  • the segment control information includes the following fields: a SecName field, a dwSecCtrSize field, a dwSecBegin field, a dwSecEnd field, a dwSecRead field, and a dwSecWrite field;
  • the SecName field is used to indicate the name of the current segment
  • the dwSecCtrSize field is used to indicate the size of the control information of the current segment.
  • the dwSecBegin field is used to indicate a start address of an information recording area of the current segment.
  • the dwSecEnd field is used to indicate an end address of an information recording area of the current segment.
  • the dwSecRead field is used to indicate a data area read pointer in the segment, and is used by the BMC to start reading from where the pointer points, and rewriting the pointer according to the read result;
  • the dwSecWrite field is used to indicate a data area write pointer in the segment, and is used for the payload to start writing the exception information from a place pointed by the pointer, and rewriting the pointer according to the write result.
  • segment control information is described in more detail.
  • step 250 the storing abnormal information according to the control information to the memory device, and setting the control information according to the storage result of the abnormal information includes:
  • Step 251 confirming the corresponding partition by using the total control information
  • Step 252 after the partition is initialized, determine, according to the SecName field in the segment control information, a segment that the abnormal information should be stored;
  • Step 253 Acquire a dwSecWrite field in the segment control information, start writing the exception information from a point pointed to by the pointer in the dwSecWrite field, and after the writing, rewrite the pointer to a next address that points to the tail address of the exception information.
  • the partition is divided into multiple segments, and each segment is used to store different types of abnormal information as an example.
  • the manner in which the segmentation continues in the partition is taken as an example.
  • the segment may not be set, and the BMC directly reads the corresponding abnormal information from the partition.
  • the dwSecRead field and the dwSecWrite field need to be set in the area control information, so that the payload can write the exception information according to the address pointed to by the dwSecWrite field, and cause the BMC to copy the exception information according to the address pointed to by the dwSecRead field.
  • an embodiment of the present invention provides an information storage method, where the method includes the following steps:
  • step 310 the BMC creates shared memory in the local memory; and emulates the shared memory as a memory device.
  • Step 320 The BMC divides the partition in the shared memory, and sets corresponding total control information according to the result of the partition, where the shared memory includes three partitions: a BIOS area, an OS area, and a user state area.
  • Step 330 The payload scans and identifies the memory device, reads the total control information, and acquires information corresponding to each partition according to the total control information.
  • Step 340 The payload stores the abnormality information to the corresponding partition, and sets the area control information corresponding to the partition according to the stored abnormality information.
  • Step 350 The BMC reads the zone control information corresponding to the zone, and extracts the abnormality information stored in the zone according to the zone control information and copies the file to the hard disk.
  • the BMC can use the chip's own function to simulate the reserved memory as a PCI (Peripheral Component Interconnect)/PCIE (PCI-Express) memory device.
  • PCI Peripheral Component Interconnect
  • PCIE PCI-Express
  • the BMC utilizes a multifunction to emulate reserved memory (such as RAM (Random-Access Memory)) as a PCI/PCIE memory device.
  • the BMC can also emulate the above reserved memory as a memory device according to USB (Universal Serial Bus), or other device driver development specifications, setting various configurations and registers.
  • USB Universal Serial Bus
  • the BMC will load the driver of the memory device during power-on. After the BMC loads the driver of the memory device, the memory device simulated by the BMC can be scanned by the BIOS and OS kernel of the payload.
  • the shared memory includes a BIOS area, an OS area, and a user state area, wherein the payload generates the black box information generated into the corresponding partition as needed.
  • shared memory can It can be divided into one or more of the BIOS area, the OS area, and the user state area according to needs, and the BIOS area, the OS area, and the user state area can be used separately.
  • the BIOS area is used to store BIOS exception information
  • the OS area is used to store OS exception information
  • the user state area is used to store user state exception information.
  • BIOS When the BIOS finds a hardware exception such as a physical memory exception or an IO exception, it will generate BIOS exception information; when the OS is abnormal, the OS will generate OS exception information, such as kernel panic, kernel die, OOM, restart reset, and abnormal printing. Such as abnormal information; when the user mode program finds an exception, it will generate corresponding user state exception information.
  • FIG 3 is a schematic diagram of shared memory management and partitioning.
  • the shared memory is divided into three areas by the BMC: the BIOS area, the OS area, and the user mode area, which are used by the BIOS, OS, and user mode programs of the payload, respectively.
  • the BIOS part, OS part and user mode part of the payload will respectively run their respective black box subroutines.
  • the BMC reads the exception information written in each partition and stores it on the local disk.
  • the size of each partition is fixedly allocated by the BMC when initializing the shared memory area. In each partition, the partition can be divided into one or more segments as needed by the user of each area, that is, the black box of each part.
  • the management of shared memory includes the following information: total control information for dividing each partition; area control information for dividing each segment; and segment control information for controlling read and write access of the segment.
  • the shared memory control information includes: total control information, area control information, and segment control information.
  • the total control information is used to record related information of each partition; the area control information is used to record related information of each segment; and the segment control information is used to control read and write access of the segment. The following is introduced separately.
  • the total control information includes a dwFlag field, and the total control information further includes one or more of BIOS control information, OS control information, and user state control information.
  • BIOS control information includes a dwBiosBegin field and a dwBiosEnd field
  • the OS control information includes dwOsBegin.
  • the field and the dwOsEnd field, the user mode control information includes a dwUserBegin field and a dwUserEnd field.
  • the total control information includes, in order, the following fields: dwFlag field, dwBiosBegin field, dwBiosEnd field, dwOsBegin field, dwOsEnd field, dwUserBegin field, and dwUserEnd field.
  • dwFlag Unsigned int type used to distinguish whether the BMC has initialized shared memory. The initial value of this field is set by the BMC. After the BMC initializes the shared memory, the dwFlag field is set to a specific initial value (for example, 0x5a5a5a5a). The payload identifies whether the shared memory is usable based on the value of the field.
  • dwBiosBegin Unsigned int type, the BIOS area start address, expressed in terms of the first address offset relative to the shared memory. This field value is set by the BMC.
  • dwBiosEnd Unsigned int type, BIOS area end address, expressed in terms of the first address offset relative to shared memory. This field value is set by the BMC.
  • dwOsBegin Unsigned int type, OS area start address, expressed in terms of the first address offset relative to shared memory. This field value is set by the BMC.
  • dwOsEnd Unsigned int type, OS area end address, expressed as the first address offset relative to shared memory. This field value is set by the BMC.
  • dwUserBegin Unsigned int type, user mode start address, expressed in terms of the first address offset relative to shared memory. This field value is set by the BMC.
  • dwUserEnd Unsigned int type, user-state end address, expressed as the first address offset relative to shared memory. This field value is set by the BMC.
  • step 330 after the BMC stores the information in the corresponding partition, the value of each field in the total control information is set.
  • the payload reads the values in the total control information, the corresponding BIOS area, OS area, and The user state area enables the BIOS, OS, and user mode to use the corresponding partitions in the shared memory, respectively.
  • step 340 after the payload is stored in the corresponding partition, the payload will set the zone control information corresponding to the partition according to the stored abnormality information.
  • the zone control information includes one or more of BIOS zone control information, OS zone control information, and user state zone control information.
  • BIOS area control information, the OS area control information, and the user state area control information are respectively used to indicate related information of the BIOS area, the OS area, and the user status area.
  • the corresponding area control information is set for the partition, so that The BMC can extract the abnormal information stored in the partition according to the zone control information.
  • the BIOS area control information is used to indicate whether the information recording function of the BIOS area has been turned on.
  • the dwAreaFlag field of the BIOS, OS, or user-mode part of the payload is set to a special first value (for example, 0x5a5a5a5a), indicating that the information recording function of the corresponding partition of the payload has been enabled. This field is located at the start of the current zone.
  • the black box function of the OS part and the user part of the payload can be dynamically loaded and unloaded.
  • this field is assigned a first value such as 0x5a5a5a5a, and when the black box function is unloaded in the OS part or the user part part of the payload, the field is assigned to, for example, 0x0.
  • the second value of the class to inform the BMC that the black box function in this area is no longer used.
  • the dwAreaFlag field Before the payload loads the black box function of the OS part or the user mode part, set the dwAreaFlag field to 0x0 and delay for a period of time. After the delay arrives, set the dwAreaFlag field to a special first value, indicating that the corresponding The black box function of the partition.
  • the purpose of the delay is to consider that if the gap between the two loading and unloading is short, the BMC cannot recognize that the payload black box has been unloaded and reloaded, and the delay time is set to be larger than the period in which the BMC reads the shared memory central area control information. For example, if the BMC reads the zone control information in the shared memory every 1 second, the delay time can be set to 1.5 seconds or 2 seconds.
  • the black box function of the BIOS part cannot be uninstalled, so there is no need to consider the issue of uninstallation.
  • Set to Unsigned int type used to indicate the size of the control information of the zone, indicating the size of all the fields in the zone control information.
  • the black box function is initialized.
  • For backward compatibility if the field in the zone control information changes, only new fields are allowed to be added after the zone control information, new fields are not allowed to be inserted in the original zone control information, and the original control field size and semantics are not allowed to be changed. .
  • the BMC can detect whether the area control information read in the partition is consistent with the size of the area control information that can be identified by the BMC. If not, the BMC identifies the area according to the minimum area control information. If the sizes are inconsistent, the version used in the BMC and the payload is inconsistent. At this time, the BMC will identify the area control information with the smallest size.
  • Each partition user can divide each partition into one or more segments as needed.
  • Each segment acts as a ring buffer, and the payload will generate black boxes.
  • Information is written to the corresponding segment.
  • the BMC sequentially reads the control information of each segment according to the dwSectionCount field. This field is set by the user of the current zone (BIOS, OS, or user-side black box) when the black box function is initialized.
  • the black box of the BIOS divides the BIOS area into three segments, and the three segments are used to report different types of exception information.
  • the number of segments 3 will be written to the dwSectionCount field by the BIOS's black box.
  • Set to Unsigned int type used to indicate the start address of the first segment of this area, that is, the control header address of the first segment. This field is set by the user of the current zone (BIOS, OS, or user-side black box) when the black box function is initialized.
  • the BMC reads the zone control information of all the partitions in the shared memory according to a preset period, and takes the currently read zone control information as the standard, instead of reading only once and then saving it in the memory for subsequent use.
  • the purpose of this is to get the latest zone control information every time, because during the use of the black box, the black box function of the partition may be uninstalled and reloaded. When reloading, the fields in the zone control header may be changed. Value.
  • the payload can divide the partition into one or more segments as needed.
  • the zone control information indicates the segmentation.
  • segment control information is set.
  • the segment control information will be described below.
  • the segment control information in turn contains the following fields:
  • the BMC uses this name as the file name when storing the black box information in the segment on the disk. For example, a panic exception occurs in the OS kernel, and a die exception is written in a different segment.
  • the names of the segments are panic, die, and so on.
  • NULL it means that the segment is not used. This situation may occur mainly in the user state area, because the use of each segment in the user state area is related to the application, and the application is started first. And the name of the segment is also determined by the application itself, so it is necessary to support the dynamic setting and modification of the segment name in the user state area, and set it to NULL when not in use, so as to be easily distributed to subsequent requesters.
  • Set to Unsigned int type used to indicate that this segment can record the start address of the black box information, expressed by the offset from the first address of the shared memory.
  • Set by the user of the current zone (BIOS, OS or user-mode black box).
  • the initial value is set by the user in the current zone (black box of BIOS, OS or user mode), and is overwritten by BMC during the running process. Each time a read operation is performed, it will be reset once, indicating where the black box information is read. It is. Optionally, the read operation is performed After that, set the read pointer to point to the next address of the last address currently read.
  • the initial value is set by the user of the current zone (black box of BIOS, OS or user mode), and is rewritten by the user of the current zone during the running process. Each time a write operation is performed, it will be reset once, indicating the black box information of the segment. Written somewhere.
  • the shared memory in the range of [dwSecBegin, dwSecEnd] forms a ring buffer, and the range of dwSecRead and dwSecWrite is located in [dwSecBegin, dwSecEnd], which is a read/write pointer of the ring buffer, and controls the ring buffer.
  • the payload writes black box information to the ring buffer, and the BMC reads the black box information from the ring buffer and stores it in the local disk of the BMC. If the payload can be cached, it can be cached first when the ring buffer cannot be written. If it is not cached, it will be discarded. If it cannot be cached, it will be discarded directly.
  • the BIOS area and the OS area can determine which segments of the respective areas are to be divided when the black box function is initialized, and the name of the segment can be determined.
  • the real user of the user state area is the user mode application. When the different functions are implemented, the application is also very different, so the name of the segment in the user state area cannot be determined when the black box function is initialized.
  • each segment has a fixed size.
  • SecName is a NULL segment, and the SecName is modified to the name that the applicant carries when applying.
  • the kernel state sets the name of the segment to NULL, indicating that the current segment is idle.
  • BIOS area The use of the BIOS area will be described as an example. The usage of other partitions is the same or similar to the use of the BIOS area.
  • the exception information can be stored in the BIOS area in the shared memory. This example includes the following steps:
  • Step 410 When the Payload is powered on, scan and identify the memory device to complete the memory device. The mapping of the address space. Payload obtains the size and address of the three partitions of the BIOS area, the OS area, and the user state area of the memory device by reading the total control information in the memory device.
  • Step 420 The black box of the BIOS part completes the initialization process of the BIOS area, that is, the function of loading the BIOS area, wherein the BIOS area is divided into three sections, and corresponding area control information and segment control information are set, for example, the area control is performed.
  • the dwAreaFlag field in the message is set to a first value such as 0x5a5a5a5a, the number of segments in the dwSectionCount field is 3, and the first address of the segment of the first segment is filled in the dwFirstSecAddr field.
  • Step 430 When the black box program in the BIOS part needs to report the abnormality information, determine whether the BIOS area has been initialized. If it has been initialized, write the black box information to the corresponding segment according to the read/write control method of the ring buffer.
  • Step 440 When the timer of the BMC reaches the counting period, the abnormal information in the BIOS area is read, and the area of each segment is obtained according to the area control information, and the storage location of the abnormal information in the segment is obtained according to the segment control information, thereby Read it.
  • the read/write control method of the ring buffer means that the storage area is set as a ring buffer, and the ring buffer is connected end to end, and the storage and reading of the abnormal information are controlled by the write pointer and the read pointer, wherein
  • the pointer is used for the payload to write the exception information from the place pointed to by the write pointer, and the write pointer is rewritten according to the write result, and the read pointer is used for the BMC to start reading from the place pointed by the read pointer, and according to the read result
  • the read pointer is overwritten.
  • the foregoing storage area refers to a storage area used by the BIOS, the OS, or the user mode for storing abnormal information.
  • the storage area in the embodiment of the present invention is described by taking each segment in the partition as an example.
  • the write pointer is described by taking the write pointer of the data area in the segment as an example
  • the read pointer is described by taking the read pointer of the data area in the segment as an example.
  • 4A is a schematic diagram of the steps of implementing the black box program on the BMC, and the implementation steps are as follows:
  • Step 510 Map the shared memory to a virtual memory address, so that the black box program on the BMC can access the shared memory.
  • Step 520 Initialize the total control information.
  • the field dwFlag in the total control information is read, and if dwFlag indicates that the total control information has not been initialized, the total control information of the shared memory is initialized.
  • the shared memory is allocated for each zone; if dwFlag indicates that the initial control information has been completed, the BMC does not need to initialize the total control information of the shared memory, and directly uses the current total control information.
  • Step 530 Set a cycle timer.
  • Step 540 Whether a preset period timer reaches a timing period
  • Step 550 When the periodic timer expires, the abnormal information reading process is performed, and the abnormal information reading process includes the following processing:
  • the read/write control method reads the black box information written therein and stores it on the local disk, and jumps to step 530.
  • the implementation on the payload is further divided into three parts: the BIOS area implementation step, the OS area implementation step, and the user state area implementation step.
  • FIG. 4B is a schematic diagram of the steps of implementing the black box subroutine in the BIOS area, and the implementation steps are as follows:
  • Step 610 Generate black box information in the BIOS.
  • Step 620 Determine whether the shared memory in the BIOS area has been initialized.
  • Step 630 if it has been initialized, the black box information is written to the corresponding segment according to the read/write control method of the ring buffer, and the process proceeds to step 670;
  • Step 640 If not initialized, determine, according to the field dwFlag of the shared memory total control information, whether the BMC has completed initialization of the shared memory.
  • Step 650 if the BMC has completed initialization of the shared memory, the BIOS area is initialized, and the process proceeds to step 630;
  • Step 660 If the BMC does not complete the initialization of the shared memory, the operation of writing the black box information is discarded, and the process proceeds to step 670.
  • Step 670 the black box information recording operation ends.
  • 4C is a schematic diagram of the implementation steps of the OS black box program, and the implementation steps are as follows:
  • Step 710 Insert a black box kernel module of the OS part.
  • step 720 is performed when the payload is powered on.
  • Step 720 Determine, according to the dwFlag field of the shared memory total control information, whether the BMC has completed initialization of the shared memory. If completed, the OS area is initialized.
  • Step 730 The black box kernel module registers a hook function for capturing an abnormal behavior of the OS kernel panic, die, reboot, etc. to the OS kernel;
  • Step 740 Capture an abnormal behavior of the kernel that needs to be recorded in the black box
  • Step 750 Determine whether the shared memory in the OS area has been initialized.
  • Step 760 if it has been initialized, the black box information is written to the corresponding segment according to the read/write control method of the ring buffer, and the process proceeds to step 780;
  • Step 770 If the OS area is not initialized, perform corresponding processing.
  • the processing steps include step 771, step 772, and step 773:
  • Step 771 Determine, according to the field dwFlag of the shared memory total control information, whether the BMC has completed initialization of the shared memory.
  • Step 772 if the initialization of the shared memory is completed, the initialization of the OS area is performed, after the initialization is completed, the process proceeds to step 760;
  • Step 773 If the initialization of the shared memory is not completed, the black box information recording operation is discarded, and the process proceeds to step 780.
  • Step 780 the black box information recording operation ends.
  • FIG. 4D is a diagram showing the implementation steps of the user state black box, and the implementation steps are as follows:
  • Step 810 Insert a black box kernel module of the user state area
  • step 820 is performed when the payload is powered on.
  • Step 820 Create a daemon thread in the kernel module, and receive a request for the user mode program to create a black box segment and write black box information.
  • the segmentation of the user state area is not divided when the partition is initialized, but is segmented during use and the corresponding segment control information is set.
  • Step 830 Determine, according to the field dwFlag of the shared memory total control information, whether the BMC has After the initialization of the shared memory is completed, if the initialization of the shared memory has been completed, the initialization of the user state area is performed.
  • Step 840 the user mode program requests to create a black box segment
  • Step 850 After receiving the request of the user mode program to create a black box, the daemon thread determines whether the shared memory of the user state area has been initialized.
  • Step 860 When the shared memory of the user state area has been initialized, allocate a segment from the idle segment as a black box segment of the user mode program, and use the name passed in the user mode program as the name of the segment;
  • Step 870 If the shared memory in the user state area is not initialized, perform corresponding processing.
  • the shared memory of the user state area is first initialized, and the idle segment is allocated to the applicant after the initialization is successful. If the initialization fails, the failure result is returned to the user mode program.
  • Step 870 includes:
  • Step 871 If not initialized, determine, according to the field dwFlag of the shared memory total control information, whether the BMC has completed initialization of the shared memory.
  • the shared memory here refers to the shared memory corresponding to the virtual memory device created by the BMC.
  • Step 872 If the initialization of the shared memory is completed, the initialization of the user state area is performed. After the initialization is completed, a segment is taken out from the idle segment as a black box of the user mode program, and the name of the user mode program is passed in. As the name of this paragraph;
  • Step 873 If the initialization of the shared memory is not completed, return the information that fails to create the black box to the user mode program, and end the operation.
  • Step 880 The user mode program requests to write black box information to the specified black box segment.
  • Step 890 After receiving the request for writing the black box information to the specified black box, the daemon thread writes the black box information to the corresponding segment according to the read/write control method of the ring buffer.
  • Creating unit 10 configured to create shared memory in local memory; and to share the shared memory Written as a memory device;
  • the first setting unit 20 is configured to: set control information corresponding to the shared memory, where the control information is used to store abnormal information in the memory according to the control information according to the control information, and store the abnormal information according to the information Resulting that the control information is set;
  • the reading unit 30 is configured to read the abnormality information from the shared memory according to the control information when the read condition is satisfied, and copy the abnormality information to the hard disk.
  • control information includes total control information
  • the first setting unit 20 includes:
  • a partitioning module configured to divide a partition in the shared memory
  • the first setting module is configured to set the partition information corresponding to the partition in the total control information, where the shared memory includes three partitions: a BIOS area, an OS area, and a user state area.
  • the total control information includes the following fields: a dwFlag field, a dwBiosBegin field, a dwBiosEnd field, a dwOsBegin field, a dwOsEnd field, a dwUserBegin field, and a dwUserEnd field;
  • the dwFlag field is used to indicate whether the shared memory has been initialized
  • the dwBiosBegin field is used to indicate a BIOS area start address, and the dwBiosEnd field is used to indicate a BIOS area end address;
  • the dwOsBegin field is used to indicate an OS area start address
  • the dwOsEnd field is used to indicate an OS area end address
  • the dwUserBegin field is used to indicate a user state area start address, and the dwUserEnd field is used to indicate a user state area end address;
  • the first setting module 20 is configured to: correspondingly set values of each field in the total control information according to results of three partitions of the BIOS area, the OS area, and the user state area; wherein, the dwFlag field is set to a predetermined first
  • the dwBiosBegin field and the dwBiosEnd field are set according to the partition address of the BIOS area
  • the dwOsBegin field and the dwOsEnd field are set according to the partition address of the OS area
  • the dwUserBegin field and the dwUserEnd field are set according to the partition address of the user state area.
  • control information further includes area control information and segment control information
  • the reading unit 30 includes:
  • a determining module configured to read area control information corresponding to each partition, and determine, according to the dwAreaFlag field in the area control information, whether the partition has been used by a payload;
  • the abnormal information reading module is configured to: when the partition has been used by the payload, read segment control information of each segment in the partition, acquire a storage area of the abnormal information stored in the payload according to the segment control information, and according to the storage The area reads the exception information.
  • the satisfying the reading condition includes: timing of a preset periodic timer is up to time.
  • the embodiment of the present invention further provides an information storage device, which is disposed on a payload in a server.
  • the information storage device provided by the embodiment of the present invention includes:
  • the scanning unit 50 is configured to scan a memory device
  • the control information reading unit 60 is configured to read the control information set in the memory device
  • the writing unit 70 is configured to store the abnormality information in the memory device according to the control information, and set the control information according to the storage result of the abnormality information.
  • control information includes total control information and area control information.
  • the information storage device further includes: a second setting unit 80 configured to perform partition initialization according to acquiring partition information; and performing partition initialization on the partition, wherein the partition information includes a start address and an end address of the partition; and the initializing includes setting corresponding Zone control information.
  • a second setting unit 80 configured to perform partition initialization according to acquiring partition information; and performing partition initialization on the partition, wherein the partition information includes a start address and an end address of the partition; and the initializing includes setting corresponding Zone control information.
  • the area control information includes the following fields: a dwAreaFlag field, a dwAreaCtrSize field, a dwSectionCount field, and a dwFirstSecAddr field;
  • the dwAreaFlag field is used to indicate whether the corresponding partition has enabled the information recording function
  • the dwAreaCtrSize field is used to indicate the size of the control information of the corresponding partition
  • the dwSectionCount field is used to indicate the number of segments included in the corresponding partition
  • the dwFirstSecAddr field is used to indicate the start address of the first segment in the corresponding partition.
  • control information further includes segment control information
  • the second setting unit 80 includes:
  • segment setting module configured to segment the partition, and set segment control information corresponding to each segment; wherein each segment is used to store abnormal information of different categories;
  • the segment control information includes the following fields: a SecName field, a dwSecCtrSize field, a dwSecBegin field, a dwSecEnd field, a dwSecRead field, and a dwSecWrite field;
  • the SecName field is used to indicate the name of the current segment
  • the dwSecCtrSize field is used to indicate the size of the control information of the current segment.
  • the dwSecBegin field is used to indicate a start address of an information recording area of the current segment.
  • the dwSecEnd field is used to indicate an end address of an information recording area of a current segment
  • the dwSecRead field is used to indicate a data area read pointer in the segment, and is used by the BMC to start reading from where the pointer points, and rewriting the pointer according to the read result;
  • the dwSecWrite field is used to indicate a data area write pointer in the segment, and is used for the payload to start writing the exception information from a place pointed by the pointer, and rewriting the pointer according to the write result.
  • the writing unit 70 includes:
  • a partition confirmation module configured to confirm a corresponding partition by using total control information
  • a segmentation confirmation module configured to determine, after the partition is initialized, a segment to which the abnormality information should be stored according to the SecName field in the segment control information
  • Writing a module configured to acquire a dwSecWrite field in the segment control information, start writing the exception information from a point pointed to by the pointer in the dwSecWrite field, and after writing the exception information, rewriting the pointer to point to the exception information The next address of the tail address.
  • the embodiment of the present invention further provides a server, which includes any information storage device provided by the embodiment of the present invention.
  • the embodiment of the present invention further provides a computer readable storage medium storing computer executable instructions, and when the computer executable instructions are executed, the information storage method shown in FIG. 1A is implemented.
  • the embodiment of the present invention further provides a computer readable storage medium storing computer executable instructions, and when the computer executable instructions are executed, the information storage method shown in FIG. 1B is implemented.
  • each module/unit in the above embodiment may be implemented in the form of hardware, for example, by implementing an integrated circuit to implement its corresponding function, or may be implemented in the form of a software function module, for example, executing a program stored in the memory by a processor. / instruction to achieve its corresponding function.
  • Embodiments of the invention are not limited to any specific form of combination of hardware and software.
  • the embodiment of the present invention provides an information storage method, device, and server.
  • the data of the abnormal information is reported faster by the shared memory read/write mode, and can meet the requirement of reporting more abnormal information in a short time. High efficiency and short reporting time can improve the success rate of hardware problems in the server by hardware anomalies discovered by the BIOS.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

一种信息存储方法,包括:在本地内存中创建共享内存;并将所述共享内存模拟为内存设备;设置所述共享内存对应的控制信息;其中,所述控制信息用于payload根据所述控制信息向所述内存设备中存储异常信息,并根据异常信息的存储结果设置所述控制信息;在满足读取条件时,根据控制信息,从所述共享内存中读取所述异常信息,并将所述异常信息拷贝至硬盘。通过上述技术方案,payload的BIOS部分可以直接访问BMC中设置的共享内存,通过共享内存的读写方式,异常信息的数据上报的速度较快,可以满足在很短的时间内上报较多的异常信息的需求,效率高,上报时间短,能够提高通过BIOS发现的硬件异常来定位服务器中的硬件问题的成功率。

Description

一种信息存储方法和装置、及服务器 技术领域
本申请涉及但不限于服务器领域,尤指一种信息存储方法和装置、及服务器。
背景技术
在目前常见的中高端服务器上,通常有BMC(Board Management Controller,单板管理控制器)和payload(有效负载)两部分。在payload上安装服务器操作系统和其他应用程序。BMC上实现对payload加电、下电、复位功能,FRU(Field Replaceable Unit,现场可替换装置)信息管理功能,SDR(Sensor Data Record,传感器数据记录)信息管理功能,本地SEL(System Event Log,系统事件日志)功能,面板点灯、状态查询,传感器扫描功能,KCS(Keyboard Controller Style,键盘控制器类)通讯功能,BIOS(Basic Input and Output System,基本输入输出系统)上报SEL记录功能,状态监测功能(单板复位)、S5状态监测,风扇转速控制和测量,单板启动方式配置,单板看门狗功能,RMCP(Remote Management Control Protocol,远程管理控制协议)功能,单板休眠、唤醒,电源管理,Node Manage(节点管理)功能,WEB(网络)、命令行,KVMS(Keyboard Video Mouse Storage,键盘显示器鼠标存储),硬件异常监控等功能。在payload和BMC之间有LPC(Low pin Count,低管脚数接口)通道,可用于payload和BMC之间通讯。
为了了解和定位payload系统中发生了什么问题,需要在服务器系统设计中增加BIOS/OS(operation system,操作系统)对系统异常的记录。在当前系统中,基本都是通过LPC通道上报。通过这种通道上报的局限性很多,比如效率低、上报时间长、BIOS无法读写这种通道而不适合记录BIOS发现的硬件异常等。在payload发生异常时,可能会在很短的时间内产生比较多的异常信息,而这些信息需要快速上报并记录下来,尤其重要的是BIOS发现的硬件异常对于定位服务器中的硬件问题尤为重要。要快速上报这些数据,通过LPC通道上报的设计很难满足设计要求,因此需要一种快速的、BIOS 可读写的通道来上报payload产生的异常信息。
发明内容
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
本发明实施例提出了一种信息存储方法和装置、及服务器,能够提高有效负载(payload)产生的异常信息上报的速度。
第一方面,本发明实施例提出了一种信息存储方法,所述方法包括:
在本地内存中创建共享内存;并将所述共享内存模拟为内存设备;
设置所述共享内存对应的控制信息;其中,所述控制信息用于payload根据所述控制信息向所述内存设备中存储异常信息,并根据异常信息的存储结果设置所述控制信息;
在满足读取条件时,根据控制信息,从所述共享内存中读取所述异常信息,并将所述异常信息拷贝至硬盘。
可选地,所述控制信息包括总控制信息;
所述设置所述共享内存对应的控制信息包括:
在所述共享内存中划分分区,并将所述分区对应的分区信息设置在所述总控制信息中,其中,共享内存包括BIOS区、OS区和用户态区。
可选地,所述总控制信息中包括如下字段:dwFlag字段、dwBiosBegin字段、dwBiosEnd字段、dwOsBegin字段、dwOsEnd字段、dwUserBegin字段和dwUserEnd字段;其中,
所述dwFlag字段用于表示所述共享内存是否已经完成初始化;
所述dwBiosBegin字段用于表示BIOS区开始地址,所述dwBiosEnd字段用于表示BIOS区结束地址;
所述dwOsBegin字段用于表示OS区开始地址,所述dwOsEnd字段用于表示OS区结束地址,
所述dwUserBegin字段用于表示用户态区开始地址,所述dwUserEnd字 段用于表示用户态区结束地址;
所述将所述分区对应的分区信息设置在所述总控制信息中,包括:
根据BIOS区、OS区和用户态区三个分区的结果,对应地设置总控制信息中每个字段的值;其中,将dwFlag字段设置为预定的第一值时,表示共享内存已经完成初始化,根据BIOS区的分区地址设置dwBiosBegin字段和dwBiosEnd字段,根据OS区的分区地址设置dwOsBegin字段和dwOsEnd字段,根据用户态区的分区地址设置dwUserBegin字段和dwUserEnd字段。
可选地,所述控制信息还包括区控制信息和段控制信息;
所述根据所述控制信息,从所述共享内存中读取所述异常信息包括:
读取每个分区对应的区控制信息,根据所述区控制信息中dwAreaFlag字段判断所述分区是否已经被payload使用;
当所述分区已经被payload使用时,读取分区中每段的段控制信息,根据所述段控制信息获取payload存储的异常信息的存储区域,并根据所述存储区域读取所述异常信息。
可选地,所述满足读取条件包括:预先设置的周期性的定时器的计时到时。
第二方面,本发明实施例还提出了一种信息存储方法,所述方法包括:扫描内存设备;读取内存设备中设置的控制信息;根据所述控制信息向所述内存设备中存储异常信息,并根据所述异常信息的存储结果设置控制信息。
可选地,所述控制信息包括总控制信息和区控制信息,
在所述根据所述控制信息向所述内存设备中存储异常信息之前,所述方法还包括:
获取分区信息;其中,所述分区信息包括分区的开始地址和结束地址;
对分区执行分区初始化,其中,所述初始化包括设置对应的区控制信息。
可选地,所述区控制信息包括如下字段:dwAreaFlag字段、dwAreaCtrSize字段、dwSectionCount字段、以及dwFirstSecAddr字段;其中,
所述dwAreaFlag字段用于表示对应的分区是否已经开启信息记录功能;
所述dwAreaCtrSize字段用于表示对应分区的控制信息大小;
所述dwSectionCount字段用于表示对应分区的包含的段数;
所述dwFirstSecAddr字段用于表示对应分区中第一个段的开始地址。
可选地,所述控制信息还包括段控制信息;
所述对分区执行分区初始化包括:对所述分区进行分段,并设置每段对应的段控制信息;其中,每个段用于存储不同类别的异常信息;
所述段控制信息包括如下字段:SecName字段、dwSecCtrSize字段、dwSecBegin字段、dwSecEnd字段、dwSecRead字段、dwSecWrite字段;其中,
所述SecName字段,用于表示当前段的名称;
所述dwSecCtrSize字段,用于表示当前段的控制信息大小,
所述dwSecBegin字段,用于表示当前段的信息记录区域的开始地址,
所述dwSecEnd字段,用于表示当前段的信息记录区域的结束地址,
所述dwSecRead字段,用于表示段内数据区读指针,用于单板管理控制器BMC从所述指针指向的地方开始读取,并根据读取结果对所述指针进行改写;
所述dwSecWrite字段,用于表示段内数据区写指针,用于payload从所述指针指向的地方开始写入异常信息,并根据写入结果对所述指针进行改写。
可选地,所述根据所述控制信息向所述内存设备中存储异常信息,并根据异常信息的存储结果设置控制信息包括:
通过总控制信息确认对应的分区;
在所述分区初始化之后,根据段控制信息中的SecName字段,确定异常信息应该存储的分段;
获取段控制信息中的dwSecWrite字段,从dwSecWrite字段中指针指向的地方开始写入异常信息,并在写入所述异常信息之后,将所述指针改写为指向所述异常信息尾地址的下一个地址。
第三方面,本发明实施例还提出了一种信息存储装置,位于服务器中的 单板管理控制器(BMC)上,所述装置包括:
创建单元,设置为在本地内存中创建共享内存;并将所述共享内存模拟为内存设备;
第一设置单元,设置为:设置所述共享内存对应的控制信息;其中,所述控制信息用于payload根据所述控制信息向所述内存设备中存储异常信息,并根据异常信息的存储结果设置所述控制信息;
读取单元,设置为在满足读取条件时,根据控制信息,从所述共享内存中读取所述异常信息,并将所述异常信息拷贝至硬盘。
可选地,所述控制信息包括总控制信息;
所述第一设置单元包括:
分区划分模块,设置为在所述共享内存中划分分区;
第一设置模块,设置为将所述分区对应的分区信息设置在所述总控制信息中,其中,共享内存包括BIOS区、OS区和用户态区三个分区。
可选地,所述总控制信息中包括如下字段:dwFlag字段、dwBiosBegin字段、dwBiosEnd字段、dwOsBegin字段、dwOsEnd字段、dwUserBegin字段和dwUserEnd字段;其中,
所述dwFlag字段用于表示所述共享内存是否已经完成初始化;
所述dwBiosBegin字段用于表示BIOS区开始地址,所述dwBiosEnd字段用于表示BIOS区结束地址;
所述dwOsBegin字段用于表示OS区开始地址,所述dwOsEnd字段用于表示OS区结束地址,
所述dwUserBegin字段用于表示用户态区开始地址,所述dwUserEnd字段用于表示用户态区结束地址;
所述第一设置模块设置为:根据BIOS区、OS区和用户态区三个分区的结果,对应地设置总控制信息中每个字段的值;其中,将dwFlag字段设置为预定的第一值时,表示共享内存已经完成初始化,根据BIOS区的分区地址设置dwBiosBegin字段和dwBiosEnd字段,根据OS区的分区地址设置 dwOsBegin字段和dwOsEnd字段,根据用户态区的分区地址设置dwUserBegin字段和dwUserEnd字段。
可选地,所述控制信息还包括区控制信息和段控制信息;
所述读取单元包括:
判断模块,设置为读取每个分区对应的区控制信息,根据所述区控制信息中dwAreaFlag字段判断所述分区是否已经被payload使用;
异常信息读取模块,设置为当所述分区已经被payload使用时,读取分区中每段的段控制信息,根据所述段控制信息获取payload存储的异常信息的存储区域,并根据所述存储区域读取所述异常信息。
可选地,所述满足读取条件包括:预先设置的周期性的定时器的计时到时。
第四方面,本发明实施例还提供一种信息存储装置,位于服务器中的有效负载(payload)上,所述装置包括:
扫描单元,设置为扫描内存设备;
控制信息读取单元,设置为读取内存设备中设置的控制信息;
写入单元,设置为根据所述控制信息向所述内存设备中存储异常信息,并根据所述异常信息的存储结果设置所述控制信息。
可选地,所述控制信息包括总控制信息和区控制信息,
所述装置还包括:第二设置单元,设置为:在所述写入单元向所述内存设备中存储异常信息之前,获取分区信息;对分区执行分区初始化,其中,所述分区信息包括分区的开始地址和结束地址,所述初始化包括设置对应的区控制信息。
可选地,所述区控制信息包括如下字段:dwAreaFlag字段、dwAreaCtrSize字段、dwSectionCount字段、以及dwFirstSecAddr字段;其中,
所述dwAreaFlag字段用于表示对应的分区是否已经开启信息记录功能;
所述dwAreaCtrSize字段用于表示对应分区的控制信息大小;
所述dwSectionCount字段用于表示对应分区的包含的段数;
所述dwFirstSecAddr字段用于表示对应分区中第一个段的开始地址。
可选地,所述控制信息还包括段控制信息;
所述第二设置单元包括:分段设置模块,设置为对所述分区进行分段,并设置每段对应的段控制信息;其中,每个段用于存储不同类别的异常信息;
所述段控制信息包括如下字段:SecName字段、dwSecCtrSize字段、dwSecBegin字段、dwSecEnd字段、dwSecRead字段、dwSecWrite字段;其中,
所述SecName字段,用于表示当前段的名称;
所述dwSecCtrSize字段,用于表示当前段的控制信息大小,
所述dwSecBegin字段,用于表示当前段的信息记录区域的开始地址,
所述dwSecEnd字段,用于表示当前段的信息记录区域的结束地址,
所述dwSecRead字段,用于表示段内数据区读指针,用于BMC从所述指针指向的地方开始读取,并根据读取结果对所述指针进行改写;
所述dwSecWrite字段,用于表示段内数据区写指针,用于payload从所述指针指向的地方开始写入异常信息,并根据写入结果对所述指针进行改写。
可选地,所述写入单元包括:
分区确认模块,设置为通过总控制信息确认对应的分区;
分段确认模块,设置为在所述分区初始化之后,根据段控制信息中的SecName字段,确定异常信息应该存储的段;
写入模块,设置为获取段控制信息中的dwSecWrite字段,从dwSecWrite字段中指针指向的地方开始写入异常信息,并在写入所述异常信息之后,将所述指针改写为指向所述异常信息尾地址的下一个地址。
第五方面,本发明实施例还提出了一种服务器,所述服务器包括设置在服务器中的BMC上的上述任一信息存储装置;所述服务器还包括设置在服务器中的payload上的上述任一信息存储装置。
本发明实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令被执行时实现第一方面的上述信息存储方法。
本发明实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令被执行时实现第二方面的上述信息存储方法。
与相关技术相比,本发明实施例提供的技术方案包括:在本地内存中创建共享内存;并将所述共享内存模拟为内存设备;设置所述共享内存对应的控制信息;其中,所述控制信息用于payload根据所述控制信息向所述内存设备中存储异常信息,并根据异常信息的存储结果设置所述控制信息;在满足读取条件时,根据控制信息,从所述共享内存中读取所述异常信息,并将所述异常信息拷贝至硬盘。通过本发明实施例的方案,payload的BIOS部分可以直接访问BMC中设置的共享内存,通过共享内存的读写方式,异常信息的数据上报的速度较快,可以满足在很短的时间内上报较多的异常信息的需求,效率高,上报时间短,能够提高通过BIOS发现的硬件异常来定位服务器中的硬件问题的成功率。
在阅读并理解了附图和详细描述后,可以明白其他方面。
附图概述
下面对本发明实施例中的附图进行说明,实施例中的附图是用于对本申请的进一步理解,与说明书一起用于解释本申请,并不构成对本申请保护范围的限制。
图1A、图1B和图1C分别为本发明实施例提供的数据存储方法的流程图;
图2为BMC利用多功能(function)将保留内存模拟为PCI/PCIE内存设备的示意图;
图3为本发明实施例提供的共享内存管理和划分示意图;
图4A是本发明实施例提供的BMC上黑匣子程序实施步骤示意图;
图4B是本发明实施例提供的BIOS区黑匣子程序实施步骤示意图;
图4C是本发明实施例提供的OS黑匣子程序的实施步骤示意图;
图4D是本发明实施例提供的用户态黑匣子实施步骤图;
图5为本发明实施例提出的一种信息存储装置的结构示意图;
图6为本发明实施例提出的另一种信息存储装置的结构示意图。
本发明的实施方式
下面结合附图对本申请作进一步的描述,并不能用来限制本申请的保护范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的各种方式可以相互组合。
本发明实施例的异常信息以黑匣子信息为例进行说明。
服务器包括BMC和payload两部分,payload中包括BIOS、OS和用户态三个部分,BIOS、OS和用户态三个部分中分别运行有黑匣子模块,黑匣子模块可以分别向BMC上报黑匣子信息,其中,BIOS向BMC上报黑匣子信息是固定设置的,OS和用户态向BMC上报黑匣子信息是可选的,可以根据用户的设置开始或停止上报。
下面以BMC一侧的操作为例进行说明。
参见图1A,本发明实施例提供一种信息存储方法,所述方法包括以下步骤:
步骤110,在本地内存中创建共享内存;并将所述共享内存模拟为内存设备;
步骤120,设置所述共享内存对应的控制信息;其中,所述控制信息用于payload根据所述控制信息向所述内存设备中存储异常信息,并根据异常信息的存储结果设置所述控制信息;
其中,步骤110和步骤120的过程为BMC完成对共享内存的初始化的过程,在BMC完成对共享内存的初始化之后,即在步骤110完成后,payload可以扫描到BMC虚拟的内存设备,在步骤120完成后,payload可以对内存设备进行读写操作。
步骤130,在满足读取条件时,根据控制信息,从所述共享内存中读取所述异常信息,并将所述异常信息拷贝至硬盘。
本发明实施例中,所述控制信息包括总控制信息;
所述设置所述共享内存对应的控制信息包括:
在所述共享内存中划分分区,并将所述分区对应的分区信息设置在所述总控制信息中,其中,共享内存包括BIOS区、OS区和用户态区。
本发明实施例中,所述总控制信息中包括如下字段:dwFlag字段、dwBiosBegin字段、dwBiosEnd字段、dwOsBegin字段、dwOsEnd字段、dwUserBegin字段和dwUserEnd字段;其中,
所述dwFlag字段用于表示所述共享内存是否已经完成初始化;
所述dwBiosBegin字段用于表示BIOS区开始地址,所述dwBiosEnd字段用于表示BIOS区结束地址;
所述dwOsBegin字段用于表示OS区开始地址,所述dwOsEnd字段用于表示OS区结束地址,
所述dwUserBegin字段用于表示用户态区开始地址,所述dwUserEnd字段用于表示用户态区结束地址;
所述将所述分区对应的分区信息设置在所述总控制信息中包括:
根据BIOS区、OS区和用户态区三个分区的结果,对应地设置总控制信息中每个字段的值;其中,将dwFlag字段设置为预定的第一值时,表示共享内存已经完成初始化,根据BIOS区的分区地址设置dwBiosBegin字段和dwBiosEnd字段,根据OS区的分区地址设置dwOsBegin字段和dwOsEnd字段,根据用户态区的分区地址设置dwUserBegin字段和dwUserEnd字段。
在下面的示例中,将对控制信息进行更加详细的介绍。
本发明实施例中,所述控制信息还包括区控制信息和段控制信息;
所述根据所述控制信息,从所述共享内存中读取所述异常信息包括:
读取每个分区对应的区控制信息,根据所述区控制信息中dwAreaFlag字段判断所述分区是否已经被payload使用;
当所述分区已经被payload使用时,读取分区中每个段的段控制信息,根据所述段控制信息获取payload存储的异常信息的存储区域,并根据所述存储区域读取所述异常信息。
本发明实施例中,所述满足读取条件包括:预先设置的周期性的定时器 的计时到时。
下面以payload一侧的操作为例进行说明。
参见图1B,本发明实施例提出了一种信息存储方法,所述方法包括以下步骤:
步骤210,扫描内存设备。
在BMC完成将共享内存模拟为内存设备之后,payload可以扫描到BMC虚拟的内存设备。
步骤240,读取内存设备中设置的控制信息;
步骤250,根据所述控制信息向所述内存设备中存储异常信息,并根据异常信息的存储结果设置控制信息。
本发明实施例中,所述控制信息包括总控制信息和区控制信息,
在步骤240和步骤250之前,上述方法还包括:
步骤220,获取分区信息;所述分区信息包括分区的开始地址和结束地址;
步骤230,对分区执行分区初始化,其中,所述初始化包括设置对应的区控制信息。
步骤230中,在包括多个分区时,分别对每个分区进行初始化。
本发明实施例中,所述区控制信息包括如下字段:dwAreaFlag字段、dwAreaCtrSize字段、dwSectionCount字段、以及dwFirstSecAddr字段;其中,
所述dwAreaFlag字段用于表示对应的分区是否已经开启信息记录功能;
所述dwAreaCtrSize字段用于表示对应分区的控制信息大小;
所述dwSectionCount字段用于表示对应分区的包含的段数;
所述dwFirstSecAddr字段用于表示对应分区中第一个段的开始地址。
在下面的示例中,将对区控制信息进行更加详细的介绍。
本发明实施例中,所述控制信息还包括段控制信息;
所述对分区执行分区初始化包括:
对所述分区进行分段,并设置每个段对应的段控制信息;其中,每个段用于存储不同类别的异常信息;
所述段控制信息包括如下字段:SecName字段、dwSecCtrSize字段、dwSecBegin字段、dwSecEnd字段、dwSecRead字段、dwSecWrite字段;其中,
所述SecName字段,用于表示当前段的名称;
所述dwSecCtrSize字段,用于表示当前段的控制信息大小,
所述dwSecBegin字段,用于表示当前段的信息记录区域的开始地址,
所述dwSecEnd字段,用于表示当前段的信息记录区域的结束地址,
所述dwSecRead字段,用于表示段内数据区读指针,用于BMC从所述指针指向的地方开始读取,并根据读取结果对所述指针进行改写;
所述dwSecWrite字段,用于表示段内数据区写指针,用于payload从所述指针指向的地方开始写入异常信息,并根据写入结果对所述指针进行改写。
在下面的示例中,将对段控制信息进行更加详细的介绍。
本发明实施例中,步骤250中,所述根据所述控制信息向所述内存设备中存储异常信息,并根据异常信息的存储结果设置控制信息包括:
步骤251,通过总控制信息确认对应的分区;
步骤252,在所述分区初始化之后,根据段控制信息中的SecName字段,确定异常信息应该存储的段;
步骤253,获取段控制信息中的dwSecWrite字段,从dwSecWrite字段中指针指向的地方开始写入异常信息,并在写入之后,将所述指针改写为指向所述异常信息尾地址的下一个地址。
本发明实施例中,以分区中划分为多个段、并且每个段用于存储不同类别的异常信息为例进行说明,此外,也可以只有一个段,此时区控制信息中的dwSectionCount设置为1。
上述示例中,以分区中继续分段的方式为例进行说明,此外,也可以不设置分段,BMC直接从分区中读取对应的异常信息。在不进行分段的实施方 式中,需要将dwSecRead字段和dwSecWrite字段设置在区控制信息中,以使得payload可以根据dwSecWrite字段指向的地址写入异常信息,以及使得BMC根据dwSecRead字段指向的地址拷贝异常信息。
下面的示例中,结合BMC和payload的操作过程对本发明实施例提供的信息存储方法进行说明。
参见图1C,本发明实施例提出了一种信息存储方法,所述方法包括以下步骤:
步骤310,BMC在本地内存中创建共享内存;并将所述共享内存模拟为内存设备。
步骤320,BMC在所述共享内存中划分分区,并根据分区的结果设置对应的总控制信息,其中,共享内存包括BIOS区、OS区和用户态区三个分区。
步骤330,payload扫描并识别所述内存设备,并读取所述总控制信息,根据所述总控制信息获取每个分区对应的信息;
步骤340,payload将异常信息存储至对应的分区,并根据存储的异常信息设置分区对应的区控制信息。
步骤350,BMC读取分区对应的区控制信息,并根据区控制信息,提取分区中存储的异常信息并拷贝到硬盘中。
步骤310中,BMC可以利用芯片自带的多功能(function)将保留内存模拟为PCI(Peripheral Component Interconnect,外部设备互联标准)/PCIE(PCI-Express)内存设备。参见图2,BMC利用多功能将保留内存(如RAM(Random-Access Memory,随机存取存储器))模拟为PCI/PCIE内存设备。
此外,BMC也可以按照USB(Universal Serial Bus,通用串行总线),或者其他设备驱动开发规范,设置各项配置和寄存器,将上述保留内存模拟为一个内存设备。BMC在上电过程中将加载该内存设备的驱动,在BMC加载该内存设备的驱动之后,这个通过BMC模拟的内存设备就可以被payload的BIOS和OS内核扫描到了。
步骤320中,共享内存包括BIOS区、OS区和用户态区,其中,根据需要,payload将产生的黑匣子信息写入到相应的分区中。其中,共享内存可以 根据需要划分为BIOS区、OS区和用户态区中的一个或多个,BIOS区、OS区和用户态区可以单独使用。其中,BIOS区用于存储BIOS异常信息,OS区用于存储OS异常信息,用户态区用于存储用户态异常信息。
BIOS发现如物理内存异常、IO异常之类的硬件异常时,将生成BIOS异常信息;OS在各种内核异常时,将生成OS异常信息,如kernel panic、kernel die、OOM、重启复位、异常打印等异常信息;用户态程序在发现异常时,将生成对应的用户态异常信息。
图3是共享内存管理和划分示意图。如图3所示,共享内存由BMC划分成三个区:BIOS区、OS区和用户态区,分别供payload的BIOS、OS和用户态程序使用。payload的BIOS部分、OS部分和用户态部分将分别运行各自对应的黑匣子程序,在每个部分运行的黑匣子程序发现异常并产生异常信息时,将记录到各自对应的区中。BMC将每个分区中写入的异常信息读取出来并存放在本地磁盘上。每个分区的大小由BMC在初始化共享内存区时固定分配好,在每个分区中,可以由每个区的使用者,即每个部分的黑匣子程序根据需要将分区分成一个或者多个段。
对共享内存的管理包括以下信息:总控制信息,用于划分每个分区;区控制信息,用于划分每个段;段控制信息,用于控制该段的读写访问。
共享内存的控制信息包括:总控制信息、区控制信息、以及段控制信息。其中,总控制信息,用于记录划分每个分区的相关信息;区控制信息,用于记录划分每个段的相关信息;段控制信息,用于控制该段的读写访问。下面分别进行介绍。
总控制信息包括dwFlag字段,总控制信息还包括BIOS控制信息、OS控制信息、以及用户态控制信息中的一种或多种;其中,BIOS控制信息包括dwBiosBegin字段和dwBiosEnd字段,OS控制信息包括dwOsBegin字段和dwOsEnd字段,用户态控制信息包括dwUserBegin字段和dwUserEnd字段。
例如,总控制信息中依次包括如下字段:dwFlag字段、dwBiosBegin字段、dwBiosEnd字段、dwOsBegin字段、dwOsEnd字段、dwUserBegin字段和dwUserEnd字段。
下面对每个字段分别进行说明。
dwFlag:无符号整数(Unsigned int)类型,用于区分BMC是否已初始化共享内存。该字段初始值由BMC设置。BMC在对共享内存初始化完成后,将dwFlag字段设置为一个特定的初始值(例如0x5a5a5a5a)。payload根据该字段值识别该共享内存是否可以使用。
dwBiosBegin:Unsigned int类型,BIOS区开始地址,用相对于共享内存的首地址偏移表示。该字段值由BMC设置。
dwBiosEnd:Unsigned int类型,BIOS区结束地址,用相对于共享内存的首地址偏移表示。该字段值由BMC设置。
dwOsBegin:Unsigned int类型,OS区开始地址,用相对于共享内存的首地址偏移表示。该字段值由BMC设置。
dwOsEnd:Unsigned int类型,OS区结束地址,用相对于共享内存的首地址偏移表示。该字段值由BMC设置。
dwUserBegin:Unsigned int类型,用户态区开始地址,用相对于共享内存的首地址偏移表示。该字段值由BMC设置。
dwUserEnd:Unsigned int类型,用户态区结束地址,用相对于共享内存的首地址偏移表示。该字段值由BMC设置。
步骤330中,BMC在对应的分区存储信息之后,将设置总控制信息中每个字段的值,payload通过读取总控制信息中的这些值后,就可以识别出对应的BIOS区、OS区和用户态区,使得BIOS、OS和用户态分别可以使用共享内存中的对应分区。
步骤340中,payload在将异常信息存储至对应的分区之后,将根据存储的异常信息设置分区对应的区控制信息。
下面结合区控制信息进行详细说明。
区控制信息包括BIOS区控制信息、OS区控制信息、以及用户态区控制信息中的一种或多种。BIOS区控制信息、OS区控制信息、以及用户态区控制信息分别用于指示BIOS区、OS区、以及用户态区的相关信息。payload在分区中存储对应的异常信息之后,将为分区设置对应的区控制信息,以使 得BMC能够根据区控制信息对存储在分区中的异常信息进行提取。
区控制信息依次包括如下字段:
(1)、dwAreaFlag字段
设置为Unsigned int类型,用于表示共享内存中BIOS区、OS区、或用户态区的信息记录功能是否已经开启。例如,BIOS区控制信息中的dwAreaFlag字段用于指示BIOS区的信息记录功能是否已经开启。
payload的BIOS、OS、或者用户态部分的黑匣子程序在初始化完成后,将dwAreaFlag字段设置为一个特殊的第一值(例如0x5a5a5a5a),表示payload的对应分区的信息记录功能已经开启。该字段位于当前区的开始地址处。
其中,payload的OS部分和用户态部分的黑匣子功能是可以动态加载和卸载的。在payload的OS部分或用户态部分加载黑匣子功能时,将此字段赋值为例如0x5a5a5a5a之类的第一值,在payload的OS部分或用户态部分卸载黑匣子功能时,将此字段赋值为例如0x0之类的第二值,以通知BMC该区黑匣子功能不再使用。
在payload加载OS部分或用户态部分的分区的黑匣子功能前,将dwAreaFlag字段置为0x0,并延时一段时间,在延时到达之后,将dwAreaFlag字段设置为一个特殊的第一值,表示开启对应分区的黑匣子功能。其中,延时目的是考虑到如果两次加载和卸载的间隙很短,则BMC无法识别payload黑匣子已经卸载又重新加载过,延时的时长设置为大于BMC读取共享内存中区控制信息的周期,比如BMC每1秒读取一次共享内存中的区控制信息,那么延时时长可以设为1.5秒或2秒。BIOS部分黑匣子功能不可卸载,因此不需要考虑卸载的问题。
(2)、dwAreaCtrSize字段
设置为Unsigned int类型,用于表示区的控制信息大小,表示区控制信息中的所有字段的大小。由当前区的使用者(BIOS、OS或者用户态的黑匣子程序)在黑匣子功能初始化时设置。为了前后兼容,后续如果区控制信息中的字段发生变化,只允许在区控制信息后面添加新字段,不允许在原来的区控制信息中插入新字段,也不允许改变原来的控制字段大小和语义。
本发明实施例中,BMC可以检测分区中读取的区控制信息与BMC所能识别的区控制信息的大小是否一致,如果不一致,BMC按照最小的区控制信息进行识别。其中,如果大小不一致,则说明BMC和payload中使用的版本不一致,这时BMC将按照尺寸最小的区控制信息进行识别。
(3)、dwSectionCount字段
设置为Unsigned int类型,表示本区中包含的段数,每个分区的使用者可以根据需要将每个分区划分成一个或者多个段,每个段分别作为一个环形缓冲区,payload将产生的黑匣子信息写入到相应的段中。BMC根据dwSectionCount字段依次读取每段的控制信息。该字段由当前区的使用者(BIOS、OS或者用户态的黑匣子程序)在黑匣子功能初始化时设置。
例如,BIOS的黑匣子程序将BIOS区划分为3段,3段分别用于上报不同类别的异常信息。段数3将由BIOS的黑匣子程序写入到dwSectionCount字段中。
(4)、dwFirstSecAddr字段
设置为Unsigned int类型,用于表示本区第一个段的开始地址,即第一个段的控制头地址。该字段由当前区的使用者(BIOS、OS或者用户态的黑匣子程序)在黑匣子功能初始化时设置。
本发明实施例中,BMC按照预设的周期读取共享内存中所有分区的区控制信息,并以当前读到的区控制信息为准,而不是只读一次然后保存在内存中供后续使用,这样做的目的在于每次都能获取到最新的区控制信息,因为在黑匣子使用过程中,可能会出现分区的黑匣子功能卸载和重新加载的情景,重新加载时可能会改变区控制头中的字段取值。
此外,payload在使用每个分区时,可以根据需要将分区分为一个或多个段。在区控制信息指示分段的情况。在每个段中,通常在段首的位置,设置有段控制信息。
下面对段控制信息进行说明。段控制信息中依次包含如下字段:
(1)、SecName字段
设置为字符串类型,用于表示段名称,由当前分区的使用者设置,表示 该段存放了什么信息,BMC在磁盘上存放该段中的黑匣子信息时就用此名称作为文件名。例如OS内核中发生panic异常、die异常分别写到不同的段中,段的名字分别为panic、die等。当名称为NULL时,表示该段没有被使用,这种情况主要在用户态区中可能会出现,因为用户态区中每个段的使用和应用程序相关,应用程序的启动有先有后,并且段的名称也由应用自己确定,因此需要支持用户态区中的段名动态设置和修改,在不用时设置为NULL,以方便分给后续的请求者。
(2)、dwSecCtrSize字段
设置为Unsigned int类型,用于表示段的控制信息大小,表示段控制信息中的所有字段的大小。由当前区的使用者(BIOS、OS或者用户态的黑匣子程序)设置。为了前后兼容,后续如果段控制信息中的字段发生变化,只允许在段控制信息后面添加新字段,不允许在原来的段控制信息中插入新字段,也不允许改变原来的控制字段大小和语义。BMC如果发现段控制信息大小和自己能够识别的段控制信息大小不一致,则说明BMC和payload中使用的版本不一致,这时要求BMC按照尺寸最小的段控制信息进行识别。
(3)、dwSecBegin字段
设置为Unsigned int类型,用于表示本段可以记录黑匣子信息的开始地址,用相对于共享内存的首地址的偏移表示。由当前区的使用者(BIOS、OS或者用户态的黑匣子程序)设置。
(4)、dwSecEnd字段
设置为Unsigned int类型,用于表示本段可以记录信息的结束地址,用相对于共享内存区的首地址的偏移表示。由当前区的使用者(BIOS、OS或者用户态的黑匣子程序)设置。
(5)、dwSecRead字段
设置为Unsigned int类型,表示该段内数据区读指针,BMC从该指针指向的地方开始读取。初始值由当前区的使用者(BIOS、OS或者用户态的黑匣子程序)设置,在运行过程中由BMC改写,每进行一次读操作,就会重新设置一次,表示该段黑匣子信息读到什么地方了。可选地,读操作执行之 后,将读指针设置为指向当前读取的最后地址的下一个地址。
(6)、dwSecWrite字段
设置为unsigned int类型,表示该段内数据区写指针,payload从该指针指向的地方开始写入。初始值由当前区的使用者(BIOS、OS或者用户态的黑匣子程序)设置,在运行过程中由当前区的使用者改写,每进行一次写操作,就会重新设置一次,表示该段黑匣子信息写到什么地方了。
其中,[dwSecBegin,dwSecEnd]范围的共享内存形成一个环形缓冲区,dwSecRead和dwSecWrite的取值范围位于[dwSecBegin,dwSecEnd]内,为该环形缓冲区的读写指针,控制着对该环形缓冲区的读写操作。payload向该环形缓冲区中写入黑匣子信息,BMC从该环形缓冲区中读取黑匣子信息并存入BMC本地的磁盘。payload如果能够缓存,在环形缓冲区写不完时可以先缓存,超过缓存能力则丢弃;如果不能缓存,则直接丢弃。
BIOS区和OS区在黑匣子功能初始化时就能确定各自的区要划分成哪些段,段的名称也能确定下来。而用户态区的真正使用者是用户态应用程序,实现不同的功能时应用程序也是千差万别的,因此用户态区中的段的名称在黑匣子功能初始化时是无法确定的。可以考虑在用户态区中考虑划分固定的段数,每段固定的大小,当用户态程序发起创建一个黑匣子段的请求时,内核态程序接收到请求后,在用户态区中为该请求找到一个SecName为NULL的段,并将SecName修改为申请者申请时携带的名字。当用户态程序发起删除某个黑匣子段请求时,内核态将这个段的名称设置为NULL,表示当前段空闲。
在实施时还要考虑BMC和payload的字节序可能不同的问题,必须约定在读写共享内存时采用某种给定的字节序,可以是网络字节序,也可以是约定好的某种字节序。
下面结合一个具体的示例进行说明。其中,以BIOS区的使用为例进行说明。其他分区的使用过程和BIOS区的使用相同或类似。当payload上的BIOS部分的黑匣子程序需要存储异常信息时,可以将异常信息存储至共享内存中的BIOS区。本示例包括以下步骤:
步骤410、Payload在上电时,扫描并识别内存设备,完成内存设备的地 址空间的映射。Payload通过读取内存设备中的总控制信息,获取内存设备中BIOS区、OS区和用户态区三个分区的大小和地址。
步骤420、BIOS部分的黑匣子程序完成BIOS区的初始化过程,即加载BIOS区的功能,其中,对将BIOS区划分为3段,并设置对应的区控制信息和段控制信息,例如,将区控制信息中的dwAreaFlag字段设置为例如0x5a5a5a5a之类的第一值,将dwSectionCount字段中填写段数3,并在dwFirstSecAddr字段中填写第1段的段首地址。
步骤430、在BIOS部分的黑匣子程序需要上报异常信息时,判断BIOS区是否已经初始化,如果已经初始化,则按照环形缓冲区的读写控制方法写入黑匣子信息至相应的段中。
步骤440、BMC的计时器到达计时周期时,将读取BIOS区中的异常信息,根据区控制信息,获取每个段的区域,根据段控制信息,可以获取段中异常信息的存储位置,从而进行读取。
本发明实施例中,环形缓冲区的读写控制方法是指存储区域设置为环形缓冲区,环形缓冲区首尾相连,并通过写指针和读指针来控制异常信息的存储和读取,其中,写指针用于payload从写指针指向的地方开始写入异常信息,并根据写入结果对写指针进行改写,读指针用于BMC从所述读指针指向的地方开始读取,并根据读取结果对所述读指针进行改写。
上述存储区域指BIOS、OS或用户态占用的用于存储异常信息的一块存储区域,本发明实施例中的存储区域以分区中的每个段为例进行说明。本发明实施例中,写指针以段内数据区写指针为例进行说明,读指针以段内数据区读指针为例进行说明。
下面结合具体的实施场景进行说明。
图4A是BMC上黑匣子程序实施步骤示意图,实施步骤如下:
步骤510、将共享内存映射为虚拟内存地址,使得BMC上的黑匣子程序能够访问共享内存;
步骤520、初始化总控制信息。其中,读取总控制信息中的字段dwFlag,如果dwFlag表示尚未初始化总控制信息,则初始化共享内存的总控制信息, 为每个区分配共享内存;如果dwFlag表示初始化总控制信息已经完成,则BMC不需要初始化共享内存的总控制信息,直接使用当前的总控制信息即可。
步骤530、设置周期定时器;
步骤540、预先设置的周期定时器是否到达计时周期;
步骤550、周期定时器到时,执行异常信息读取过程,异常信息读取过程包括如下处理:
读取三个区的区控制信息,根据区控制信息中字段dwAreaFlag取值判断该区是否已经被payload使用,对于被payload使用的区,根据该区中的每个段控制信息依次按照环形缓冲区的读写控制方法读取其中写入的黑匣子信息,并存放在本地磁盘上,跳转至步骤530。
payload上的实施又分为三部分:BIOS区实施步骤、OS区实施步骤和用户态区实施步骤。
图4B是BIOS区黑匣子程序实施步骤示意图,实施步骤如下:
步骤610、BIOS中产生黑匣子信息;
步骤620、判断BIOS区共享内存是否已经初始化;
步骤630、如果已经初始化,则按照环形缓冲区的读写控制方法写入黑匣子信息至相应的段中,跳转至步骤670;
步骤640、如果没有初始化,则根据共享内存总控制信息的字段dwFlag判断BMC是否已经完成对共享内存的初始化;
步骤650、若BMC已经完成对共享内存的初始化,则进行BIOS区的初始化,跳转至步骤630;
步骤660、若BMC没有完成对共享内存的初始化,则放弃此次写黑匣子信息记录操作,跳转至步骤670。
步骤670、此次黑匣子信息记录操作结束。
图4C是OS黑匣子程序的实施步骤示意图,实施步骤如下:
步骤710、插入OS部分的黑匣子内核模块。
即安装OS部分的黑匣子程序。如果OS部分的黑匣子程序已经安装, 则在payload上电时执行步骤720的操作。
步骤720、根据共享内存总控制信息的dwFlag字段,判断BMC是否已经完成对共享内存的初始化。若完成,则进行OS区的初始化。
步骤730、黑匣子内核模块中向OS内核注册捕获OS内核panic、die、reboot等异常行为的钩子函数;
步骤740、捕获到需要记录到黑匣子中的内核异常行为;
步骤750、判断OS区共享内存是否已经初始化;
步骤760、如果已经初始化,则按照环形缓冲区的读写控制方法写入黑匣子信息至相应的段中,跳转至步骤780;
步骤770、如果OS区没有初始化,则进行相应的处理。处理步骤包括步骤771、步骤772和步骤773:
步骤771、根据共享内存总控制信息的字段dwFlag判断BMC是否已经完成对共享内存的初始化;
步骤772、若完成对共享内存的初始化,则进行OS区的初始化,初始化完成后,跳转至步骤760;
步骤773、若没有完成对共享内存的初始化,则放弃此次黑匣子信息记录操作,跳转至步骤780。
步骤780、此次黑匣子信息记录操作结束。
图4D是用户态黑匣子实施步骤图,实施步骤如下:
步骤810、插入用户态区的黑匣子内核模块;
即安装用户态部分的黑匣子程序。如果用户态部分的黑匣子程序已经安装,则在payload上电时执行步骤820的操作。
步骤820、内核模块中创建一个守护线程,用于接收用户态程序创建黑匣子段和写黑匣子信息的请求。
用户态区的分段并不是在分区初始化的时候分好的,而是在使用过程中进行分段,并设置对应的段控制信息。
步骤830、根据共享内存总控制信息的字段dwFlag,判断BMC是否已 经完成对共享内存的初始化,若已经完成对共享内存的初始化,则进行用户态区的初始化。
步骤840、用户态程序请求创建一个黑匣子段;
步骤850、守护线程接收到用户态程序请求创建一个黑匣子段的请求后,判断用户态区共享内存是否已经初始化;
步骤860、在用户态区共享内存已经初始化的情况下,从空闲段中分配一个段作为该用户态程序的黑匣子段,并在将用户态程序传入的名字作为本段的名字;
步骤870、在用户态区共享内存没有初始化的情况下,进行对应的处理。
其中,首先初始化用户态区共享内存,在初始化成功之后分配空闲段给申请者,如果初始化失败,则将失败结果返回给用户态程序。
步骤870包括:
步骤871、如果没有初始化,则根据共享内存总控制信息的字段dwFlag判断BMC是否已经完成对共享内存的初始化;
这里的共享内存是指BMC创建的虚拟内存设备所对应的共享内存。
步骤872、若完成对共享内存的初始化,则进行用户态区的初始化,初始化完成后,从空闲段中拿出一个段作为该用户态程序的黑匣子段,并在将用户态程序传入的名字作为本段的名字;
步骤873、若没有完成对共享内存的初始化,则返回创建黑匣子段失败的信息给用户态程序,并结束本次操作。
步骤880、用户态程序请求向指定的黑匣子段写入黑匣子信息;
步骤890、守护线程接收到向指定的黑匣子段写入黑匣子信息的请求后,按照环形缓冲区的读写控制方法写入黑匣子信息至相应的段中。
基于与上述方法实施例相同或相似的构思,本发明实施例还提供一种信息存储装置,设置在服务器中的BMC上,参见图5,本发明实施例提出的信息存储装置包括:
创建单元10,设置为在本地内存中创建共享内存;并将所述共享内存模 拟为内存设备;
第一设置单元20,设置为:设置所述共享内存对应的控制信息;其中,所述控制信息用于在payload根据所述控制信息向所述内存设备中存储异常信息,并根据异常信息的存储结果设置所述控制信息;
读取单元30,设置为在满足读取条件时,根据控制信息,从所述共享内存中读取所述异常信息,并将所述异常信息拷贝至硬盘。
本发明实施例中,所述控制信息包括总控制信息;
所述第一设置单元20包括:
分区划分模块,设置为在所述共享内存中划分分区;
第一设置模块,设置为将所述分区对应的分区信息设置在所述总控制信息中,其中,共享内存包括BIOS区、OS区和用户态区三个分区。
本发明实施例中,所述总控制信息中包括如下字段:dwFlag字段、dwBiosBegin字段、dwBiosEnd字段、dwOsBegin字段、dwOsEnd字段、dwUserBegin字段和dwUserEnd字段;其中,
所述dwFlag字段用于表示所述共享内存是否已经完成初始化;
所述dwBiosBegin字段用于表示BIOS区开始地址,所述dwBiosEnd字段用于表示BIOS区结束地址;
所述dwOsBegin字段用于表示OS区开始地址,所述dwOsEnd字段用于表示OS区结束地址,
所述dwUserBegin字段用于表示用户态区开始地址,所述dwUserEnd字段用于表示用户态区结束地址;
所述第一设置模块20设置为:根据BIOS区、OS区和用户态区三个分区的结果,对应地设置总控制信息中每个字段的值;其中,将dwFlag字段设置为预定的第一值时,表示共享内存已经完成初始化,根据BIOS区的分区地址设置dwBiosBegin字段和dwBiosEnd字段,根据OS区的分区地址设置dwOsBegin字段和dwOsEnd字段,根据用户态区的分区地址设置dwUserBegin字段和dwUserEnd字段。
本发明实施例中,所述控制信息还包括区控制信息和段控制信息;
所述读取单元30包括:
判断模块,用于读取每个分区对应的区控制信息,根据所述区控制信息中dwAreaFlag字段判断所述分区是否已经被payload使用;
异常信息读取模块,设置为当所述分区已经被payload使用时,读取分区中每段的段控制信息,根据所述段控制信息获取payload存储的异常信息的存储区域,并根据所述存储区域读取所述异常信息。
本发明实施例中,所述满足读取条件包括:预先设置的周期性的定时器的计时到时。
基于与上述实施例相同或相似的构思,本发明实施例还提供一种信息存储装置,设置在服务器中的payload上,参见图6,本发明实施例提出的信息存储装置包括:
扫描单元50,设置为扫描内存设备;
控制信息读取单元60,设置为读取内存设备中设置的控制信息;
写入单元70,设置为根据所述控制信息向所述内存设备中存储异常信息,并根据异常信息的存储结果设置控制信息。
本发明实施例中,所述控制信息包括总控制信息和区控制信息,
所述信息存储装置还包括:第二设置单元80,设置为根据获取分区信息;以及,对分区执行分区初始化,其中,所述分区信息包括分区的开始地址和结束地址;所述初始化包括设置对应的区控制信息。
本发明实施例中,所述区控制信息包括如下字段:dwAreaFlag字段、dwAreaCtrSize字段、dwSectionCount字段、以及dwFirstSecAddr字段;其中,
所述dwAreaFlag字段用于表示对应的分区是否已经开启信息记录功能;
所述dwAreaCtrSize字段用于表示对应分区的控制信息大小;
所述dwSectionCount字段用于表示对应分区的包含的段数;
所述dwFirstSecAddr字段用于表示对应分区中第一个段的开始地址。
本发明实施例中,所述控制信息还包括段控制信息;
所述第二设置单元80包括:
分段设置模块,设置为对所述分区进行分段,并设置每段对应的段控制信息;其中,每个段用于存储不同类别的异常信息;
所述段控制信息包括如下字段:SecName字段、dwSecCtrSize字段、dwSecBegin字段、dwSecEnd字段、dwSecRead字段、dwSecWrite字段;其中,
所述SecName字段,用于表示当前段的名称;
所述dwSecCtrSize字段,用于表示当前段的控制信息大小,
所述dwSecBegin字段,用于表示当前段的信息记录区域的开始地址,
所述dwSecEnd字段,用于表示当前分段的信息记录区域的结束地址,
所述dwSecRead字段,用于表示段内数据区读指针,用于BMC从所述指针指向的地方开始读取,并根据读取结果对所述指针进行改写;
所述dwSecWrite字段,用于表示段内数据区写指针,用于payload从所述指针指向的地方开始写入异常信息,并根据写入结果对所述指针进行改写。
本发明实施例中,所述写入单元70包括:
分区确认模块,设置为通过总控制信息确认对应的分区;
分段确认模块,设置为在所述分区初始化之后,根据段控制信息中的SecName字段,确定异常信息应该存储的段;
写入模块,设置为获取段控制信息中的dwSecWrite字段,从dwSecWrite字段中指针指向的地方开始写入异常信息,并在写入所述异常信息之后,将所述指针改写为指向所述异常信息尾地址的下一个地址。
基于与上述实施例相同或相似的构思,本发明实施例还提供一种服务器,所述服务器包括本发明实施例提供的任一信息存储装置。
本发明实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令被执行时实现图1A所示的信息存储方法。
本发明实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令被执行时实现图1B所示的信息存储方法。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器)完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本发明实施例不限制于任何特定形式的硬件和软件的结合。
需要说明的是,以上所述的实施例仅是为了便于本领域的技术人员理解而已,并不用于限制本申请的保护范围,在不脱离本申请的发明构思的前提下,本领域技术人员对本申请所做出的任何显而易见的替换和改进等均在本申请的保护范围之内。
工业实用性
本申请实施例提供一种信息存储方法、装置及服务器,通过共享内存的读写方式,异常信息的数据上报的速度较快,可以满足在很短的时间内上报较多的异常信息的需求,效率高,上报时间短,能够提高通过BIOS发现的硬件异常来定位服务器中的硬件问题的成功率。

Claims (21)

  1. 一种信息存储方法,包括:
    在本地内存中创建共享内存;并将所述共享内存模拟为内存设备;
    设置所述共享内存对应的控制信息;其中,所述控制信息用于有效负载payload根据所述控制信息向所述内存设备中存储异常信息,并根据所述异常信息的存储结果设置所述控制信息;
    在满足读取条件时,根据控制信息,从所述共享内存中读取所述异常信息,并将所述异常信息拷贝至硬盘。
  2. 根据权利要求1所述的信息存储方法,其中,
    所述控制信息包括总控制信息;
    所述设置所述共享内存对应的控制信息包括:
    在所述共享内存中划分分区,并将所述分区对应的分区信息设置在所述总控制信息中,其中,所述共享内存包括基本输入输出系统BIOS区、操作系统OS区和用户态区。
  3. 根据权利要求2所述的信息存储方法,其中,
    所述总控制信息中包括如下字段:dwFlag字段、dwBiosBegin字段、dwBiosEnd字段、dwOsBegin字段、dwOsEnd字段、dwUserBegin字段和dwUserEnd字段;
    所述dwFlag字段用于表示所述共享内存是否已经完成初始化;
    所述dwBiosBegin字段用于表示BIOS区开始地址,所述dwBiosEnd字段用于表示BIOS区结束地址;
    所述dwOsBegin字段用于表示OS区开始地址,所述dwOsEnd字段用于表示OS区结束地址,
    所述dwUserBegin字段用于表示用户态区开始地址,所述dwUserEnd字段用于表示用户态区结束地址;
    所述将所述分区对应的分区信息设置在所述总控制信息中,包括:
    根据BIOS区、OS区和用户态区三个分区的结果,对应地设置总控制信 息中每个字段的值;其中,将dwFlag字段设置为预定的第一值时,表示共享内存已经完成初始化,根据BIOS区的分区地址设置dwBiosBegin字段和dwBiosEnd字段,根据OS区的分区地址设置dwOsBegin字段和dwOsEnd字段,根据用户态区的分区地址设置dwUserBegin字段和dwUserEnd字段。
  4. 根据权利要求3所述的信息存储方法,其中,
    所述控制信息还包括区控制信息和段控制信息;
    所述根据所述控制信息,从所述共享内存中读取所述异常信息包括:
    读取每个分区对应的区控制信息,根据所述区控制信息中dwAreaFlag字段判断所述分区是否已经被payload使用;
    当所述分区已经被payload使用时,读取分区中每段的段控制信息,根据所述段控制信息获取payload存储的异常信息的存储区域,并根据所述存储区域读取所述异常信息。
  5. 根据权利要求1所述的信息存储方法,其中,所述满足读取条件包括:预先设置的周期性的定时器的计时到时。
  6. 一种信息存储方法,包括:
    扫描内存设备;
    读取所述内存设备中设置的控制信息;
    根据所述控制信息向所述内存设备中存储异常信息,并根据所述异常信息的存储结果设置控制信息。
  7. 根据权利要求6所述的信息存储方法,其中,
    所述控制信息包括总控制信息和区控制信息,
    在所述根据所述控制信息向所述内存设备中存储异常信息之前,所述信息存储方法还包括:
    获取分区信息;其中,所述分区信息包括分区的开始地址和结束地址;
    对分区执行分区初始化,其中,所述初始化包括设置对应的区控制信息。
  8. 根据权利要求7所述的信息存储方法,其中,所述区控制信息包括如下字段:dwAreaFlag字段、dwAreaCtrSize字段、dwSectionCount字段、 以及dwFirstSecAddr字段;其中,
    所述dwAreaFlag字段用于表示对应的分区是否已经开启信息记录功能;
    所述dwAreaCtrSize字段用于表示对应分区的控制信息大小;
    所述dwSectionCount字段用于表示对应分区的包含的段数;
    所述dwFirstSecAddr字段用于表示对应分区中第一个段的开始地址。
  9. 根据权利要求7所述的信息存储方法,其中,
    所述控制信息还包括段控制信息;
    所述对分区执行分区初始化包括:对所述分区进行分段,并设置每段对应的段控制信息;其中,每个段用于存储不同类别的异常信息;
    所述段控制信息包括如下字段:SecName字段、dwSecCtrSize字段、dwSecBegin字段、dwSecEnd字段、dwSecRead字段、dwSecWrite字段;其中,
    所述SecName字段,用于表示当前段的名称;
    所述dwSecCtrSize字段,用于表示当前段的控制信息大小,
    所述dwSecBegin字段,用于表示当前段的信息记录区域的开始地址,
    所述dwSecEnd字段,用于表示当前段的信息记录区域的结束地址,
    所述dwSecRead字段,用于表示段内数据区读指针,用于单板管理控制器BMC从所述指针指向的地方开始读取,并根据读取结果对所述指针进行改写;
    所述dwSecWrite字段,用于表示段内数据区写指针,用于有效负载payload从所述指针指向的地方开始写入异常信息,并根据写入结果对所述指针进行改写。
  10. 根据权利要求9所述的信息存储方法,其中,所述根据所述控制信息向所述内存设备中存储异常信息,并根据异常信息的存储结果设置控制信息包括:
    通过总控制信息确认对应的分区;
    在所述分区初始化之后,根据段控制信息中的SecName字段,确定异常 信息应该存储的分段;
    获取段控制信息中的dwSecWrite字段,从dwSecWrite字段中指针指向的地方开始写入异常信息,并在写入所述异常信息之后,将所述指针改写为指向所述异常信息尾地址的下一个地址。
  11. 一种信息存储装置,位于服务器中的单板管理控制器BMC上,所述信息存储装置包括:
    创建单元,设置为在本地内存中创建共享内存;并将所述共享内存模拟为内存设备;
    第一设置单元,设置为:设置所述共享内存对应的控制信息;其中,所述控制信息用于有效负载payload根据所述控制信息向所述内存设备中存储异常信息,并根据所述异常信息的存储结果设置所述控制信息;
    读取单元,设置为在满足读取条件时,根据控制信息,从所述共享内存中读取所述异常信息,并将所述异常信息拷贝至硬盘。
  12. 根据权利要求11所述的信息存储装置,其中,
    所述控制信息包括总控制信息;
    所述第一设置单元包括:
    分区划分模块,设置为在所述共享内存中划分分区;
    第一设置模块,设置为将所述分区对应的分区信息设置在所述总控制信息中,其中,共享内存包括基本输入输出系统BIOS区、操作系统OS区和用户态区三个分区。
  13. 根据权利要求12所述的信息存储装置,其中,
    所述总控制信息中包括如下字段:dwFlag字段、dwBiosBegin字段、dwBiosEnd字段、dwOsBegin字段、dwOsEnd字段、dwUserBegin字段和dwUserEnd字段;其中,
    所述dwFlag字段用于表示所述共享内存是否已经完成初始化;
    所述dwBiosBegin字段用于表示BIOS区开始地址,所述dwBiosEnd字段用于表示BIOS区结束地址;
    所述dwOsBegin字段用于表示OS区开始地址,所述dwOsEnd字段用于表示OS区结束地址,
    所述dwUserBegin字段用于表示用户态区开始地址,所述dwUserEnd字段用于表示用户态区结束地址;
    所述第一设置模块设置为:根据BIOS区、OS区和用户态区三个分区的结果,对应地设置总控制信息中每个字段的值;其中,将dwFlag字段设置为预定的第一值时,表示共享内存已经完成初始化,根据BIOS区的分区地址设置dwBiosBegin字段和dwBiosEnd字段,根据OS区的分区地址设置dwOsBegin字段和dwOsEnd字段,根据用户态区的分区地址设置dwUserBegin字段和dwUserEnd字段。
  14. 根据权利要求13所述的信息存储装置,其中,
    所述控制信息还包括区控制信息和段控制信息;
    所述读取单元包括:
    判断模块,设置为读取每个分区对应的区控制信息,根据所述区控制信息中dwAreaFlag字段判断所述分区是否已经被payload使用;
    异常信息读取模块,设置为当所述分区已经被payload使用时,读取分区中每段的段控制信息,根据所述段控制信息获取payload存储的异常信息的存储区域,并根据所述存储区域读取所述异常信息。
  15. 根据权利要求11所述的信息存储装置,其中,所述满足读取条件包括:预先设置的周期性的定时器的计时到时。
  16. 一种信息存储装置,位于服务器中的有效负载payload上,所述信息存储装置包括:
    扫描单元,设置为扫描内存设备;
    控制信息读取单元,设置为读取内存设备中设置的控制信息;
    写入单元,设置为根据所述控制信息向所述内存设备中存储异常信息,并根据所述异常信息的存储结果设置所述控制信息。
  17. 根据权利要求16所述的信息存储装置,其中,
    所述控制信息包括总控制信息和区控制信息,
    所述信息存储装置还包括:第二设置单元,设置为:在所述写入单元向所述内存设备中存储异常信息之前,获取分区信息;分区执行分区初始化,其中,所述分区信息包括分区的开始地址和结束地址,所述初始化包括设置对应的区控制信息。
  18. 根据权利要求17所述的信息存储装置,其中,
    所述区控制信息包括如下字段:dwAreaFlag字段、dwAreaCtrSize字段、dwSectionCount字段、以及dwFirstSecAddr字段;其中,
    所述dwAreaFlag字段用于表示对应的分区是否已经开启信息记录功能;
    所述dwAreaCtrSize字段用于表示对应分区的控制信息大小;
    所述dwSectionCount字段用于表示对应分区的包含的段数;
    所述dwFirstSecAddr字段用于表示对应分区中第一个段的开始地址。
  19. 根据权利要求17所述的信息存储装置,其中,
    所述控制信息还包括段控制信息;
    所述第二设置单元包括:分段设置模块,设置为对所述分区进行分段,并设置每段对应的段控制信息;其中,每个段用于存储不同类别的异常信息;
    所述段控制信息包括如下字段:SecName字段、dwSecCtrSize字段、dwSecBegin字段、dwSecEnd字段、dwSecRead字段、dwSecWrite字段;其中,
    所述SecName字段,用于表示当前段的名称;
    所述dwSecCtrSize字段,用于表示当前段的控制信息大小,
    所述dwSecBegin字段,用于表示当前段的信息记录区域的开始地址,
    所述dwSecEnd字段,用于表示当前段的信息记录区域的结束地址,
    所述dwSecRead字段,用于表示段内数据区读指针,用于BMC从所述指针指向的地方开始读取,并根据读取结果对所述指针进行改写;
    所述dwSecWrite字段,用于表示段内数据区写指针,用于payload从所述指针指向的地方开始写入异常信息,并根据写入结果对所述指针进行改写。
  20. 根据权利要求19所述的信息存储装置,其中,所述写入单元包括:
    分区确认模块,设置为通过总控制信息确认对应的分区;
    分段确认模块,设置为在所述分区初始化之后,根据段控制信息中的SecName字段,确定异常信息应该存储的段;
    写入模块,设置为获取段控制信息中的dwSecWrite字段,从dwSecWrite字段中指针指向的地方开始写入异常信息,并在写入所述异常信息之后,将所述指针改写为指向所述异常信息尾地址的下一个地址。
  21. 一种服务器,包括如权利要求11至15中任一项所述的信息存储装置以及如权利要求16至20中任一项所述的信息存储装置。
PCT/CN2016/090846 2015-10-09 2016-07-21 一种信息存储方法和装置、及服务器 WO2017059721A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201510650281.X 2015-10-09
CN201510650281.XA CN106569904A (zh) 2015-10-09 2015-10-09 一种信息存储方法和装置、及服务器

Publications (1)

Publication Number Publication Date
WO2017059721A1 true WO2017059721A1 (zh) 2017-04-13

Family

ID=58487240

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2016/090846 WO2017059721A1 (zh) 2015-10-09 2016-07-21 一种信息存储方法和装置、及服务器

Country Status (2)

Country Link
CN (1) CN106569904A (zh)
WO (1) WO2017059721A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107168810A (zh) * 2017-05-10 2017-09-15 郑州云海信息技术有限公司 一种计算节点内存共享系统及读、写操作内存共享方法
CN108021518B (zh) * 2017-11-17 2019-11-29 华为技术有限公司 一种数据交互方法和计算设备
CN108459918A (zh) * 2018-03-26 2018-08-28 曙光信息产业(北京)有限公司 数据共享方法及装置
CN109032678B (zh) * 2018-07-18 2020-07-07 苏州浪潮智能科技有限公司 控制bios打印信息量的方法、装置、介质及打印信息的方法
CN109947572B (zh) * 2019-03-25 2023-09-05 Oppo广东移动通信有限公司 通信控制方法、装置、电子设备及存储介质
CN111240898B (zh) * 2020-01-09 2023-08-15 中瓴智行(成都)科技有限公司 一种基于Hypervisor的黑匣子实现方法及系统
CN111381996B (zh) * 2020-03-16 2023-06-06 Oppo(重庆)智能科技有限公司 内存异常处理方法及装置
CN114281557A (zh) * 2020-09-27 2022-04-05 中兴通讯股份有限公司 数据采集、上报方法、系统、芯片、cpu及存储介质
CN113626214B (zh) * 2021-07-16 2024-02-09 浪潮电子信息产业股份有限公司 一种信息传输方法、系统、电子设备及存储介质
CN114780316A (zh) * 2022-04-29 2022-07-22 苏州浪潮智能科技有限公司 一种内存测试方法、装置和系统
CN116225541A (zh) * 2022-12-08 2023-06-06 深圳市国鑫恒运信息安全有限公司 一种带内cpu与带外管理bmc通信的方法及通信系统
CN116069638B (zh) * 2023-01-19 2023-09-01 蔷薇大树科技有限公司 一种基于内核态模拟分布式异常状态的方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1390015A (zh) * 2001-06-05 2003-01-08 深圳市中兴通讯股份有限公司上海第二研究所 共享内存地址搜索逻辑装置
WO2003102770A1 (en) * 2002-05-31 2003-12-11 Advanced Micro Devices, Inc. Secure execution mode exceptions
CN103500133A (zh) * 2013-09-17 2014-01-08 华为技术有限公司 故障定位方法及装置
CN103699463A (zh) * 2012-09-28 2014-04-02 国际商业机器公司 一种使用Xeon处理器的服务器的内存测试方法和系统
CN103809988A (zh) * 2012-11-07 2014-05-21 联想(北京)有限公司 一种信息处理方法及电子设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1390015A (zh) * 2001-06-05 2003-01-08 深圳市中兴通讯股份有限公司上海第二研究所 共享内存地址搜索逻辑装置
WO2003102770A1 (en) * 2002-05-31 2003-12-11 Advanced Micro Devices, Inc. Secure execution mode exceptions
CN103699463A (zh) * 2012-09-28 2014-04-02 国际商业机器公司 一种使用Xeon处理器的服务器的内存测试方法和系统
CN103809988A (zh) * 2012-11-07 2014-05-21 联想(北京)有限公司 一种信息处理方法及电子设备
CN103500133A (zh) * 2013-09-17 2014-01-08 华为技术有限公司 故障定位方法及装置

Also Published As

Publication number Publication date
CN106569904A (zh) 2017-04-19

Similar Documents

Publication Publication Date Title
WO2017059721A1 (zh) 一种信息存储方法和装置、及服务器
US9778844B2 (en) Installation of operating system on host computer using virtual storage of BMC
US9811369B2 (en) Method and system for physical computer system virtualization
US8671405B2 (en) Virtual machine crash file generation techniques
US20170228228A1 (en) Remote launch of deploy utility
US8830228B2 (en) Techniques for enabling remote management of servers configured with graphics processors
US20120144391A1 (en) Provisioning a virtual machine
US10303458B2 (en) Multi-platform installer
JP5778296B2 (ja) 仮想計算機システム、仮想化機構、及びデータ管理方法
US9448808B2 (en) BIOS update with service processor without serial peripheral interface (SPI) access
CN107533441B (zh) 创建操作系统卷
CN114222975A (zh) 使用存储器孔径冲刷顺序的数据保存
US20200104141A1 (en) Techniques of retrieving bios data from bmc
US10474517B2 (en) Techniques of storing operational states of processes at particular memory locations of an embedded-system device
US11144326B2 (en) System and method of initiating multiple adaptors in parallel
US11226755B1 (en) Core dump in a storage device
JP2006011506A (ja) 起動イメージ提供システム及び方法、ブートノード装置、ブートサーバ装置並びにプログラム
CN116383012B (zh) 获取开机日志的方法及装置、传输开机日志的方法
CN116627472A (zh) 高速外围组件设备的固件程序升级方法及服务器
US10838737B1 (en) Restoration of memory content to restore machine state
US20070016761A1 (en) Method, apparatus, and computer program product for implementing enhanced system behavior control
US20220129292A1 (en) Fast virtual machine resume at host upgrade
JP2018181305A (ja) プールされた物理リソースのローカルディスク消去メカニズム
TWI840849B (zh) 計算系統、電腦實施方法及電腦程式產品
JP3334602B2 (ja) Pciデバイスのコンフィギュレーションレジスタの変更・設定方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16853027

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16853027

Country of ref document: EP

Kind code of ref document: A1