descriptionMuen SK channel blockdev Linux kernel module
ownerReto Buerki
last changeMon, 28 Jan 2019 14:58:48 +0000 (15:58 +0100)
readme

Muenblock

Introduction

The muenblock Linux kernel module implements a block device driver which transports block I/O requests (bio) via shared memory channels provided by the Muen Separation Kernel.

The server part enables the export of entire block devices or single partitions from a Linux subject to the driver's client part running on another Linux subject.

Note: The muenblock kernel modules are in an experimental state and not yet ready for production use.

Usage

The following command inserts the muenblock-server module into the kernel on the server side. It exports the complete sda disk via the blockdev_request1 and blockdev_response1 channels to the client module. The reader and writer protocols are arbitrary values which must match between communicating endpoints.

$ modprobe muenblock-server \
    req_shm_name=blockdev_request1 \
    resp_shm_name=blockdev_response1 \
    req_shm_protocol=9570208dca77db19 \
    resp_shm_protocol=9851be3282fef0dc \
    device_name=/dev/sda

The following command is then executed in the client virtual machine to insert the muenblock-client module:

$ modprobe muenblock-client \
    req_shm_name=blockdev_request1 \
    resp_shm_name=blockdev_response1 \
    req_shm_protocol=9570208dca77db19 \
    resp_shm_protocol=9851be3282fef0dc

This leads to the creation of a /dev/muendiska block device on the client which can be used like a directly assigned disk (see the following sections regarding supported filesystems and limitations).

It is also possible to only export specific partitions of a block device, see the following two example commands on the server and client respectively:

$ depmod muenblock-server \
    req_shm_name=blockdev_request1,blockdev_request2 \
    resp_shm_name=blockdev_response1,blockdev_response2 \
    req_shm_protocol=9570208dca77db19,9570208dca77db20 \
    resp_shm_protocol=9851be3282fef0dc,9851be3282fef0dd \
    device_name=/dev/sda1,/dev/sda5

$ depmod muenblock-client \
    req_shm_name=blockdev_request1,blockdev_request2 \
    resp_shm_name=blockdev_response1,blockdev_response2 \
    req_shm_protocol=9570208dca77db19,9570208dca77db20 \
    resp_shm_protocol=9851be3282fef0dc,9851be3282fef0dd

Each partition will appear as separate muendiska and muendiskb devices in the client.

I/O Scheduler Performance

To increase performance, set the I/O scheduler of the block device exported by the muenblock server module to noop (or none, depending on the kernel version):

# echo noop > /sys/class/block/sda/queue/scheduler

Supported Filesystems

Filesystems of the ext* family have been extensively tested, also in layered modes (ext filesystem on dm-crypt, LVM or both) and are known to work. Other filesystems are not currently supported and might not work. Use at your own risk.

Limitations

shortlog
2019-01-28 Reto BuerkiAdjustments for 4.18 kernel master
2019-01-28 Reto BuerkiUpdate to Muen sinfo variant resource API
2019-01-28 Reto BuerkiAdjustements for 4.14 kernel
2019-01-28 Dennis WassenbergInitial import of the muenblock Linux kernel module
heads
4 months ago master