NBD — Network Block Device — is a protocol for accessing Block Devices
(hard disks and disk-like things) over a Network. nbdkit is a toolkit
for creating NBD servers.
The key features are:
* Multithreaded NBD server written in C with good performance.
* Minimal dependencies for the basic server.
* Liberal license (BSD) allows nbdkit to be linked to proprietary
libraries or included in proprietary code.
* Well-documented, simple plugin API with a stable ABI guarantee.
Lets you export “unconventional” block devices easily.
* You can write plugins in C, [new!] Lua, Perl, Python, OCaml, Ruby or Tcl.
* Filters can be stacked in front of plugins to transform the output.
https://github.com/libguestfs/nbdkit
http://download.libguestfs.org/nbdkit/1.6-stable/
(other downloads:
http://download.libguestfs.org/nbdkit/ )
New in the 1.6 release:
* You can now write plugins in the Lua scripting language.
* nbdkit and common plugins are now "63 bit clean": the maximum disk
size supported is 2^63-1 bytes, and the core server and plugins now
have additional tests to check this works, even on 32 bit machines.
* Multiple improvements to the ‘file’ plugin to make zeroing and
trimming perform better, work correctly with block devices, and
work on older Linux kernels [Nir Soffer, Eric Blake].
* New ‘pattern’ plugin generates a simple, fixed test pattern for
testing nbdkit filters and NBD clients.
* New ‘truncate’ filter can: truncate or extend the size of plugins,
or round up or down the size to next multiple of a power of 2.
Useful for NBD clients like qemu which can only handle NBD sizes
which are a multiple of 512 bytes.
* New ‘error’ filter which can be used to inject errors into the
protocol for testing how clients can handle and recover from
errors.
* New ‘data’ plugin allows you to specify (small) disk images
directly on the command line.
* Enhanced error reporting in the Python plugin so full tracebacks
from errors are now displayed instead of being lost as before.
* NBD_OPT_GO now supported, so we can return errors when negotiating
the export name.
* Support for logging error messages to syslog.
* nbdkit can now be compiled with Clang (as well as GCC).
* nbdkit can now be compiled on FreeBSD.
* The VDDK plugin is compiled unconditionally. You no longer need to
install the proprietary VDDK to compile it.
* Debug messages now include the name of the filter when invoked from
a filter context.
* Debug flags (-D option) provides lightweight debugging for plugin
authors.
Thanks to all who contributed, especially Nir Soffer and Eric Blake.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
libguestfs lets you edit virtual machines. Supports shell scripting,
bindings from many languages.
http://libguestfs.org