Jump to content

Network block device: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
xNBD: raw bitbucket link 404s, turn into archive link (2020, last crawl), and "was"ify. packaged only in buster, looks completely dead
use canonical link; EL cleanup
Line 44: Line 44:


== External links ==
== External links ==
* Linux {{SourceForge|nbd|Network Block Device}}: protocol standard and canonical client and server
* {{Github|NetworkBlockDevice/nbd|Network Block Device}}
* [https://gitlab.com/nbdkit/nbdkit nbdkit] is a plugin-based NBD server and [https://gitlab.com/nbdkit/libnbd libnbd] is a high-performance [[C (programming language)|C]] client
* [https://gitlab.com/nbdkit/nbdkit nbdkit] is a plugin-based NBD server and [https://gitlab.com/nbdkit/libnbd libnbd] is a high-performance [[C (programming language)|C]] client
* [https://www.qemu.org/docs/master/tools/qemu-nbd.html qemu-nbd] A nbd tool from qemu project
* {{Github|freqlabs/nbd-client|NBD client for FreeBSD}} using [[GEOM]]
* [https://qemu.weilnetz.de/doc/6.0/tools/qemu-nbd.html qemu-nbd] A nbd tool from qemu project
* [https://web.archive.org/web/20200805233450/https://bitbucket.org/hirofuchi/xnbd/wiki/Home xNBD] was another NBD server program for Linux
* [https://bitbucket.org/belczyk/bnbd BNBD] is an alternative NBD server implementation
* [https://bitbucket.org/belczyk/bnbd BNBD] is an alternative NBD server implementation
* [https://web.archive.org/web/20200805233450/https://bitbucket.org/hirofuchi/xnbd/wiki/Home xNBD] was another NBD server program for Linux
* [https://www.linuxjournal.com/article/3778 The Network Block Device], the Linux Journal
* [https://www.linuxjournal.com/article/3778 The Network Block Device], the Linux Journal



Revision as of 17:16, 7 October 2023

Hexdump of the Initialization / Handshake between a Network Block Device client and server

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.[1] 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.[2] 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.[3]

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.[4][5]

References

  1. ^ "The Network Block Device | Linux Journal".
  2. ^ Patrick Wildt (2015-04-23). "NBD: Implement Network Block Device support". Bitrig.
  3. ^ Miroslav Kripac (2005-01-21). "Implementing Oracle Real Application Clusters Using Network Block Device Technology". Masaryk University. Retrieved 2016-11-22.
  4. ^ "Documentation/usb/usbip_protocol.txt". kernel.org. 2016-03-21. Retrieved 2017-04-09.
  5. ^ "USB over IP tunnel". OpenWrt. 2016-06-17. Retrieved 2017-04-09.