A basic NBD block server with a single gimmick
  • Rust 72.7%
  • Nix 27.3%
Find a file
2023-06-10 00:11:35 +02:00
.github/workflows ci 2023-05-28 18:01:59 +02:00
src fix block devices getting reported as 0 size 2023-06-10 00:11:35 +02:00
.envrc flake 2023-02-19 17:32:44 +01:00
.gitignore flake 2023-02-19 17:32:44 +01:00
Cargo.lock rename to cube 2023-03-03 21:42:43 +01:00
Cargo.toml rename to cube 2023-03-03 21:42:43 +01:00
config.sample.toml initial version 2023-02-19 16:35:01 +01:00
flake.lock fix block devices getting reported as 0 size 2023-06-10 00:11:35 +02:00
flake.nix fix block devices getting reported as 0 size 2023-06-10 00:11:35 +02:00
package.nix fix block devices getting reported as 0 size 2023-06-10 00:11:35 +02:00
README.md rename to cube 2023-03-03 21:42:43 +01:00

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