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