nbd-server - serve a file as a block device to other computers running the
GNU/Linux(tm) or GNU/Hurd Operating System
nbd-server [ip@]port filename
] [ -r
] [ -m
] [ -c
-l host list filename
] [ -o section
] [ -C config file
] [ -M max
] [ -V
] [ -d
is the server for the Linux Network Block Device (NBD). With
NBD, a client can use a file, exported over the network from a server, as a
block device. It can then be used for whatever purpose a normal block device
(harddisk, CD-ROM, ...) can be used for.
NBD can be useful for diskless clients that need swapspace, but you can also
create a filesystem on it and use it as though it were a local filesystem.
implements some security through a file called
"/usr/local/etc/nbd-server/allow" (by default; a different file can
be chosen with the '-l' option or through a config file specification). This
file must list the IP-addresses or network masks of clients that are allowed
to connect. If it does not exist, all clients are able to connect. If the file
is empty, no clients can connect.
Note that while the command line allows for specifying an export, the use of
this option is deprecated. It is preferred to make use of a configuration file
instead, the format of which is defined in nbd-server(5).
While nbd-server is running, new exports can be added by re-writing
configuration files and then sending SIGHUP to nbd-server. SIGHUP causes
nbd-server to re-read its configuration files and to start serving all new
exports which were not served earlier. Reconfiguration does not modify any
existing export, it only appends new ones.
- The ip address the server should listen on. This may be an IPv4 address,
an IPv6 address, or a hostname. In the latter case, nbd-server will do a
hostname lookup for the name specified, and will listen on the first
address that is returned. For compatibility with past versions of
nbd-server, if an IPv4 address is specified, the @ sign that serves as
separator between the address and port may be replaced by a colon.
If this parameter is not specified, nbd-server will listen on all local
addresses on both IPv4 and IPv6. To limit to IPv4, specify the address as
0.0.0.0; to limit to IPv6, specify it as ::.
- The port the server should listen to. A valid port is any number between 1
and 65536; if 0 is used, nbd-server will listen on stdin (so that
nbd-server can be ran from inetd)
- The filename of the file that should be exported. This can be any file,
including "real" blockdevices (i.e. a file from /dev). If the
filename includes the literal string "%s", then this %s will be
substituded with the IP-address of the client trying to connect.
- The size of the block device at the client side. This is especially useful
in conjunction with the -m option
Can optionally be followed by one of K,k,M or m, in which case the size will
be multiplied by 1024 (K or k) or 1048576 (M or m)
- Export the file read-only. If a client tries to write to a read-only
exported file, it will receive an error, but the connection will stay
- Work with multiple files. This can be used to export blockdevices that are
larger than the maximum allowed filesize on a given filesystem; i.e. when
the filesystem does not allow files larger than 2GB (which is true for
Linux 2.2 and below), you can use this option to store the data in
multiple files and export a larger filesystem, if needed.
To use this option, you must create a number of files with names in the
format "name.X", where "name" is given as the filename
argument to nbd-server, and "X" is a number starting by 0 and
going up for each file.
Allowing more flexibility for this option is planned for future
- Copy on write. When this option is provided, write-operations are not done
to the exported file, but to a separate file. This separate file is
removed when the connection is closed, which means that serving this way
will make nbd-server slow down (especially on large block devices with
lots of writes), and that after disconnecting and reconnecting the client
or the server, all changes are lost.
- Specify configuration file. The default configuration file, if this
parameter is not specified, is /usr/local/etc/nbd-server/config.
Note that the configuration file is always parsed and the entries in the
file used, even if an extra server is specified on the command line. To
disable the configuration file entirely, either move it away or use the -C
option to point nbd-server(1) to a non-existing or empty
Also note that if an empty, incomplete, or invalid configuration file is
specified, nbd-server will produce a warning about failure to parse the
config file. If the command line contains a fully specified configuration,
this warning is harmless and may be ignored.
- Specify the maximum number of opened connections. If this parameter is not
specified, no limit is set.
- Output the version of nbd-server, and exit.
- Do not fork. Useful for debugging.
- host list filename
- This argument should contain a list of IP-addresses for hosts that may
connect to the server. Wildcards are not allowed. If the file does
not exist, it is ignored (and any host can connect); If the file does
exist, but is empty, no host can connect. By default, the name
'nbd_server.allow' is used, and looked for in the current directory,
unless nbd-server is compiled as a daemon, in which case it is looked for
in the root-directory.
- section name
- If the -o argument is given on the command line, then nbd-server
will output a configuration file section with this as the header that is
functionally equivalent to the other options specified on the command
line, and exit. This is useful for migrating pre-2.9 nbd-server initscript
configuration files to the new format.
Some examples of nbd-server usage:
- To export a file /export/nbd/exp-bl-dev on port 2000:
nbd-server 2000 /export/nbd/exp-bl-dev
- To export a the same file read-only:
nbd-server 2000 /export/nbd/exp-bl-dev -r
- To export the same file read-write, but make sure changes are lost after
restarting the client or the server:
nbd-server 2000 /export/nbd/exp-bl-dev -c
nbd-client (8), nbd-server (5), nbd-trdump (8)
The NBD kernel module and the NBD tools were originally written by Pavel Machek
The Linux kernel module is now maintained by Paul Clements
(Paul.Clements@steeleye.com), while the userland tools are maintained by
Wouter Verhelst (<email@example.com>)
On The Hurd there is a regular translator available to perform the client side
of the protocol, and the use of nbd-client
is not required. Please see
the relevant documentation for more information.
This manual page was written by Wouter Verhelst (<firstname.lastname@example.org>) 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