descriptionMuen SK channel blockdev Linux kernel module
ownerReto Buerki
last changeThu, 2 Apr 2020 13:13:56 +0000 (15:13 +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. 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 \

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 \

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 \

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

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.


2020-04-02 Reto BuerkiAdjustments for sinfo 03 master
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
12 days ago v2.2
2 weeks ago v2.2-mq
7 weeks ago debug
2 months ago v2.1
2 months ago v2.0-smp-events
2 months ago v2.0
4 months ago master
7 months ago devel-linux-5.2