NVMe Disk Driver for the OSv Unikernel

In the cloud computing environment, applications usually run within two isolation layers. First, the cloud provider isolates the virtual machine from other customers using an hypervisor, such as KVM, Virtual Box, or HyperV. Second, the operating system isolates the application process from other processes running within the virtual machine. However, this isolation can cause overhead, reducing the application's performance.

To address this issue, Unikernels have emerged as an alternative to traditional operating systems, replacing Linux in the stack. Unikernels are specialized operating systems that support only one running application and tear down process isolation. This approach allows for a deep integration between the operating system and the application, reducing overhead and improving performance.

One such Unikernel is OSv, which is written in C++ and designed to run unmodified Linux executables. Unlike Linux, OSv does not support multiple processes, and there is no separation between kernel and user space. This design allows for a deep integration between the two components, further reducing overhead and improving performance.

Currently, OSv supports disk drivers for classic IDE disks and virtualized block I/O. However, modern cloud providers, such as Amazon AWS Nitro, use NVMe to connect disks to virtual machines. NVMe is a much simpler and more efficient protocol to communicate with modern SSDs.

The goal of this thesis is to develop an NVMe driver for OSv and integrate it with the project. This will allow OSv to communicate with NVMe-based storage systems, improving its performance and compatibility with modern cloud computing environments.

To achieve this goal, the thesis will involve researching the NVMe protocol and its implementation, designing and implementing the NVMe driver for OSv, testing and benchmarking the driver, and integrating it with the OSv project.

For more information about OSv and this thesis project, you can refer to the following resources: