Moving objects in a primary computer due to memory errors in a secondary computer

The method addresses memory errors in secondary computers by copying and managing data mirroring, ensuring seamless failover and continuous operation by executing partitions on error-free memory locations, enhancing system availability and reliability.

DE112014003372B4Active Publication Date: 2026-06-03INTERNATIONAL BUSINESS MACHINE CORPORATION

Patent Information

Authority / Receiving Office
DE · DE
Patent Type
Patents
Current Assignee / Owner
INTERNATIONAL BUSINESS MACHINE CORPORATION
Filing Date
2014-07-10
Publication Date
2026-06-03

AI Technical Summary

Technical Problem

Existing computer systems face challenges in maintaining uninterrupted availability due to memory errors in secondary computers during data mirroring, leading to potential disruptions and inefficiencies in failover processes.

Method used

A method and system for managing memory errors by periodically copying data from a primary computer to a secondary computer, tracking changes, and executing partitions on the secondary computer in case of primary computer failure, using a memory table to manage error states and transferring data to error-free memory locations.

Benefits of technology

Ensures seamless failover and minimal disruption by transparently handling memory errors, allowing continuous operation of applications and systems by executing partitions on error-free memory locations, thereby enhancing system availability and reliability.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

In one embodiment, a partition is executed in a primary server, with the partition accessing a first memory location at a first memory block address in the primary server. If a corresponding first memory location in a secondary server has an error, where the corresponding first memory location in the secondary server corresponds to the first memory location in the primary server, an object is moved from the first memory location in the primary server to a second memory location in the primary server.
Need to check novelty before this filing date? Find Prior Art

Description

AREA

[0001] One embodiment of the invention relates generally to computer systems and in particular to computer systems in which data mirroring is used. BACKGROUND

[0002] Computer systems typically consist of a combination of hardware (such as semiconductor elements, transistors, chips, and circuit boards) and computer programs. As computers and the data they store become increasingly critical, users demand uninterrupted availability. To meet these high availability requirements, computers can be equipped with redundant components, allowing them to automatically switch to using another component if one fails or becomes unavailable.

[0003] A technique for ensuring high availability is called data mirroring or checkpointing, in which a primary computer periodically copies the contents of its memory and its processor state to a secondary computer. Data mirroring involves tracking changes in the memory accessed by a partition and changes in the processor state of the partition running on the primary computer, periodically pausing the execution of the partition on the primary computer, sending the tracked changes over a network to the secondary computer, waiting for confirmation from the secondary computer that the tracked changes have been received, and resuming the execution of the paused partition.In the event of a failure of the primary computer, the secondary computer begins to execute the partition that was being executed by the primary computer, using the tracked changes and the processor state in a manner that is transparent to the applications running in the partition.

[0004] Document US 2009 / 0282300A1 describes a method and device for transparently handling recurring correctable errors and uncorrectable errors in a mirrored storage system.

[0005] Document US 2007 / 0168713A1 describes a procedure, system, and program for managing errors in a mirrored system. It detects an error that prevents an application from writing updates to primary storage locations.

[0006] Document US 2008 / 0235482A1 describes a partition migration mechanism that migrates a logical partition on which an operating system is running and continues the logical partition before all resources in the logical partition have been migrated.

[0007] Document US 2008 / 0052478A1 describes a method, system, and manufacturing item for moving a logical data carrier from a first storage location to a second storage location using a copy relationship. SUMMARY

[0008] A method, a computer-readable storage medium, and a computer are provided. In one embodiment, a partition is executed in a primary server, the partition accessing a first memory location at a first memory block address in the primary server. If a corresponding memory location in a secondary server experiences an error, the first corresponding memory location in the secondary server being the first memory location in the primary server, an object is moved from the first memory location in the primary server to a second memory location in the primary server. BRIEF DESCRIPTION OF THE MULTIPLE DRAWING VIEWS Fig. Figure 1 shows an overview block diagram of an exemplary system for implementing an embodiment of the invention. Fig. Figure 2 shows an overview block diagram of exemplary server computers connected via a network and secondary storage units according to an embodiment of the invention. Fig. Figure 3 shows a block diagram of an exemplary data structure for a storage table according to an embodiment of the invention. Fig. Figure 4 shows a flow chart of the exemplary processing for creating test points according to an embodiment of the invention. Fig. Figure 5 shows a flow chart of exemplary processing for responding to memory errors according to an embodiment of the invention. Fig. Figure 6 shows a flow chart of exemplary processing for responding to the failure of a primary server according to an embodiment of the invention. Fig. Figure 7 shows a flowchart of the exemplary processing for responding to the failure of a secondary server according to an embodiment of the invention.

[0009] It should be noted, however, that the attached drawings merely illustrate exemplary embodiments of the invention and should therefore not be regarded as limiting the scope of other embodiments of the invention. DETAILED DESCRIPTION

[0010] In the drawings, where the same numbers consistently denote similar parts in the multiple views, this shows Fig. Figure 1 shows a block diagram of a server computer system connected to a network 130 according to an embodiment of the present invention. The mechanisms and apparatus of embodiments of the present invention apply equally to any suitable computer system. The main components of the server computer system 100 include one or more processors 101, a memory 102, a terminal interface unit 111, a memory interface unit 112, an interface unit 113 for I / O (input / output) units, and a network interface unit 114, all of which are directly or indirectly connected for data exchange between the components via a memory bus 103, an I / O bus 104, and an I / O bus interface unit 105.

[0011] The server computer system 100 contains one or more programmable general-purpose central processing units (CPUs) 101A, 101B, 101C, and 101D, referred to herein as processors 101. In one embodiment, the server computer system 100 contains multiple processors, which is common in a relatively large system; however, in another embodiment, the server computer system 100 may alternatively be a single-CPU system. Each processor 101 executes instructions stored in memory 102 and may have one or more levels of disk-internal cache memory.

[0012] In one embodiment, the memory 102 may comprise a direct-access semiconductor memory, a storage unit, or a storage medium (volatile or non-volatile) for storing or encoding data and programs. In another embodiment, the memory 102 represents the entire virtual memory of the server computer system 100 and may also include the virtual memory of other computer systems connected to the server computer system 100 or connected via the network 130. Conceptually, the memory 102 may be a single monolithic entity; in other embodiments, the memory 102 is a more complex arrangement, such as a hierarchy of cache memories and other storage units.Memory can, for example, be distributed across multiple levels of cache memory, and these cache memories can be further subdivided functionally, such that one cache stores instructions while another stores non-instruction data used by the processor(s). Memory can also be distributed and belong to different CPUs or groups of CPUs, as is common in all of the various so-called Non-Uniform Memory Access (NUMA) computer architectures.

[0013] Memory 102 is represented as having a plurality of partitions 134, a hypervisor 136, and a memory table 140. While the partitions 134, the hypervisor 136, and the memory table 140 are depicted as being contained within memory 102 in server computer system 100, some or all of them may exist in different computer systems in other embodiments and may be accessible remotely, for example, via network 130. Furthermore, server computer system 100 may employ virtual addressing mechanisms, allowing programs within server computer system 100 to behave as if they were accessing only a single large memory entity instead of multiple smaller memory entities.Although partitions 134, the hypervisor 136 and the memory table 140 are represented as being located in memory 102, all these elements are not necessarily fully contained in the same memory unit at the same time.

[0014] Each of the partitions 134 contains an application (app) 144, an operating system (OS) 146, and partition data 148. Any number of partitions 134 can be supported, and the number of partitions 134 present in the computer 100 at any given time can change dynamically as partitions 134 are added to or removed from the computer 100. Each of these partitions 134 contains instructions that are executed in the processor 101 in a separate or independent memory space. In numerous embodiments, the application 144 is implemented as a user application, a third-party application, or a part, multiple, or combination thereof. The applications 144 and the operating systems 146 contain instructions that are executed in the processor 101 or instructions that are interpreted by instructions executed in the processor 101.All applications 144 can be the same or different from each other, all operating systems 146 can be the same or different from each other, and all data 148 can be the same or different from each other.

[0015] Although the hypervisor 136 is depicted as being contained within memory 102, in other embodiments the entire hypervisor 136, or a portion thereof, may be implemented in firmware or hardware. The hypervisor 136 can perform both lower management functions, such as page table management, and higher management functions, such as creating and deleting partitions 134, concurrent I / O maintenance, and allocating / releasing processors, memory, and other hardware or program resources to / from the various partitions 134. The hypervisor 136 controls the allocation, blocking, and release of shared resources to the partitions 134 and access to these shared resources by the partitions 134, thereby ensuring the security and isolation of these partitions 134 within the server computer system 100.The hypervisor starts, finishes, and interrupts the execution of partition 134 on processor 101.

[0016] The hypervisor 136 statically and / or dynamically allocates a portion of the available resources in the computer 100 to each partition 134. For example, each partition 134 can be allocated to one or more of the processors 101 and / or one or more hardware threads in which it is to run, as well as a portion of the available memory for access. The partitions 134 can share a specific program and / or hardware resources, such as the processors 101, so that a particular resource can be used by more than one partition 134. Alternatively, a program and hardware resources can be allocated to only one partition 134 at any given time. Additional resources, such as mass storage, backup storage, user input, network connections, and the I / O adapters, are therefore typically allocated to one or more of the partitions 134. Resources can be allocated in several ways, e.g.,Bus-wise or resource-wise, where multiple partitions share resources on the same bus. Some resources can be allocated to multiple partitions simultaneously. The resources marked here are merely examples, and any resource that can be allocated can be used.

[0017] In one embodiment, the partitions 134 and / or the hypervisor 136 contain instructions that are executed in the processor 101, or instructions that are interpreted by instructions executed in the processor 101, to perform the functions as described below with reference to the Fig. 2, Fig. 3, Fig. 4, Fig. 5, Fig. 6 and Fig. 7 further described. In another embodiment, the partitions 134 and / or the hypervisor 136 can be implemented in microcode or firmware. In another embodiment, the hypervisor 136 can be implemented in hardware via logic gates, semiconductor units, chips, circuits, printed circuit boards and / or other physical hardware units.

[0018] The memory bus 103 provides a data transmission path or structure for transferring data between the processor 101, the memory 102, and the I / O bus interface unit 105. The I / O bus interface unit 105 is also connected to the I / O bus 104 for transferring data to and from the various I / O units. The I / O bus interface unit 105 exchanges data with several I / O interface units 111, 112, 113, and 114, also known as I / O processors (EAPs) or I / O adapters (EAAs), via the I / O bus 104.

[0019] The I / O interface units support data exchange with a variety of storage and I / O units. For example, the terminal interface unit 111 supports the connection of one or more user I / O units, which may include user output units (such as a video display unit, projectors, a speaker, and / or a television) and user input units (such as a camera, keyboard, mouse, light pen, touchpad, trackball, control buttons, RF identification tags, a finger, a stylus, or other pointing devices). A user can operate the user input units using a user interface to provide input data and commands to the user I / O unit 121 and the server computer system 100, and can receive output data via the user output units.A user interface can be displayed, for example, via the user I / O unit 121, e.g., on a display unit. The user I / O unit 121 can be of any size and can be configured for multiple users who view and touch the display unit simultaneously or jointly, with one embodiment allowing a user to touch any point on the display unit.

[0020] The storage interface unit 112 supports the connection of one or more disk drives or random-access storage units 125 (which are typically storage drive units with rotating magnetic disks, although they could alternatively be other storage units, including arrays of disk drives configured to appear to a host computer as a single large storage unit). In another embodiment, the storage unit 125 can be implemented via any type of secondary storage unit. The contents of the memory 102, or a portion thereof, can be stored in or retrieved from the storage unit 125 as needed. The interface unit 113 of the I / O unit provides an interface to all various other input / output units or units of other types, such as printers or fax machines.The network interface unit 114 provides one or more data transmission paths from the server computer system 100 to other digital units and computer systems; these paths may, for example, include one or more networks 130.

[0021] Although the memory bus 103 is in Fig. Figure 1 shows a relatively simple single-bus structure providing a direct data transmission path between the processors 101, the memory 102, and the I / O bus interface unit. However, the memory bus 103 can actually have several different buses or data transmission paths, arranged in various forms such as point-to-point connections in a hierarchical star or net configuration, multiple hierarchical buses, parallel and redundant paths, or any other suitable configuration type. Furthermore, while the I / O bus interface unit 105 and the I / O bus 140 are each shown as separate units, the server computer system 100 can actually contain multiple I / O bus interface units 105 or multiple I / O buses 140.Although several I / O interface units are shown that separate the I / O bus 104 from various data transmission paths leading to the different I / O units, in other embodiments some or all I / O units are directly connected to one or more I / O buses of the system.

[0022] In various embodiments, the Server Computer System 100 is a multi-user mainframe computer system, a single-user system, a server computer, or a similar unit that has a very simple or no direct user interface but receives requests from other computer systems (clients). In other embodiments, the Server Computer System 100 is implemented as a desktop computer, a portable computer, a laptop or notebook computer, a tablet computer, a pocket computer, a telephone, a smartphone, a pager, an automobile, a teleconferencing system, a device, or any other suitable type of electronic unit.

[0023] The network 130 can be any suitable bus, network, or multiples or combinations thereof, and it can support any suitable protocol suitable for transmitting data and / or code to / from the server computer system 100. In numerous embodiments, the network 130 can be a storage unit or a combination of storage units that are directly or indirectly connected to the server computer system 100. In another embodiment, the network 130 can support wireless transmissions. In another embodiment, the network 130 can support hard-wired transmissions such as a telephone line or telephone cable. In yet another embodiment, the network 130 can be the Internet and can support IP (Internet Protocol).In another embodiment, the network 130 is implemented as a local area network (LAN) or a wide area network (WAN). In another embodiment, the network 130 is implemented as a service provider network with hotspot service. In another embodiment, the network 130 is implemented as an intranet. In another embodiment, the network 130 is implemented as any cellular data network, with cellular radio network technology, or as a wireless network. In another embodiment, the network 130 is implemented as a suitable bus, network, or any multiples or combinations thereof.

[0024] Fig. Figure 1 is intended to represent the main components of the server computer system 100 and the network 130. However, the individual components may be more complex than those shown in Figure 1. Fig. 1. Complexity shown, components other than those in Fig. The components shown in section 1, or in addition to them, may be present, and the number, type, and configuration of such components may vary. Several specific examples of such additional complexity or variation are disclosed here; however, these are merely examples and do not necessarily represent the only such variations. The various program components shown in Fig. Figure 1 shows different embodiments of the invention and can be implemented in several ways, including the use of various computer applications, routines, components, objects, modules, data structures, etc., and are referred to here as “computer programs” or simply as “programs”.

[0025] The computer programs comprise one or more commands or instructions that reside at different times in different memories or memory units within the server computer system 100. When read and executed by one or more processors within the server computer system 100, or interpreted by instructions executed by one or more processors, these commands or instructions cause the server computer system 100 to perform the actions necessary to execute steps or elements that comprise the various aspects of embodiments of the invention. Aspects of embodiments of the invention may be embodied as a system, a method, or a computer program product. Accordingly, aspects of embodiments of the invention may take the form of a pure hardware implementation, a pure program implementation (the firmware, resident programs, microcode, etc.).The invention may take the form of a computer program product embodied in one or more computer-readable media containing computer-readable program code that is executed therein.

[0026] Any combination of one or more computer-readable media can be used. The computer-readable medium can be a computer-readable signaling medium or a computer-readable storage medium. A computer-readable storage medium can be, for example, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, device, or unit, or any suitable combination of the foregoing, but is not limited to these. More specific examples (a non-exhaustive list) of computer-readable storage media would include: an electrical connection with one or more wires, a portable computer disk, a hard disk drive (e.g., the Storage Unit 125), random-access memory (RAM) (e.g.,The memory (102), a read-only memory (ROM), a erasable programmable read-only memory (EPROM) or flash memory, an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer-readable storage medium can be any physical medium capable of containing or storing a program for use by or in conjunction with a system, device, or unit for executing instructions.

[0027] A computer-readable signal medium can contain a propagating data signal with computer-readable program code embodied therein, for example, in the baseband or as part of a carrier wave. Such a propagating signal can take any of a variety of forms, including but not limited to electromagnetic, optical, or any suitable combination thereof. A computer-readable signal medium can be any computer-readable medium that is not a computer-readable storage medium and that can transmit, propagate, or transport a program for use by or in conjunction with a system, device, or unit for instruction execution.Program code embodied on a computer-readable medium may be transmitted using any suitable medium, including but not limited to wireless, wired, fiber optic, radio frequency (RF) media, or any suitable combination of the foregoing.

[0028] Computer program code for performing operations for aspects of embodiments of the present invention can be written in any combination of one or more programming languages, including object-oriented programming languages ​​and conventional procedural programming languages. The program code can be executed only on a user's computer, partially on a remote computer, or only on the remote computer or server. In the latter scenario, the remote computer can be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection can be established to an external computer (for example, via the internet using an internet service provider).

[0029] Aspects of embodiments of the present invention are described herein with reference to flowcharts and / or block diagrams of methods, devices (systems), and computer program products. Each block of the flowcharts and / or block diagrams, and combinations of blocks in the flowcharts and / or block diagrams, can be implemented by computer program instructions embodied in a computer-readable medium. These computer program instructions can be provided to a processor of a general-purpose computer, a specialized computer, or other programmable data processing device to form a machine such that instructions executed by the processor of the computer or other programmable data processing device generate means for implementing the functions / effects specified in the block or blocks of the flowchart and / or block diagram.These computer program instructions may also be stored in a computer-readable medium capable of instructing a computer, other programmable data processing device, or other unit to operate in a particular manner, such that the instructions stored in the computer-readable medium produce a manufactured item containing instructions that implement the function / effect specified in the block(s) of the flowchart and / or block diagram.

[0030] The computer programs defining the functions of various embodiments of the invention can be supplied to a computer system via a variety of physical, computer-readable storage media that are functionally or communicatively (directly or indirectly) connected to the processor or processors. The computer program instructions can also be loaded into a computer, other data processing device, or other units to effect a series of operational steps to be executed in the computer, other data processing device, or other units to constitute a computer-implemented process, or the instructions executed in the computer or other data processing device can provide processes for implementing the functions / effects specified in the flowcharts and / or in the block(s) of the block diagram.

[0031] The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this context, each block in the flowchart or block diagrams can represent a module, segment, or section of code that includes one or more executable instructions for implementing the specified logical function(s). In some embodiments, the functions specified in the block may not occur in the order shown in the figures. For example, two blocks shown sequentially may actually be executed substantially simultaneously, or the blocks may occasionally be executed in reverse order, depending on the functionality involved.Each block in the block diagrams and / or the flowchart diagram, and combinations of blocks in the block diagrams and / or the flowchart diagrams, can be implemented by systems based on special hardware that performs the specified functions or effects, or in combinations of special hardware and computer instructions.

[0032] Embodiments of the invention can also be provided as part of a service to a customer company, a non-profit organization, a government entity, or an internal organizational structure. Aspects of these embodiments may include configuring a computer system to set up and execute data processing services (e.g., computer-readable code, hardware, and web services) that implement some or all of the methods described herein.Aspects of these embodiments may also include analyzing the customer company, generating recommendations in response to the analysis, generating machine-readable code to implement parts of the recommendations, integrating the machine-readable code into existing processes, computer systems, and a data processing structure, metering the use of the methods and systems described herein, allocating costs to users, and billing users for their use of these methods and systems. Furthermore, various programs described herein can be identified based on the application for which they are implemented in a particular embodiment of the invention.However, the specific program nomenclature that follows is used solely for convenience, and therefore embodiments of the invention are not limited to using only one specific application characterized and / or implied by such a nomenclature. The exemplary environments described in . Fig. The illustrations in Figure 1 are not intended to limit the present invention. Instead, other alternative hardware and / or program environments can be used without deviating from the scope of embodiments of the invention.

[0033] Fig. Figure 2 shows an overview block diagram of an exemplary server computer system A 100-1, an exemplary server computer system B 100-2, an exemplary server computer system C 100-3, and an exemplary server computer system D 100-4, which are connected via the network 130, and the storage unit 125 according to an embodiment of the invention. The server computer systems 100-1, 100-2, 100-3, and 100-4 are examples of the server computer system 100 and are generally referred to by this name. The server computer A 100-1 has a partition 134-1, a partition 134-2, a hypervisor 136, and a memory table 140-1. Partition 134-1 contains applications 144-1, an operating system 146-1, and data 148-1, referred to here as objects. Partition 134-2 can contain the same applications, operating systems, and data as partitions 134-1, 134-3, 134-4, 134-5, 134-6, 134-7, and 134-8, or others.

[0034] Server computer B 100-2 has one partition 134-3, one partition 134-4, one hypervisor 136, and one memory table 140-2. Partition 134-3 contains applications 144-2, an operating system 146-2, and data 148-2, which are referred to here as objects. Partition 134-3 can contain the same applications, operating systems, and data as partitions 134-1, 134-2, 134-4, 134-5, 134-6, 134-7, and 134-8, or other partitions. Server computer C 100-3 has one partition 134-5, one partition 134-6, one hypervisor 136, and one memory table 140-3. Partition 134-5 contains applications (144-3), an operating system (146-3), and data (148-3), which are referred to here as objects. Partition 134-6 can contain the same applications, operating systems, and data as partitions 134-1, 134-2, 134-3, 134-4, 134-5, 134-7, and 134-8, or other partitions.The server computer D 100-4 has one partition 134-7, one partition 134-8, a hypervisor 136, and a memory table 140-4. Partition 134-7 contains applications 144-4, an operating system 146-4, and data 148-4, which are referred to here as objects. Partition 134-8 can contain the same applications, operating systems, and data as partitions 134-1, 134-2, 134-3, 134-4, 134-5, 134-6, and 134-7, or other partitions.

[0035] Partitions 134-1, 134-2, 134-3, 134-4, 134-5, 134-6, 134-7 and 134-8 are examples of partition 134 ( Fig. 1) and are generally referred to by these. Memory tables 140-1, 140-2, 140-3 and 140-4 are examples of memory table 140 ( Fig. 1) and are generally referred to by these. Applications 144-1, 144-2, 144-3, and 144-4 are examples of application 144 ( Fig. 1) and are generally referred to by these. The applications 144-1, 144-2, 144-3, and 144-4 may be the same or different from each other. The operating systems 146-1, 146-2, 146-3, and 146-4 are examples of the operating system 146 ( Fig. 1) and are generally referred to by this. The operating systems 146-1, 146-2, 146-3, and 146-4 may be the same or different from each other. The data 148-1, 148-2, 148-3, and 148-4 are examples of the data 148 ( Fig. 1) and are generally referred to by these. The data 148-1, 148-2, 148-3 and 148-4 may be the same or different from each other.

[0036] The respective data 148-1, 148-2, 148-3 and 148-4 can contain state information describing the current state of execution of the corresponding partition 134-1, 134-3, 134-5 and 134-7, which contain the respective data 148-1, 148-2, 148-3 and 148-4, and can also contain buffered data that has not yet been written by the corresponding partition to the network 130 or to the storage unit 125.

[0037] The server computer running partition 134 is the primary server for that partition 134. Partition 134 does not run on its secondary server(s). Instead, partition 134 is mirrored on the secondary server. This means that the applications and operating system 146 of partition 134 are installed and present in the memory of the secondary server. The primary server periodically copies data from partition 134 on the primary server to partition 134 on the secondary server. This allows the secondary server to become the new primary server in response to a failure of the primary server, and partition 134 on the new primary server can resume running from the point where it stopped on the failed primary server, in a manner that is essentially transparent to the user of partition 134, with minimal disruption.Thus, a server can be the secondary server for partition 134 before a failover operation and then become the new primary server for the same partition 134 after a failover operation. Furthermore, a server can be a primary server for one partition 134 and simultaneously a secondary server for another partition 134. A partition 134 uses memory table 140, which resides in the primary server where the partition 134 is running, as further described below. One of the servers 100-1, 100-2, 100-3, or 100-4 can be a primary server for one or more partitions while simultaneously being a secondary server for partitions. Furthermore, a server can be the primary server for a partition at one time and the secondary server for the same partition at another time.

[0038] Fig. Figure 3 shows a block diagram of an exemplary data structure for a memory table 140-1 in a primary server A according to an embodiment of the invention. The memory table 140-1 has an arbitrary number of entries, one for each memory block address in the memory 102 in primary server A, which is accessed by executing a partition 134 in primary server A. Each entry has a field Memory Block Address 302. Each entry also has a field Error in Primary Server A 304, a field Error in Primary Server B 306, a field Error in Primary Server C 308, and a field Error in Primary Server D 310. However, in other embodiments, more or fewer fields may be present depending on the number of primary and secondary servers connected to the network 130.

[0039] The Memory Block Address 302 field specifies in each entry the address of a memory location or block in memory 102 of a server. The same memory block address 302 in different servers is said to be identical, meaning they have the same memory block address, but in different memory locations and on different servers. Depending on the implementation, the address specified by the Memory Block Address 302 field can be a logical address, a physical address, a virtual address, an absolute address, or a relative address. The Primary Server A Error 304 field, the Primary Server B Error 306 field, the Primary Server C Error 308 field, and the Primary Server D Error 310 field specify the respective error status of the corresponding memory locations, which are specified by the same memory block address 302 in each entry on the respective servers.In various embodiments, the error status can indicate that the memory location at memory block address 302 in the respective server has no error, that the memory location at memory block address 302 in the respective server had an error that has been corrected, or that the memory location at memory block address has an uncorrectable error, i.e., an error that cannot be corrected.

[0040] In various embodiments, a corrected error is a temporary, soft, or intermittent error that the server corrected by retrying the operation in which the error occurred (with the problem not occurring on the retry) or by using an ECC (Error Correction Code) that detects one-bit or double-bit errors in memory and rewrites the corrected data to the memory location where the error occurred, with no further error occurring on the rewrite, so that after correcting the error, the server can continue to access the memory block address where the corrected error occurred.In various embodiments, the corrected error can be caused by electromagnetic fields, cosmic radiation, or by the degradation of memory cells, which eventually leads to uncorrectable errors in the memory if the degradation persists over time. In various embodiments, an uncorrectable error is a hard error, a non-transient error, an error caused by a defect in the memory circuitry that the server cannot correct, repair, or eliminate, so that after the uncorrectable error is detected or after an attempt at error correction has failed, the server no longer accesses that memory location.

[0041] Memory table 140-1 further shows multiple memory blocks in secondary server B with a field error 312, multiple memory blocks in secondary server C with a field error 314, and multiple memory blocks in secondary server D with a field error 316. The multiple memory blocks in secondary server B with a field error 312, the multiple memory blocks in secondary server C with a field error 314, and the multiple memory blocks in secondary server D with a field error 316 represent the number of memory blocks in the respective servers that contain corrected and / or uncorrectable errors.

[0042] Fig. Figure 4 shows a flowchart of an exemplary processing of test points according to an embodiment of the invention. The logic of Fig. The 4 can be executed any number of times and on any primary server, such as servers 100-1, 100-2, 100-3, and 100-4. The logic of Fig. 4 can be executed simultaneously, one after the other, or nested in the same or different processors from the same or different servers, according to the logic of the Fig. 5, Fig. 6 and Fig. 7. Control begins in block 400. Control then proceeds to block 405, where a checkpoint is reached for a partition 134 running on a primary server. A checkpoint is represented by the expiration of a time period or by another event that defines a checkpoint boundary. In one embodiment, the hypervisor 136 can determine that a checkpoint has been reached by detecting the expiration of a timer. Control then proceeds to block 410, where, in response to the checkpoint being reached, the hypervisor 136 on the primary server sends partition data 148 to one (or more) secondary server(s), which receive the partition data 148 and store it in their respective memory. In this way, the primary server periodically sends partition data 148 to secondary servers.The control then moves to block 415, where hypervisor 136 waits on the primary server (for a period of time until the next checkpoint is reached). The control then jumps back to block 405 as described above.

[0043] Fig. Figure 5 shows a flowchart of an exemplary processing sequence for responding to memory errors according to one embodiment of the invention. The logic of Fig. Procedure 5 can be executed any number of times and in any primary server, such as servers 100-1, 100-2, 100-3, and 100-4. Control begins in block 500. Control then proceeds to block 505, where partition 134 in a primary server is executed by accessing objects at memory block addresses in memory 102 in the primary server (through read and / or write operations).

[0044] The control then goes to block 510, where the operating system 146 in the primary server determines whether a first storage location accessed (read or write) by the executing partition 134 in the primary server has a corrected error, or whether the corresponding storage location in a secondary server (corresponding to the first storage location in the primary server) has or had a (corrected or uncorrectable) error.If the determination result in block 510 is true, a first memory location accessed (read or write) by the executing partition 134 in the primary server had a corrected error, or the corresponding memory location in a secondary server (corresponding to the first memory location in the primary server) had a corrected error or an uncorrectable error; therefore, control passes to block 515, where the operating system 146 in the executing partition 134 moves the read or written object from the first memory location in the primary server to a second memory location in the primary server.The second storage location has no uncorrectable error or had no corrected error, and (optionally) the storage location(s) corresponding to the second storage location (where the corresponding storage location is on the secondary server) has no uncorrectable error or had no corrected error. The partition is not executed on the secondary server at the time the first storage location is found to have an error, at the time the corresponding storage location on the secondary server is found to have an error, and at the time the object is moved from the first storage location to the second storage location on the primary server.The operating system 146 does not move the object to a second storage location in the primary server that has a corresponding storage location in the secondary server with an error (corrected or uncorrectable), even if the second storage location in the primary server does not have an error.

[0045] Control then proceeds to block 520, where hypervisor 136 on the primary server sends to all other servers connected to the primary server the memory locations on the primary server that contain corrected or uncorrectable errors, and the number of memory blocks on the primary server that contain corrected or uncorrectable errors. The other servers receive the memory locations and counts and store them in their respective memory tables. Control then returns to block 505, where partition 134 continues execution on the primary server by accessing the same or different objects at the same or different memory locations as described above.

[0046] If the discovery result in block 510 is false, no memory locations accessed in the primary server by the executing partition 134 had a corrected error, and the memory locations corresponding to those in a secondary server and accessed by the executing partition 134 in the primary server had neither a corrected error nor an uncorrectable error. Therefore, control returns to block 505, where partition 134 continues execution in the primary server by accessing the same or different objects in the same or different memory locations as previously described above, without performing the processing described in blocks 515 and 520.

[0047] Fig. Figure 6 shows a flowchart of an exemplary processing procedure for responding to the failure of a primary server according to an embodiment of the invention. The in Fig. The logic illustrated in Figure 6 can be executed any number of times and in any server computer, such as server computers 100-1, 100-2, 100-3, and 100-4. Control begins in block 600. Control then proceeds to block 605, where a hypervisor 136 in server computer 100 detects that a primary server is faulty. In various embodiments, the hypervisor 136 detects that the primary server is faulty because it does not respond to receiving a message, packet, signal, or other notification from the primary server within a specified time period. In various embodiments, the hypervisor 136 receives a specification of this time period from the user I / O unit 121, from the network 130, or from a developer of the hypervisor 136. In one embodiment, the hypervisor 136 detects that the primary server is faulty via an activity log.In various embodiments, the primary server may malfunction due to an endless loop in the primary server, a (deliberate or unintentional) lack of power supply to the primary server, or a program or hardware error in the primary server.

[0048] The control then goes to block 610, where the hypervisor 136 in the server computer 100 selects a chosen secondary server (among all servers that are secondary servers for the faulty primary server) that has the fewest, smallest, or lowest number of memory blocks with errors that have been corrected or are uncorrectable, compared to all other secondary servers.

[0049] The control then proceeds to block 615, where hypervisor 136 in server computer 100 designates the selected secondary server as the new primary server for partition 134, which was running on the failed server computer (before the failure of the failed server computer), and begins executing partition 134 on the new primary server (the selected secondary server). Partition 134 on the new primary server reads partition data 148 from the new primary server and uses partition data 148 to determine the state of the processor on which partition 134 is running and / or the state of the transaction or request that partition 134 is currently processing. Partition 134 is executed on the new primary server according to the logic of the Fig. 4 and Fig. 5 is executed using memory table 140 of the new primary server. Control then proceeds to block 699, where the logic of Fig. jumps back to 6.

[0050] Fig. Figure 7 shows a flowchart of an exemplary processing procedure for responding to the failure of a secondary server according to an embodiment of the invention. The in Fig. The logic illustrated in Figure 7 can be executed any number of times and on any primary server computer, such as server computers 100-1, 100-2, 100-3, and 100-4. Control begins in block 700. Control then proceeds to block 705, where hypervisor 136 on a primary server detects that a secondary server is experiencing an error. In various embodiments, hypervisor 136 detects that the secondary server is experiencing an error in response to not receiving a message, packet, signal, or other notification from the secondary server within a specified time period. In one embodiment, hypervisor 136 detects that the secondary server is experiencing an error via an activity log.In various embodiments, the secondary server may fail due to an infinite loop within the secondary server, a (deliberate or unintentional) power failure, or a program or hardware error in the secondary server. The controller then proceeds to block 710, where, in response to a detection that the secondary server is faulty, hypervisor 136 removes the information on corrected and uncorrectable errors for the faulty secondary server from memory table 140 in the primary server.

[0051] The control then proceeds to block 715, where hypervisor 136, in response to detecting that the secondary server is faulty, notifies operating system 146 on the primary server that the secondary server is faulty. Upon receiving this notification, operating system 146 on the primary server suspends the avoidance of memory locations on the faulty secondary server that had errors; that is, operating system 146 on the primary server allows objects to be stored at memory locations on the primary server that had corresponding locations on the secondary server with (corrected or uncorrectable) errors. The control then proceeds to block 799, where the logic of Fig. jumps back to 7.

[0052] In this way, a partition in one embodiment can avoid encountering memory errors immediately after a function takeover operation.

[0053] The terminology used herein serves only to describe certain embodiments and is not intended to limit the invention. The singular forms "a" and "the" are intended to include the plural forms unless otherwise specified in the context. It is further understood that the expressions "indicates" and / or "indicating," when used in this specification, specify the presence of identified features, integers, steps, operations, elements, and / or components, but do not exclude the presence or addition of one or more features, integers, steps, operations, elements, components, and / or their groups.In the preceding detailed description of exemplary embodiments of the invention, reference was made to the accompanying drawings (in which identical numbers represent similar elements), which form an integral part thereof and in which specific exemplary embodiments in which the invention can be realized are shown for illustrative purposes. These embodiments have been described with sufficient detail to enable a person skilled in the art to realize the invention; however, other embodiments may be used, and logical, mechanical, electrical, or other modifications may be made without altering the scope of use. Numerous specific details have been presented in the preceding description to facilitate a complete understanding of embodiments of the invention. However, embodiments of the invention can be realized without these specific details.In other cases, known circuits, structures and techniques were not shown in detail in order not to obscure embodiments of the invention.

[0054] Different instances of the term "implementation" used in this specification may not necessarily refer to the same embodiment. All data and data structures shown or described here only as examples may be used, and other embodiments may employ different amounts of data, data types, fields, numbers and types of fields, field labels, numbers and types of rows, records, entries, or organizational forms of data. Furthermore, all data may be linked to logic circuits, thus eliminating the need for a separate data structure. The preceding detailed description should therefore not be considered restrictive.

Claims

[1] Method which features: Executing a first partition (134) in a primary server (100-1, 100-2, 100-3, 100-4), wherein the first partition accesses a first memory location at a first memory block address (302) in the primary server; Maintaining a non-executing second partition (134) on a secondary server (100-1, 100-2, 100-3, 100-4), wherein the second partition is a mirrored version of the first partition containing non-executing applications and an operating system (146) installed in the first partition, wherein data is periodically copied from the first partition to the second partition, the second partition being available to begin execution in the event of a failure of the first partition; and If a first corresponding storage location in the secondary server has an error (304, 30, 308, 310), where the first corresponding storage location in the secondary server corresponds to the first storage location in the primary server, move an object from the first storage location in the primary server to a second storage location in the primary server. [2] The method of claim 1, wherein the displacement of the object further comprises: Moving the object from the first storage location in the primary server (100-1, 100-2, 100-3, 100-4) to the second storage location in the primary server, which corresponds to a second corresponding storage location in the secondary server (100-1, 100-2, 100-3, 100-4), where the second corresponding storage location in the secondary server does not have the error (304, 30, 308, 310). [3] Method according to claim 1, wherein the first corresponding memory location in the secondary server (100-1, 100-2, 100-3, 100-4) corresponds to the first memory location in the primary server (100-1, 100-2, 100-3, 100-4) if the first memory block address (302) of the first memory location in the primary server is identical to a first corresponding memory block address (302) of the first corresponding memory location in the secondary server. [4] The method of claim 1, further comprising: Starting the execution of the second partition in the secondary server (100-1, 100-2, 100-3, 100-4) in response to a detection that the primary server (100-1, 100-2, 100-3, 100-4) is faulty, wherein the detection that the primary server is faulty further includes a detection that the secondary server has not received a message from the primary server within a certain period of time. [5] The method of claim 4, further comprising: Selecting the secondary server (100-1, 100-2, 100-3, 100-4) from a plurality of secondary servers that has the smallest number of memory blocks with errors (304, 30, 308, 310). [6] The method of claim 1, further comprising: In response to a detection that the secondary server (100-1, 100-2, 100-3, 100-4) is faulty, allow objects to be stored at the first storage location in the primary server (100-1, 100-2, 100-3, 100-4). [7] Method according to claim 1, wherein the defect (304, 30, 308, 310) comprises a corrected defect. [8] Method according to claim 1, wherein the defect (304, 30, 308, 310) comprises an uncorrectable defect. [9] Non-transitory, computer-readable storage medium encoded with instructions, wherein the instructions, when executed, exhibit: Executing a partition in a primary server (100-1, 100-2, 100-3, 100-4), wherein the partition accesses a first memory location at a first memory block address (302) in the primary server; if a first corresponding memory location in a secondary server (100-1, 100-2, 100-3, 100-4) has an error (304, 30, 308, 310), wherein the first corresponding memory location in the secondary server corresponds to the first memory location in the primary server, moving an object from the first memory location in the primary server to a second memory location in the primary server, wherein the movement of the object further includes moving the object from the first memory location in the primary server to the second memory location in the primary server, which corresponds to a second corresponding memory location in the secondary server, wherein the second corresponding memory location in the secondary server does not have the error; and In response to a detection that the secondary server is faulty, allow objects to be stored at the first storage location on the primary server. [10] Non-transitory, computer-readable storage medium according to claim 9, wherein the first corresponding storage location in the secondary server (100-1, 100-2, 100-3, 100-4) corresponds to the first storage location in the primary server (100-1, 100-2, 100-3, 100-4) if the first memory block address (302) of the first storage location in the primary server is identical to a first corresponding memory block address (302) of the first corresponding storage location in the secondary server. [11] Non-transitory, computer-readable storage medium according to claim 9, further comprising: Starting the execution of the partition on the secondary server (100-1, 100-2, 100-3, 100-4) in response to a detection that the primary server (100-1, 100-2, 100-3, 100-4) is faulty, wherein the detection that the primary server is faulty further includes a detection that the secondary server has not received a message from the primary server within a certain period of time. [12] Non-transitory, computer-readable storage medium according to claim 11, further comprising: Selecting the secondary server (100-1, 100-2, 100-3, 100-4) from a plurality of secondary servers that has the smallest number of memory blocks with errors (304, 30, 308, 310). [13] Non-transitory, computer-readable storage medium according to claim 9, wherein the detection that the secondary server (100-1, 100-2, 100-3, 100-4) is faulty further comprises a detection that the primary server (100-1, 100-2, 100-3, 100-4) has not received a message from the secondary server within a certain period of time. [14] Non-transient, computer-readable storage medium according to claim 9, wherein the fault (304, 30, 308, 310) comprises a corrected fault. [15] Non-transient, computer-readable storage medium according to claim 9, wherein the fault (304, 30, 308, 310) comprises a non-correctable fault. [16] Computer (100) which has: a processor (101); and a memory (102) connected to the processor for data exchange, wherein the memory is encoded with instructions, and wherein the instructions, when executed in the processor, have: Executing a partition in a primary server (100-1, 100-2, 100-3, 100-4), wherein the partition accesses a first memory location at a first memory block address (302) in the primary server; if a first corresponding memory location in a secondary server (100-1, 100-2, 100-3, 100-4) has an error (304, 30, 308, 310), where the first corresponding memory location in the secondary server corresponds to the first memory location in the primary server, move an object from the first memory location in the primary server to a second memory location in the primary server; and In response to a detection that the secondary server is faulty, allow objects to be stored at the first storage location on the primary server. [17] Computer (100) according to claim 16, wherein the instructions further comprise: Selecting the secondary server (100-1, 100-2, 100-3, 100-4) from a plurality of secondary servers that has the smallest number of memory blocks with errors (304, 30, 308, 310). [18] Computer (100) according to claim 16, wherein the fault (304, 30, 308, 310) comprises a corrected fault. [19] Computer (100) according to claim 16, wherein the fault (304, 30, 308, 310) comprises an uncorrectable fault. [20] Computer (100) according to claim 16, wherein the moving of the object further comprises moving the object from the first memory location in the primary server (100-1, 100-2, 100-3, 100-4) to the second memory location in the primary server, which corresponds to a second corresponding memory location in the secondary server (100-1, 100-2, 100-3, 100-4), wherein the second corresponding memory location in the secondary server does not have the error (304, 30, 308, 310), wherein the first corresponding memory location in the secondary server corresponds to the first memory location in the primary server if the first memory block address (302) of the first memory location in the primary server is identical to a first corresponding memory block address (302) of the first corresponding memory location in the secondary server, wherein the partition at a time of determining that the first corresponding memory location in the secondary server has errorsis not running on the secondary server, and, wherein the instructions, when executed in the processor, further include: starting the partition in the secondary server in response to a detection that the primary server is faulty, wherein the detection that the primary server is faulty further includes a detection that the secondary server has not received a message from the primary server within a certain period of time.