Dense server environment that shares an IDE drive
Claim Score by NHIP
Abstract
A method, system and computer program product for sharing an Integrated Device Electronics (IDE) drive among server blades in a dense server environment. By logically partitioning the IDE drive, where each logical partition is associated with a particular server blade, the IDE disk may be shared among multiple server blades in the dense server environment.

Term
Term ended
Projected expiry passed 13 November 2022, 3.9 years ago.
- Priority and filed
- Published
- Projected expiry
- Today
25 claims: 2 independent, 23 dependent
- 1A method for sharing an Integrated Device Electronics (IDE) drive in a dense server environment comprising the steps of:fetching a request from a server blade in a plurality of server blades in said dense server environment, wherein said request comprises a command to access one or more logical blocks in said IDE drive;determining a logical partition in said IDE drive that is associated with said server blade;and mapping one or more logical blocks in said request and said logical partition associated with said server blade to physical sectors of said IDE drive.
- 13Broadest claimClaim Score 70, broad(NHIP)A system, comprising:a plurality of server blades;a bus coupled to said plurality of server blades;a controller coupled to said bus;and an Integrated Device Electronics (IDE) drive coupled to said controller;wherein said controller is configured to provide a mechanism for sharing said IDE drive among said plurality of server blades, wherein said IDE disk is divided into a plurality of logical partitions, wherein each of said plurality of logical partitions is associated with a particular server blade of said plurality of server blades.
Independent claims2
62 paragraphs in 5 sections, as filed
TECHNICAL FIELD
[0001] The present invention relates to the field of a dense server environment, and more particularly to a dense server environment that allows a shared Integrated Drive Electronics (IDE) fixed disk drive to be accessed by multiple server blades.
BACKGROUND INFORMATION
[0002] In a dense server environment, multiple computer systems commonly referred to as server blades may each have the ability to access a shared device over a network, e.g., Local Area Network (LAN). A server blade may refer to a typical server that does not include a mass storage unit, e.g., fixed disk drive. The storage unit, e.g., fixed disk drive, may be the shared device that each server blade has the ability to access. Typically these storage units are standard Small Computer System Interface (SCSI) drives which use a significant amount of power and space. Hence it would be desirable for the shared storage device to be a drive as small as possible thereby not using a significant amount of power or space.
[0003] One particular drive that is small in size and uses a relatively low amount of power is an Integrated Device Electronics (IDE) drive. An IDE drive refers to a drive where controller electronics are built inside the drive. Furthermore, IDE drives are drives that cannot be accessed by multiple devices or multiple programs within a server because there does not exist a suitable protocol that allows multiplexed accesses. Since IDE drives cannot be accessed in a multiplexed fashion, IDE drives may not be accessed by multiple server blades in a server blade environment.
[0004] It would therefore be desirable to develop a dense server environment that allows a shared IDE drive to be accessed by multiple server blades.
SUMMARY
[0005] The problems outlined above may at least in part be solved in some embodiments by logically partitioning an Integrated Disk Electronics (IDE) drive where each logical partition is associated with a particular server blade. By having each logical partition of the IDE drive being associated with a particular server blade, the IDE disk may be shared among multiple server blades in the dense server environment.
[0006] In one embodiment of the present invention, a method for sharing an IDE drive in a dense server environment may comprise the step of a controller fetching a request on a bus issued by a particular server blade in the dense server environment. The bus may couple the controller with a plurality of server blades in the dense server environment. The request fetched by the controller may be a request to write to address(es) within a partitioned memory space in the controller's memory associated with the requesting server blade. The controller's memory may be partially partitioned into a plurality of partitioned memory spaces where each partitioned memory space may be associated with a particular server blade. That is, each partitioned memory space may be accessed by a particular server blade. By having each partitioned memory space accessed by only the associated server blade, there is no overlap of addresses in the address space of the memory controller to be accessed by the server blades.
[0007] As stated above, the controller may fetch a request issued by a particular server blade. The request may comprise a command, e.g., read, write, format, to access one or more logical blocks in the IDE drive coupled to the controller. Furthermore, if the command is a write command, the request may comprise the data to be written in IDE drive.
[0008] Upon fetching the request, the controller may store the command, e.g., read from one or more designated logical blocks, write to one or more logical blocks, and any data associated with the command to the requested address(es) in the memory space of the controller memory associated with the requesting server blade.
[0009] The controller may determine the appropriate logical partition of the IDE drive associated with the requesting server blade. The IDE drive may be logically partitioned into a plurality of logical partitions where each logical partition may be associated with a particular server blade. By dividing the IDE drive into a plurality of logical partitions where each logical partition is associated with a particular server blade, the IDE disk may be shared among multiple server blades in the dense server environment.
[0010] Further, the controller may decode the command contained within the received request to determine the type of command, e.g., write, read, format. For example, the requesting server blade may issue a request comprising a command to write to one or more designated logical blocks. The controller may then decode the command to determine that the type of command is a write command.
[0011] The controller may then map the requested logical block(s) and the logical partition associated with the requesting server blade to particular physical sectors in the IDE drive. For example, if the requesting server blade issued a write command to write to logical blocks <b>1</b>-<b>10</b> in the logical partition associated with the requesting server blade, then the controller may map logical blocks <b>1</b>-<b>10</b> in the logical partition associated with the requesting server blade to particular sector, head and cylinder combinations in the IDE drive.
[0012] The controller may then access the appropriate physical sectors in the IDE drive. A determination may then be made as to whether the command decoded was a read command or a write command.
[0013] If the command decoded was a read command, then the controller may retrieve the requested data in the appropriate physical sectors in the IDE drive. Upon retrieving the requested data, the controller may transfer the requested data to the requesting server blade. In the alternative, upon retrieving the requested data, the controller may store the requested data in the requested address(es) in the controller's memory in the memory space associated with the requesting server blade. The requested data may at a later point in time be retrieved from the requesting server blade.
[0014] If the command decoded was a write command, then the controller may write the data contained in the request to the appropriate physical sectors in the IDE drive.
[0015] The foregoing has outlined rather broadly the features and technical advantages of one or more embodiments of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter which form the subject of the claims of the invention.
BRIEF DESCRIPTION OF THE DRAWINGS
[0016] A better understanding of the present invention can be obtained when the following detailed description is considered in conjunction with the following drawings, in which:
[0017]FIG. 1 illustrates a dense server environment configured in accordance with the present invention;
[0018]FIG. 2 illustrates a memory space for a controller in the dense server environment configured in accordance with the present invention;
[0019]FIG. 3 illustrates an Integrated Device Electronics (IDE) drive comprising a plurality of logical partitions configured in accordance with the present invention;
[0020]FIG. 4 illustrates an embodiment of the present invention of a server blade in the dense server environment;
[0021]FIG. 5 illustrates an embodiment of the present invention of the controller in the dense server environment;
[0022] FIGS. <b>6</b>A-B are a flowchart of a method for sharing the IDE drive among server blades in the server blade environment; and
[0023]FIG. 7 is a flowchart of a method for a server blade in the server blade environment to execute an application without executing a boot sequence thereby saving time.
DETAILED DESCRIPTION
[0024]FIG. 1—Dense Server Environment
[0025]FIG. 1 illustrates an embodiment of the present invention of a dense server environment <b>100</b>. Dense server environment <b>100</b> may comprise a plurality of server blades <b>101</b>A-E coupled to a bus <b>103</b>, e.g., Peripheral Component Interconnect (PCI) bus. Server blades <b>101</b>A-E may collectively or individually be referred to as server blades <b>101</b> or server blade <b>101</b>, respectively. Dense server environment <b>100</b> may further comprise a controller <b>104</b> coupled to bus <b>103</b>. Controller <b>104</b> may be configured to provide a mechanism for sharing an Integrated Device Electronics (IDE) drive <b>105</b> coupled to controller <b>104</b> among each server blade <b>101</b> as described in greater detail in conjunction with FIGS. <b>6</b>A-B. Controller <b>104</b> may further be coupled to a memory <b>106</b> configured to store commands to access IDE drive <b>105</b>, e.g., read from one or more logical blocks, write to one or more logical blocks, issued from server blades <b>101</b>. It is noted that dense server environment <b>100</b> may comprise any number of server blades <b>101</b> and IDE drives <b>105</b> and that FIG. 1 is illustrative. It is further noted that in an alternative embodiment, dense server environment <b>100</b> may comprise multiple IDE drives <b>105</b> coupled to controller <b>104</b> through one or more channels thereby accomplishing mirroring. It is further noted that dense server environment <b>100</b> may be any type of system that has a plurality of server blades <b>110</b>, a controller <b>104</b>, a controller memory <b>106</b> and at least one IDE drive <b>105</b> and that FIG. 1 is not to be limited in scope to any one particular embodiment.
[0026] Referring to FIG. 1, a server blade <b>101</b> may refer to a server that does not include a storage unit, e.g., Compact Disc Read Only Memory (CD-ROM) drive, floppy disk drive. Each server blade <b>101</b> may be configured to communicate with other server blades or with controller <b>104</b> via bus <b>103</b>, e.g., PCI bus. A server blade <b>101</b> may be configured to issue requests to write to particular memory addresses in either local memories, e.g., memories in server blades <b>101</b>, or in controller memory <b>106</b>. The requests to write to one or more memory addresses in controller memory <b>106</b> may comprise commands, e.g., read from one or more logical blocks, write data to one or more logical blocks, to access IDE disk <b>105</b> as well as any data associated with the commands. A more detailed description of server blade <b>101</b> is provided further below in conjunction with FIG. 4.
[0027] As stated above, controller memory <b>106</b> may be configured to store commands to access IDE <b>105</b>, e.g., read one or more logical blocks, write one or more logical blocks, and any data associated with the commands to access IDE <b>105</b>. In one embodiment, the memory space in controller memory <b>106</b> may be partially partitioned into a plurality of partitioned memory spaces where each partitioned memory space may be associated with a particular server blade <b>101</b> as illustrated in FIG. 2. FIG. 2 illustrates a memory space <b>200</b> for memory controller <b>106</b> that may be partially partitioned into a plurality of partitioned memory spaces <b>201</b>A-E. Partitioned memory spaces <b>201</b>A-E may collectively or individually be referred to as partitioned memory spaces <b>201</b> or partitioned memory space <b>201</b>, respectively. Each partitioned memory space <b>201</b> may represent a range of addresses that are associated with a particular server blade <b>101</b>. That is, each partitioned memory space <b>201</b> may be a range of addresses that are only accessed by a particular server blade <b>101</b>. For example, partitioned memory space <b>201</b>A may represent a range of addresses that are only accessed by server blade <b>101</b>A. Partitioned memory space <b>201</b>B may represent a range of addresses that are only accessed by server blade <b>101</b>B and so forth. By having each partitioned memory space <b>201</b> accessed by only the associated server blade <b>101</b>, there is no overlap of addresses in address space <b>200</b> to be accessed by server blades <b>101</b>. Memory space <b>200</b> may further comprise a local memory space <b>202</b> designated for storing data for controller <b>104</b>. It is noted that memory space <b>200</b> may comprise any number of partitioned memory spaces <b>201</b> and that FIG. 2 is illustrative.
[0028] Referring to FIGS. 1 and 2, each partitioned memory space <b>201</b> may be configured to store commands to access IDE drive <b>105</b> and any data associated with the commands contained within write requests issued by associated server blades <b>101</b>. For example, server blade <b>101</b>A may issue a request to write a read command, for reading one or more designated logical blocks in IDE drive <b>105</b>, in address(es) within partitioned memory space <b>201</b>A. In another example, server blade <b>101</b>A may issue a request to write a write command, along with the data to be written in one or more designated logical blocks in IDE drive <b>105</b>, in address(es) within partitioned memory space <b>201</b>A.
[0029] As stated above, server blade <b>101</b> may be configured to issue requests to write to one or more particular addresses within memory space <b>201</b> of controller memory <b>106</b> associated with the requesting server blade <b>101</b>. A bridge (not shown) contained within server blade <b>101</b> may be configured to determine whether the address(es) requested by server blade <b>101</b> corresponds to address(es) within partitioned memory space <b>201</b> of memory controller <b>106</b> associated with the requesting server blade <b>101</b>. If the request is a request to write to one or more addresses that are not within memory space <b>201</b> associated with the requesting server blade <b>101</b>, then the bridge (not shown) may route the request to a local memory of either the requesting server blade <b>101</b> or another server blade <b>101</b> in system <b>100</b>. If, however, the bridge (not shown) determines that the request is a request to write to one or more addresses that are within memory space <b>201</b> associated with the requesting server blade <b>101</b>, then the bridge (not shown) may issue the write request to bus <b>103</b>, e.g., PCI bus.
[0030] Controller <b>104</b> may be configured to fetch the write request issued on bus <b>103</b> by a bridge (not shown) contained within controller <b>104</b>. It is noted that controller <b>104</b> may be configured to fetch more than one write request on bus <b>103</b>. It is further noted that controller <b>104</b> may comprise an arbitration mechanism (not shown) configured to service multiple fetched requests in an efficient manner.
[0031] Upon fetching the request, controller <b>104</b> may write the command, e.g., read from one or more designated logical blocks, write to one or more designated logical blocks, and any data associated with the command to the requested address(es) in memory space <b>201</b> of controller memory <b>106</b> associated with the requesting server blade <b>101</b>. For example, referring to FIGS. 1 and 2, if server blade <b>101</b>A issued a request to write to address(es) within memory space <b>201</b>A of memory controller <b>106</b>, then controller <b>104</b> may fetch the request on bus <b>103</b> and store the command and any data associated with the command in the address(es) requested.
[0032] Furthermore, controller <b>104</b> may be configured to determine the appropriate logical partition of IDE drive <b>105</b> associated with the requesting server blade <b>101</b>. IDE drive <b>105</b> may be logically divided into a plurality of logical partitions as illustrated in FIG. 3.
[0033]FIG. 3 illustrates an embodiment of the preset invention of IDE drive <b>105</b> logically divided into a plurality of logical partitions <b>301</b>A-E. Logical partitions <b>301</b>A-E may collectively or individually be referred to as logical partitions <b>301</b> or logical partition <b>301</b>, respectively. Referring to FIGS. 1 and 3, each logical partition <b>301</b> may represent a plurality of logical blocks that may be mapped to a particular area on the physical IDE drive <b>104</b>. For example, logical block <b>1</b> in logical partition <b>301</b>A may map to a particular combination of sector, head and cylinder on physical IDE drive <b>105</b>. By dividing IDE drive <b>105</b> into a plurality of logical partitions <b>301</b>, where each logical partition <b>301</b> is associated with a particular server blade <b>101</b>, IDE drive <b>105</b> may be shared among a plurality of server blades <b>101</b>.
[0034] As stated above, controller <b>104</b> may be configured to determine the appropriate logical partition <b>301</b> of IDE drive <b>105</b> associated with the requesting server blade <b>101</b>. In one embodiment, controller <b>104</b> may determine the appropriate logical partition <b>301</b> of IDE drive <b>105</b> by searching a table stored in a non-volatile memory comprising a listing of logical partitions <b>301</b> associated with particular server blades <b>101</b> as discussed further below in conjunction with FIGS. 5 and 6. Upon identifying the requesting server blade <b>101</b>, controller <b>104</b> may identify logical partition <b>301</b>, e.g., logical partition <b>301</b>A, associated with the requesting server blade <b>101</b>, server blade <b>101</b>A.
[0035] Controller <b>104</b> may further be configured to decode the command contained in the fetched request to determine the type of command to be executed. For example, the requesting server blade <b>101</b>, e.g., server blade <b>101</b>A, may issue a read command to read designated logical block(s) in logical partition <b>301</b>, e.g., logical partition <b>301</b>A, of IDE drive <b>105</b> associated with the requesting server blade <b>101</b>. In another example, the requesting server blade <b>101</b>, e.g., server blade <b>101</b>A, may issue a write command to write designated logical block(s) in logical partition <b>301</b>, e.g., logical partition <b>301</b>A, of IDE drive <b>105</b> associated with the requesting server blade <b>101</b>.
[0036] Further, controller <b>104</b> may be configured to map the requested logical block(s) and logical partition <b>301</b>, e.g., logical partition <b>301</b>A, associated with the requesting server blade <b>101</b>, e.g., server blade <b>101</b>A, to particular physical sectors in IDE drive <b>105</b>. For example, if the requesting server blade <b>101</b>A issued a write command to write to logical blocks <b>1</b>-<b>10</b> in logical partition <b>301</b>A, then controller <b>104</b> may map logical blocks <b>1</b>-<b>10</b> in logical partition <b>301</b>A to particular sector, head and cylinder combinations in IDE drive <b>105</b>.
[0037] Controller <b>104</b> may further be configured to access the appropriate physical sectors of IDE drive <b>105</b>. If the command issued by the requesting server blade <b>101</b>, e.g., server blade <b>101</b>A, was a write command, then controller <b>104</b> may be configured to write the data contained in the request in the appropriate physical sectors of IDE drive <b>105</b>. If the command issued by the requesting server blade <b>101</b>, e.g., server blade <b>101</b>A, was a read command, then controller <b>104</b> may be configured to retrieve the requested data in the appropriate physical sectors of IDE drive <b>105</b>. Upon retrieving the requested data, controller <b>104</b> may transfer the requested data to the requesting server blade <b>101</b>, e.g., server blade <b>101</b>A. In the alternative, upon retrieving the requested data, controller <b>104</b> may store the requested data in the requested address(es) in memory space <b>201</b>, e.g., memory space <b>201</b>A, of controller memory <b>106</b>. The requested data may at a later point in time be retrieved from the requesting server blade <b>101</b>, e.g., server blade <b>101</b>A.
[0038] Controller <b>104</b> may further be configured to preload an application into a particular area, e.g., specific sector, head and cylinder combination, in IDE drive <b>105</b> that may be mapped to one or more logical blocks in a particular logical partition <b>301</b> associated with a particular server blade <b>101</b>, e.g., server blade <b>101</b>A. Since the application is preloaded into IDE drive <b>105</b>, server blade <b>101</b>, e.g., server blade <b>101</b>A, may execute the application from its associated logical partition <b>301</b>, e.g., logical partition <b>301</b>A, without implementing a boot sequence thereby saving time. A more detailed description of controller <b>104</b> is provided further below in conjunction with FIG. 5. A more detailed description of server blade <b>101</b> executing a preloaded application without implementing a boot sequence is provided further below in conjunction with FIG. 7.
[0039]FIG. 4—Hardware Configuration of Server Blade
[0040]FIG. 4 illustrates an embodiment of the present invention of server blade <b>101</b>. Server blade <b>101</b> may comprise a processor <b>401</b> coupled to various other components by a system bus <b>402</b>. Read only memory (ROM) <b>405</b> may be coupled to system bus <b>402</b> and include a basic input/output system (“BIOS”) that controls certain basic functions of server blade <b>110</b>. Further, ROM <b>405</b> may store a program for issuing a request to access IDE drive <b>105</b> (FIG. 1) as described in the description of FIGS. <b>6</b>A-B. ROM <b>405</b> may further store a program for retrieving data from its associated partition memory <b>201</b> (FIG. 2) as described in the description of FIGS. <b>6</b>A-B. ROM <b>405</b> may further store a program for executing a preloaded application stored in its associated logical partition <b>301</b> (FIG. 3) in IDE drive <b>105</b> as described in the description of FIG. 7. Random access memory (RAM) <b>406</b> and communications adapter <b>407</b> may also be coupled to system bus <b>402</b>. Communications adapter <b>407</b> may interconnect bus <b>402</b> with a network such as a Local Area Network, e.g., Ethernet, Token Ring, ARCnet, thereby being able to communicate with controller <b>104</b> (FIG. 1).
[0041] Server blade <b>101</b> may further comprise a bridge <b>408</b> configured to provide an interface between bus <b>402</b> and bus <b>103</b>, e.g., PCI bus. As stated above, bridge <b>408</b> may be configured to determine whether the address(es) requested by server blade <b>101</b> corresponds to address(es) within partitioned memory space <b>201</b> (FIG. 2) of memory controller <b>106</b> (FIG. 1) associated with the requesting server blade <b>101</b>. If the request is a request to write to one or more addresses that are not within memory space <b>201</b> associated with the requesting server blade <b>101</b>, then bridge <b>408</b> may route the request to a local memory of either the requesting server blade <b>101</b> or another server blade <b>101</b> in system <b>100</b> (FIG. 1). If, however, bridge <b>408</b> determines that the request is a request to write to one or more addresses that are within memory space <b>201</b> associated with the requesting server blade <b>101</b>, then bridge <b>408</b> may issue the write request to bus <b>103</b>, e.g., PCI bus.
[0042]FIG. 5—Hardware Configuration of Controller
[0043]FIG. 5 illustrates an embodiment of the present invention of controller <b>104</b>. Referring to FIG. 5, controller <b>104</b> may comprise a processor <b>510</b> coupled to various other components by system bus <b>512</b>. An operating system <b>530</b> may run on processor <b>510</b> and provide control as well as coordinate the function of the various components of FIG. 5. Application <b>540</b> in accordance with the principles of the present invention may run in conjunction with operation system <b>530</b> and provide calls to operating system <b>530</b> where the calls implement the various functions or services to be performed by application <b>540</b>. Application <b>540</b> may include for example, a program for sharing an IDE drive among server blades in a server blade environment as described in the description of FIGS. <b>6</b>A-B, a program for preloading an application for server blade <b>101</b> to execute without implementing a boot sequence as described in the description of FIG. 7. Read only memory (ROM) <b>516</b> may be coupled to system bus <b>512</b> and include a basic input/output system (“BIOS”) that may control certain basic functions of controller <b>104</b>. Controller's memory <b>106</b>, IDE adapter <b>518</b> and communications adapter <b>534</b> may also be coupled to system bus <b>512</b>. It should be noted that software components including operating system <b>530</b> and application <b>540</b> may be loaded into controller's memory <b>106</b> which may be controller's <b>104</b> main memory. IDE adapter <b>518</b> may be an adapter that communicates with IDE drive <b>105</b>. It is noted that the program of the present invention that allows an IDE drive to be shared among server blades in a server blade environment as described in the description of FIGS. <b>6</b>A-B may reside in IDE drive <b>105</b> or in application <b>540</b>. It is further noted that the program for preloading an application for server blade <b>101</b> to execute without implementing a boot sequence as described in the description of FIG. 7 may reside in IDE drive <b>105</b> or in application <b>540</b>. It is further noted that the program for preloading an application and the program for allowing an IDE drive to be shared among server blades in a server blade environment may be combined into a single program residing in IDE drive <b>105</b> or in application <b>540</b>. Communications adapter <b>534</b> may interconnect bus <b>512</b> with a network such as LAN, e.g., Ethernet, Token Ring, ARCnet, thereby being able to communicate with server blade <b>101</b>. Controller <b>104</b> may further comprise a nonvolatile memory <b>550</b> coupled to bus <b>512</b> that may store a table listing logical partitions <b>301</b> (FIG. 3) associated with particular server blades <b>101</b> (FIG. 1). Non-volatile memory <b>550</b> may further be configured to store the program of the present invention that allows an IDE drive to be shared among server blades in a server blade environment as described in the description of FIGS. <b>6</b>A-B. Nonvolatile memory <b>550</b> may further be configured to store the program for preloading an application for server blade <b>101</b> to execute without implementing a boot sequence as described in the description of FIG. 7. Controller <b>104</b> may further comprise a bridge <b>551</b> configured to provide an interface between bus <b>512</b> and bus <b>103</b>, e.g., PCI bus.
[0044] Implementations of the invention include implementations as a computer system programmed to execute the method or methods described herein, and as a computer program product. According to the computer system implementations, sets of instructions for executing the method or methods are resident in the random access memory <b>514</b> of one or more computer systems configured generally as described above. Until required by controller <b>104</b>, the set of instructions may be stored as a computer program product in another computer memory, for example, in disk drive <b>520</b> (which may include a removable memory such as an optical disk or floppy disk for eventual use in disk drive <b>520</b>). Furthermore, the computer program product can also be stored at another computer and transmitted when desired to the user's workstation by a network or by an external network such as the Internet. One skilled in the art would appreciate that the physical storage of the sets of instructions physically changes the medium upon which it is stored so that the medium carries computer readable information. The change may be electrical, magnetic, chemical or some other physical change.
[0045] FIGS. <b>6</b>A-B—Method for Sharing an IDE Drive Among Server Blades in a Dense Server Environment
[0046] FIGS. <b>6</b>A-B are a flowchart of one embodiment of the present invention of a method <b>600</b> for sharing an IDE drive among server blades in a dense server environment. As stated in the Background Information section, a server blade may refer to a typical server that does not include a mass storage unit, e.g., fixed disk drive. The storage unit, e.g., fixed disk drive, may be the shared device that each server blade has the ability to access. Typically these storage units are standard SCSI drives which use a significant amount of power and space. Hence, it would be desirable for the shared device to be a drive as small as possible thereby not using a significant amount of power or space. One particular drive that is small in size and uses a relatively low amount of power is an IDE drive. However, IDE drives are drives that cannot be accessed by multiple devices or multiple programs within a server because there does not exist a suitable protocol that allows multiplexed accesses. Since IDE drives cannot be accessed in a multiplexed fashion, IDE drives may not be accessed by multiple server blades in a server blade environment. It would therefore be desirable to develop a dense server environment that allows a shared IDE drive to be accessed by multiple server blades. Method <b>600</b> is a method for sharing an IDE drive among multiple server blades in a dense server environment.
[0047] Referring to FIGS. <b>6</b>A-B, step <b>601</b>, controller <b>104</b> (FIGS. 1 and 5) may fetch a request on bus <b>103</b> (FIG. 1) issued by a particular server blade <b>101</b> (FIGS. 1 and 4), e.g., server blade <b>101</b>A, where the request is a request to write to address(es) within partitioned memory space <b>201</b>, e.g., partitioned memory space <b>201</b>A, associated with the requesting server blade <b>101</b>. The request may comprise a command, e.g., read, write, format, to access one or more logical blocks in IDE drive <b>105</b> (FIG. 1). Furthermore, if the command is a write command, the request may comprise the data to be written in IDE drive <b>105</b>.
[0048] In step <b>602</b>, upon fetching the request, controller <b>104</b> may store the command, e.g., read from one or more designated logical blocks, write to one or more logical blocks, and any data associated with the command to the requested address(es) in memory space <b>201</b> (FIG. 2) of controller memory <b>106</b> associated with the requesting server blade <b>101</b>. For example, referring to FIGS. 1 and 2, if server blade <b>101</b>A issued a request to write to address(es) within memory space <b>201</b>A of memory controller <b>106</b>, then controller <b>104</b> may fetch the request on bus <b>103</b> and store the command and any data associated with the command in the address(es) requested within memory space <b>201</b>A associated with the requesting server blade <b>101</b>.
[0049] Returning to FIGS. <b>6</b>A-B, in step <b>603</b>, controller <b>104</b> may determine the appropriate logical partition <b>301</b> of IDE drive <b>105</b> associated with the requesting server blade <b>101</b>. In one embodiment, controller <b>104</b> may determine the appropriate logical partition <b>301</b> of IDE drive <b>105</b> by searching a table stored in non-volatile memory <b>550</b> (FIG. 5) comprising a listing of logical partitions <b>301</b> associated with particular server blades <b>101</b>. Upon identifying the requesting server blade <b>101</b>, controller <b>104</b> may identify logical partition <b>301</b>, e.g., logical partition <b>301</b>A, associated with the requesting server blade <b>101</b>, server blade <b>101</b>A. By having IDE drive <b>105</b> divided into a plurality of logical partitions <b>301</b> where each logical partition <b>301</b> is associated with a particular server blade <b>101</b>, IDE drive <b>105</b> may be shared among a plurality of server blades <b>101</b>.
[0050] In step <b>604</b>, controller <b>104</b> may decode the command contained within the received request to determine the type of command, e.g., write, read, format. For example, the requesting server blade <b>101</b>, e.g., server blade <b>101</b>A, may issue a request comprising a command to write to one or more designated logical blocks. Controller <b>104</b> may then decode the command to determine that the type of command is a write command.
[0051] In step <b>605</b>, controller <b>104</b> may map the requested logical block(s) and logical partition <b>301</b>, e.g., logical partition <b>301</b>A, associated with the requesting server blade <b>101</b>, e.g., server blade <b>101</b>A, to particular physical sectors in IDE drive <b>105</b>. For example, referring to FIGS. 1 and 3, if the requesting server blade <b>101</b>A issued a write command to write to logical blocks <b>1</b>-<b>10</b> in logical partition <b>301</b>A, then controller <b>104</b> may map logical blocks <b>1</b>-<b>10</b> in logical partition <b>301</b>A to particular sector, head and cylinder combinations in IDE drive <b>105</b>.
[0052] Returning to FIGS. <b>6</b>A-B, in step <b>606</b>, controller <b>104</b> may access the appropriate physical sectors in IDE drive <b>105</b>. A determination may be made as to whether the command decoded in step <b>604</b> was a read command or a write command in step <b>607</b>.
[0053] If the command decoded in step <b>604</b> was a read command, then controller <b>104</b> may retrieve the requested data in the appropriate physical sectors in IDE drive <b>105</b> in step <b>608</b>. Upon retrieving the requested data, controller <b>104</b> may transfer the requested data to the requesting server blade <b>101</b>, e.g., server blade <b>101</b>A, in step <b>609</b>. In the alternative, upon retrieving the requested data, controller <b>104</b> may store the requested data in the requested address(es) in memory space <b>201</b>, e.g., memory space <b>201</b>A, associated with the requesting server blade <b>101</b>, e.g., server blade <b>101</b>A, in step <b>610</b>. The requested data may at a later point in time be retrieved from the requesting server blade <b>101</b>, e.g., server blade <b>101</b>A.
[0054] If the command decoded in step <b>604</b> was a write command, then controller <b>104</b> may write the data contained in the request to the appropriate physical sectors in IDE drive <b>105</b> in step <b>611</b>.
[0055] As stated above, controller <b>104</b> may preload an application into a particular area in IDE drive <b>105</b> in order to allow the associated server blade <b>101</b> to execute the preloaded application without implementing a boot sequence as discussed below in conjunction with FIG. 7.
[0056] It is noted that method <b>600</b> may be executed in a different order presented and that the order presented in the discussion of FIGS. <b>6</b>A-B are illustrative. It is further noted that certain steps in FIGS. <b>6</b>A-B may be executed almost concurrently.
[0057]FIG. 7—Method for Executing a Preloaded Application Without Implementing a Boot Sequence
[0058]FIG. 7 is a flowchart of one embodiment of the present invention of a method <b>700</b> for server blade <b>101</b> executing an application without executing a boot sequence thereby saving time.
[0059] In step <b>701</b>, controller <b>104</b> (FIGS. 1 and 5) may preload an application into a particular area, e.g., specific sector, head and cylinder combination, in IDE drive <b>105</b> that maps to one or more logical blocks in a particular logical partition <b>301</b> (FIG. 3), e.g., logical partition <b>301</b>A, associated with a particular server blade <b>101</b> (FIGS. 1 and 4), e.g., server blade <b>101</b>A. Controller <b>104</b> may preload the application for a particular server blade <b>101</b> while the particular server blade <b>101</b> is operating another application. That is, controller <b>104</b> may preload the application prior to the particular server blade <b>101</b> switching tasks to execute the preloaded application.
[0060] In step <b>702</b>, the preloaded application may be executed by server blade <b>101</b>, e.g., server blade <b>101</b>A, from its associated logical partition <b>301</b>, e.g., logical partition <b>301</b>A, without implementing a boot sequence thereby saving time.
[0061] It is noted that method <b>700</b> may be executed in a different order presented and that the order presented in the discussion of FIG. 7 is illustrative. It is further noted that certain steps in FIG. 7 may be executed almost concurrently.
[0062] Although the system, method and computer program product are described in connection with several embodiments, it is not intended to be limited to the specific forms set forth herein, but on the contrary, it is intended to cover such alternatives, modifications and equivalents, as can be reasonably included within the spirit and scope of the invention as defined by the appended claims. It is noted that the headings are used only for organizational purposes and not meant to limit the scope of the description or claims.
Contents5
8 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US9307205B2 | Cited by | United States of America | Search report |
| US2014188884A1 | Cited by | United States of America | Pre-grant |
| US2011153901A1 | Cited by | United States of America | Pre-grant |
| US10366057B2 | Cited by | United States of America | Search report |
| US2005015430A1 | Cited by | United States of America | Pre-grant |
| US11006177B2 | Cited by | United States of America | Applicant |
| CN107832005A | Cited by | China | Search report |
| US2008277312A1 | Cited by | United States of America | Pre-grant |
| US8527565B2 | Cited by | United States of America | Applicant |
| US2005177678A1 | Cited by | United States of America | Pre-grant |
| WO2010111906A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US8713295B2 | Cited by | United States of America | Search report |
| US8688889B2 | Cited by | United States of America | Search report |
| US2018063274A1 | Cited by | United States of America | Search report |
| US7653782B2 | Cited by | United States of America | Search report |
| US2005021847A1 | Cited by | United States of America | Pre-grant |
| US2011113160A1 | Cited by | United States of America | Pre-grant |
| US2007276997A1 | Cited by | United States of America | Pre-grant |
| US8924597B2 | Cited by | United States of America | Search report |
| US10277947B2 | Cited by | United States of America | Applicant |
| US7730205B2 | Cited by | United States of America | Applicant |
| US2006095595A1 | Cited by | United States of America | Pre-grant |
| US2012324188A1 | Cited by | United States of America | Pre-grant |
| US7418525B2 | Cited by | United States of America | Applicant |
| US7209999B2 | Cited by | United States of America | Search report |
| US2010325675A1 | Cited by | United States of America | Pre-grant |
| US2002124114A1 | Cites | United States of America | Pre-grant |
| US2003097487A1 | Cites | United States of America | Pre-grant |
| US2004098544A1 | Cites | United States of America | Pre-grant |
| US2004111559A1 | Cites | United States of America | Pre-grant |
2 members in 1 office
Priority claims2
| Document | Office | Kind | Date |
|---|---|---|---|
| 11665002 | United States of America | A | |
| US20020116650 | – | – | – |
Members2
| Document | Office | Kind | |
|---|---|---|---|
| US2003191908A1 | United States of America | A1 | |
| US6848034B2 | United States of America | B2 |
35 transactions on the USPTO file
Allowed after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | |
|---|---|
| Expire Patent | |
| Recordation of Patent Grant Mailed | |
| Patent Issue Date Used in PTA CalculationAllowed | |
| Issue Notification MailedAllowed | |
| Receipt into Pubs | |
| Dispatch to FDC | |
| Application Is Considered Ready for Issue | |
| Correspondence Address Change | |
| Receipt into Pubs | |
| Workflow - Drawings Finished | |
| Issue Fee Payment Verified | |
| Issue Fee Payment Received | |
| Receipt into Pubs | |
| Workflow - File Sent to Contractor | |
| Mail Notice of AllowanceAllowed | |
| Mail Formal Drawings Required | |
| Formal Drawings Required | |
| Notice of Allowance Data Verification CompletedAllowed | |
| Date Forwarded to Examiner | |
| Mail Examiner Interview Summary (PTOL - 413) | |
| Response after Non-Final Action | |
| Workflow incoming amendment IFW | |
| Interview Summary Record | |
| Mail Non-Final RejectionNon-final rejection | |
| Non-Final RejectionNon-final rejection | |
| Case Docketed to Examiner in GAU | |
| Case Docketed to Examiner in GAU | |
| Case Docketed to Examiner in GAU | |
| Transfer Inquiry to GAU | |
| Application Dispatched from OIPE | |
| Application Is Now Complete | |
| IFW Scan & PACR Auto Security Review | |
| Information Disclosure Statement (IDS) Filed | |
| Information Disclosure Statement (IDS) Filed | |
| Initial Exam Team nn |
7 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Lapsed due to failure to pay maintenance feeLapsedFP | FP | |
| Information on status: patent discontinuationPATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362STCH | STCH | |
| Lapse for failure to pay maintenance feesLapsedLAPS | LAPS | |
| Maintenance fee reminder mailedREMI | REMI | |
| Fee paymentFPAY | FPAY | |
| Fee payment procedurePAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITYFEPP | FEPP | |
| AssignmentAS | AS |
Numbers
- Publication, DOCDB
- 2003191908
- Publication, EPODOC
- US2003191908
- Application
- 10116650
- Application, DOCDB
- 11665002
- Application, EPODOC
- US20020116650
Titles
- English
- Dense server environment that shares an IDE drive
Patent term adjustment
- A delay
- +308 daysthe office missed an examination deadline
- Applicant delay
- −85 days
- Net adjustment
- 223 days
Classification
- CPC, 5
- G06F3/0601
- G06F3/0604
- G06F3/0658
- G06F3/0644
- G06F3/0673
- IPC, 3
- G06F3 06
- G06F12 00
- G06F12 08
- USPC, 2
- 711153000
- 711202000