0% found this document useful (0 votes)
5 views89 pages

Cloud Computing Notes

Unit I of CCS335 covers cloud architecture models and infrastructure, emphasizing the importance of loose coupling, scalability, reliability, and efficient performance in cloud design. It outlines a layered architecture comprising infrastructure, platform, and application layers, each serving distinct roles in delivering cloud services. Additionally, it discusses distributed computing models, grid computing infrastructures, peer-to-peer networks, and the NIST Cloud Computing Reference Architecture, highlighting the interactions between various actors in cloud computing.

Uploaded by

Kousalya Devi
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views89 pages

Cloud Computing Notes

Unit I of CCS335 covers cloud architecture models and infrastructure, emphasizing the importance of loose coupling, scalability, reliability, and efficient performance in cloud design. It outlines a layered architecture comprising infrastructure, platform, and application layers, each serving distinct roles in delivering cloud services. Additionally, it discusses distributed computing models, grid computing infrastructures, peer-to-peer networks, and the NIST Cloud Computing Reference Architecture, highlighting the interactions between various actors in cloud computing.

Uploaded by

Kousalya Devi
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Unit-I CCS335-Cloud

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

UNIT I CLOUD ARCHITECTURE MODELS AND INFRASTRUCTURE

Cloud Architecture Design

T h e a rc h it e c tu r e o f c lo u d m u st b e lo o se ly c o u p le d .
Unit-I CCS335-Cloud

It m u st u s e c lu s te r a r c h ite c tu re fo r g e tt in g th e s ys te m sc a la b ility .

T h e c lo u d a rc h ite c t u r e d e sig n m u s t b e r e lia b le a n d fle x ib le .

It m u st p ro v id e e ffic ie n t p e r for m a n c e a n d fa ste r s p e e d o f a c c es s.


Unit-I CCS335-Cloud

The rapid development in multicore CPUs, memory chips, and disk arrays in the hardware
field has made it possible to create data centers with large volumes of storage space
instantly. While development in software standards like web 2.0 and SOA have immensely
helped to developed a cloud services.

The Service Oriented Architecture (SOA) is also a crucial component which is used in the
delivery of SaaS.

The web service software detects the status of the joining and leaving of each node server
and performs appropriate tasks accordingly. The virtualization of infrastructure allows
for quick cloud delivery and recovery from disasters. In recent cloud platforms, resources
are built into the data centers which are typically owned and operated by a third - party

provider.

Layered Cloud Architecture Design

The layered architecture of a cloud is composed of three basic layers called infrastructure,
platform and application. These three levels of architecture are implemented with
virtualization and standardization of cloud - provided hardware and software resources. This
architectural design facilitates public, private and hybrid cloud services that are conveyed to
users through networking support over the internet and the intranets.

In layered architecture, the foundation layer is infrastructure which is responsible for


providing different Infrastructure as a Service (IaaS) components and related services.
It is the first layer to be deployed before platform and application to get IaaS services and
to run other two layers.

The infrastructure layer consists of virtualized services for computing, storage and
networking. It is responsible for provisioning infrastructure components like compute
(CPU and memory), storage, network and IO resources to run virtual machines or
virtual servers along with virtual storages.
The abstraction of these hardware resources is intended to provide the flexibility to
the users. Internally, virtualization performs automated resource provisioning and
optimizes the process of managing resources.
The infrastructure layer act as a foundation for building the second layer called platform
layer for supporting PaaS services.

The platform layer is responsible for providing readily available development and
deployment platform for web applications to the cloud users without needing them to
install
Unit-I CCS335-Cloud

in a local device. This layer provides an environment for users to create their applications,
test operation flows, track the performance and monitor execution results.

Layered cloud architecture design

The platform must be ensuring to provide scalability, reliability and security. In this layer,
virtualized cloud platform, acts as an "application middleware" between the cloud
infrastructure and application layer of cloud. The platform layer is the foundation for
application layer.

A collection of all software modules required for SaaS applications forms the application
layer. This layer is mainly responsible for making on demand application delivery.

In this layer, software applications include day-to-day office management software’s used
for information collection, document processing, calendar and authentication.

Enterprises also use the application layer extensively in business marketing, sales,
Customer Relationship Management (CRM), financial transactions and Supply Chain
Management (SCM). It is important to remember that not all cloud services are limited to a
single layer.

Many applications can require mixed - layers resources. After all, with a relation of
dependency, the three layers are constructed from the bottom-up approach. From the
perspective of the user, the services at various levels need specific amounts of vendor
support and resource management for functionality.

In general, SaaS needs the provider to do much more work, PaaS is in the middle and IaaS
requests the least. The best example of application layer is the [Link]'s CRM
service where not only the hardware at the bottom layer and the software at the top layer is
supplied by the vendor, but also the platform and software tools for user application
development and monitoring.
Unit-I CCS335-Cloud

System Models for Distributed and Cloud Computing


Distributed and cloud computing systems are built over a large number of
autonomous computer nodes. These node machines are interconnected by SANs,
LANs, or WANs in a hierarchical manner.

With today’s networking technology, a few LAN switches can easily connect
hundreds of machines as a working cluster. A WAN can connect many local clusters
to form a very large cluster of clusters. Massive systems are considered highly
scalable, and can reach web-scale connectivity, either physically or logically.

Massive systems are classified into four groups:

Clusters of Cooperative Computers


A computing cluster consists of interconnected stand-alone computers which work
cooperatively as a single integrated computing resource. In the past, clustered computer
systems have demonstrated impressive results in handling heavy workloads with large data
sets.
Cluster Architecture
The architecture of a typical server cluster built around a low- latency, high-bandwidth
interconnection network. This network can be as simple as a SAN (e.g., Myrinet) or a LAN (e.g.,
Ethernet). To build a larger cluster with more nodes, the interconnection network can be built
with multiple levels of Gigabit Ethernet, Myrinet, or InfiniBand switches. Through hierarchical
construction using a SAN, LAN, or WAN, one can build scalable clusters with an increasing
number of nodes. The cluster is connected to the Internet via a virtual private network (VPN)
gateway.
All resources of a server node are managed by their own OS. Thus, most clusters have
multiple system images as a result of having many autonomous nodes under different OS
control.

Single-System Image :
Cluster designers desire a cluster operating system or some middle-ware to support SSI at
various levels, including the sharing of CPUs, memory, and I/O across all cluster nodes. An SSI
is an illusion created by software or hardware that presents a collection of resources as one
integrated, powerful resource. SSI makes the cluster appear like a single machine to the user.
Unit-I CCS335-Cloud

A cluster with multiple system images is nothing but a collection of


independent computers.
Hardware, Software, and Middleware Support
Clusters exploring massive parallelism are commonly known as MPPs. Almost all HPC
clusters in the Top 500 list are also MPPs. The building blocks are computer nodes (PCs,
workstations, servers, or SMP), special communication software such as PVM or MPI, and a
network interface card in each computer node. Most clusters run under the Linux OS. The
computer nodes are interconnected by a high-bandwidth network (such as Gigabit Ethernet,
Myrinet, InfiniBand, etc.
Special cluster middleware supports are needed to create SSI or high availability (HA).
Both sequential and parallel applications can run on the cluster, and special parallel
environments are needed to facilitate use of the cluster resources. For example, distributed
memory has multiple images. Users may want all distributed memory to be shared by all
servers by forming distributed shared memory (DSM). Many SSI features are expensive or
difficult to achieve at various cluster operational levels. Instead of achieving SSI, many clusters
are loosely coupled machines. Using virtualization, one can build many virtual clusters
dynamically, upon user demand.
Major Cluster Design Issues
Unfortunately, a cluster-wide OS for complete resource sharing is not available yet.
Middleware or OS extensions were developed at the user space to achieve SSI at selected
functional levels. Without this middleware, cluster nodes cannot work together effectively to
achieve cooperative computing. The software environments and applications must rely on the
middleware to achieve high performance. The cluster benefits come from scalable
performance, efficient message passing, high system availability, seamless fault tolerance, and
cluster-wide job management, as summarized in Table 1.3.
Grid Computing Infrastructures
Unit-I CCS335-Cloud

In the past 30 years, users have experienced a natural growth path from Internet to web
and grid computing services. Internet services such as the Telnet command enables a local
computer to connect to a remote computer. A web service such as HTTP enables remote
access of remote web pages. Grid computing is envisioned to allow close interaction among
applications running on distant computers simultaneously. Forbes Magazine has projected the
global growth of the IT-based economy from $1 trillion in 2001 to $20 trillion by 2015. The
evolution from Internet to web and grid services is certainly playing a major role in this growth.

Computational Grids
Like an electric utility power grid, a computing grid offers an infrastructure that couples
computers, software/middleware, special instruments, and people and sensors together. The
grid is often con-structed across LAN, WAN, or Internet backbone networks at a regional,
national, or global scale. Enterprises or organizations present grids as integrated computing
resources. They can also be viewed as virtual platforms to support virtual organizations. The
computers used in a grid are primarily workstations, servers, clusters, and supercomputers.
Personal computers, laptops, and PDAs can be used as access devices to a grid system.
In Figure 1.16 shows an example computational grid built over multiple resource sites
owned by different organizations. The resource sites offer complementary computing
resources, including workstations, large servers, a mesh of processors, and Linux clusters to
satisfy a chain of computational needs. The grid is built across various IP broadband networks
including LANs and WANs already used by enterprises or organizations over the Internet. The
grid is presented to users as an integrated resource pool as shown in the upper half of the
figure.
Unit-I CCS335-Cloud

Grid Families
Grid technology demands new distributed computing models, software/middleware
support, network protocols, and hardware infrastructures. National grid projects are followed by
industrial grid plat-form development by IBM, Microsoft, Sun, HP, Dell, Cisco, EMC, Platform
Computing, and others. New grid service providers (GSPs) and new grid applications have
emerged rapidly, similar to the growth of Internet and web services in the past two decades.
In Table 1.4, grid systems are classified in essentially two categories: computational or
data grids and P2P grids.

Peer-to-Peer Network Families


An example of a well-established distributed system is the client-server architecture. In
this scenario, client machines (PCs and workstations) are connected to a central server for
compute, e-mail, file access, and database applications. The P2P architecture offers a
distributed model of networked systems. First, a P2P network is client-oriented instead of
server-oriented. In this section, P2P systems are introduced at the physical level and overlay
networks at the logical level.
P2P Systems
In a P2P system, every node acts as both a client and a server, providing part of the system
resources. Peer machines are simply client computers connected to the Internet. All
client
Unit-I CCS335-Cloud

machines act autonomously to join or leave the system freely. This implies that no
master-slave relationship exists among the peers. No central coordination or central database
is needed. In other words, no peer machine has a global view of the entire P2P system. The
system is self- organizing with distributed control.
Figure 1.17 shows the architecture of a P2P network at two abstraction levels. Initially, the
peers are totally unrelated. Each peer machine joins or leaves the P2P network voluntarily. Only
the participating peers form the physical network at any time. Unlike the cluster or grid, a P2P
network does not use a dedicated interconnection network. The physical network is simply an
ad hoc network formed at various Internet domains randomly using the TCP/IP and NAI
protocols. Thus, the physical network varies in size and topology dynamically due to the free
membership in the P2P network.
Overlay Networks
Data items or files are distributed in the participating peers. Based on communication
or file-sharing needs, the peer IDs form an overlay network at the logical level. This overlay is a
virtual network

formed by mapping each physical machine with its ID, logically, through a virtual mapping as
shown in Figure 1.17. When a new peer joins the system, its peer ID is added as a node in the
overlay network. When an existing peer leaves the system, its peer ID is removed from the
overlay network automatically. Therefore, it is the P2P overlay network that characterizes the
logical connectivity among the peers.
There are two types of overlay networks: unstructured and structured. An unstructured
overlay network is characterized by a random graph. There is no fixed route to send messages
or files among the nodes. Often, flooding is applied to send a query to all nodes in an
unstructured overlay, thus resulting in heavy network traffic and nondeterministic search
results. Structured overlay net-works follow certain connectivity topology and rules for
inserting and removing
Unit-I CCS335-Cloud

nodes (peer IDs) from the overlay graph. Routing mechanisms are developed to take
advantage of the structured overlays.
P2P Application Families
Based on application, P2P networks are classified into four groups, as shown in Table
1.5. The first family is for distributed file sharing of digital contents (music, videos, etc.) on the
P2P network. This includes many popular P2P networks such as Gnutella, Napster, and
BitTorrent, among others. Collaboration P2P networks include MSN or Skype chatting, instant
messaging, and collaborative design, among others.
P2P Computing Challenges
P2P computing faces three types of heterogeneity problems in hardware, software, and
network requirements. There are too many hardware models and architectures to select from;
incompatibility exists between software and the OS; and different network connections and
protocols

make it too complex to apply in real applications. We need system scalability as the workload
increases. System scaling is directly related to performance and bandwidth. P2P networks do
have these properties. Data location is also important to affect collective performance. Data
locality, network proximity, and interoperability are three design objectives in distributed P2P
applications.

Internet clouds :The idea is to move desktop computing to a service-oriented


platform using server clusters and huge databases at data centers. Cloud computing
leverages its low cost and simplicity to benefit both users and providers. Machine
virtualization has enabled such cost-effectiveness. Cloud computing intends to
satisfy many user Virtualized resources from data centers to form an Internet cloud,
provisioned with hardware, software, storage, network, and services for paid users to
run their applications.
Unit-I CCS335-Cloud

NIST Cloud Computing Reference Architecture


Explain about the NIST Cloud Computing reference architecture. (May-2022)

The reference architecture model given by the National Institute of Standards and
Technology (NIST). The model offers approaches for secure cloud adoption while
contributing to cloud computing guidelines and standards.

The NIST team works closely with leading IT vendors, developers of standards, industries
and other governmental agencies and industries at a global level to support effective cloud
computing security standards and their further development. It is important to note that
this NIST cloud reference architecture does not belong to any specific vendor products,
services or some reference implementation, nor does it prevent further innovation in cloud
technology.

Conceptual cloud reference model showing different actors and entities

Cloud reference architecture includes five major actors :

Cloud consumer
Cloud provider
Cloud auditor
Cloud broker
Cloud carrier
Unit-I CCS335-Cloud

Each actor is an organization or entity plays an important role in a transaction or a


process, or performs some important task in cloud computing. The interactions between
these actors are illustrated in Fig. 1.3.

Fig. 1.3: Interactions between different actors in a cloud

Now, understand that a cloud consumer can request cloud services directly from a
CSP or from a cloud broker. The cloud auditor independently audits and then contacts
other actors to gather information. We will now discuss the role of each actor in detail.

Cloud Consumer

A cloud consumer is the most important stakeholder. The cloud service is built to
support a cloud consumer. The cloud consumer uses the services from a CSP or person or
asks an organization that maintains a business relationship. The consumer then verifies the
service catalogue from the cloud provider and requests an appropriate service or sets up
service contracts for using the service. The cloud consumer is billed for the service
used.

Some typical usage scenarios include :

Example 1 : Cloud consumer requests the service from the broker instead of directly
contacting the CSP. The cloud broker can then create a new service by combining
multiple services or by enhancing an existing service. Here, the actual cloud provider is not
visible to the cloud consumer. The consumer only interacts with the broker. This is
illustrated.
Unit-I CCS335-Cloud

Cloud broker interacting with cloud consumer

Example 2 : In this scenario, the cloud carrier provides for connectivity and transports
cloud services to consumers. This is illustrated in Fig. 1.5.

Scenario for cloud carrier

In Fig. 1.2.4, the cloud provider participates by arranging two SLAs. One SLA is with the
cloud provider (SLA2) and the second SLA is with the consumer (SLA1). Here, the cloud
provider will have an arrangement (SLA) with the cloud carrier to have secured, encrypted
connections. This ensures that the services are available for the consumer at a consistent
level to fulfil service requests. Here, the provider can specify the requirements, such as
flexibility, capability and functionalities in SLA2 to fulfil essential service requirements in
SLA1.

Example 3 : In this usage scenario, the cloud auditor conducts independent evaluations

for a cloud service. The evaluations will relate to operations and security of cloud service
implementation. Here the cloud auditor interacts with both the cloud provider and consumer,
as shown in Fig. 1.6.

Usage scenario involving a cloud auditor


Unit-I CCS335-Cloud

In all the given scenarios, the cloud consumer plays the most important role. Based on
the service request, the activities of other players and usage scenarios can differ for other
cloud consumers. Fig. 1.7 shows an example of available cloud services types.

In Fig. 1.7 note that SaaS applications are available over a network to all consumers.
These consumers may be organisations with access to software applications, end users,
app developers or administrators. Billing is based on the number of end users, the time of
use, network bandwidth consumed and for the amount or volume of data stored.

Example of cloud services available to cloud consumers

PaaS consumers can utilize tools, execution resources, development IDEs made
available by cloud providers. Using these resources, they can test, develop, manage, deploy
and configure many applications that are hosted on a cloud. PaaS consumers are billed
based on processing, database, storage, network resources consumed and for the duration
of the platform used.
Unit-I CCS335-Cloud

On the other hand, IaaS consumers can access virtual computers, network - attached
storage, network components, processor resources and other computing resources that are
deployed and run arbitrary software. IaaS consumers are billed based on the amount and
duration of hardware resources consumed, number of IP addresses, volume of data stored,
network bandwidth, and CPU hours used for a certain duration.

Cloud Provider

Cloud provider is an entity that offers cloud services to interested parties. A cloud
provider manages the infrastructure needed for providing cloud services. The CSP also runs
the software to provide services and organizes the service delivery to cloud consumers
through networks.

SaaS providers then deploy, configure, maintain and update all operations of the
software application on the cloud infrastructure, in order to ensure that services are
provisioned and to fulfil cloud consumer service requests. SaaS providers assume most of
the responsibilities associated with managing and controlling applications deployed on the
infrastructure. On the other hand, SaaS consumers have no or limited administrative
controls.

PaaS cloud providers manage the computing infrastructure and ensure that the
platform runs the cloud software and implements databases, appropriate runtime software
execution stack and other required middleware elements. They support development,
deployment and the management of PaaS consumers by providing them with necessary
tools such as IDEs, SDKs and others. PaaS providers have complete control of
applications, settings of the hosting environment, but have lesser control over the
infrastructure lying under the platform, network, servers, OS and storage.

Now, the IaaS CSP aggregates physical cloud resources such as networks, servers,
storage and network hosting infrastructure. The provider operates the cloud software and
makes all compute resources available to IaaS cloud consumer via a set of service interfaces,
such as VMs and virtual network interfaces. The IaaS cloud provider will have control over
the physical hardware and cloud software to enable provisioning and possible
infrastructure services.
Unit-I CCS335-Cloud

Major activities of a cloud provider


The major activities of a cloud provider include :

Service deployment: Service deployment refers to provisioning private, public, hybrid


and community cloud models.

Service orchestration: Service orchestration implies the coordination, management of


cloud infrastructure and arrangement to offer optimized capabilities of cloud services.
The capabilities must be cost-effective in managing IT resources and must be
determined by strategic business needs.
Cloud services management: This activity involves all service-related functions
needed to manage and operate the services requested or proposed by cloud
consumers.

Security: Security, which is a critical function in cloud computing, spans all layers in
the reference architecture. Security must be enforced end-to-end. It has a wide range
from physical to application security. CSPs must take care of security.
Privacy: Privacy in cloud must be ensured at different levels, such as user privacy,
data privacy, authorization and authentication and it must also have adequate
assurance levels. Since clouds allow resources to be shared, privacy challenges are a
big concern for consumers using clouds.

Cloud Auditor

The cloud auditor performs the task of independently evaluating cloud service
controls to provide an honest opinion when requested. Cloud audits are done to validate
standards conformance by reviewing the objective evidence. The auditor will examine
services provided by the cloud provider for its security controls, privacy, performance,
and so on.
Unit-I CCS335-Cloud

Cloud Broker

The cloud broker collects service requests from cloud consumers and manages the use,
performance, and delivery of cloud services. The cloud broker will also negotiate and
manage the relationship between cloud providers and consumers. A cloud broker may
provide services that fall into one of the following categories :

Service intermediation : Here the cloud broker will improve some specific
capabilities, and provide value added services to cloud consumers.
Service aggregation : The cloud broker links and integrates different services into
one or more new services.

Service Arbitrage : This is similar to aggregation, except for the fact that
services that are aggregated are not fixed. In service arbitrage, the broker has the
liberty to choose services from different agencies.

Cloud Carrier
The cloud carrier tries to establish connectivity and transports cloud services between a
cloud consumer and a cloud provider. Cloud carriers offer network access for
consumers, by providing telecommunication links for accessing resources using other
devices (laptops, computers, tablets, smartphones, etc.). Usually, a transport agent is an
entity offering telecommunication carriers to a business organization to access resources.
The cloud provider will set up SLAs with cloud carrier to ensure carrier transport is
consistent with the level of SLA provided by the consumers. Cloud carriers provide secure
and dedicated high - speed links with cloud providers and between different cloud
Entities.
Unit-I CCS335-Cloud
Unit-I CCS335-Cloud

Public Cloud

The public cloud services are runs over the internet. Therefore, the users who want cloud
services have to have internet connection in their local device like thin client, thick client,
mobile, laptop or desktop etc. The public cloud services are managed and maintained by
the Cloud Service Providers (CSPs) or the Cloud Service Brokers (CSBs). The public cloud
services are often offered on utility base pricing like subscription or pay- per-use model. The
public cloud services are provided through internet and APIs. This model allows users to
easily access the services without purchasing any specialize hardware or software. Any
device which has web browser and internet connectivity can be a public cloud client. The
popular public cloud service providers are Amazon web services, Microsoft azure and
Google app engine, Salesforce etc.

Advantages of public cloud

It saves capital cost behind purchasing the server hardware’s, operating


systems and application software licenses.

There is no need of server administrators to take care of servers as they are

kept at CSPs data center and managed by them.

No training is required to use or access the cloud services.

There is no upfront or setup cost is required.

A user gets easy access to multiple services under a single self - service portal.

Users have a choice to compare and select between the providers.

It is cheaper than in house cloud implementation because user have to pay for that
they have used.

The resources are easily scalable.

Disadvantages of public cloud

There is lack of data security as data is stored on public data center and managed by
third party data center vendors therefore there may be compromise of user’s
confidential data.

Expensive recovery of backup data.


Unit-I CCS335-Cloud

User never comes to know where (at which location) their data gets stored, how that
can be recovered and how many replicas of data have been created.

Private Cloud
The private cloud services are used by the organizations internally. Most of the times it
run over the intranet connection. They are designed for a single organization therefore
anyone within the organization can get access to data, services and web applications easily
through local servers and local network but users outside the organizations cannot access
them. This type of cloud services are hosted on intranet therefore users who are connected to
that intranet get access to the services. The infrastructure for private cloud is fully managed
and maintained by the organization itself.
It is much more secure than public cloud as it gives freedom to local administrators to
write their own security policies for user’s access. It also provides good level trust and
privacy to the users. Private clouds are more expensive than public clouds due to the capital
expenditure involved in acquiring and maintaining them. The well-known private cloud
platforms are Openstack, Open nebula, Eucalyptus, VMware private cloud etc.
Advantages of private cloud

Speed of access is very high as services are provided through local servers
over local network.

It is more secure than public cloud as security of cloud services are handled by
local administrator.

It can becustomized as per organizations need.

It does not require internet connection for access.

It is easy to manage than public cloud.

Disadvantages of private cloud

Implementation cost is very high as setup involves purchasing and


installing servers, Hypervisors, Operating systems.

It requires administrators for managing and maintaining servers.

The scope of scalability is very limited.

Hybrid Cloud

The hybrid cloud services are composed of two or more clouds that offers the benefits of
Comparison between various Cloud Deployment Models
Cloud service models

FromFig. 1.10, we can see that the Infrastructure as a Service (IaaS) is the bottommost
layer in the model and Software as a Service (SaaS) lies at the top.
The IaaS has lower level of abstraction and visibility, while SaaS has highest level
of visibility.

The Fig. 1.11 represents the cloud stack organization from physical infrastructure to
applications.

In this layered architecture, the abstraction levels are seen where higher layer services
include the services of the underlying layer.

The cloud computing stack

The three services, IaaS, PaaS and SaaS, can exist independent of one another or may
combine with one another at some layers. Different layers in every cloud
computing model are either managed by the user or by the vendor (provider).
In case of the traditional IT model, all the layers or levels are managed by the user
because he or she is solely responsible for managing and hosting the applications.
In case of IaaS, the top five layers are managed by the user, while the four lower layers
(virtualisation, server hardware, storage and networking) are managed by vendors or
providers. So, here, the user will be accountable for managing the operating system via
applications and managing databases and security of applications.

The core middleware manages the physical resources and the VMs are deployed on
top of them. This deployment will provide the features of pay-per-use services and
multi-tenancy. Infrastructure services support cloud development environments and provide
capabilities for application development and implementation.

It provides different libraries, models for programming, APIs, editors and so on to support
application development. When this deployment is ready for the cloud, they can be
used by end-users/ organisations. With this idea, let us further explore the different service
models. Infrastructure as a Service (IaaS)

Infrastructure-as-a-Service (IaaS) can be defined as the use of servers,


storage, computing power, network and virtualization to form utility like services
for users.
It is a cloud service model that provides hardware resources virtualized in the
cloud. It provides virtual computing resources to the users through resource pool.
In IaaS, the CSP owns all equipment, such as servers, storage disks,
and network infrastructure.

Developers use the IaaS service model to create virtual hardware on which
the applications and/ or services are developed.
Developers can create virtual private storage, virtual private servers, and virtual
private networks by using IaaS.
The private virtual systems contain software applications to complete the IaaS
solution. The infrastructure of IaaS consists of communication networks,
physical compute nodes, storage solutions and the pool of virtualized computing
resources managed by a service provider.
IaaS provides users with a web-based service that can be used to create, destroy
and manage virtual machines and storage.

Instead of purchasing extra servers, softwares, datacenter space or network


equipment, IaaS enables on-demand provisioning of computational resources in
the form of virtual machines in cloud data center. Some key providers of IaaS are
Amazon Web Services (AWS), Microsoft Azure, GoGrid, Joyent, Rackspace etc.
and some of the private cloud softwares through which IaaS can be setup are
Openstack, Apache Cloud Stack, Eucalyptus, and VMware VSphere etc.

In IaaS service delivery, workload is the fundamental component of the


virtualised client. It simulates the capacity of a physical server to perform
work. Hence, the work done is equal to the total number of Transaction Per
Minute (TPM).
In the case of hosted applications, the client runs on a dedicated server inside a
server rack. It may also run on a standalone server.

The user reserves an equivalent machine required to run workloads. The IaaS
infrastructure runs the instances of the server in the data centre offering the
service.

The resources for this server instance are drawn from a mix of virtualised systems,
RAID disks, network and interface capacity. These are physical systems partitioned into
logical

Components in IaaS service model (cloud security alliance)

The client in IaaS is allocated with its own private network. For example, Amazon EC2
enables this service to behave such that each server has its own separate network unless
the user creates a virtual private cloud. If the EC2 deployment is scaled by adding additional
networks on the infrastructure, it is easy to logically scale, but this can create an
overhead as traffic gets routed between logical networks.

In IaaS, the customer has controls over the OS, storage and installed applications, but has
limited control over network components. The user cannot control the underlying cloud
infrastructure. Services offered by Iaa S include web servers, server hosting,
computer hardware, OS, virtual instances, load balancing, web servers and bandwidth
provisioning. These services are useful during volatile demands and when there is a
computing resource need for a new business launch or when the company may not want to
buy hardware or if the organisation wants to expand.

Platform as a Service

The Platform as a Service can be defined as a computing platform that allows


the user to create web applications quickly and easily and without worrying about
buying and maintaining the software and infrastructure.
Platform-as-a-Service provides tools for development, deployment and testing
the softwares, middleware solutions, databases, programming languages and
APIs for developers to develop custom applications; without installing or
configuring the development environment.
The PaaS provides a platform to run web applications without installing them
in a local machine i.e. the applications written by the users can be directly
run on the PaaS cloud. It is built on the top of IaaS layer.
The PaaS realizes many of the unique benefits like utility computing, hardware
virtualization, dynamic resource allocation, low investment costs and pre-
configured development environment. It has all the application typically required
by the client deployed on it. Some key providers of PaaS clouds are Google App
Engine, Microsoft Azure, NetSuite, Red hat Open shift etc.

The PaaS realizes many of the unique benefits like utility computing, hardware
virtualization, dynamic resource allocation, low investment costs and pre-
configured development environment. It has all the application typically required
by the client deployed on it. Some key providers of PaaS clouds are Google App
Engine, Microsoft Azure, NetSuite, Red hat Open shift etc.
The PaaS model includes the software environment where the developer can
create custom solutions using development tools available with the PaaS
platform. The components of a PaaS platform are shown in Fig. 1.13. Platforms
can support specific development languages, frameworks for applications and
other constructs. Also, PaaS provides tools and development environments to
design applications. Usually, a fully Integrated
Development Environment (IDE) is available as a PaaS service. For PaaS to
be a cloud computing service, the platform supports user interface development.
It also has many standards such as HTML, JavaScript, rich media and so on.
In this model, users interact with the software and append and retrieve data,
perform an action, obtain results from a process task and perform other actions
allowed by the PaaS vendor.
In this service model, the customer does not own any responsibility to maintain
the hardware and software and the development environment.

The applications created are the only interactions between the customer and the
PaaS platform. The PaaS cloud provider owns responsibility for all the
operational aspects, such as maintenance, updates, management of resources
and product lifecycle.

Components of PaaS

A PaaS customer can control services such as device integration, session management,
content management, sandbox, and so on. In addition to these services, customer controls
are also possible in Universal Description Discovery and Integration (UDDI), and platform
independent Extensible Mark-up Language (XML) registry that allows registration and
identification of web service apps.

Let us consider an example of Google app engine.

The platform allows developers to program apps using Google’s published APIs. In this
platform, Google defines the tools to be used within the development framework, the file
system structure and data stores. A similar PaaS offering is given by [Link], another
vendor that is based on the [Link] development platform for the latter’s SaaS
[Link] provides an add - on development environment.

In PaaS, note that developers can build an app with Python and Google API. Here, the
PaaS vendor is the developer who offers a complete solution to the user.
UNIT-2 Virtualization Basics
UNITII – VIRTUALIZATION BASICS

Virtual Machine
The concept of a virtual machine was introduced around 1960. It is the evolution of the time-
sharing technique. In the time-sharing method, each program has full access to all the computer
resources but at a time, only one program will be executed. The system switch between programs
in time slices while saving and restoring program states each time. With the use of the time-sharing
method, multiple users can use the computer system concurrently. IBM research centres evolved
the time-sharing method as Virtual Machines. CP-67 was the first available virtual machine
architecture. Systems with multiple Virtual Machines on a single host and single virtual machine on
multiple hosts were developed.

Before launching any new hardware technology, it is first tested on the emulator to detect, recreate
and repair the flaws in the design & tack necessary steps. Similarly, before introducing any new
software, it is simulated to check for any errors and debug them. To do this task, a system that can
act as a substitute for the main environment to build new technology. This is where Virtual
Machines come into the picture. It acts as the emulation of the computer system providing the full
functionality of the physical system.

What is a Virtual Machine?

With the introduction of new technologies and newer research models, a lot number of hardware
and software products are being launched. Many of the software are platform-dependent hence it is
sometimes difficult to debug or check them because of the limited hardware resources.

A VM (virtual machine) is an emulation of a computer system, where these machines use computer
architectures to provide the functionality of a physical computer. The physical device on which
virtual machines work is known as Host, whereas the virtual machines are known as Guest. A single
host can have multiple numbers of guests.

Virtualization

Virtualization is a proven software technology that makes it possible to run multiple operating
systems and applications on the same server at the same time. Example: Run both Windows and
Linux on the same machine
It is the creation of a virtual (rather than actual) version of something, such as an operating system,
a server, a storage device or network resources.

Taxonomy (Types) of Virtual Machine


The virtual machine works like a computer, and it is sandboxed from the rest of the host system.
The software within the guest cannot make changes to the software of the host system. Thus, the
virus files can be tested using a virtual machine without affecting the main computer system. The
computer software that creates and runs the virtual machine is known as Hypervisor. Based on their
functions there are two different types of virtual machines – System virtual machines and process
virtual machines.

1. System Virtual Machine:

These types of VMs provide full virtualization. Acting as the substitute for the real machine, these
will provide functionalities to execute an entire operating system. Hardware resources are shared
and managed, forming multiple environments on the host system. These environments are isolated
from each other but exist on the same physical host. Thus, these provide time-sharing among
several single-tasking operating systems.

To allow memory sharing between different virtual machines on one computer operating system,
memory overcommitment systems can be applied. Memory pages having identical content can be
shared among multiple virtual machines present on the same physical host. This is highly useful for
read-only pages.

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 :

These VMs are also known as Application virtual machines, Managed runtime environments. This
type of VM runs as a normal application inside the host’s operating system, supporting a single
process. It is created with the starting of the process and is destroyed when the process ends. It is
used to provide a platform-independent programming environment to the process, allowing it to
execute in the same manner on any of the other platforms.

These are implemented using interpreters and provides high-level abstractions. These are popularly
used for Java programming which uses Java virtual machine for execution of programs. There is a
special case of a process VM that abstracts over the communication mechanism of a computer
cluster. These contain one process per physical machine in the cluster. These help the programmer
to focus on the algorithm instead of the communication process provided by the interconnect
and virtual machine in OS. The application running on these VM has access to all the operating
system services. Parallel virtual machine, Message passing interface are examples of these virtual
machines(VM).
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.

Hypervisor
A hypervisor, also known as a virtual machine monitor or VMM. The hypervisor is a piece of
software that allows us to build and run virtual machines which are abbreviated as VMs.

A hypervisor allows a single host computer to support multiple virtual machines (VMs) by sharing
resources including memory and processing.

What is the use of a hypervisor?

Hypervisors allow the use of more of a system's available resources and provide greater IT
versatility because the guest VMs are independent of the host hardware which is one of the major
benefits of the Hypervisor.

In other words, this implies that they can be quickly switched between servers. Since a hypervisor
with the help of its special feature, it allows several virtual machines to operate on a single physical
server. So, it helps us to reduce:

o The Space efficiency

o The Energy uses

o The Maintenance requirements of the server.


Kinds of hypervisors

There are two types of hypervisors: "Type 1" (also known as "bare metal") and "Type 2" (also known
as "hosted"). A type 1 hypervisor functions as a light operating system that operates directly on the
host's hardware, while a type 2 hypervisor functions as a software layer on top of an operating
system, similar to other computer programs.

Since they are isolated from the attack-prone operating system, bare-metal hypervisors are
extremely stable.

Furthermore, they are usually faster and more powerful than hosted hypervisors. For these purposes,
the majority of enterprise businesses opt for bare-metal hypervisors for their data center computing
requirements.

While hosted hypervisors run inside the OS, they can be topped with additional (and different)
operating systems.
The hosted hypervisors have longer latency than bare-metal hypervisors which is a very major
disadvantage of the it. This is due to the fact that contact between the hardware and the hypervisor
must go through the OS's extra layer.

The Type 1 hypervisor

The native or bare metal hypervisor, the Type 1 hypervisor is known by both names.

It replaces the host operating system, and the hypervisor schedules VM services directly to the
hardware.

The type 1 hypervisor is very much commonly used in the enterprise data center or other server-
based environments.

It includes KVM, Microsoft Hyper-V, and VMware vSphere. If we are running the updated version of
the hypervisor then we must have already got the KVM integrated into the Linux kernel in 2007.

The Type 2 hypervisor

It is also known as a hosted hypervisor, The type 2 hypervisor is a software layer or framework that
runs on a traditional operating system.

It operates by separating the guest and host operating systems. The host operating system
schedules VM services, which are then executed on the hardware.

Individual users who wish to operate multiple operating systems on a personal computer should use
a form 2 hypervisor.

This type of hypervisor also includes the virtual machines with it.

Hardware acceleration technology improves the processing speed of both bare-metal and hosted
hypervisors, allowing them to build and handle virtual resources more quickly.

On a single physical computer, all types of hypervisors will operate multiple virtual servers for
multiple tenants. Different businesses rent data space on various virtual servers from public cloud
service providers. One server can host multiple virtual servers, each of which is running different
workloads for different businesses.
What is a cloud hypervisor?

Hypervisors are a key component of the technology that enables cloud computing since they are a
software layer that allows one host device to support several virtual machines at the same time.

Hypervisors allow IT to retain control over a cloud environment's infrastructure, processes, and
sensitive data while making cloud-based applications accessible to users in a virtual environment.

Increased emphasis on creative applications is being driven by digital transformation and


increasing consumer expectations. As a result, many businesses are transferring their virtual
computers to the cloud.

A hypervisor also helps in the rapid migration of applications to the cloud as being a part of a
virtualization platform.

As a result, businesses will take advantage of the cloud's many advantages, such as lower hardware
costs, improved accessibility, and increased scalability, for a quicker return on investment.

Benefits of hypervisors

Using a hypervisor to host several virtual machines has many advantages:

o Speed: The hypervisors allow virtual machines to be built instantly unlike bare-metal
servers. This makes provisioning resources for complex workloads much simpler.

o Efficiency: Hypervisors that run multiple virtual machines on the resources of a single
physical machine often allow for more effective use of a single physical server.

o Flexibility: Since the hypervisor distinguishes the OS from the underlying hardware,
the program no longer relies on particular hardware devices or drivers, bare-metal
hypervisors enable operating systems and their related applications to operate on a
variety of hardware types.

o Portability: Multiple operating systems can run on the same physical server thanks to
hypervisors (host machine). The hypervisor's virtual machines are portable because
they are separate from the physical computer.
As an application requires more computing power, virtualization software allows it to access
additional machines without interruption.

VIRTUALIZATION

• Virtualization is a technique, which allows sharing single physical instance of an


application or resource among multiple organizations or tenants (customers).

• Virtualization is a proved technology that makes it possible to run multiple


operating system and applications on the same server at same time.

• Virtualization is the process of creating a logical(virtual) version of a server


operating system, a storage device, or network services.

• The technology that work behind virtualization is known as a virtual machine


monitor(VM), or virtual manager which separates compute environments from the
actual physical infrastructure.

• Virtualization -- the abstraction of computer resources.

• Virtualization hides the physical characteristics of computing resources from their


users, applications, or end users.

• This includes making a single physical resource (such as a server, an operating


system, an application, or storage device) appear to function as multiple virtual
resources.

• It can also include making multiple physical resources (such as storage devices or
servers) appear as a single virtual resource.
• In computing, virtualization refers to the act of creating a virtual (rather than
actual) version of something, like computer hardware platforms, operating systems,
storage devices, and computer network resources

• Creation of a virtual machine over existing operating system and hardware.

• Host machine: The machine on which the virtual machine is created.

• Guest machine: virtual machines referred as a guest machine.

• Hypervisor: Hypervisor is a firmware or low-level program that acts as a Virtual

Machine Manager.

Figure 2.10 Virtualization Example


Advantages of Virtualization:

1. Reduced Costs.

2. Efficient hardware Utilization.

3. Virtualization leads to better resource Utilization and increase performance

4. Testing for software development.

5. Increase Availability

6. Save energy

7. Shifting all your Local Infrastructure to Cloud in a day

8. Possibility to Divide Services

9. Running application not supported by the host.

Disadvantages of Virtualization:

1. Extra Costs.

2. Software Licensing.
IMPLEMENTATION LEVELS OF VIRTUALIZATION

Virtualization is a computer architecture technology by which multiple virtual machines


(VMs) are multiplexed in the same hardware machine. The purpose of a VM is to enhance
resource sharing by many users and improve computer performance in terms of resource
utilization and application flexibility.

Hardware resources (CPU, memory, I/O devices, etc.) or software resources(operating


system and software libraries) can be virtualized in various functional layers.

The idea is to separate the hardware from the software to yield better system efficiency. For
example, computer users gained access to much enlarged memory space when the concept of
virtual memory was introduced. Similarly, virtualization techniques can be applied to enhance the
use of compute engines, networks and storage.

Levels of Virtualization:

A traditional computer runs with host operating system specially tailored for its hardware
architecture, as shown in Figure 2.11 (a). After virtualization, different user applications managed
by their own operating systems (guest OS) can run on the same hardware, independent of the host
OS.

This is often done by adding additional software, called a virtualization layer as shown in
Figure 2.11 (b). This virtualization layer is known as hypervisor or virtual machine monitor (VMM) .
The VMs are shown in the upper boxes, where applications run with their own guest OS over the
virtualized CPU, memory, and I/O resources. The main function of the software layer for
virtualization is to virtualize the physical hardware of a host machine into virtual resources to be
used by the VMs, exclusively. The virtualization software creates the abstraction of VMs by
interposing a virtualization layer at various levels of a computer system. Common virtualization
layers include the instruction set architecture (ISA) level, hardware level, operating system level,
library support level, and application level.

Figure 2.11 The architecture of a computer system before and after


Virtualization
Figure 2.12 Virtualization ranging from hardware to applications in five abstraction levels.

Instruction Set Architecture Level:

At the ISA level, virtualization is performed by emulating a given ISA by the ISA of the host
machine. For example, MIPS binary code can run on an x86-based host machine with the help of
ISA emulation. With this approach, it is possible to run a large amount of legacy binary
code written for various processors on any given new hardware host machine. Instruction set
emulation leads to virtual ISAs created on any hardware machine.

The basic emulation method is through code interpretation. An interpreter program


interprets the source instructions to target instructions one by one. OneSource instruction may
require tens or hundreds of native target instructions to perform its function. Obviously, this
process is relatively slow. For better performance, dynamic binary translation is desired.

This approach translates basic blocks of dynamic source instructions to target


instructions. The basic blocks can also be extended to program traces or super blocks to increase
translation efficiency. Instruction set emulation requires binary translation and optimization. A
virtual instruction set architecture (V-ISA) thus requires adding a processor-specific software
translation layer to the compiler.

Hardware Abstraction Level:

Hardware-level virtualization is performed right on top of the bare hardware. The idea is to
virtualize a computer’s resources, such as its processors, memory, and I/O devices. The intention
is to upgrade the hardware utilization rate by multiple users concurrently.

Operating System Level:

This refers to an abstraction layer between traditional OS and user applications. OS-level
virtualization creates isolated containers on a single physical server and the OS instances to
utilize the hardware and software in datacenters.

The containers behave like real servers. OS-level virtualization is commonly used in
creating virtual hosting environments to allocate hardware resources among a large number of
mutually distrusting users. It is also used, to a lesser extent, in consolidating server hardware by
moving services on separate hosts into containers or VMs on one server.

Library Support Level:

Most applications use APIs exported by user level libraries rather than using lengthy
system calls by the OS. Since most systems provide well documented APIs, such an interface
becomes another candidate for virtualization.

Virtualization with library interfaces is possible by controlling the communication link


between applications and the rest of a system through API hooks. The software tool WINE has
implemented this approach to support Windows applications on top of UNIX hosts. Another
example is the vCUDA which allows applications executing within VMs to leverage GPU

hardware acceleration.

User-Application Level:

Virtualization at the application level virtualizes an application as a VM. On a traditional OS,


an application often runs as a process. Therefore, application-level virtualization is also known as
process-level virtualization. The most popular approach is to deploy high level language (HLL)VMs.

VMM Design Requirements and Providers

Hardware-level virtualization inserts a layer between real hardware and traditional


operating systems. This layer is commonly called the Virtual Machine Monitor (VMM) and it
manages the hardware resources of a computing system. Each time programs access the
hardware the VMM captures the process. VMM acts as a traditional OS.
One hardware component, such as the CPU, can be virtualized as several virtual copies.
Therefore, several traditional operating systems which are the same or different can sit on the
same set of hardware simultaneously.

Three requirements for a VMM

First, a VMM should provide an environment for programs which is essentially

identical to the original machine.

Second, programs run in this environment should show, at worst, only minor

decreases in speed.

Third, a VMM should be in complete control of the system resources

Virtualization Support at the OS Level

With the help of VM technology, a new computing mode known as cloud computing
is emerging. Cloud computing is transforming the computing landscape by shifting the hardware
and staffing costs of managing a computational center to third parties, just like banks. However,
cloud computing has at least two challenges.
The first is the ability to use a variable number of physical machines and VM

instances depending on the needs of a problem.

The second challenge concerns the slow operation of instantiating new VMs.

Currently, new VMs originate either as fresh boots or as replicates of a template VM,
unaware of the current application state. Therefore, to better support cloud computing, a large
amount of research and development should be done.

Why OS-Level Virtualization?

To reduce the performance overhead of hardware-level virtualization, even hardware modification


is needed. OS-level virtualization provides a feasible solution for these hardware- level
virtualization issues. Operating system virtualization inserts a virtualization layer inside an
operating system to partition a machine’s physical resources. It enables multiple isolated VMs
within a single operating system kernel. This kind of VM is often called a virtual execution
environment (VE), Virtual Private System (VPS), or simply container. From the user’s point of view,
VEs look like real servers. This means a VE has its own set of processes, file system, user
accounts, network interfaces with IP addresses, routing tables, firewall rules, and other personal
settings. Although VEs can be customized for different people, they share the same operating
system kernel.

Advantages of OS Extensions

(1 ) VMs at the operating system level have minimal startup/shutdown costs, low

resource requirements, and high scalability.


(2 ) For an OS-level VM, it is possible for a VM and its host environment to

synchronize state changes when necessary.

These benefits can be achieved via two mechanisms of OS-level virtualization:

(1 ) All OS-level VMs on the same physical machine share a single operating system kernel

(2 ) The virtualization layer can be designed in a way that allows processes in


VMs to access as many resources of the host machine as possible, but never to
modify them.

Virtualization on Linux or Windows Platforms

Virtualization support on the Windows-based platform is still in the research stage. The
Linux kernel offers an abstraction layer to allow software processes to work with and operate on
resources without knowing the hardware details. New hardware may need a new Linux kernel to
support. Therefore, different Linux platforms use patched kernels to provide special support for
extended functionality.
Middleware Support for Virtualization

Library-level virtualization is also known as user-level Application Binary Interface (ABI) or


API emulation. This type of virtualization can create execution environments for running alien
programs on a platform rather than creating a VM to run the entire operating system. API call
interception and remapping are the key functions performed. This provides an overview of several
library-level virtualization systems: namely the Windows Application Binary Interface
(WABI), lxrun, WINE, Visual MainWin, and Vcuda.

Virtualization Structures/Tools and Mechanisms

There are three typical classes of VM architecture. Before virtualization, the operating
system manages the hardware. After virtualization, a virtualization layer is inserted between the
hardware and the operating system. In such a case, the virtualization layer is responsible for
converting portions of the real hardware into virtual hardware. Therefore, different operating
systems such as Linux and Windows can run on the same physical machine, simultaneously.

Depending on the position of the virtualization layer, there are several classes of VM
architectures, namely the hypervisor architecture, para-virtualization, and host based virtualization.
The hypervisor is also known as the VMM (Virtual Machine Monitor). They both perform the same
virtualization operations.

Hypervisor and Xen Architecture:

The hypervisor supports hardware-level virtualization on bare metal devices like CPU,
memory, disk and network interfaces. The hypervisor software sits directly between the physical
hardware and its OS. This virtualization layer is referred to as either the VMM or the hypervisor.
The hypervisor provides hypercalls for the guest OSes and applications. Depending on the
functionality, a hypervisor can assume a micro-kernel architecture like the Microsoft Hyper-V. Or it
can assume monolithic hypervisor architecture like the VMware ESX for server virtualization. A
micro-kernel hypervisor includes only the basic and unchanging functions (such as physical
memory management and processor scheduling). The device drivers and other changeable
components are outside the hypervisor. A monolithic hypervisor implements all the
aforementioned functions, including those of the device drivers.

Therefore, the size of the hypervisor code of a micro-kernel hypervisor is smaller than that
of a monolithic hypervisor. Essentially, a hypervisor must be able to convert physical devices into
virtual resources dedicated for the deployed VM to use.

The Xen Architecture:

The core components of a Xen system are the hypervisor, kernel, and applications. The
organization of the three components is important. Like other virtualization systems, many guest
OSes can run on top of the hypervisor. However, not all guest OSes are created equal, and one in
particular controls the others.

The guest OS, which has control ability, is called Domain 0, and the others are called
Domain U. Domain 0 is a privileged guest OS of Xen. It is first loaded when Xen boots without any
file system drivers being available. Domain 0 is designed to access hardware directly and manage
devices. Therefore, one of the responsibilities of Domain 0 is to allocate and map hardware
resources for the guest domains (the Domain U domains).

Binary Translation with Full Virtualization:

Depending on implementation technologies, hardware virtualization can be classified into


two categories: full virtualization and host-based virtualization. Full virtualization does not need to
modify the host OS. It relies on binary translation to trap and to virtualize the execution of certain
sensitive, non virtualizable instructions. The guest OSes and their applications consist of
noncritical and critical instructions. In a host-based system, both a host OS and a guest OS are
used. A virtualization software layer is built between the host OS and guest OS.

Full Virtualization:

With full virtualization, noncritical instructions run on the hardware directly while critical
instructions are discovered and replaced with traps into the VMM to be emulated by software.
Both the hypervisor and VMM approaches are considered full virtualization.

Binary Translation of Guest OS Requests Using a VMM :

VMware puts the VMM at Ring 0 and the guest OS at Ring 1. The VMM scans the
instruction stream and identifies the privileged, control- and behavior-sensitive instructions.
When these instructions are identified, they are trapped into the VMM, which emulates the
behavior of these instructions.

Figure 2.13 Indirect execution of complex instructions via binary translation of

guest OS requests using the VMM plus direct execution of simpleinstructions

on the same host.

The method used in this emulation is called binary translation. Therefore, full virtualization
combines binary translation and direct execution. The guest OS is completely decoupled from the
underlying hardware. Consequently, the guest OS is unaware that it is being virtualized. Binary
translation employs a code cache to store translated hot instructions to improve performance, but
it increases the cost of memory usage.

Host-Based Virtualization:
An alternative VM architecture is to install a virtualization layer on top of the host OS. This
host OS is still responsible for managing the hardware. The guest OSes are installed and run on
top of the virtualization layer. Dedicated applications may run on the VMs. Certainly, some other
applications can also run with the host OS directly. This host-based architecture has some distinct
advantages, as enumerated next. First, the user can install this VM architecture without modifying
the host OS. The virtualizing software can rely on the host OS to provide device drivers and other
low level services. This will simplify the VM design and ease its deployment. Second, the
host-based approach appeals to many host machine configurations.
Compared to the hypervisor/VMM architecture, the performance of the host based architecture
may also be low. When an application requests hardware access, it involves four layers of
mapping which downgrades performance significantly.

Para-Virtualization with Compiler Support:

Para-virtualization needs to modify the guest operating systems. A para-virtualized VM


provides special APIs requiring substantial OS modifications in user applications. Performance
degradation is a critical issue of a virtualized system. No one wants to use a VM if it is much
slower than using a physical machine.

The virtualization layer can be inserted at different positions in a machine software stack.
However, para-virtualization attempts to reduce the virtualization overhead, and thus improve
performance by modifying only the guest OS kernel. The guest operating systems are para-
virtualized. The traditional x86 processor offers four instruction execution rings: Rings 0,1, 2, and
3. The lower the ring number, the higher the privilege of instruction being executed. The OS is
responsible for managing the hardware and the privileged instructions to execute at Ring 0, while
user-level applications run at Ring 3.
Figure 2.14 Para-virtualized VM architecture
Figure 2.15 The use of a para-virtualized guest OS assisted by an intelligent
compiler to replace non virtualizable OS instructions by hyper
calls.

Para-Virtualization Architecture:

When the x86 processor is virtualized, a virtualization layer is inserted between the
hardware and the OS. According to the x86 ring definitions, the virtualization layer
should also be installed at Ring 0. The para-virtualization replaces non virtualizable
instructions with hyper calls that communicate directly with the hypervisor or VMM.
However, when the guest OS kernel is modified for virtualization, it can no longer run on the
hardware directly.

Although para-virtualization reduces the overhead, it has incurred other problems.


First, its compatibility and portability may be in doubt, because it must support the
unmodified OS as well. Second, the cost of maintaining para-virtualized OSes is high,
because they may require deep OS kernel modifications. Finally, the performance advantage
of para virtualization varies greatly due to workload variations.

KVM (Kernel-Based VM):

This is a Linux para-virtualization system—a part of the Linux version 2.6.20


kernel. Memory management and scheduling activities are carried out by the existing
Linux kernel. The KVM does the rest, which makes it simpler than the hypervisor that
controls the entire machine. KVM is a hardware-assisted para-virtualization tool, which
improves performance and supports unmodified guest OSes such as Windows, Linux,
Solaris, and other UNIX variants. Unlike the full virtualization architecture which intercepts
and emulates privileged and sensitive instructions at runtime, para-virtualization handles
these instructions at compile time.

The guest OS kernel is modified to replace the privileged and sensitive instructions
with hyper calls to the hypervisor or VMM. Xen assumes such a para virtualization
architecture. The guest OS running in a guest domain may run at Ring 1instead of at Ring
0. This implies that the guest OS may not be able to execute some privileged and sensitive
instructions. The privileged instructions are implemented by hypercalls to the hypervisor.
After replacing the instructions with hyper calls, the modified guest OS emulates the
behavior of the original guest OS.

VIRTUALIZATION OF CPU, MEMORY, AND I/O


DEVICES

To support virtualization, processors such as the x86 employ a special running


mode and instructions, known as hardware-assisted virtualization. In this way, the VMM and
guest OS run in different modes and all sensitive instructions of the guest OS and its
applications are trapped in the VMM. To save processor states, modes witching are
completed by hardware. For the x86architecture, Intel and AMD have proprietary
technologies for hardware-assisted virtualization.

Hardware Support for Virtualization: Modern operating systems and processors permit
multiple processes to run simultaneously. If there is no protection mechanism in a processor,
all instructions from different processes will access the hardware directly and cause a
system crash. Therefore, all processors have at least two modes, user mode and supervisor
mode, to ensure controlled access of critical hardware. Instructions running in supervisor
mode are called privileged instructions.

Other instructions are unprivileged instructions. In a virtualized environment, it is


more difficult to make OSes and applications run correctly because there are more
layers in the machine stack.

CPU
Virtualization:
A VM is a duplicate of an existing computer system in which a majority of the VM
instructions are executed on the host processor in native mode. Thus, unprivileged
instructions of VMs run directly on the host machine for higher efficiency. Other critical
instructions should be handled carefully for correctness and stability. The critical
instructions are divided into three categories:

Privileged instructions - Privileged instructions execute in a privileged

mode and will be trapped if executed outside this mode.

Control sensitive instructions - Control-sensitive instructions attempt


to change the configuration of resources used.

Behavior-sensitive instructions - Behavior-sensitive instructions have different


behaviors depending on the configuration of resources, including the load and
store

operations over the virtual memory.

A CPU architecture is virtualizable if it supports the ability to run the VM’s privileged
and privileged instructions in the CPU’s user mode while the VMM runs in supervisor mode.
When the privileged instructions including control- and behavior sensitive instructions of a
VM are executed, they are trapped in the VMM. In this case, the VMM acts as a unified
mediator for hardware access from different VMs to guarantee the correctness and stability
of the whole system. RISC CPU architectures can be naturally virtualized because all control-
and behavior- sensitive instructions are privileged instructions.

Hardware-Assisted CPU Virtualization:

This technique attempts to simplify virtualization because full or para virtualization is


complicated. Intel and AMD add an additional mode called privilege mode level (some
people call it Ring-1) to x86 processors. Therefore, operating systems can still run at Ring 0
and the hypervisor can run at Ring -[Link] the privileged and sensitive instructions are trapped
in the hypervisor automatically. This technique removes the difficulty of implementing binary
translation of full virtualization. It also lets the operating system run in VMs without
modification.

Memory Virtualization:
Virtual memory virtualization is similar to the virtual memory support provided
by modern operating systems. In a traditional execution environment, the operating system
maintains mappings of virtual memory to machine memory using page tables, which is a
one- stage mapping from virtual memory to machine memory. All modern x86 CPUs include
a memory management unit (MMU) and a translation lookaside buffer (TLB) to optimize
virtual memory performance.

However, in a virtual execution environment, virtual memory virtualization involves


sharing the physical system memory in RAM and dynamically allocating it to the
physical memory of the VMs. That means a two-stage mapping process should be
maintained by the guest OS and the VMM, respectively: virtual memory to physical memory
and physical memory to machine memory. Furthermore, MMU virtualization should be
supported, which is transparent to the guest OS. The guest OS continues to control the
mapping of virtual addresses to the physical memory addresses of VMs. But the guest OS
cannot directly access the actual machine memory. The VMM is responsible for mapping
the guest physical memory to the actual machine memory. Figure 2.16 shows the two-level
memory mapping procedure.

I/O
Virtualizatio
n:

I/O virtualization involves managing the routing of I/O requests between virtual devices and
the shared physical hardware. There are three ways to implement I/O virtualization:

Full device emulation

Para virtualization

Direct I/O
Figure 2.16 Two-level memory mapping procedure.

Full device emulation is the first approach for I/O virtualization. Generally, this
approach emulates well known, real-world devices. All the functions of a device or bus
infrastructure, such as device enumeration, identification, interrupts, and DMA, are replicated
in software. This software is located in the VMM and acts as a virtual [Link] The I/O
access requests of the guest OS are trapped in the VMM which interacts with the I/O
devices.

A single hardware device can be shared by multiple VMs that run concurrently.
However, software emulation runs much slower than the hardware it emulates. The para
virtualization method of I/O virtualization is typically used in Xen. It is also known as the
split driver model consisting of a frontend driver and a backend driver. The frontend driver is
running in Domain U and the backend driver is running in Domain 0. They interact with each
other via a block of shared memory. The frontend driver manages the I/O requests of the
guest OSes and the backend driver is responsible for managing the real I/O devices and
multiplexing the I/O data of different VMs. Although para I/O- virtualization achieves better
device performance than full device emulation, it comes with a higher CPU overhead.
Figure 2.17 Device emulation for I/O virtualization implemented inside the middle
layer that maps real I/O devices into the virtual devices for the guest device driver
to use.

Virtualization in Multi-Core Processors:

Virtualizing a multi-core processor is relatively more complicated than virtualizing a unicore


processor. Though multicore processors are claimed to have higher performance by integrating multiple
processor cores in a single chip, muti-core virtualization has raised some new challenges to
computer architects, compiler constructors, system designers, and application programmers. There are
mainly two difficulties: Application programs must be parallelized to use all cores fully, and software
must explicitly assign tasks to the cores, which is a very complex problem.
UNIT III Virtualization Infrastructure AND Docker
UNIT III VIRTUALIZATION INFRASTRUCTURE AND DOCKER 7

Desktop Virtualization – Network Virtualization – Storage Virtualization – System-level of Operating


Virtualization – Application Virtualization – Virtual clusters and Resource Management –
Containers vs. Virtual Machines – Introduction to Docker – Docker Components – Docker
Container – Docker Images and Repositories.

Types of Virtualization in Cloud Computing

1. Application Virtualization
2. Network Virtualization
3. Desktop Virtualization
4. Storage Virtualization
5. Server Virtualization
6. Data virtualization

1. Application Virtualization: Application virtualization helps a user to have remote access


to an application from a server. The server stores all personal information and other
characteristics of the application but can still run on a local workstation through the
internet. An example of this would be a user who needs to run two different versions of
the same software. Technologies that use application virtualization are hosted
applications and packaged applications.
2. Network Virtualization: The ability to run multiple virtual networks with each having a
separate control and data plan. It co-exists together on top of one physical network. It can
be managed by individual parties that are potentially confidential to each other. Network
virtualization provides a facility to create and provision virtual networks, logical switches,
routers, firewalls, load balancers, Virtual Private Networks (VPN), and workload security
within days or even weeks.
3. Desktop Virtualization: Desktop virtualization allows the users’ OS to be remotely
stored on a server in the data center. It allows the user to access their desktop virtually,
from any location by a different machine. Users who want specific operating systems
other than Windows Server will need to have a virtual desktop. The main benefits of
desktop virtualization are user mobility, portability, and easy management of software
installation, updates, and patches.
4. Storage Virtualization: Storage virtualization is an array of servers that are managed by
a virtual storage system. The servers aren’t aware of exactly where their data is stored and
instead function more like worker bees in a hive. It makes managing storage from multiple
sources be managed and utilized as a single repository. storage virtualization software
maintains smooth
operations, consistent performance, and a continuous suite of advanced functions despite
changes, breaks down, and differences in the underlying equipment.

5. Server Virtualization: This is a kind of virtualization in which the masking of server


resources takes place. Here, the central server (physical server) is divided into multiple
different virtual servers by changing the identity number, and processors. So, each system
can operate its operating systems in an isolated manner. Where each sub-server knows
the identity of the central server. It causes an increase in performance and reduces the
operating cost by the deployment of main server resources into a sub-server resource. It’s
beneficial in virtual migration, reducing energy consumption, reducing infrastructural costs,
etc.
6. Data Virtualization: This is the kind of virtualization in which the data is collected from
various sources and managed at a single place without knowing more about the technical
information like how data is collected, stored & formatted then arranged that data
logically so that its virtual view can be accessed by its interested people and stakeholders,
and users through the various cloud services remotely. Many big giant companies are
providing their services like Oracle, IBM, At scale, Cdata, etc.

Server Virtualization

Server virtualization is the partitioning of a physical server into smaller virtual servers to
help maximize our server resources. In server virtualization the resources of the server itself
are hidden, or masked, from users, and software is used to divide the physical server into
multiple virtual environments, called virtual or private servers.

Server Virtualization is most important part of Cloud Computing. It is composed of two words,
cloud and computing. Cloud means Internet and computing means to solve problems with help
of computers. Computing is related to CPU & RAM in digital world. Now Consider situation, You
are using Mac OS on your machine but particular application for your project can be operated only
on Windows. You can either buy new machine running windows or create virtual environment in
which windows can be installed and used. Second option is better because of
less cost and easy implementation. This scenario is called Virtualization. In it, virtual CPU, RAM,
NIC and other resources are provided to OS which it needed to run. This resources is virtually
provided and controlled by an application called Hypervisor. The new OS running on virtual
hardware resources is collectively called Virtual Machine (VM).

Figure
– Virtualization on local machine
Now migrate this concept to data centers where lot of servers (machines with fast CPU, large RAM
and enormous storage) are available. Enterprise owning data centre provide resources requested
by customers as per their need. Data centers have all resources and on user request, particular
amount of CPU, RAM, NIC and storage with preferred OS is provided to users. This concept of
virtualization in which services are requested and provided over Internet is
called Server Virtualization.
To implement Server Virtualization, hypervisor is installed on server which manages and
allocates host hardware requirements to each virtual machine. This hypervisor sits over server
hardware and regulates resources of each VM. A user can increase or decrease resources or can
delete entire VM as per his/her need. This servers with VM created on them is called server
virtualization and concept of controlling this VM by users through internet is called Cloud
Computing.

Server virtualization features

Advantages of Server Virtualization:

Each server in server virtualization can be restarted separately without affecting the
operation of other virtual servers.
Server virtualization lowers the cost of hardware by dividing a single server into
several virtual private servers.
One of the major benefits of server virtualization is disaster recovery. In server
virtualization, data may be stored and retrieved from any location and moved rapidly
and simply from one server to another.
It enables users to keep their private information in the data centers.

Disadvantages of Server Virtualization:

The major drawback of server virtualization is that all websites that are hosted by the
server will cease to exist if the server goes offline.
The effectiveness of virtualized environments cannot be measured.
It consumes a significant amount of RAM.
Setting it up and keeping it up are challenging.
Virtualization is not supported for many essential databases and apps.

c
Desktop virtualization is technology that lets users simulate a workstation load to access a desktop
from a connected device. It separates the desktop environment and its applications from the
physical client device used to access it. Desktop virtualization is a key element of digital
workspaces and depends on application virtualization.

Desktop virtualization is a method of simulating a user workstation so it can be accessed from a


remotely connected device. By abstracting the user desktop in this way, organizations can allow
users to work from virtually anywhere with a network connecting, using any desktop laptop, tablet,
or smartphone to access enterprise resources without regard to the device or operating system
employed by the remote user.

Remote desktop virtualization is also a key component of digital workspaces Virtual desktop
workloads run on desktop virtualization servers which typically execute on virtual machines
(VMs) either at on-premises data centers or in the public cloud.

Since the user devices is basically a display, keyboard, and mouse, a lost or stolen device presents
a reduced risk to the organization. All user data and programs exist in the desktop virtualization
server, not on client devices.

How does desktop virtualization work?


Desktop virtualization can be achieved in a variety of ways, but the two most important types are
based on whether the operating system instance is local or remote.

Local desktop virtualization means the operating system runs on a client device
using hardware virtualization, and all processing and workloads occur on local hardware. This type
of desktop virtualization works well when users do not need a continuous network connection and
can meet application computing requirements with local system resources. However, because this
requires processing to be done locally you cannot use local desktop virtualization to share VMs or
resources across a network to thin clients or mobile devices.

Remote desktop virtualization is a common use of virtualization that operates in a server


computing environment. This allows users to run operating systems and applications from a server
inside a datacenter while all user interactions take place on a client device such as a laptop, thin
client, or smartphone. This type of virtualization gives IT more centralized control over
applications and desktops, and can maximize an organization’s investment in hardware
through remote access to shared computing resources.

What are the types of Desktop Virtualization?


The three most popular types of desktop virtualization are Virtual desktop infrastructure (VDI),
Remote desktop services (RDS), and Desktop-as-a-Service (DaaS).

VDI simulates the familiar desktop computing model as virtual desktop sessions that run on VMs either
in on-premises data center or in the cloud. Organizations who adopt this model manage the desktop
virtualization server as they would any other application server on-premises. Since all end- user
computing is moved from users back into the data center, the initial deployment of servers to run VDI
sessions can be a considerable investment, tempered by eliminating the need to constantly refresh end-
user devices.

RDS is often used where a limited number of applications need be virtualized, rather than a full Windows,
Mac, or Linux desktop. In this model applications are streamed to the local device which runs its own
OS. Because only applications are virtualized RDS systems can offer a higher density of users per VM.

DaaS shifts the burden of providing desktop virtualization to service providers, which greatly alleviates
the IT burden in providing virtual desktops. Organizations that wish to move IT expenses from capital
expense to operational expenses will appreciate the predictable monthly costs that DaaS providers
base their business model on.

Desktop Virtualization vs. Server Virtualization

In server virtualization, a server OS and its applications are abstracted into a VM from the underlying
hardware by a hypervisor. Multiple VMs can run on a single server, each with its own server OS,
applications, and all the application dependencies required to execute as if it were running on bare
metal.

Desktop virtualization abstracts client software (OS and applications) from a physical thin client which
connects to applications and data remotely, typically via the internet. This abstraction enables users to
utilize any number of devices to access their virtual desktop. Desktop virtualization can greatly
increase an organization’s need for bandwidth, depending on the number of concurrent users during
peak.

Benefits of desktop virtualization

Virtualizing desktops provides many potential benefits that can vary depending upon the
deployment model you choose.
Simpler administration. Desktop virtualization can make it easier for IT teams to manage
employee computing needs. Your business can maintain a single VM template for employees
within similar roles or functions instead of maintaining individual computers that must be
reconfigured, updated, or patched whenever software changes need to be made. This saves time
and IT resources.
Cost savings. Many virtual desktop solutions allow you to shift more of your IT budget from
capital expenditures to operating expenditures. Because compute-intensive applications require
less processing power when they’re delivered via VMs hosted on a data center server, desktop
virtualization can extend the life of older or less powerful end-user devices. On-premise virtual
desktop solutions may require a significant initial investment in server hardware, hypervisor
software, and other infrastructure, making cloud-based DaaS—wherein you simply pay a regular
usage-based charge—a more attractive option.

Improved productivity. Desktop virtualization makes it easier for employees to access enterprise
computing resources. They can work anytime, anywhere, from any supported device with an
Internet connection.

Support for a broad variety of device types. Virtual desktops can support remote desktop access
from a wide variety of devices, including laptop and desktop computers, thin clients, zero clients,
tablets, and even some mobile phones. You can use virtual desktops to deliver workstation-like
experiences and access to the full desktop anywhere, anytime, regardless of the operating system
native to the end user device.

Stronger security. In desktop virtualization, the desktop image is abstracted and separated from
the physical hardware used to access it, and the VM used to deliver the desktop image can be a
tightly controlled environment managed by the enterprise IT department.

Agility and scalability. It’s quick and easy to deploy new VMs or serve new applications whenever
necessary, and it is just as easy to delete them when they’re no longer needed.

Better end-user experiences. When you implement desktop virtualization, your end users will enjoy
a feature-rich experience without sacrificing functionality they’ve come to rely on, like printing or
access to USB ports

Network Virtualization

Network Virtualization is a process of logically grouping physical networks and making them
operate as single or multiple independent networks called Virtual Networks.
Tools for Network Virtualization :
1. Physical switch OS –
It is where the OS must have the functionality of network virtualization.
2 . Hypervisor –
It is which uses third-party software or built-in networking and the functionalities of network
virtualization.
The basic functionality of the OS is to give the application or the executing process with a simple
set of instructions. System calls that are generated by the OS and executed through the libc
library are comparable to the service primitives given at the interface between the application
and the network through the SAP (Service Access Point).
The hypervisor is used to create a virtual switch and configuring virtual networks on it. The
third-party software is installed onto the hypervisor and it replaces the native networking
functionality of the hypervisor. A hypervisor allows us to have various VMs all working
optimally on a single piece of computer hardware.

Functions of Network Virtualization :


It enables the functional grouping of nodes in a virtual network.
It enables the virtual network to share network resources.
It allows communication between nodes in a virtual network without routing of frames.
It restricts management traffic.
It enforces routing for communication between virtual networks.

Network Virtualization in Virtual Data Center :


1. Physical Network

Physical components: Network adapters, switches, bridges, repeaters, routers and hubs.
Grants connectivity among physical servers running a hypervisor, between physical
servers and storage systems and between physical servers and clients.

2. VM Network
Consists of virtual switches.
Provides connectivity to hypervisor kernel.
Connects to the physical network.
Resides inside the physical server.
Advantages of Network Virtualization :
Improves manageability –
Grouping and regrouping of nodes are eased.
Configuration of VM is allowed from a centralized management workstation
using management software.
Reduces CAPEX –
The requirement to set up separate physical networks for different node groups is reduced.
Improves utilization –
Multiple VMs are enabled to share the same physical network which enhances the
utilization of network resource.
Enhances performance –
Network broadcast is restricted and VM performance is improved.
Enhances security –
Sensitive data is isolated from one VM to another VM.
Access to nodes is restricted in a VM from another VM.
Disadvantages of Network Virtualization :
It needs to manage IT in the abstract.
It needs to coexist with physical devices in a cloud-integrated hybrid environment.
Increased complexity.
Upfront cost.
Possible learning curve.
Examples of Network Virtualization :
Virtual LAN (VLAN) –
The performance and speed of busy networks can be improved by VLAN.
VLAN can simplify additions or any changes to the network.

Network Overlays –
A framework is provided by an encapsulation protocol called VXLAN for
overlaying virtualized layer 2 networks over layer 3 networks.
The Generic Network Virtualization Encapsulation protocol (GENEVE) provides a new
way to encapsulation designed to provide control-plane independence between the
endpoints of the tunnel.

Network Virtualization Platform: VMware NSX –


VMware NSX Data Center transports the components of networking and security
such as switching, firewalling and routing that are defined and consumed in
software.
It transports the operational model of a virtual machine (VM) for the network.

Applications of Network Virtualization :


Network virtualization may be used in the development of application testing to mimic
real- world hardware and system software.
It helps us to integrate several physical networks into a single network or separate
single physical networks into multiple analytical networks.
In the field of application performance engineering, network virtualization allows the
simulation of connections between applications, services, dependencies, and
end-users for software testing.
It helps us to deploy applications in a quicker time frame, thereby supporting a faster
go-to- market.
Network virtualization helps the software testing teams to derive actual results with
expected instances and congestion issues in a networked environment.

STORAGE VIRTUALIZATION

Storage virtualization is the pooling of physical storage from multiple storage devices into what
appears to be a single storage device -- or pool of available storage capacity. A central console
manages the storage.

The technology relies on software to identify available storage capacity from physical devices and
to then aggregate that capacity as a pool of storage that can be used by traditional architecture
servers or in a virtual environment by virtual machines (VMs).
The virtual storage software intercepts input/output (I/O) requests from physical or virtual
machines and sends those requests to the appropriate physical location of the storage devices that
are part of the overall pool of storage in the virtualized environment. To the user, the various
storage resources that make up the pool are unseen, so the virtual storage appears like a single
physical drive, share or logical unit number (LUN) that can accept standard reads and writes.

A basic form of storage virtualization is represented by a software virtualization layer between the
hardware of a storage resource and a host -- a PC, a server or any device accessing the storage --
that makes it possible for operating systems (OSes) and applications to access and use the storage.

Even a redundant array of independent disks, or RAID, array can sometimes be considered a type
of storage virtualization. Multiple physical drives in the array are presented to the user as a single
storage device that, in the background, stripes and replicates data to multiple disks to improve I/O
performance and to protect data in case a single drive fails.

Storage virtualization is the


technique of abstracting physical storage resources like SSD's and HDD's to create virtual storage
resources. Its software has the ability to pool and abstract physical storage resources, and present
them as a logical storage resources, such as virtual volumes, virtual disk files, and virtual storage
systems.
It is the concept of virtualizing enterprise storage at the disk level, creating a dynamic pool of
shared storage resources available to all servers, all the time.
With read/write operations spread across all drives, multiple requests can be processed in parallel,
boosting system performance. This allows users to create hundreds of virtual volumes in seconds
to support any virtual server platform. It is a consolidation of sorts for data and files and stored in
a centralized system that can be accessed from more than one positions.
Types of storage virtualization: Block vs. file
There are two basic methods of virtualizing storage: file-based or block-based. File-based storage
virtualization is a specific use, applied to network-attached storage (NAS) systems.

Block-based or block access storage -- storage resources typically accessed via a Fibre Channel
(FC) or Internet Small Computer System Interface (iSCSI) storage area network (SAN) -- is more
frequently virtualized than file-based storage systems. Block-based systems abstract the logical
storage, such as a drive partition, from the actual physical memory blocks in a storage device, such
as a hard disk drive (HDD) or solid-state memory device. Because it operates in a similar fashion to
the native drive software, there's less overhead for read and write processes, so block storage
systems will perform better than file-based systems.

The block-based operation enables the virtualization management software to collect the capacity
of the available blocks of storage space across all virtualized arrays. It pools them into a shared
resource to be assigned to any number of VMs, bare-metal servers or containers. Storage
virtualization is particularly beneficial for block storage.

Unlike NAS systems, managing SANs can be a time-consuming process. Consolidating a number of
block storage systems under a single management interface that often shields users from the
tedious steps of LUN configuration, for example, can be a significant timesaver.

Storage virtualization is becoming more and more important in various other forms:

File servers: The operating system writes the data to a remote location with no need to understand
how to write to the physical media.

WAN Accelerators: Instead of sending multiple copies of


the same data over the WAN environment, WAN accelerators will cache the data locally and
present the re-requested blocks at LAN speed, while not impacting the WAN performance.

SAN and NAS: Storage is presented over the Ethernet network of the operating system. NAS
presents the storage as file operations (like NFS). SAN technologies present the storage as block
level storage (like Fibre Channel). SAN technologies receive the operating instructions only when if
the storage was a locally attached device.

Storage Tiering: Utilizing the storage pool concept as a stepping stone, storage tiering analyze the
most commonly used data and places it on the highest performing storage pool. The lowest one
used data is placed on the weakest performing storage pool.

This operation is done automatically without any interruption of service to the data consumer.

Advantages of Storage Virtualization

1. Data is stored in the more convenient locations away from the specific host. In the
case of a host failure, the data is not compromised necessarily.
2. The storage devices can perform advanced functions like replication,
reduplication, and disaster recovery functionality.
3. By doing abstraction of the storage level, IT operations become more flexible in
how storage is provided, partitioned, and protected.

System-level of Operating Virtualization


With the help of OS virtualization nothing is pre-installed or permanently loaded on the local device
and no-hard disk is needed. Everything runs from the network using a kind of virtual disk. This
virtual disk is actually a disk image file stored on a remote server, SAN (Storage Area Network) or
NAS (Non-volatile Attached Storage). The client will be connected by the network to this virtual disk
and will boot with the Operating System installed on the virtual disk.

How does OS Virtualization works?

Components needed for using OS Virtualization in the infrastructure are given below:

The first component is the OS Virtualization server. This server is the center point in the OS
Virtualization infrastructure. The server manages the streaming of the information on the virtual
disks for the client and also determines which client will be connected to which virtual disk (using a
database, this information is stored). Also the server can host the storage for the virtual disk locally
or the server is connected to the virtual disks via a SAN (Storage Area Network). In high availability
environments there can be more OS Virtualization servers to create no redundancy and load
balancing. The server also ensures that the client will be unique within the infrastructure.

Secondly, there is a client which will contact the server to get connected to the virtual disk and asks
for components stored on the virtual disk for running the operating system.

The available supporting components are database for storing the configuration and settings for
the server, a streaming service for the virtual disk content, a (optional) TFTP service and a (also
optional) PXE boot service for connecting the client to the OS Virtualization servers.

As it is already mentioned that the virtual disk contains an image of a physical disk from the
system that will reflect to the configuration and the settings of those systems which will be using
the virtual disk. When the virtual disk is created then that disk needs to be assigned to the client
that will be using this disk for starting. The connection between the client and the disk is made
through the administrative tool and saved within the database. When a client has a assigned disk,
the machine can be started with the virtual disk using the following process as displayed in the
below figure:
1) Connecting to the OS Virtualization server:

First we start the machine and set up the connection with the OS Virtualization server. Most of the
products offer several possible methods to connect with the server. One of the most popular and
used methods is using a PXE service, but also a boot strap is used a lot (because of the
disadvantages of the PXE service). Although each method initializes the network interface card
(NIC), receiving a (DHCP-based) IP address and a connection to the server.

2) Connecting the Virtual Disk:

When the connection is established between the client and the server, the server will look into its
database for checking the client is known or unknown and which virtual disk is assigned to the
client. When more than one virtual disk are connected then a boot menu will be displayed on the
client side. If only one disk is assigned, that disk will be connected to the client which is mentioned
in step number 3.

3) VDisk connected to the client:

After the desired virtual disk is selected by the client, that virtual disk is connected through the OS
Virtualization server . At the back-end, the OS Virtualization server makes sure that the client will be
unique (for example computer name and identifier) within the infrastructure.

4) OS is "streamed" to the client:

As soon the disk is connected the server starts streaming the content of the virtual disk. The
software knows which parts are necessary for starting the operating system smoothly, so that
these parts are streamed first. The information streamed in the system should be stored
somewhere (i.e. cached). Most products offer several ways to cache that information. For
examples on the client hard disk or on the disk of the OS Virtualization server.
5) Additional Streaming:

After that the first part is streamed then the operating system will start to run as expected.
Additional virtual disk data will be streamed when required for running or starting a function called
by the user (for example starting an application available within the virtual disk).

APPLICATION VIRTUALIZATION

The main goal of application virtualization is to ensure that cloud users have remote access to
applications from a server. The server contains all the information and features needed for the
application to run and can be accessed over the internet. As a result, you do not need to install the
application on your native device to gain access. Application virtualization offers end-users the
flexibility to access two different versions of one application through a hosted application or packaged
software.

If we need to use a computer application, we first install it on our device and then launch it. But
what if we never had to install that application, or for that matter, any application again? What if we
could simply access applications on the cloud as and when required that would work exactly as
their local counterparts? This idea is what application virtualization proposes.

Application virtualization refers to the process of deploying a computer application over a network
(the cloud). The deployed application is installed locally on a server, and when a user requests it, an
instance of the application is displayed to them. The user can then engage with that application as
if it was installed on their system.

Application virtualization is a powerful concept that takes away most of the drawbacks of
installing applications locally.

Using this, users can access a plethora of applications in real-time without having to allocate too
much storage to all of them.

Users can also run applications not supported by their devices’ operating systems.
And let us not forget how it eliminates the need for managing and updating several applications
across different operating systems for IT teams.

How does application virtualization work?


The most common way to virtualize applications is the server-based approach. This means an IT
administrator implements remote applications on a server inside an organization’s datacenter or
via a hosting service. The IT admin then uses application virtualization software to deliver the
applications to a user’s desktop or other connected device. The user can then access and use the
application as though it were locally installed on their machine, and the user’s actions are
conveyed back to the server to be executed.
Application virtualization is an important part of digital workspaces and desktop virtualization.

Application virtualization software


The top benefits of virtualized applications are:
Simplified management
Application virtualization makes it much easier for IT to manage and maintain applications across an
organization. Rather than manually installing applications to every user’s machine, app virtualization
lets IT admins install an app once on a central server and then deploy the app as needed on user
devices. In addition to saving installation time, this also makes it simpler to update or patch
applications because IT only has to do so on a single server.
Scalability
Application virtualization lets IT admins deploy virtual applications to all kinds of connected devices,
regardless of those devices’ operating systems or storage space. This allows thin client provisioning,
where users access an application on a low-cost machine while centralized servers handle all the
computing power necessary to run that application. As a result, the organization spends less on
computing hardware because employees only require basic machines to access the apps they need for
work. Application virtualization solutions also allow users to access applications that normally would
not work on their machines’ operating system, because the app is actually running on the centralized
server. This is commonly used to virtually run a Windows application on a Linux operating system.
Security
Application virtualization software gives IT admins central control over which users can access what
applications. If a user’s app permissions within an organization change, the IT admin can simply
remove that user’s access to an application. Without app virtualization, the IT admin would have to
physically uninstall the app from the user’s device. This central control over app access is especially
important if a user’s device is lost or stolen, because the IT admin can revoke remote access to
sensitive data without having to track down the missing device.

A physi cal cl uste r is a c ol l ect i on of se rv ers ( physi cal mac hine s)


i nt erco nne ct e d by a p hysi cal net wo rk such as a LAN. Virt ual cl ust ers
are bui lt wi th VMs i nst al l ed at d i stri b ute d serve rs from one or more
physi cal cl ust ers.
As with traditional physical servers, virtual machines (VMs) can also be clustered. A
VM cluster starts with two or more physical servers;
We'll call them Server A and Server B.
In simple deployments if Server A fails, its workloads restart on Server B
The VMs in a v irt ual cl uste r are i nt erc onne c te d lo gi cal l y by a v irt ual
net wo rk across se veral p hysic al ne t wo rks.
The b el ow fi gure i l l ustrat es the c onc ep ts of vi rt ual cl ust ers and
physi cal cl ust ers.

Each v irt ual c lust er is forme d wit h p hysic al mac hi nes or a VM host ed by
mul t i pl e physi c al c lust e rs.
The v irtual cl uste r bo undari es are shown as di sti nc t b oundari es.

Prov isioni ng of VMs to a v irtual clu ster

The p ro v i sio ni ng of VMs to a vi rt ual cl ust er is done d ynami cal l y to


have the fol l owi ng p ro p ert i es:
o The vi rt ual c lust er nodes can be e it her physi cal or v i rt ual
mac hi nes. Mul ti pl e VMs running wit h d if ferent OSe s can be
de pl oye d on the same physi cal node.
o A VM runs wit h a guest OS, whi ch is o ft en d i ffere nt from the
ho st OS, that manage s t he re source s in the p hysi cal mac hi ne,
where the VM is imp l ement e d.
o The p urp ose of usi ng VMs is to c on sol i dat e mul t ip l e
func t io nal i t ie s on the same se rv er. Thi s wi ll great ly enhanc e
server ut il i zat io n and app l ic at io n f l exib il i t y.
o VMs can be co l oni ze d ( re pl i cat ed ) in mul ti p le se rv ers for the
purpose of pro mo ti ng di st ri but e d paral l el i sm, faul t t ol e ranc e,
and di sast er re co ve ry.
o The size ( numb er of nod es) of a vi rt ual c lust er can grow or shri nk
dyn ami c al l y, si mi l ar to the way an ov erlay net wo rk varie s in
size in a pe er- to- peer (P 2 P) ne two rk.
o The fai lure of any physi c al nodes may di sabl e so me VMs
i nstal l ed on the fai li ng node s. But the fail ure of VMs wi ll not pull
down the host syst em.

Si nce syst em vi rt ual i zat i o n has been wid el y used, i t is ne ce ssary to


o eff ec ti v el y manage VMs runni ng on a mass of physi cal
co mp uti ng nod es ( also call e d vi rt ual cl ust ers) and
o buil d a high- p erfo rmance vi rt ual i ze d c omput i ng e nvi ro nment .

This invo lv es
o vi rt ual c lust er dep lo yment,
o mo nit o ri ng and manageme nt ov er l arg e- scal e cl usters,
o re source sc he duli ng
o load balanci ng
o server consol i dat io n
o faul t to le rance

The bel ow f igure shows the conc ept of a virtual cl ust er based on
app li c ati on p arti t i oni ng or c usto mi zat i on .

• Since large number of VM images might be present, the most important thing is to
determine how to store those images in the system efficiently
• Apart from it there are common installations for most users or applications, such as OS
or user- level programming libraries.

• These software packages can be preinstalled as templates (called template VMs).

Resource management

The term resource management refers to the operations used to control how capabilities
provided by Cloud resources and services are made available to other entities, whether users,
applications, or services.

Types of Resources
Physical Resource: Computer, disk, database, network, etc.
Logical Resource: Execution, monitoring, and application to communicate

Virtual Cluster features

• HA: virtual machines can be restarted on another hosts if the host where the
virtual machine running fails.

• DRS (Distributed Resource Scheduler): virtual machines can be load balanced so that
none of the hosts is too overloaded or too much empty in the cluster.

• Live migration: of virtual machines from one host to other.

• Three c ri t i cal desi gn i ssue s of vi rt ual c lusters:

o l ive mi grat i on of VMs


o me mory and fi le mig rati ons
o Dynami c d ep lo yme nt of v irtual cl ust ers.

Deployment

• There are four steps to deploy a group of VMs onto a target cluster: – preparing the disk
image, – configuring the VMs, – choosing the destination nodes, and – executing the VM
deployment command on every host.

The syste m shoul d hav e the cap abi l it y of fast dep loyment.
He re, de pl o yme nt means t wo things:
o to construct and dist ri bute software stacks (OS, li brari es,
app l i cat i on s) to a p hysi cal nod e insi de c lust ers as fast as
po ssib l e,
o to qui ckl y swi tc h runt i me e nv i ro nment s from one user’ s
vi rt ual c lust er to anot her user’ s v i rt ual cl ust er.
If one user f ini shes using his syst e m, the c orres po ndi ng vi rtual cl uste r
should shut down or suspe nd q ui ckl y to save the re source s to run
ot he r VMs for ot he r use rs.

Live VM Migration Steps and Performance Effects

• When a VM fails, its role could be replaced by another VM on a different node, as long as
they both run with the same guest OS, a VM must stop playing its role if its residing host node
[Link] problem can be mitigated with VM live migration . The migration copies the VM
state file from the storage area to the host machine.

• There are four ways to manage a virtual cluster First way is to use a guest-based manager,
by which the cluster manager resides on a guest system. In this case, multiple VMs form a
virtual cluster
• Example: openMosix is an open source Linux cluster running different guest systems on
top of the Xen hypervisor
• Second way is we can build a cluster manager on the host systems. The
host-based manager supervises the guest systems and can restart the guest system
on another physical machine.
• Example. A good example is the VMware HA system that can restart a guest system
after failure.
•Third way to manage a virtual cluster is to use an independent cluster manager on both the host and
guest systems. This will make infrastructure management more complex
• Finally can use an integrated cluster Manager on the guest and host systems. This
means the manager must be designed to distinguish between virtualized resources and
physical resources. Various cluster management schemes can be greatly enhanced when
VM life migration is enabled with minimal overhead.

• A VM can be in one of the following four states.


– An inactive state is defined by the virtualization platform, under which the VM is not enabled.
– An active state refers to a VM that has been instantiated at the virtualization
platform to perform a real task.
– A paused state corresponds to a VM that has been instantiated but disabled to
process a task or paused in a waiting state.
– A VM enters the suspended state if its machine file and virtual resources are
stored back to the disk

Live migration process of a VM from one host to Another


When one syste m mig rate s to ano ther physi cal node, we sho uld
co nsid er the fol l owi ng i ssues.
o Me mory Mi grat ion
o Fi le Syste m Migrati on
o Ne t wo rk Mi grat i on
o Liv e Mi grati o n of VM U si ng Xen

Introduc ti on to Doc ker

Docker is a set of platforms as a service (PaaS) product that use the Operating system level
virtualization to deliver software in packages called containers. Containers are isolated from one
another and bundle their own software, libraries, and configuration files; they can communicate
with each other through well-defined channels. All containers are run by a single operating system
kernel and therefore use fewer resources than a virtual machine.
Difference between Docker Containers and Virtual Machines

Docker Containers contain binaries, libraries, and configuration files along


with the application itself.
They don’t contain a guest OS for each container and rely on the underlying
OS kernel, which makes the containers lightweight.
Containers share resources with other containers in the same host OS and
provide OS-level process isolation.

Virtual Machines (VMs) run on Hypervisors, which allow multiple Virtual


Machines to run on a single machine along with its own operating system.
Each VM has its own copy of an operating system along with the application
and necessary binaries, which makes it significantly larger and it requires more
resources.
They provide Hardware-level process isolation and are slow to boot.
Docker Components

It is a file, comprised of multiple layers, used to execute code in a Docker container.


They are a set of instructions used to create docker containers.

It is a runtime instance of an image.


Allows developers to package applications with all parts needed such as
libraries and other dependencies.

It is a text document that contains necessary commands which on execution


helps assemble a Docker Image.
Docker image is created using a Docker file.

The software that hosts the containers is named Docker Engine.


Docker Engine is a client-server-based application
The docker engine has 3 main components:
Server: It is responsible for creating and managing Docker images,
containers, networks, and volumes on the Docker. It is referred to as a
daemon process.
REST API: It specifies how the applications can interact with the
Server and instructs it what to do.
Client: The Client is a docker command-line interface (CLI), that
allows us to interact with Docker using the docker commands.

Docker Hub is the official online repository where you can find other Docker
Images that are available for use.
It makes it easy to find, manage, and share container images with others.

Docker Container

Docker container is a running instance of an image. You can use Command Line Interface (CLI)
commands to run, start, stop, move, or delete a container. You can also provide configuration for
the network and environment variables. Docker container is an isolated and secure application
platform, but it can share and access to resources running in a different host or container.

An image is a read-only template with instructions for creating a Docker container. A docker image
is described in text file called a Dockerfile, which has a simple, well-defined syntax. An image does
not have states and never changes. Docker Engine provides the core Docker technology that
enables images and containers.
You can understand container and image with the help of the following command.

1. $ docker run hello-world


2. 1) docker: It is docker engine and used to run docker program. It tells
to the operating system that you are running docker program.
3. 2) run: This subcommand is used to create and run a docker container.
4. 3) hello-world: It is a name of an image. You need to specify the name of
an image which is to load into the container.

You might also like