Virtualization

  • Use Virtualization for cloning server images (High Availability)
  • Offsite back up for security
  • Different Dev/ test environment in same machine ..so on

Types

Type 1

bare metal hypervisors (Xen, vmware, Hyper-V..etc). architecture

Type 2

hosted/ system process hypervisors (VirtualBox, QEMU) architecture

Para virtual

  • like during boot time all OS are available (Type 1 libs are used) PV

HVM

FOr better performance than type 1, an hardware emulation layer is used

HVM

Kernel based

Run multiple o.s dependent on same kernel version. (KVM, LXD)

HVM

Virtualization Platforms

  • Xen (libvirt)

    • it's popular, mostly used for bare metal virtualization
    • also AWS cloud uses & contributes to it
    • good for different OS (Windows/ Linux)
    • paid alternative is vSphere/ESXi (vmware), Microsoft Hyper-V
  • KVM (libvirt)

    • kernel dependent virtualization
    • Different Linux distributions (Ubuntu, CentOS..etc) on same linux kernel
  • LXD

    • Kernel virtualization , dominating above KVM approach
    • built on top of LXC
  • Docker

    • applications containerization
  • Virtual box

    • on top of linux, can add different OS (Windows/ Linux) in GUI style
    • OS as an process is slower than bare metal/ ParaVirtual virtualization
    • good for developers/ users to have multi OS environment (switch OS like applications)

Note

  • Use something like 'virtual box' in developer machine for multi OS (can turn on/off by UI)

  • For multiple development & test environment, can use LXD

  • No virtualization in production.

  • Using packers/ Vagrants - move OS images

  • with in single OS, use app containers like dockers

  • So our path is like Docker (app container) -> LXD (os container)-> Xen (Hardware separation)

LXD