descriptionMuen SK channel blockdev Linux kernel module
ownerReto Buerki
last changeThu, 17 Sep 2020 04:22:06 +0000 (06:22 +0200)



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.


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.

$ modprobe muenblock-server \
    connections=1:blockdev_request1:blockdev_response1:blockdev_mem \

The connections parameter is defined as a comma separated list of connection strings with the fields:


and optional


Where connection_id is used to map a device to a connection. It is possible to have multiple devices on a single connection. *_shm_name are reader and writer channels. buffer_shm_name is used as plain shared memory. The reader and writer protocols are arbitrary values which must match between communicating endpoints.

The device parameter is a comma separated list of device to connection mappings:

<block device>:<connection_id>

Where block_device is a existing block device on the server and connection_id must match a connection_id of the connections parameter.

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

$ modprobe muenblock-client \

The client only gets the connections parameter which is defined in the same way as for the server.

This leads to the creation of a /dev/muendiska block device on the client which can be used like a directly assigned disk.

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 \
    connections=1:blockdev_request1:blockdev_response1:blockdev_mem \

$ depmod muenblock-client \

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.

2020-09-17 Ralf HubertRewrite for new blockdev interface master
2020-04-02 Reto BuerkiAdjustments for sinfo 03
2019-12-20 Adrian-Ken... Add .mod to gitignore
2019-01-28 Reto BuerkiAdjustments for 4.18 kernel
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
5 months ago misc-minor
5 months ago master