Mirrored Server Link (MSL):
The MSL is a bidirectional point-to-point
connection that is used by the two servers to synchronize with each other.
Information such as client requests and acknowledgments are passed back and
forth on the MSL.
After a failure has occurred, the MSL is used to synchronize the memory and
disk of the failed server. As it is being brought back up, the active server
transfers the entire contents of its MS Engine memory image to the formally
inactive server. After the contents of memory are transferred (a matter of
seconds) normal activity resumes between the two servers.
If any disk activity occurs while the one server is down, the primary server sends
all the disk updates to the formerly inactive server in a background mode,
without impacting normal activity on the network. After the disks are fully
re-mirrored, the system once again becomes protected and resilient to failures.
1.10.1.3 IOEngines and Mirrored Server (MS) Engines
Both the primary and secondary servers implement the operating system in two
pieces: an IOEngine, which deals with the server hardware and is not mirrored,
and a Mirrored Server (MS) Engine, which relies on the IOEngine for input.
The contents of the MSEngines are identical (mirrored), and both MSEngines
have the same internal IPX number. The MSEngines mirror applications, data,
and non-hardware related NetWare Loadable Modules (NLMs), such as Btrieve.
Any module which communicates directly with hardware, or makes explicit
assumptions about the hardware, must reside in the IOEngine. Examples of
utilities and NLMs that can be loaded into the IOEngine include LAN drivers, disk
drivers, the MSL driver, print servers, and tape backup applications.
The IOEngine and the MSEngine have the following characteristics:
1. The two engines address the same memory space; however, each segment
in memory is defined as belonging to either the IOEngine or the MSEngine.
Except for rare instances, memory sharing is prohibited.
2. NLMs loaded in the MSEngine are mirrored automatically whenever the SFT
III server is mirrored.
3. NLMs loaded in the IOEngine are never mirrored.
4. The primary server′s IOEngine controls the entire logical server. It converts
all network requests (packets), disk I/O completion interrupts, etc. into SFT III
events, which are then submitted to both servers′ MSEngines.
When a client needs to access a resource on the server, a request packet is sent
over the network to the primary IOEngine. Clients always send their packets to
the primary IOEngine because it advertises that it is the best route to the
MSEngine. The primary IOEngine receives the request packet and sends a copy
over the MSL to the secondary IOEngine. Both IOEngines send the request to
their part of the MSEngine residing on separate machines. When each part of
the MSEngine receives the event, it triggers processing (identical in both
machines), resulting in identical replies to each IOEngine. Although both parts of
the MSEngine reply to their IOEngines, only the primary IOEngine responds to
the clients.
The MSEngines in both servers receive the same events and generate the same
output. However, the secondary server′s IOEngine discards all reply packets.
Chapter 1. IBM PC Server Technologies 49