Virtualization allows hardware to be virtualized so that multiple operating systems can run on a single physical machine. It works by inserting a virtualization layer that provides a virtual operating system for each guest operating system. This document discusses full virtualization, para virtualization, and partial virtualization approaches. It also covers configuring KVM and libvirt for Linux virtualization and managing VMs, networks, storage, and migration.