On Linux, network block device (NBD) is a network protocol that can be used to forward a block device (typically a hard disk or partition) from one machine to a second machine. As an example, a local machine can access a hard disk drive that is attached to another computer.

The protocol was originally developed for Linux 2.1.55 and released in 1997. In 2011 the protocol was revised, formally documented, and is now developed as a collaborative open standard. There are several interoperable clients and servers.

Network block device

There are Linux-compatible NBD implementations for FreeBSD and other operating systems. The term 'network block device' is sometimes also used generically.

Network block device

Technically, a network block device is realized by three components: the server part, the client part, and the network between them. On the client machine, on which is the device node, a kernel driver controls the device. Whenever a program tries to access the device, the kernel driver forwards the request (if the client part is not fully implemented in the kernel it can be done with help of a userspace program) to the server machine, on which the data resides physically. On the server machine, requests from the client are handled by a userspace program.

Network block device

Network block device servers are typically implemented as a userspace program running on a general-purpose computer. All of the function specific to network block device servers can reside in a userspace process because the process communicates with the client via conventional sockets and accesses the storage via a conventional file system interface.

The network block device client module is available on Unix-like operating systems, including Linux and Bitrig. Since the server is a userspace program, it can potentially run on every Unix-like platform; for example, NBD's server part has been ported to Solaris.

Alternative protocols

iSCSI: The "target-utils" iscsi package on many Linux distributions. NVMe-oF: an equivalent mechanism, exposing block devices as NVMe namespaces over TCP, Fibre Channel, RDMA, &c., native to most operating systems Loop device: a similar mechanism, but uses a local file instead of a remote one DRBD: Distributed Replicated Block Device is a distributed storage system for the Linux platform ATA over Ethernet: send ATA commands over Ethernet USB/IP: A protocol that provides network access to USB devices via IP.

External links

nbdkit is a plugin-based NBD server and libnbd is a high-performance C client

qemu-nbd A nbd tool from qemu project

BNBD is an alternative NBD server implementation

xNBD was another NBD server program for Linux

The Network Block Device, the Linux Journal

References

Computer networking

Computer storage technologies

Linux kernel features