Virtual Machines & Virtualization - your friendly guide!

Virtual Machines & Virtualization - your friendly guide!

ยท

8 min read

Virtualization is like making a fake computer or device using special software. It's a way to create a pretend version of a computer, device, or even a whole network. And guess what? These pretend versions are called virtual machines (VMs)!

Now, here's the cool part. These virtual machines actually run on real computers. Imagine having one computer, but inside it, you can run multiple operating systems at the same time. So, you could have Windows and Linux chilling together on the same computer, doing their own thing without bothering each other. It's like having separate rooms for different people, but all under one roof!

This whole virtual machine thing is super popular in cloud computing and data centers. In these big computer places, they want to use their hardware efficiently, so they run lots of virtual machines on a single computer. That way, they can have different applications and services running separately, without causing any trouble for each other.

Virtual machines also come in handy for testing and development. Instead of messing around with your real computer and potentially messing things up, you can create a virtual machine to try out new stuff. If something goes wrong, no worries! You can just reset the virtual machine, and it's back to its original state, like pressing the undo button.

So, virtualization is like creating a make-believe world inside a real computer. It helps us make the most of our hardware, keeps things organized and separate, and allows us to experiment without fear. How cool is that?

Let's dive into some more virtualization goodness! So, we have this special type called KVM, which stands for Kernel-based Virtual Machine. What it does is pretty neat: it lets a single physical server play host to multiple virtual machines. It's like having a super versatile server that can do the work of many! But hold on, there's more! Other worth mentioning virtualization includes:

  1. Hardware-level virtualization

  2. Operating system-level virtualization

  3. Application virtualization

Virtualization Technologies

Let's now talk about the two main types of virtualization technologies. It's like getting to know the superheroes of the virtualization world!

  1. Full virtualization: This technology is all about emulating the whole shebang of a hardware system. It creates a pretend version of everything, from the CPU (the brain of the computer) to the memory and other hardware parts. The cool thing is that the guest operating system (the one running inside the virtual machine) doesn't need any changes. It can just do its thing on the virtual hardware, like it's running on a real computer. Some popular examples of full virtualization solutions are VMware Workstation and Oracle VM VirtualBox.

  2. Paravirtualization: Now, this technology takes a slightly different approach. It provides a special software interface that is similar to the actual hardware, but not the same. It's like giving the guest operating system a secret code language to communicate with the virtualization software. But here's the catch: the guest operating system needs to be modified to understand and speak this special code language. It's like giving the operating system a cool upgrade. The great thing about paravirtualization is that it often offers better performance compared to full virtualization. An example of a paravirtualization solution is the Xen hypervisor.

Hypervisors

A hypervisor is the software layer responsible for managing and controlling VMs. The cool software that rules over the virtual machine world. Think of them as the bosses of the virtual machines! There are two types of hypervisors:

  1. Type 1 (bare-metal) hypervisors: Runs directly on the host's hardware and provides better performance and security than Type 2 hypervisors.

  2. Type 2 (hosted) hypervisors: Runs as an application on the host operating system, is easier to install and use, but provides worse performance and security than Type 1 hypervisors. VMware Workstation, Oracle VM VirtualBox, and Parallels Desktop are a few examples.

Networking in Virtual Environments

In a virtual environment, networking involves configuring communication between VMs on the same host, VMs accessing external services, and external services accessing VMs. There are various networking choices for virtual machines, including:

NAT (Network Address Translation)

Using NAT, VMs can talk to the outside world through the host computer. It's like having a mediator that helps them communicate. External services can access the VMs too, but it can be tricky for guest VMs to be reached from outside the virtual environment without using some advanced techniques like port forwarding or IP masquerading.

Bridge

In a bridged network setup, we extend the local network to include the VMs. The virtual interface of the VM connects to the outside local network through the physical interface of the host computer. A DHCP server in the local network assigns an IP address to the VM, just like giving them a spot on the local network. This means any device on the network can easily reach and communicate with the VMs.

Host Only

In a host-only configuration, VMs are not accessible to outside devices. However, they can still access the internet by using port forwarding, which is like creating a special passage from the host computer to the VMs

Creating Virtual Machines

Creating a VM typically involves the following steps:

  1. Install a hypervisor on your computer.

  2. Create a new virtual machine using the hypervisor.

  3. Assign resources like CPU, memory, disk space, and network to the VM.

  4. Install an operating system on the VM.

  5. Install any required drivers or tools for the operating system to work smoothly with the hypervisor.

Managing Virtual Machines

Hypervisors come with handy tools and features to manage your virtual machines, such as:

  • Starting, stopping, and pausing VMs: You can easily control when your VMs are up and running or when they need a break.

  • Taking snapshots: This cool feature captures the current state of a VM, so you can go back to that exact point if something goes wrong. It's like taking a quick picture as a backup!

  • Cloning VMs: You can make exact copies of your VMs, which is great for testing or creating multiple instances of the same setup!

  • Migrating VMs: This nifty feature allows you to move your VMs from one host system to another, without interrupting their operation. It's like teleporting your VMs to a different computer!

  • Configuring network and storage: You have the power to set up the network settings and storage options for your VMs. It's like customizing their connections and storage spaces.

  • Monitoring performance: You can keep an eye on how your VMs are doing, checking their performance and resource usage. It's like having a virtual health tracker for your machines!

Benefits of Virtual Machines

Virtual machines offer several benefits, such as:

  • Isolation: Each virtual machine operates independently, ensuring that they are isolated from one another and from the host system. This helps keep things secure and prevents conflicts between different applications.

  • Efficient resource utilization: By running multiple operating systems and applications on a single physical host, virtual machines allow you to make efficient use of your hardware resources. It's like getting more out of your computer's power!

  • Flexibility: Virtual machines can be easily moved, copied, and backed up. This provides flexibility and makes disaster recovery simpler. It's like having the freedom to quickly relocate or duplicate your digital creations.

  • Scalability: With virtual machines, you can swiftly scale your computing resources up or down as needed. Whether you need more power or want to decommission unused VMs, it's like having the ability to adjust your virtual world to match your needs.

    These benefits make virtual machines a powerful tool for enhancing security, optimizing resource usage, providing flexibility, and adapting to changing demands. It's like having a versatile toolbox for managing your digital environments!

VirtualBox

VirtualBox is a software that lets you create and run virtual machines (VMs) on your computer. To run a virtual machine (VM) using VirtualBox from the terminal, follow these steps:

  1. Install the VirtualBox Extension Pack: Open the terminal and run the command:
wget http://download.virtualbox.org/virtualbox/4.2.36/Oracle_VM_VirtualBox_Extension_Pack-4.2.36-104064a.vbox-extpack

sudo VBoxManage extpack install ./Oracle_VM_VirtualBox_Extension_Pack-4.2.36-104064a.vbox-extpack
  1. Create a VM: In the terminal, use this command to create a VM with a specific name (e.g., "fykas_vm"):
VBoxManage createvm --name "fykas_vm" --register
  1. Configure the VM: Set up the VM's desired settings, like memory allocation, network connection, and the operating system type. For example:
VBoxManage modifyvm "fykas_vm" --memory 1024 --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 eth0 --ostype Ubuntu
  1. Assign disk space: Allocate some disk space to the VM using this command:
VBoxManage createvdi --filename ~/VirtualBox VMs/fykas_vm/fykas_vm.vdi --size 15000
  1. Load the operating system: Attach the ISO file containing the operating system you want to install to the VM:
VBoxManage storagectl "fykas_vm" --name "IDE Controller" --add ide

VBoxManage storageattach "fykas_vm" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium ~/VirtualBox\ VMs/fykas_vm/fykas_vm.vdi

VBoxManage storageattach "fykas_vm" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium ~/Downloads/ubuntu-24.02.1.iso
  1. Start the VM: Finally, to start the VM, use the command:
VBoxHeadless --startvm "fykas_vm" &

VMware

VMware is another virtualization software for creating and running virtual machines (VMs) on your computer. To find the IP address of a VM in VMware, you will need to follow these commands:

For NAT Networking

cat /etc/vmware/vmnet8/dhcpd/dhcpd.leases

For Bridged Networking

cat path/to/example_vm.vmx

Once you have the MAC address (e.g., 01:1a:bb:32:12:99), you can use it to find the IP address of the VM:

KVM

KVM (Kernel-based Virtual Machine) is a free and open-source virtualization software that lets you create and run virtual machines (VMs) on your computer. To find the IP address of a VM in KVM, follow these steps:

For NAT Networking

virsh net-dhcp-leases default

For Bridged Networking

dhcpdump -i eth0 -h ^00:0c:29:bd:81:01

(Replace 00:0c:29:bd:81:01 with the actual MAC address of the VM)

Greetings

Thank you for joining me on this virtual adventure. Together, we've uncovered the wonders of virtualization and the magic of virtual machines. Stay curious, keep exploring, and remember, the virtual world is your playground. Until we meet again, have a fantastic day and happy virtualizing! ๐Ÿš€

I'd love a Follow for Fyka ๐Ÿ’Œ

ย