Summary: | 碩士 === 國立中央大學 === 資訊工程學系 === 105 === Virtualization is a computer architecture technology by which multiple virtual machines (VMs) are multiplexed in the same hardware machine. The purpose of a virtual machine is to enhance resource sharing by many users and improve computer performance in terms of resource utilization and application flexibility. Hardware resource (CPU, memory, I/O devices, etc.) or software resources (operating system and software libraries) can be virtualized in various functional layers. This virtualization technology has been revitalized as the demand for distributed and cloud computing which increased sharply in recent years.
Fault tolerance is not just a property of individual machines; it may also characteristic the rules by which they interact. For example, the Transmission Control Protocol (TCP) is designed to allow reliable two-way communication in a packet-switched network, even in the presence of communications links which are imperfect or overloaded. It does this by requiring the endpoints of the communication to expect packet loss, duplication, reordering and corruption, so that these conditions do not damage data integrity, and only reduce throughput by a proportional amount.
The most important requirement of design in a fault tolerant virtual machine is making sure it actually meets its requirements for reliability. Our solution to this problem takes the form of virtual machine logging and replay. By logging enough information about the execution of the system, we are able to replay the execution at a later time, repeating all non-deterministic events exactly as they occurred in the original execution. We have integrated the logging and replay mechanisms into the Kernel-based Virtual Machine (KVM) open-source full-system virtualization package for Linux.
Finally, the result of this research about a practical log and replay strategy for VM fault tolerance is that primary should transfer data events to backup when output need to be executed, then primary will be allowed to execute the output. After output been performed, primary should notify backup, and backup will not perform output if received notification, and do the output if not receiving.
|