/cube

A basic NBD block server with a single gimmick

Primary LanguageRust

Cube

What

A basic NBD block server with a single gimmick.

Why

The main reason for using this over any other NBD server is its ability to reload the config without affecting any existing connection.

This allows for booting a device off an NBD device and changing the export configuration to point to a new root image. Without affecting the booted devices. Then, when the device is rebooted, it will connect to the new root image.

How

Create a config file config.toml

[listen]
port = 10809

[exports]
main = { path = "./src/main.rs", readonly = true }
block = "/tmp/block.bin"

Run the server with

cube -c config.toml

When the configuration is changed, it can be reloaded by sending SIGHUP to the server.

pkill -sighup cube