Cloud Computing
Unit-4th
Virtualization is the technology that enables to create virtual
environments from a single physical machine.
In this article, you will learn what a virtual machine is, why it is
important, the different types of virtualization, how it works, and
the benefits and disadvantages associated with it.
What is Virtualization?
Virtualization is the process of creating a virtual representation
of hardware such as server, storage, network or other physical
machines. It Supports multiple copies of virtual machines(VMs)
to execute on one physical machine each with their own
operating system and programs. This optimizes hardware
efficiency and flexibility and enables resources to be shared
between multiple customers or organizations.
Virtualization is a key to providing Infrastructure as a Service
(IaaS) solutions for cloud computing, whereby the user has
access to remote computing resources.
Why is Virtualization Important?
1. Better use of Resources
Instead of allowing for numerous unused machines, virtualization
enables you to host multiple programs or systems on one
computer, which is more effective.
2. Cost Utilization
Companies can save their money on hardware, power, and
maintenance by using less physical equipment.
3. Flexibility
Virtual machines can be easily installed, relocated and resized to
suit changing requirements. If a virtual machine requires more
power, it can obtain it rapidly without requiring new hardware.
4. Security
Virtualization isolates various applications or systems from each
other, so if one of them has an issue, it won’t affect others.
5. Simple Recovery
In case something goes wrong, it’s simple to back up or restore
virtual machines, allowing companies to return to work quickly
after an issue.
Types of Virtualization
     1.   Application Virtualization
     2.   Network Virtualization
     3.   Desktop Virtualization
     4.   Storage Virtualization
     5.   Server Virtualization
     6.   Data virtualization
                            Types of Virtualization
1. Application Virtualization: Application virtualization
enables remote access by which users can directly interact with
deployed applications without installing them on their local
machine. Your personal data and the applications settings are
stored on the server, but you can still run it locally via the
internet. It’s useful if you need to work with multiple versions of
the same software. Common examples include hosted or
packaged apps.
Example: Microsoft Azure lets people use their applications
without putting them on their own computers. Once this
application is setup in the cloud then employees can use it from
any device, like a laptop or tablet. It feels like the application is
on their computer, but it’s really running on Azure’s servers. This
makes things easier, faster, and safer for the company.
2. Network Virtualization: This allows multiple virtual
networks to run on the same physical network, each operating
independently. You can quickly set up virtual switches,
routers, firewalls, and VPNs, making network management more
flexible and efficient.
Example: Google Cloud is an example of Network Virtualization.
Companies create their own networks using software instead of
physical devices with the help of Google Cloud. They can set up
things like IP addresses, firewalls, and private connections all in
the cloud. This makes it easy to manage, change, and grow their
network without buying any hardware. It saves time, money, and
gives more flexibility.
                          Network Virtualization
3. Desktop Virtualization: Desktop virtualization is a process
in which you can create different virtual desktops that users can
use from any device like laptop, tablet. It’s great for users who
need flexibility, as it simplifies software updates and provides
portability.
Example: GeeksforGeeks is a Edtech company which uses
services like Amazon WorkSpaces or Google Cloud (GCP)
Virtual Desktops to give its team members access to the same
coding setup with all the tools they required for the easy access
of this team work. Now their team members can easily log in
from any device like a laptop, tablet, or even a phone and use a
virtual desktop that will run perfectly in the cloud. This makes it
easy for GeeksforGeeks company to manage, update, and keep
everything secure without requirement of physical computers for
everyone.
4. Storage Virtualization: This combines storage from
different servers into a single system, making it easier to
manage. It ensures smooth performance and efficient operations
even when the underlying hardware changes or fails.
Example: Amazon S3 is an example of storage virtualization
because in S3 we can easily store any amount of data from
anywhere. Suppose a MNC have lots of files and data of company
to store. By Amazon S3 company can store all their files and data
in one place and access these from anywhere without any kind of
issue in secure way.
5. Server Virtualization: This splits a physical server into
multiple virtual servers, each functioning independently. It helps
improve performance, cut costs and makes tasks like server
migration and energy management easier.
Example: A startup company has a powerful physical server.
This company can use server virtualization software like VMware
vSphere, Microsoft Hyper-V or KVM to create more virtual
machines(VMs) on that one server.
Each VM here is an isolated server, that runs on their own
operating system( like Windows and Linux) and run it’s own
applications. For example, a company might run A web server on
one VM, A database server on another VM, A file server on a third
VM all on the same physical machine. This reduces costs, makes
it easier to manage and back up servers, and allows quick
recovery if one VM fails.
                           Server Virtualization
6. Data Virtualization: This brings data from different sources
together in one place without needing to know where or how it’s
stored. It creates a unified view of the data, which can be
accessed remotely via cloud services.
Example: Companies like Oracle and IBM offer solutions for this.
     How is Virtualization Different from
      Cloud Computing
     Below is the table that shows the comparison between
      virtualization and Cloud Computing:
 Aspect         Virtualization                      Cloud Computing
             Creating multiple virtual              Accessing computing
 What it
              versions of a physical               resources (like storage,
   is
                    resource                       servers) via the internet
  Where     On physical machines or          On remote servers provided
  it runs           servers                   by cloud service providers
             Efficient use of physical           On-demand access to
  Focus
                     resources                resources over the internet
             Running multiple virtual               Storing data on Google
 Exampl
              machines on a single                 Drive or renting a virtual
    e
                physical server                        machine on AWS
 Aspect         Virtualization           Cloud Computing
             You have more control    Cloud providers manage the
 Control        over the virtual         physical hardware; you
                  environment          manage only what you use
Uses of Virtualization
The following are the uses of virtualization:
      Resource Optimization: Maximizes hardware utilization
        by running multiple virtual machines on a single server.
      Cost Reduction: Reduces hardware and maintenance
        costs by consolidating servers.
      Scalability: Enables quick scaling of resources based on
        demand.
      Flexibility: Dynamically allocates resources to
        applications as needed.
      Disaster Recovery: Simplifies backup and recovery by
        easily restoring virtual machines.
      Multi-Tenancy: Supports multiple users on a single
        server securely and efficiently.
      Testing Environments: Provides isolated virtual
        environments for development and testing.
      Efficient Deployment: Speeds up application
        deployment with pre-configured virtual environments.
      Security Isolation: Keeps applications secure by
        isolating them in separate virtual machines.
      Energy Efficiency: Reduces power consumption by
        running fewer physical servers
           Virtual Machines (Cloud Instances)
After installing virtualization software on your computer, you can
set up one or more virtual machines. The Virtual machines are
similar to other applications on your computer. The Actual
computer is “Host” and the Virtual Computers are
“Guests”. You can have several guests on a single host, and
each guests can have its own operating system, which may be
the same or different from the host.
As a user you can see that every virtual machine behaves as a
normal computer. It has its own configurations, programs, and
settings. The resources, such as the processor (CPU), Memory
(RAM), and storage, are all accessed by the virtual machines, but
they appear and function exactly like they would in a real
computer. You can update or modify the virtual machine’s
operating system and applications without touching the original
computer.
Hypervisors
A hypervisor is the software that gets virtualization to work. It
serves as an intermediary between the physical computer and
the virtual machines. The hypervisor controls the virtual
machines’ use of the physical resources (such as the CPU and
memory) of the host computer.
For instance, if one virtual machine wants additional computing
capability, it requests it from the hypervisor. The hypervisor
ensures the request is forwarded to the physical hardware, and
it’s accomplished.
There exist two categories of hypervisors:
Type 1 Hypervisor (Bare-Metal Hypervisor):
         The hypervisor is installed directly onto the computer
          hardware, without an operating system sitting in
          between.
         It is highly efficient as it has a direct access to the
          resources of the computer.
Type 2 Hypervisor:
        It is run over an installed operating system (such as
         Windows or macOS).
       It’s employed when you need to execute more than one
         operating system on one machine.
     Types of Virtual Machines : You can classify virtual
      machines into two types:
     1. System Virtual Machine: These types of virtual
      machines gives us complete system platform and gives the
      execution of the complete virtual operating system. Just like
      virtual box, system virtual machine is providing an
      environment for an OS to be installed completely. We can
      see in below image that our hardware of Real Machine is
      being distributed between two simulated operating systems
      by Virtual machine monitor. And then some programs,
      processes are going on in that distributed hardware of
      simulated machines separately.
   2. Process Virtual Machine : While process virtual
    machines, unlike system virtual machine, does not provide
    us with the facility to install the virtual operating system
    completely. Rather it creates virtual environment of that OS
    while using some app or program and this environment will
    be destroyed as soon as we exit from that app. Like in
    below image, there are some apps running on main OS as
    well some virtual machines are created to run other apps.
    This shows that as those programs required different OS,
    process virtual machine provided them with that for the
    time being those programs are running. Example – Wine
    software in Linux helps to run Windows applications.
   
      Virtual Machine Language : It’s type of language which
       can be understood by different operating systems. It is
       platform-independent. Just like to run any programming
       language (C, python, or java) we need specific compiler
       that actually converts that code into system
       understandable code (also known as byte code). The same
       virtual machine language works. If we want to use code
       that can be executed on different types of operating
       systems like (Windows, Linux, etc) then virtual machine
       language will be helpful.
What is virtual monitoring?
Virtual monitoring, virtual machine monitoring, or virtualization monitoring is
the method in which software is used to monitor virtualized occurrences
across a network. This can also be explained as having another smarter
computing device residing within a computer to perform essential checks
and balances on your system.
Virtual monitoring manages virtual machines by gathering data and
continuously scrutinizing and recording the information gathered from the
records that are generated by this process.
What are the benefits of virtual monitoring?
Virtual monitoring tools have many benefits, but the main reasons to go
with this method is that it offers an efficient way to monitor and map virtual
environments by using the best virtual tools available which can examine
the big picture, as well as analyzing the tiny details of your IT environment
using the fewest possible resources.
Some specific benefits include enabling IT teams to:
      Consolidate multiple virtual components into one interface;
     Monitor the resources utilization and performance from guests and
       hosts that include, but are not limited to CPU, memory, and more;
     Create custom dashboards that allow you to view and access your
       entire IT landscape;
     Track live migrations;
     Offer a robust and real-time system that will keep you abreast of all
       happenings on virtual machines across multiple metrics;
     Generate essential statistics by utilizing powerful analytical tools that
       will help optimize your system;
     Allow delete capabilities when something is not working;
     Get alerted through proactive techniques based on whichever criteria
       you wish to monitor; and
     Provide the ability to test diverse workloads in order to quickly adapt
       to your ever-changing needs.
In cloud computing, virtual machine (VM) properties describe the
characteristics of a virtualized computing environment, including resources
like CPU, memory, and storage, as well as network configurations and
security settings. These properties enable efficient resource allocation,
scalability, and portability of applications.
          Properties of Virtual Machines in Cloud Computing:
   Resource Allocation:
    VMs are configured with specific amounts of CPU cores, RAM, and
    storage space, allowing for precise resource allocation based on
    application needs.
   Network Configuration:
    Each VM has its own virtual network interface card (NIC) and IP
    address, enabling communication within the virtual network and with
    external networks.
   Security:
    Network security groups (NSGs) can be configured to control network
    traffic to and from a VM, enhancing security.
   Operating System:
    VMs can run various operating systems (e.g., Windows, Linux),
    providing flexibility for different applications and workloads.
   Storage:
    VMs utilize virtual disks for storing data and applications, which can be
    configured with different performance characteristics and sizes.
   Scalability:
    Cloud-based VMs can be easily scaled up or down based on demand,
    providing flexibility for fluctuating workloads.
   Portability:
    VMs can be easily moved between physical servers or even between
    on-premises and cloud environments.
  Image (VMI):
   A VMI captures the complete state of a VM, including the OS,
   applications, data, and configurations, allowing for easy duplication and
   migration.
 Benefits of VM Properties in Cloud Computing:
 Resource Efficiency:
    VMs allow for better resource utilization by allocating only the
    necessary resources, reducing waste and costs.
   Flexibility:
    VMs can be easily configured and reconfigured to meet changing
    application requirements.
   Scalability:
    VMs enable rapid scaling of applications and services, accommodating
    fluctuating workloads.
   Cost Savings:
    VMs can reduce the need for physical hardware, lowering infrastructure
    costs.
   Faster Provisioning:
VMs can be quickly provisioned from images, speeding up the
deployment of new applications and environments.