# Introduction to Information Technology/Virtualization
## Introduction

Virtualization is the creation of a simulated version of something else. Computers can create virtual networks, storage, disk drives, operating systems, and other forms of hardware. Physical machines are referred to as "Host" machines while simulated machines are referred to as virtual machines. While also providing physical services, virtual hardware gives the user extended services by providing more functionality than was first installed on their device. Virtual machines usually have more configuration properties than actual hardware machines, which is a reason why many have developed more virtual devices to extend the range of their current computer.

## Virtualization

The word virtual means something that does not physically exist, or something that cannot be physically touched. In IT, it's safe to say the same about virtualization. It is the simulated part of a computing device that cannot be touched. Examples are the operating system, storage, disk drives, etc.

## Reasons for Virtualization

In networking, virtualization is highly useful. We work with tools like routers, switches, servers etc. In the real world, having access to all these tools could be expensive but with the aid of virtualization we get to work with these tools virtually. In other words, the major reason for virtualization is that it is cost effective. It also comes with benefits like expansion. When doing a configuration say for example multiple routers connected to a server on a network, we can virtually setup another topology and do the necessary configurations we want to.

## Hardware Virtualization

This type of virtualization creates a simulation of a real computer with a working OS(operating system). The host machine is the actual computer that runs the virtual machine and the virtual machine is the guest machine. The host machine can allow a guest machine to run software regardless of the hosts hardware resources, such as the guest machine can run as a Linux or Unix system even if the host machine runs as a Windows System. There are different types of virtualization: Full Virtualization, Partial Virtualization, and Para-virtualization.

### Full Virtualization

This is the simulation of almost all the hardware required for the certain software that one would want. This usually contains a guest operating system to run said programs, if they require.

### Partial Virtualization

This is the simulation of only some of the hardware requirements for software. Any software that needed the hardware that wasn't simulated would need to be modified to be usable in the simulated environment.

### Para-virtualization

Paravirtualization is another virtualization technique that presents a software interface to virtual machines that is similar, but not completely the same as that of underlying hardware. It is used to lessen the guest's total time spent performing operations that would be increasingly difficult to run in a virtual environment compared to a non-virtualized environment. Paravirtualization have what you would call "hooks", allowing the guest and host to request and execute different tasks and information, instead of being executed in a virtual domain where performance is significantly worse.

## Server Virtualization

Server virtualization refers to partitioning a physical server into one or more virtual server machines. Most servers tend to only use a small part of their computing processing power. When using server virtualization, it maximizes the computing usage of a server and a single server is able to do the computing power of many servers. In a data center, one server could be running several virtual operating systems simultaneously, which in turn results in reducing operational cost and space needed to place physical servers.

## Network Virtualization

Network virtualization consists of the rebuilt of a physical network in software. Software and services are installed to make channels of which are securely separate from each other and can be assigned to particular devices. This in return allows for management in the sharing of applications, storage and computing cycles. Therefore, no matter how the physical components are set up, the servers or assigned devices on the network become a pool of resources for anyone to access. Like most, this method in virtualization aids in the main point to increase utilization in hardware.

## Snapshots

Snapshots are states in a virtual device that allows one to restore any changes that may have been done at that exact point where the snapshot has been implemented. It is a good backup tool if one is doing any changes to the virtual device and has made an error of some sort.

## Reasons for Virtualization

One of the main reasons for virtualization is to cut costs on the amount of servers that would be on a network. Even though you cut the costs on hardware doesn't mean that you lose anything else. You still have your operating system used on the virtual machine instead of being run on a physical server. This reduces costs, as it conserves less energy to run on a virtual machine than it does to run on a physical server. It also has the capability of moving from one machine to another which saves costs as well.

## Benefits
### Expansion

Virtualization’s biggest advantage is its ability to expand. This means that if an application takes up too much space on a server, another virtual environment can be created on another server. Server virtualization also decreases the amount of servers needed to run all your applications. Before each app is assigned its own server, which takes up more physical space and energy, but virtualization allows more than one application to run on a server instead of having several different ones.

### Transportation

Another advantage of virtualization is its ability to be transported from one location to another. A virtual machine can be copied in its exact current state, called a snapshot. These snapshots preserve every single component of a virtual machine, allowing it to either be used as a perfect backup or transferred to a different location. This process, called Migration, is performed by stopping a VM, creating a snapshot(perfect copy), moving the snapshot to another VM, then resuming normal operations. Most often, this is used to move the operations of one server to another while the physical server undergoes maintenance or replacement.

### Redundancy

Another advantage of virtualization is its ability for transportation from one location to another. A virtual machine can be copied in its exact current state, called a snapshot. These snapshots preserve every single component of a virtual machine, allowing it as a perfect backup, or transferred to a different location. This process, called Migration, is performed by stopping a VM, creating a snapshot(perfect copy), moving the snapshot to another VM, then resuming normal operations. Most often used to move the operations of one server to another, while the physical server undergoes maintenance or replacement.

### Security

The fact that virtualization allows for full control of its environment means that it can be made much more secure. If any errors occur in the virtualization that could possibly harm the computer, all damage would be contained in the virtualization. This security is useful for testing programs on multiple varieties of virtual machines without actually placing the host system in jeopardy of failure or damage.

## Risks/Drawbacks

While virtualization is an efficient and cost saving technique for businesses to use, it does have its risks and drawbacks. Security is one of the largest threats, due to how easy it is for someone to create a virtual machine of their own. There are ways to avoid this, but every system has its flaws. Running multiple machines can also be difficult to patch and keep track of. Much more so than the hardware which they are replacing. A lack of ability to control what is happening on these machines, and where customer data is stored and handled presents more risks for these machines. However, with a well-developed and maintained system, virtualization can still save money and increase efficiency.

## Operating Systems

An operating system is a system that maintains a computer's software and hardware and allows the computer to do the simple task for its programs. All of these programs have to use an operating system except for firmware. You can find an operating system on every computing device. These devices include computers, mobile phones, game consoles, tablets, and other computing devices. There are four main operating systems companies that control most of the market today. These companies are Microsoft, Google, Apple, and Linux. Microsoft dominates the desktop while Google dominates the smartphones and Linux dominate supercomputer operating systems. Apple follows right behind Microsoft and Google for operating systems in desktops and smartphones.

## Host Operating System

Host Operating System (OS) is the primary and physical operating system that is installed in the computer. It interacts with the hypervisor or Virtual Machine Monitor (VMM) primarily manages multiple Virtual Machines (VM). A host operating system is used in a virtualization process. First, a host operating system controls and interacts with an installed Type 2 hypervisor or called Virtual Machine Monitor (VMM). Then, a Type 2 hypervisor interacts with installed multiple operating systems also refers to guest operating systems. In a host operating system, multiple guest operating systems use shared hardware applications and resources. Also, they do not know the existence of a host OS but are managed by Virtual Machines.

## Guest Operating System

A guest operating system is the software installed on a virtual machine or partitioned disk that describes an operating system different from the host operating system, it can also provide an alternative OS for a device. For example, the host operating system could run Windows, while the guest OS runs Linux. A guest OS must be present in order for a virtual machine to exist. In addition, the guest operating system on a virtual machine may be different from the host OS, but a guest OS on a partitioned disk has to be the same as the host operating system.