Abstract:
A method for configuring components in a computing system. A selected one of the components is designated as a primary component, the other components thereby automatically adopting a status of secondary component. The designation of the primary component is stored in a first memory that is accessible by at least one of the primary component, at least one secondary component, and the computing system. Upon occurrence of a predetermined computing system event, the first memory is read to determine the designation of the primary component. A configuration file from a second memory is automatically copied to a memory of at least one secondary component, thereby creating a new configuration file in the at least one secondary component.

Description:
FIELD 
     This invention relates to the field of replaceable computing components. More particularly, this invention relates to configuring redundant components in a computing system. 
     INTRODUCTION 
     Maintaining configurations of computing systems is important for high availability of such systems. It is often an issue to store the right configuration into the right element of a system. It is important for some computing systems to remain fully functional for a high percentage of the time. In some systems this high uptime is accomplished by having one or more layers of redundancy in the various components of the system. For example, if it is important to always have network communication between system A and system B, each of the two systems might have two network communication cards, instead of just one. In this manner, if one of the cards in one or more of the two systems becomes inoperable or unreliable for any reason, the other card can immediately be used by the associated system to continue the network communications. 
     While this generally works quite well, it takes a significant amount of time and effort (and therefore, cost) to ensure that the secondary component is properly configured, such that if and when the primary component goes down or is otherwise removed from service, the secondary component is immediately ready to continue the associated service to the system. 
     Similarly, some systems do not have redundant components, and thus when a given component of the computing system fails, the old component must be replaced, and a new component must be inserted. While in many rack mount systems the process of replacing a failed hardware component is relatively easy and quick, configuring the new component to match the configuration of the old component can be quite time-consuming. In some cases, the configuration of the old component is irretrievably lost at the moment that the old component fails or is removed from the computing system. 
     What is needed, therefore, is a system that reduces issues such as those described above, at least in part. 
     SUMMARY 
     The above and other needs are met by a method for configuring components in a computing system. A selected one of the components is designated as a primary component, the other components thereby automatically adopting a status of secondary component. The designation of the primary component is stored in a first memory that is accessible by at least one of the primary component, at least one secondary component, and the computing system. Upon occurrence of a predetermined computing system event, the first memory is read to determine the designation of the primary component. A configuration file from a second memory is automatically copied to a memory of at least one secondary component, thereby creating a new configuration file in the at least one secondary component. 
     In various embodiments, the step of designating the primary component is accomplished by at least one of: setting a jumper on the primary component; setting a switch on the primary component; setting a value in a location in the memory of the primary component; selecting a designated physical connection of the computing system in which one of the components is inserted; a user of the computing system; selecting which of the components was inserted into the computing system first; selecting which of the components is functioning in a more stable manner; selecting which of the components has a desired configuration; removing all but one of the components and designating the one remaining component as the primary component. 
     In various embodiments, the predetermined event includes at least one of: powering up the computing system; insertion of an additional component; a command issued by a user of the computing system; a change to the configuration of the primary component. 
     In various embodiments, copying the configuration includes copying the configuration from the primary component to the at least one secondary component across at least one of a common bus that is used by all of the components to communicate with the computing system, and a dedicated communication link between all of the components. In some embodiments the step of copying the configuration comprises copying the configuration from the primary component to a memory in the computing system and copying the configuration from the memory in the computing system to the at least one secondary component. 
     According to another aspect of the invention there is described a second component for a computing system, where the second component includes a memory for storing a configuration file, a communication link for communicating with at least one of the computing system and first components in communication with the computing system, and a processor. The processor searches for one of the first components to which the second component is redundant, and when such first component is found, receives into the memory of the second component a configuration file from the first component. 
     In various embodiments according to this aspect of the invention, the communication link is a common bus that is used by all of the first components to communicate with the computing system. In some embodiments the communication link a dedicated communication link between just the second component and any of the first components to which the second component is redundant. 
     According to yet another aspect of the invention there is described a method for configuring components in a computing system, by storing a configuration file for a first component in a first memory that is accessible by at least one of the first component and the computing system. The first component is removed from the computing system, and a second component having similar functionality is inserted into the computing system. The configuration file is automatically copied from the first memory to a memory of the second component, thereby creating a new configuration file in the second component. 
     According to still another aspect of the invention there is described a second component for a computing system, where the second component includes a memory for storing a configuration file, a communication link for communicating with at least one of the computing system and first components in communication with the computing system, and a processor. The processor searches for a first component configuration associated with a previous one of the first components to which the second component is of similar type and task and when such first component configuration is found, receives into the memory of the second component the associated first component configuration. 
    
    
     
       DRAWINGS 
       Further advantages of the invention are apparent by reference to the detailed description when considered in conjunction with the figures, which are not to scale so as to more clearly show the details, wherein like reference numbers indicate like elements throughout the several views, and wherein: 
         FIG. 1  is a functional block diagram of two computing system components according to an embodiment of the present invention. 
         FIG. 2  is a table of configuration hierarchy for two redundant components according to an embodiment of the present invention. 
     
    
    
     DESCRIPTION 
     With reference now to  FIG. 1 , there is depicted a functional block diagram of a computing system  100  having two components  102 . The computing system  100  can take many different forms. For example, it could be a backplane system, with a chassis  104  that accepts card components  102 . In other embodiments it could be a personal computer  104  that accepts cards, such as into PCI slots. Many other different embodiments, as well known to those with skill in the art, are contemplated. 
     The computing system  100  may have components  102  of many different kinds included in the system, such as video cards, memory cards, interface cards, special purpose hardware, processor cards, system cards, storage cards, and so forth. However, the components  102   a  and  102   b  are depicted because they offer redundant services to the computing system  100 . In other words, both of the components  102  as depicted offer the same functionality to the computing system  100 . In the computing system  100 , one of the components  102  is intended to be a primary provider of the given function, and the other of the components  102  is intended to a secondary or backup provider of the given function. In the embodiments as depicted in  FIG. 1 , component  102   a  is labeled as the primary component, and component  102   b  is labeled as the secondary component. 
     In some embodiments, the primary component  102   a  will provide all of the services as desired to the computing system  100 , while the secondary component  102   b  will remain in the computing system  100 , but not be used by the computing system  100  until such time as the primary component  102   a  fails in some way. At that time, it is desired that the secondary component  102   b  will immediately be put into service and the primary component  102   a  will immediately be taken out of service automatically by the computing system  100 . 
     This immediate and automatic switch from the failed primary component  102   a  to the secondary component  102   b  cannot be accomplished unless the secondary component  102   b  is already configured like the primary component  102   a , prior to the failure of the primary component  102   a . Thus, various embodiments of the present invention provide for the automatic configuration of the secondary component  102   b  prior to the failure of the primary component  102   a . In some embodiments, once the failed primary component  102   a  is removed from the computing system  100 , the operable secondary component  102   b  then becomes the new primary component  102   a , and when a new redundant component  102  is inserted into the computing system  100 , it is then designated as the new secondary component  102   b.    
     As depicted in  FIG. 1 , the primary component  102   a  includes a memory  103 , a processor  105  of some type, and a communication module  107 . Although not depicted so as to not unduly burden the presentation, the secondary component  102   b  also includes these modules as depicted. The memory  103  is where the configuration file for the component  102  is stored. The processor  105  handles basic functions of the component  102 , and in some embodiments also handles some of the automated configuration of the components  102 . The communication module  107  enables the component  102  to communicate not only with the main system  104 , such as through some kind of standard bus  106 , but in some embodiments allows for proprietary communication between the primary component  102   a  and the secondary component  102   b , such as through a dedicated communication line  108 . 
     There are several different ways in which one of the components  102  is designated as the primary component  102   a . For example, a physical modification can be made to the primary component  102   a , such as setting a jumper position, flipping a switch, cutting a link, and so forth. In another embodiment, the primary component  102   a  is manually selected by a user of the computing system  100 . In another embodiment, the primary component  102   a  is designated by setting an electronic setting somewhere on the primary component  102   a , such as by storing a value in a specific location within the memory  103  or setting the state of some other subcomponent of the primary component  102   a . In yet another embodiment, the primary component  102   a  is selected based upon which slot in the computing system  100  the component  102  is insert. In some embodiments, the primary component  102   a  is selected based upon which of the components  102  was inserted into the computing system  100  first, or which was powered up first, or which is functioning in the most appropriate manner, or which component  102  is already configured in the desired manner. In some embodiments, the only component  102  remaining in the computing system  100  that has a given functionality—in other words, for which there is no redundant component  102 —is designated as the primary component  102   a.    
     It is appreciated that there may be many primary components  102   a  in a given computing system  100 , such as the primary video card  102   a , the primary storage card  102   a , the primary processor card  102   a , and so forth, each with secondary components  102   b  that provide backup for the various computing system  100  services. 
     In some embodiments the secondary component  102   b  is programmed with the configuration of the primary component  102   a  prior to any eventual failure of the primary component  102   a . Thus, in some embodiments there is one or more predetermined event at which the configuration file is copied to the secondary component  102   b . This can be accomplished in a number of different ways, and at a variety of different times. 
     For example, in some embodiments the configuration of the primary component  102   a  is copied directly from the memory  103  of the primary component  102   a  to the memory  103  of the secondary component  102   b . This can be accomplished either across the system bus  106  or across the proprietary communication line  108 . In another embodiment the configuration file for the primary component  102   a  is backed up somewhere within the main system  104 , and at some point in time is copied via the system bus  106   b  to the memory  103  of the secondary component  102   b . Thus, the configuration file in some embodiments comes directly from the primary component  102   a , and in other embodiments comes from the main system  104 . 
     The event at which the configuration file is created in the memory  103  of the secondary component  102   b  can be one or more of the following, in various embodiments. For example, the configuration file can be written as soon as the secondary component  102   b  is inserted into the computing system  100 . The configuration file can be written when the secondary component  102   b  is powered up, or when the computing system  100  is powered up. In another embodiment the configuration file can be created in the memory  103  of the secondary component  102   b  when the configuration file in the memory  103  of the primary component  102   a  is changed in some manner. 
       FIG. 2  depicts a table of several examples of how and when the configuration file is copy and created in one or the other of the two components  102 . On the left side of the table there are depicted three options for the power sequencing of the primary component  102   a  and secondary component  102   b , indicating which of the two components  102  is powered on first, or if they are powered on concurrently. On the right side of the table is indicated the configuration for each of the components  102 , both before the power sequence and after the power sequence. 
     The first condition depicted in the table of  FIG. 2  is where the primary component  102   a  is powered on before the secondary component  102   b . In this embodiment, the configuration file for the primary component  102   a  does not change before or after the power up sequence. Thus, whether the configuration of the primary component  102   a  is default of a specific Configuration A, the configuration file in the memory  103  of the primary component  102   a  is the same both before and after the power up sequence. 
     However, the configuration file of the secondary component  102   b  does change, depending upon the differences in the configuration files of the primary component  102   a  and the secondary component  102   b  before the power up sequence. For example, if both components  102  had the default settings prior to the power up sequence, then there is no need to make any change to the configuration file of the secondary component  102   b . But in every case, where the configuration file of the secondary component  102   b  differs from the power up condition of the primary component  102   a , the configuration file of the secondary component  102   b  is either changed or newly created to match exactly the configuration file of the primary component  102   a.    
     In the second set of  FIG. 2 , there is the example of when the secondary component  102   b  is powered up prior to the primary component  102   a  being powered up. This could occur when the original primary component  102   a  has failed and been removed, or has been removed for some other purpose, and thus is inserted into the computing system  100  after the secondary component  102   b  is already present in the system. This is an example where the secondary component  102   b  becomes, in effect, the new primary component  102   a . Thus, in this embodiment the configuration file of the secondary component  102   b  doesn&#39;t change during the power up sequence of the primary component  102   a , but instead, the configuration file of the primary component  102   a  is either modified or newly created to be the same as the configuration file of the secondary component  102   b  that was preexisting in the computing system  100 , or in other words, antedated the power up sequence of the newly inserted primary component  102   a.    
     The final example given in the chart of  FIG. 2  is when the two components  102  are powered up simultaneously, such as when both components have been newly inserted into a powered down system  100 , and then the entire system  100  is brought up at the same time. In this embodiment, the one of the components  102  that has been designated as the primary component  102   a , as described in the various embodiments for doing so given above, retains its original configuration file, while the configuration file of the one or more redundant secondary components  102   b  is either modified or created so as to match the configuration file of the primary component  102   a.    
     In some embodiments the configuration file is written to a redundant secondary component  102   b  after the primary component  102   a  fails. In some embodiments, the secondary component  102   b  is only inserted into the system  100  after the primary component  102   a  fails. In some embodiments, the configuration file is copied from the primary component  102   a  or otherwise created in a memory in the system  100  prior to failure of the primary component  102   a , and then when the secondary component  102   b  is inserted into the system  100 , the system  100  recognizes that the secondary component  102   b  provides the functionality of the failed primary component  102   a , and automatically copies the configuration to the secondary component  102   b  prior to putting it into service. 
     In some embodiments the secondary component  102   b  is inserted into the system  100  and the configuration is copied into the secondary component  102   b  after the primary component  102   a  is removed from the system  100 . In other embodiments the secondary component  102   b  is inserted into the system  100  and the configuration is copied into the secondary component  102   b  before the primary component  102   a  is removed from the system  100 . 
     In some embodiments the system  100  directs the copying of the configuration file from the failed primary component  102   a  to the new secondary component  102   b  across a common system bus. In other embodiments the system  100  directs the copying of the configuration file directly from the failed primary component  102   a  to the new secondary component  102   b  across a dedicated communication link between the primary component  102   a  and the secondary component  102   b.    
     The foregoing description of embodiments for this invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Obvious modifications or variations are possible in light of the above teachings. The embodiments are chosen and described in an effort to provide illustrations of the principles of the invention and its practical application, and to thereby enable one of ordinary skill in the art to utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated. All such modifications and variations are within the scope of the invention as determined by the appended claims when interpreted in accordance with the breadth to which they are fairly, legally, and equitably entitled.