Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/Mic92/vmsh

Shell into a virtualized linux, with your own tools
https://github.com/Mic92/vmsh

hacktoberfest

Last synced: 3 months ago
JSON representation

Shell into a virtualized linux, with your own tools

Awesome Lists containing this project

README

        

# vmsh

Lightweight virtual machines (VMs) are prominently adopted for improved
performance and dependability in cloud envi- ronments. To reduce boot up times
and resource utilisation, they are usually “pre-baked" with only the minimal
kernel and userland strictly required to run an application. This in- troduces a
fundamental trade-off between the advantages of lightweight VMs and available
services within a VM, usually leaning towards the former. We propose VMSH, a
hypervisor-agnostic abstraction that enables on-demand attachment of services to
a running VM— allowing developers to provide minimal, lightweight images without
compromising their functionality. The additional applications are made available
to the guest via a file system image. To ensure that the newly added services do
not affect the original applications in the VM, VMSH uses lightweight isolation
mechanisms based on containers. We evaluate VMSH on multiple KVM-based
hypervisors and Linux LTS kernels and show that: (i) VMSH adds no overhead for
the applications running in the VM, (ii) de-bloating im- ages from the Docker
registry can save up to 60% of their size on average, and (iii) VMSH enables
cloud providers to offer services to customers, such as recovery shells, without
interfering with their VM’s execution.

# Reproducing the paper results

VMSH was published in Eurosys 2022. To reproduce the results shown in the
evaluation of the paper, we provide [dedicated documentation](EVALUATION.md).

# Usage

- Run `just pts` in one terminal to get a `/dev/pts/x`.
- Run `just qemu` in another terminal to spawn a VM.
- Run `just attach-qemu-sh /dev/pts/x` in another terminal to attach the first terminal to the shell which is spawned into the VM.

# Related work

Build small vm images with [microvm.nix](https://github.com/astro/microvm.nix)

# Referencing our work

VMSH: Hypervisor-agnostic Guest Overlays for VMs
_Jörg Thalheim, Peter Okelmann, Harshavardhan Unnibhavi, Redha Gouicem, Pramod Bhatotia_
**EUROSYS 2022**
[[Paper](https://vmsh.thalheim.io/pdfs/vmsh_eurosys22.pdf)]

```
@inproceedings{DBLP:conf/eurosys/ThalheimOUGB22,
author = {J{\"{o}}rg Thalheim and
Peter Okelmann and
Harshavardhan Unnibhavi and
Redha Gouicem and
Pramod Bhatotia},
title = {{VMSH:} hypervisor-agnostic guest overlays for VMs},
booktitle = {EuroSys},
pages = {678--696},
publisher = {{ACM}},
year = {2022}
}
```