Network block device
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.
There are Linux-compatible NBD implementations for FreeBSD and other operating systems. The term 'network block device' is sometimes also used generically.
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 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.
- 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.
- Linux Network Block Device on SourceForge: protocol standard and canonical client and server
- nbdkit is a plugin-based NBD server and libnbd is a high-performance C client
- NBD client for FreeBSD on GitHub using GEOM
- qemu-nbd A nbd tool from qemu project
- xNBD is another NBD server program for Linux
- BNBD is an alternative NBD server implementation
- The Network Block Device, the Linux Journal
- "The Network Block Device | Linux Journal".
- Patrick Wildt (2015-04-23). "NBD: Implement Network Block Device support". Bitrig.
- Miroslav Kripac (2005-01-21). "Implementing Oracle Real Application Clusters Using Network Block Device Technology". Masaryk University. Retrieved 2016-11-22.
- "Documentation/usb/usbip_protocol.txt". kernel.org. 2016-03-21. Retrieved 2017-04-09.
- "USB over IP tunnel". OpenWrt. 2016-06-17. Retrieved 2017-04-09.