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).
Type 2
hosted/ system process hypervisors (VirtualBox, QEMU)
Para virtual
- like during boot time all OS are available (Type 1 libs are used)
HVM
FOr better performance than type 1, an hardware emulation layer is used
Kernel based
Run multiple o.s dependent on same kernel version. (KVM, LXD)
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)