DISTRIBUTED SYSTEM
VIRTUALIZATION
ESGUERRA, JAIR JULIEN VICTOR O.
LOREZO, LAWRENCE T.
SENICA, RAFFY DINO P.
WHAT IS VIRTUALIZATION?
• Putting layers of software between your computer’s hardware.
• Used to divide computer resources for different applications.
• The process to create a “box within a box”, and thus “a virtual machine inside a
physical machine”
• In computing, virtualization refers to:
Creating a virtual “thing” rather than actual.
This thing can range to many different topics.
CPUs, Memory, Operating Systems, applications, peripheral devices, networks, storage, etc.
WHY WE NEED VIRTUALIZATION?
• Virtualization is a major driving force for modern technology, which to an extent indirectly
affects everyone.
• It allows us to tinker and explore problems easier, which results in better and efficient
solutions.
• The concept is applied for different goals:
Servers and Networking
Testing environments
Isolation and Security
Legacy Systems Support
Cloud infrastructure
THE IDEA OF VIRTUALIZATION
• Suppose we have a single core CPU. We can run multiple threads/processes
on the same core.
• Each thread is running a set of instructions.
• Same illusion can be extended to other hardware resources (resource
virtualization).
WHAT DOES VIRTUALIZATION DO?
• Interface exchange that can happen in different levels of computer layers.
• ISA level: (1) general instructions (2) privileged instructions.
• System –call level (OS level)
• Library calls (API level)
• Quite helpful for heterogeneous platforms running different and possibly
independent applications.
• Run multiple instances on a single platform.
SUMMARY OF INTERFACES
• Applications can use library functions to reach out to system calls.
• System calls are used by libraries to reach out to the operating system.
• This way applications can use the privileged instructions that can only be called by the OS kernel.
• On the other hand, both applications and libraries can call general instructions without OS
interaction.
REALIZATION OF VIRTUALIZATION
• Virtualization can be realized in two different ways:
A run time system that provides an abstract instruction set used by the upper layer
application. The run time environment interprets instructions (java runtime) or emulates
them.
Virtual machine monitor to shield the entire hardware.
HYPERVISORS
• Another name for Virtual Machine Manager (VMM).
• Abstracting resources to hide the underlying hardware.
• Create/manage virtual machines.
• Two different types:
Type I (bare metal or native) – hypervisor is directly installed on the hardware. Takes control of the hardware.
Type II (hosted) – hardware has already an OS on it. Hypervisor is installed on the host OS.
• Type I requires a management console.
Usually installed in a remote compute to configure the hypervisor.
Responsible for dynamic allocation of OS instances between different hypervisors and protect them against failures.
• Type II requires no management console.
It assigns resources to instances irreversibly.
Instances use host’s network when connecting internet.
Two different kernel running on the same hard. Bulky
TYPES OF VIRTUALIZATION
• Full Virtualization/Emulation
guest OS is completely decoupled from the underlying hardware.
Trying to replicate hardware behavior, entirely in software (e.g.: Real-time clock).
Pros: Hardware independent, Cons: Extremely slow
• Para-virtualization
guest OS is modified to enable communication with the hypervisor to improve performance and efficiency.
Modify virtual machine software in order to be aware that it is running under a hypervisor (e.g.: storage device).
Pros: Relatively fast, Cons: Need to modify guest hardware
• Hardware virtualization
privileged and sensitive calls automatically trap to the hypervisor. No need for binary translation or para-virtualization.
E.g.: CPU/memory. Hardware supports virtualization software to run natively guest instructions.
Pros: Near-native performance, Cons: Relies on specific hardware
KVM, QEMU, LIBVIRT
• KVM (Kernel-based Virtual Machine) and QEMU (Quick Emulator) (Type-II) are both
hypervisors.
• They are used together (must-Type-1). QEMU is slower.
• KVM helps QEMU to utilize hardware virtualization features.
• KVM also adds acceleration feature.
• Libvirt is a virtualization management library.
• Libvirt comes with an API, a daemon and a command line tool.
EXAMPLES OF VIRTUALIZATION
• Software development
Boot multiple instances of Oss, at the same time, on the same physical machine.
Develop applications for multiple Oss without the need to test them on separate computers.
• Legacy software/hardware support
Newer platforms do not always support old legacy software.
Virtualization allows to use legacy software or even virtualize extinct platforms.
• Network Function Virtualization
Network vendors require specialized hardware for specific network functions (routing, packet handling, load balancing, etc.)
Instead virtualization allows to implement network functions as Virtual Machines, and deploy them easier and efficiently.
SOURCES
• https://www.youtube.com/watch?v=K81mg2HvtDI
• https://www.youtube.com/watch?v=XItj08D5KPk
• https://www.youtube.com/watch?v=WHIrGfNFwVo
THANK YOU ( ͡° ͜ʖ ͡°)