nbd-client(8) connect to a server running nbd-server(1), to use its exported block device

SYNOPSIS

nbd-client host [ port ] nbd-device [ -sdp ] [ -swap ] [ -persist ] [ -nofork ] [ -systemd-mark ] [ -block-size block size ] [ -timeout seconds ] [ -name name ]

nbd-client -unix path nbd-device [ -sdp ] [ -swap ] [ -persist ] [ -nofork ] [ -systemd-mark ] [ -block-size block size ] [ -timeout seconds ] [ -name name ]

nbd-client nbd-device

nbd-client -d nbd-device

nbd-client -c nbd-device

nbd-client -l host [ port ]

DESCRIPTION

With nbd-client, you can connect to a server running nbd-server, thus using raw diskspace from that server as a blockdevice on the local client.

To do this, support from the Linux Kernel is necessary, in the form of the Network Block Device (NBD). When you have that, either in the kernel, or as a module, you can connect to an NBD server and use its exported file through a block special file with major mode 43.

Optionally, long options can also be specified with two leading dashes.

OPTIONS

The following options are supported:

-block-size block size
-b
Use a blocksize of "block size". Default is 1024; allowed values are either 512, 1024, 2048 or 4096
host
The hostname or IP address of the machine running nbd-server. Since 2.9.15, the NBD utilities support IPv6.
-timeout seconds
-t
Set the connection timeout to "seconds". For this to work, you need a kernel with support for the NBD_SET_TIMEOUT ioctl; this was introduced into Linus' tree on 2007-10-11, and will be part of kernel 2.6.24.
port
The TCP port on which nbd-server is running at the server.

The port number defaults to 10809, the IANA-assigned port number for the NBD protocol.

Previous versions of the nbd tools supported an older version of the negotiation protocol known as "oldstyle". This protocol version is no longer supported as of version 3.11 of the nbd support tools.

nbd-device
The block special file (/dev entry) which this nbd-client should connect to, specified as a full path.

When the mode is used wherein no hostname or export name is specified, nbd-client will look up the necessary configuration in the nbdtab file. For more information, see nbdtab(5).

-check
-c
Check whether the specified nbd device is connected.

If the device is connected, nbd-client will exit with an exit state of 0 and print the PID of the nbd-client instance that connected it to stdout.

If the device is not connected or does not exist (for example because the nbd module was not loaded), nbd-client will exit with an exit state of 1 and not print anything on stdout.

If an error occurred, nbd-client will exit with an exit state of 2, and not print anything on stdout either.

-disconnect
-d
Disconnect the specified nbd device from the server
-list
-l
Ask the server for a list of available exports. If the server is exporting over IPv6 as well as over IPv4, this will list all exports twice; otherwise, it should list them all only once.

Note that this option only works with nbd-server processes running version 3.1 or above, and must be enabled in server configuration (with the "allowlist" option) before it can be used.

-persist
-p
When this option is specified, nbd-client will immediately try to reconnect an nbd device if the connection ever drops unexpectedly due to a lost server or something similar.
-sdp
-S
Connect to the server using the Socket Direct Protocol (SDP), rather than IP. See nbd-server(5) for details.
-swap
-s
Specifies that this NBD device will be used as swapspace. This option attempts to prevent deadlocks by performing mlockall() and adjusting the oom-killer score at an appropriate time. It does not however guarantee that such deadlocks can be avoided.
-systemd-mark
-m
The systemd init system requires that processes which should not be killed at shutdown time be marked appropriately by replacing the first letter of their argv[0] with an '@' sign.

This option will cause nbd-client to do so.

Note that this only works if nbd-client is run from an initrd; i.e., systemd will ignore such a mark if run from a systemd unit file or from the command line.

-nofork
-n
Specifies that the NBD client should not detach and daemonize itself. This is mostly useful for debugging.

Note that nbd-client will still fork once to trigger an update to the device node's partition table. It is not possible to disable this.

-name
-N
Specifies the name of the export that we want to use. If not specified, nbd-client will ask for a "default" export, if one exists on the server.
-unix
-u
Connect to the server over a unix domain socket at path, rather than to a server over a TCP socket. The server must be listening on the given socket.

EXAMPLES

Some examples of nbd-client usage:

  • To connect to a server running on port 2000 at host "server.domain.com", using the client's block special file "/dev/nbd0":

    nbd-client server.domain.com 2000 /dev/nbd0

  • To connect to a server running on port 2001 at host "swapserver.domain.com", using the client's block special file "/dev/nbd1", for swap purposes:

    nbd-client swapserver.domain.com 2001 /dev/nbd1 -swap

  • To disconnect the above connection again (after making sure the block special file is not in use anymore):

    nbd-client -d /dev/nbd1

AUTHOR

The NBD kernel module and the NBD tools have been written by Pavel Macheck ([email protected]).

The kernel module is now maintained by Paul Clements ([email protected]), while the userland tools are maintained by Wouter Verhelst ([email protected])

This manual page was written by Wouter Verhelst (<[email protected]>) for the Debian GNU/Linux system (but may be used by others). Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, version 2, as published by the Free Software Foundation.