1nbdkit(1)                           NBDKIT                           nbdkit(1)
2
3
4

NAME

6       nbdkit - toolkit for creating Network Block Device (NBD) servers
7

SYNOPSIS

9        nbdkit [-4|--ipv4-only] [-6|--ipv6-only]
10               [-D|--debug PLUGIN|FILTER|nbdkit.FLAG=N]
11               [--exit-with-parent] [-e|--exportname EXPORTNAME]
12               [--filter=FILTER ...] [-f|--foreground]
13               [-g|--group GROUP] [-i|--ipaddr IPADDR]
14               [--log=stderr|syslog|null] [--mask-handshake=MASK]
15               [-n|--newstyle] [--no-sr] [-o|--oldstyle]
16               [-P|--pidfile PIDFILE] [-p|--port PORT]
17               [-r|--readonly] [--run 'COMMAND ARGS ...']
18               [--selinux-label=LABEL] [-s|--single] [--swap]
19               [-t|--threads THREADS] [--tls=off|on|require]
20               [--tls-certificates=/path/to/certificates]
21               [--tls-psk=/path/to/pskfile] [--tls-verify-peer]
22               [-U|--unix SOCKET|-] [-u|--user USER]
23               [-v|--verbose] [--vsock]
24               PLUGIN [[KEY=]VALUE [KEY=VALUE [...]]]
25
26        nbdkit --dump-config
27
28        nbdkit PLUGIN --dump-plugin
29
30        nbdkit --help
31
32        nbdkit [-V|--version]
33

DESCRIPTION

35       Network Block Device (NBD) is a network protocol for accessing block
36       devices over the network.  Block devices are hard disks and things that
37       behave like hard disks such as disk images and virtual machines.
38
39       nbdkit is both a toolkit for creating NBD servers from “unconventional”
40       sources, and the name of an NBD server.  nbdkit ships with many plugins
41       for performing common tasks like serving local files.
42
43   Plugins and filters
44       nbdkit is different from other NBD servers because you can easily
45       create new Network Block Device sources by writing a few glue
46       functions, possibly in C, or perhaps in a high level language like Perl
47       or Python.  The liberal licensing of nbdkit is meant to allow you to
48       link nbdkit with proprietary libraries or to include nbdkit in
49       proprietary code.
50
51       If you want to write your own nbdkit plugin you should read
52       nbdkit-plugin(3).
53
54       nbdkit also has a concept of filters which can be layered on top of
55       plugins.  Several filters are provided with nbdkit and if you want to
56       write your own you should read nbdkit-filter(3).
57

EXAMPLES

59   Basic file serving
60       •   Serve file disk.img on port 10809 using nbdkit-file-plugin(1), and
61           connect to it using guestfish(1):
62
63            nbdkit file disk.img
64            guestfish --rw --format=raw -a nbd://localhost
65
66       •   Serve file disk.img on port 10809, requiring clients to use
67           encrypted (TLS) connections:
68
69            nbdkit --tls=require file disk.img
70
71   Other nbdkit plugins
72       •   Create a small disk containing test patterns using
73           nbdkit-data-plugin(1):
74
75            nbdkit data ' ( 0x55 0xAA )*2048 '
76
77       •   Forward an NBD connection to a remote server over HTTPS or SSH
78           using nbdkit-curl-plugin(1) or nbdkit-ssh-plugin(1):
79
80            nbdkit -r curl https://example.com/disk.img
81
82            nbdkit ssh host=example.com /var/tmp/disk.img
83
84       •   Create a sparse 1 terabyte RAM disk using nbdkit-memory-plugin(1)
85           and use it as a loop device (nbdkit-loop(1)):
86
87            nbdkit memory 1T
88            nbd-client localhost /dev/nbd0
89
90       •   Create a floppy disk image containing files from a local directory
91           using nbdkit-floppy-plugin(1):
92
93            nbdkit floppy dir/
94
95   Combining plugins and filters
96       •   Serve only the first partition from compressed disk image
97           disk.img.xz, combining nbdkit-partition-filter(1),
98           nbdkit-xz-filter(1) and nbdkit-file-plugin(1).
99
100            nbdkit --filter=partition --filter=xz file disk.img.xz partition=1
101
102           To understand this command line:
103
104                                        plugin name and plugin parameter
105
106                                                  ┌───────┴──────┐
107                                                  │              │
108            nbdkit --filter=partition --filter=xz file disk.img.xz partition=1
109                            │              │                          │
110                            └──────────────┴────┬─────────────────────┘
111
112                                   filters and filter parameter
113
114       •   Create a scratch, empty nbdkit device and inject errors and delays,
115           for testing clients, using nbdkit-memory-plugin(1),
116           nbdkit-error-filter(1) and nbdkit-delay-filter(1):
117
118            nbdkit --filter=error --filter=delay memory 100M \
119                   error-rate=10% rdelay=1 wdelay=1
120
121   Writing plugins in shell script
122       •   Write a simple, custom plugin in shell script using
123           nbdkit-sh-plugin(3):
124
125            nbdkit sh - <<'EOF'
126              case "$1" in
127                get_size) echo 1M ;;
128                pread) dd if=/dev/zero count=$3 iflag=count_bytes ;;
129                *) exit 2 ;;
130              esac
131            EOF
132
133       •   The same example as above can be written entirely on the command
134           line using nbdkit-eval-plugin(1):
135
136            nbdkit eval get_size='echo 1M' \
137                        pread='dd if=/dev/zero count=$3 iflag=count_bytes'
138
139   Display information
140       Display information about nbdkit or a specific plugin:
141
142        nbdkit --help
143        nbdkit --version
144        nbdkit --dump-config
145        nbdkit example1 --help
146        nbdkit example1 --dump-plugin
147

GLOBAL OPTIONS

149       --help
150           Display brief command line usage information and exit.
151
152       -4
153       --ipv4-only
154       -6
155       --ipv6-only
156           When a non-numeric argument is passed to the -i option (such as a
157           Fully Qualified Domain Name, or a host name from "/etc/hosts"),
158           restrict the name resolution to IPv4 or IPv6 addresses.
159
160           When the -i option is omitted, listen on only the IPv4 or IPv6
161           address of all interfaces (0.0.0.0 or "::", respectively).
162
163           When both -4 and -6 options are present on the command line, the
164           last one takes effect.
165
166       -D PLUGIN.FLAG=N
167       -D FILTER.FLAG=N
168       --debug PLUGIN.FLAG=N
169       --debug FILTER.FLAG=N
170           Set the plugin or filter Debug Flag called "FLAG" to the integer
171           value "N".  See "Debug Flags" in nbdkit-plugin(3).
172
173       -D nbdkit.FLAG=N
174       --debug nbdkit.FLAG=N
175           (nbdkit ≥ 1.18)
176
177           Set the nbdkit server Debug Flag called "FLAG" to the integer value
178           "N".  See "SERVER DEBUG FLAGS" below.
179
180       --dump-config
181           Dump out the compile-time configuration values and exit.  See
182           nbdkit-probing(1).
183
184       --dump-plugin
185           Dump out information about the plugin and exit.  See
186           nbdkit-probing(1).
187
188       --exit-with-parent
189           If the parent process exits, we exit.  This can be used to avoid
190           complicated cleanup or orphaned nbdkit processes.  There are some
191           important caveats with this, see "EXIT WITH PARENT" in
192           nbdkit-captive(1).
193
194           An alternative to this is "CAPTIVE NBDKIT" in nbdkit-captive(1).
195
196           This option implies --foreground.
197
198       -e EXPORTNAME
199       --export=EXPORTNAME
200       --export-name=EXPORTNAME
201       --exportname=EXPORTNAME
202           Set a preferred exportname to expose in the shell environment
203           created during --run.  The use of this option without --run has no
204           effect.  This option does not change what nbdkit advertises as a
205           server, but can aid in writing a captive client that wants to
206           access particular content from a plugin that differentiates content
207           based on the client's choice of export name.
208
209           If not set, the --run environment is set to access the default
210           exportname "" (empty string).
211
212       --filter=FILTER
213           Add a filter before the plugin.  This option may be given one or
214           more times to stack filters in front of the plugin.  They are
215           processed in the order they appear on the command line.  See
216           "FILTERS" and nbdkit-filter(3).
217
218       -f
219       --foreground
220       --no-fork
221           Don't fork into the background.
222
223       -g GROUP
224       --group=GROUP
225           Change group to "GROUP" after starting up.  A group name or numeric
226           group ID can be used.
227
228           The server needs sufficient permissions to be able to do this.
229           Normally this would mean starting the server up as root.
230
231           See also -u.
232
233       -i IPADDR
234       --ip-addr=IPADDR
235       --ipaddr=IPADDR
236           Listen on the specified interface.  The default is to listen on all
237           interfaces.  See also -4, -6, and -p.
238
239       --log=stderr
240       --log=syslog
241       --log=null
242           Send error messages to standard error (--log=stderr), or to the
243           system log (--log=syslog), or discard them completely (--log=null,
244           not recommended for normal use).
245
246           The default is to send error messages to stderr, unless nbdkit
247           forks into the background in which case they are sent to syslog.
248
249           For more details see "LOGGING" in nbdkit-service(1).
250
251       --mask-handshake=MASK
252           This option can be used to mask off particular global features
253           which are advertised during new-style handshake (defaulting to all
254           supported bits set).  See nbdkit-protocol(1).
255
256       -n
257       --new-style
258       --newstyle
259           Use the newstyle NBD protocol.  This is the default in nbdkit ≥
260           1.3.  In earlier versions the default was oldstyle.  See
261           nbdkit-protocol(1).
262
263       --no-sr
264           Do not advertise structured replies.  A client must request
265           structured replies to take advantage of block status and potential
266           sparse reads; however, as structured reads are not a mandatory part
267           of the newstyle NBD protocol, this option can be used to debug
268           client fallbacks for dealing with older servers.  See
269           nbdkit-protocol(1).
270
271       -o
272       --old-style
273       --oldstyle
274           Use the oldstyle NBD protocol.  This was the default in nbdkit ≤
275           1.2, but now the default is newstyle.  Note this is incompatible
276           with newer features such as export names and TLS.  See
277           nbdkit-protocol(1).
278
279       -P PIDFILE
280       --pid-file=PIDFILE
281       --pidfile=PIDFILE
282           Write "PIDFILE" (containing the process ID of the server) after
283           nbdkit becomes ready to accept connections.
284
285           If the file already exists, it is overwritten.  nbdkit does not
286           delete the file when it exits.
287
288       -p PORT
289       --port=PORT
290           Change the TCP/IP port number on which nbdkit serves requests.  The
291           default is 10809.  See also -i.
292
293       -r
294       --read-only
295       --readonly
296           The export will be read-only.  If a client writes, then it will get
297           an error.
298
299           Note that some plugins inherently don't support writes.  With those
300           plugins the -r option is added implicitly.
301
302           nbdkit-cow-filter(1) can be placed over read-only plugins to
303           provide copy-on-write (or "snapshot") functionality.  If you are
304           using qemu as a client then it also supports snapshots.
305
306       --run 'COMMAND ARGS ...'
307           Run nbdkit as a captive subprocess of the command.  When the
308           command exits, nbdkit is killed.  See "CAPTIVE NBDKIT" in
309           nbdkit-captive(1).
310
311           Note that the command is executed by /bin/sh.  On some platforms
312           like Debian this might not be a full-featured shell.
313
314           This option implies --foreground.
315
316           In nbdkit ≤ 1.34 you normally had to add -U -, otherwise nbdkit
317           would use a TCP/IP port which was not what you wanted.  In nbdkit ≥
318           1.36, using --run implies -U -.  If you want the old behaviour of
319           nbdkit then you must use the --port option explicitly.
320
321       --selinux-label=SOCKET-LABEL
322           Apply the SELinux label "SOCKET-LABEL" to the nbdkit listening
323           socket.
324
325           The common — perhaps only — use of this option is to allow libvirt
326           guests which are using SELinux and sVirt confinement to access
327           nbdkit Unix domain sockets.  The example below shows how to do
328           this.  Note that the socket and filesystem labels are different.
329
330            nbdkit -U /tmp/sock --selinux-label=system_u:object_r:svirt_socket_t:s0 ...
331            chcon system_u:object_r:svirt_image_t:s0 /tmp/sock
332
333       -s
334       --single
335       --stdin
336           Don't fork.  Handle a single NBD connection on stdin/stdout.  After
337           stdin closes, the server exits.
338
339           You can use this option to run nbdkit from inetd or similar
340           superservers; or just for testing; or if you want to run nbdkit in
341           a non-conventional way.  Note that if you want to run nbdkit from
342           systemd, then it may be better to use "SOCKET ACTIVATION" in
343           nbdkit-service(1) instead of this option.
344
345           This option implies --foreground.
346
347       --swap
348           (nbdkit ≥ 1.18)
349
350           Specifies that the NBD device will be used as swap space loop
351           mounted on the same machine which is running nbdkit.  To avoid
352           deadlocks this locks the whole nbdkit process into memory using
353           mlockall(2).  This may require additional permissions, such as
354           starting the server as root or raising the "RLIMIT_MEMLOCK"
355           (ulimit(1) -l) limit on the process.
356
357       -t THREADS
358       --threads=THREADS
359           Set the number of threads to be used per connection, which in turn
360           controls the number of outstanding requests that can be processed
361           at once.  Only matters for plugins with thread_model=parallel
362           (where it defaults to 16).  To force serialized behavior (useful if
363           the client is not prepared for out-of-order responses), set this to
364           1.
365
366       --tls=off
367       --tls=on
368       --tls=require
369           Disable, enable or require TLS (authentication and encryption
370           support).  See nbdkit-tls(1).
371
372       --tls-certificates=/path/to/certificates
373           Set the path to the TLS certificates directory.  If not specified,
374           some built-in paths are checked.  See nbdkit-tls(1) for more
375           details.
376
377       --tls-psk=/path/to/pskfile
378           Set the path to the pre-shared keys (PSK) file.  If used, this
379           overrides certificate authentication.  There is no built-in path.
380           See nbdkit-tls(1) for more details.
381
382       --tls-verify-peer
383           Enables TLS client certificate verification.  The default is not to
384           check the client's certificate.
385
386       -U SOCKET
387       --unix=SOCKET
388       -U -
389       --unix -
390           Accept connections on the Unix domain socket "SOCKET" (which is a
391           path).
392
393           nbdkit creates this socket, but it will probably have incorrect
394           permissions (too permissive).  If it is a problem that some
395           unauthorized user could connect to this socket between the time
396           that nbdkit starts up and the authorized user connects, then put
397           the socket into a directory that has restrictive permissions.
398
399           nbdkit does not delete the socket file when it exits.  The caller
400           should delete the socket file after use (else if you try to start
401           nbdkit up again you will get an "Address already in use" error).
402
403           If the socket name is - then nbdkit generates a randomly named
404           private socket.  This is implied by the --run option.  See also
405           "CAPTIVE NBDKIT" in nbdkit-captive(1).
406
407       -u USER
408       --user=USER
409           Change user to "USER" after starting up.  A user name or numeric
410           user ID can be used.
411
412           The server needs sufficient permissions to be able to do this.
413           Normally this would mean starting the server up as root.
414
415           See also -g.
416
417       -v
418       --verbose
419           Enable verbose messages.
420
421           It's a good idea to use -f as well so the process does not fork
422           into the background (but not required).
423
424       -V
425       --version
426           Print the version number of nbdkit and exit.
427
428           The --dump-config option provides separate major and minor numbers
429           and may be easier to parse from shell scripts.
430
431       --vsock
432           (nbdkit ≥ 1.16)
433
434           Use the AF_VSOCK protocol (instead of TCP/IP).  You must use this
435           in conjunction with -p/--port.  See "AF_VSOCK" in
436           nbdkit-service(1).
437

PLUGIN NAME

439       You can give the full path to the plugin, like this:
440
441        nbdkit $libdir/nbdkit/plugins/nbdkit-file-plugin.so [...]
442
443       but it is usually more convenient to use this equivalent syntax:
444
445        nbdkit file [...]
446
447       $libdir is set at compile time.  To print it out, do:
448
449        nbdkit --dump-config
450

PLUGIN CONFIGURATION

452       After specifying the plugin name you can (optionally, it depends on the
453       plugin) give plugin configuration on the command line in the form of
454       "key=value".  For example:
455
456        nbdkit file file=disk.img
457
458       To list all the options supported by a plugin, do:
459
460        nbdkit --help file
461
462       To dump information about a plugin, do:
463
464        nbdkit file --dump-plugin
465
466   Magic parameters
467       Some plugins declare a special "magic config key".  This is a key which
468       is assumed if no "key=" part is present.  For example:
469
470        nbdkit file disk.img
471
472       is assumed to be "file=disk.img" because the file plugin declares
473       "file" as its magic config key.  There can be ambiguity in the parsing
474       of magic config keys if the value might look like a "key=value".  If
475       there could be ambiguity then modify the value, eg. by prefixing it
476       with "./"
477
478       There is also a special exception for plugins which do not declare a
479       magic config key, but where the first plugin argument does not contain
480       an '=' character: it is assumed to be "script=value".  This is used by
481       scripting language plugins:
482
483        nbdkit perl foo.pl [args...]
484
485       has the same meaning as:
486
487        nbdkit perl script=foo.pl [args...]
488
489   Shebang scripts
490       You can use "#!" to run nbdkit plugins written in most scripting
491       languages.  The file should be executable.  For example:
492
493        #!/usr/sbin/nbdkit perl
494        sub open {
495          # etc
496        }
497
498       (see nbdkit-perl-plugin(3) for a full example).
499

SERVER DEBUG FLAGS

501       As well as enabling or disabling debugging in the server using
502       --verbose you can control extra debugging in the server using the
503       -D nbdkit.* flags listed in this section.  Note these flags are an
504       internal implementation detail of the server and may be changed or
505       removed at any time in the future.
506
507       -D nbdkit.backend.controlpath=0
508       -D nbdkit.backend.controlpath=1
509       -D nbdkit.backend.datapath=0
510       -D nbdkit.backend.datapath=1
511           These flags control the verbosity of nbdkit backend debugging
512           messages (the ones which show every request processed by the
513           server).  The default for both settings is 1 (normal debugging) but
514           you can set them to 0 to suppress these messages.
515
516           -D nbdkit.backend.datapath=0 is the more useful setting which lets
517           you suppress messages about pread, pwrite, zero, trim, etc.
518           commands.  When transferring large amounts of data these messages
519           are numerous and not usually very interesting.
520
521           -D nbdkit.backend.controlpath=0 suppresses the non-datapath
522           commands (config, open, close, can_write, etc.)
523
524       -D nbdkit.environ=1
525           Print nbdkit's environment variables in the debug output at start
526           up.  This is insecure because environment variables may contain
527           both sensitive and user-controlled information, so it should not be
528           used routinely.  But it is useful for tracking down problems
529           related to environment variables.
530
531       -D nbdkit.tls.log=N
532           Enable TLS logging.  "N" can be in the range 0 (no logging) to 99.
533           See gnutls_global_set_log_level(3).
534
535       -D nbdkit.tls.session=1
536           Print additional information about the TLS session, such as the
537           type of authentication and encryption, and client certificate
538           information.
539

SIGNALS

541       nbdkit responds to the following signals:
542
543       "SIGINT"
544       "SIGQUIT"
545       "SIGTERM"
546           The server exits cleanly.
547
548       "SIGPIPE"
549           This signal is ignored.
550

ENVIRONMENT VARIABLES

552       "LISTEN_FDS"
553       "LISTEN_PID"
554           If present in the environment when nbdkit starts up, these trigger
555           "SOCKET ACTIVATION" in nbdkit-service(1).
556

SEE ALSO

558   Other topics
559       nbdkit-captive(1) — Run nbdkit under another process and have it
560       reliably cleaned up.
561
562       nbdkit-client(1) — How to mount NBD filesystems on a client machine.
563
564       nbdkit-loop(1) — Use nbdkit with the Linux kernel client to create loop
565       devices and loop mounts.
566
567       nbdkit-probing(1) — How to probe for nbdkit configuration and plugins.
568
569       nbdkit-protocol(1) — Which parts of the NBD protocol nbdkit supports.
570
571       nbdkit-security(1) — Lists past security issues in nbdkit.
572
573       nbdkit-service(1) — Running nbdkit as a service, and systemd socket
574       activation.
575
576       nbdkit-tls(1) — Authentication and encryption of NBD connections
577       (sometimes incorrectly called "SSL").
578
579   Plugins
580       nbdkit-blkio-plugin(1), nbdkit-cdi-plugin(1), nbdkit-curl-plugin(1),
581       nbdkit-data-plugin(1), nbdkit-eval-plugin(1),
582       nbdkit-example1-plugin(1), nbdkit-example2-plugin(1),
583       nbdkit-example3-plugin(1), nbdkit-example4-plugin(1),
584       nbdkit-file-plugin(1), nbdkit-floppy-plugin(1), nbdkit-full-plugin(1),
585       nbdkit-guestfs-plugin(1), nbdkit-info-plugin(1), nbdkit-iso-plugin(1),
586       nbdkit-libvirt-plugin(1), nbdkit-linuxdisk-plugin(1),
587       nbdkit-memory-plugin(1), nbdkit-nbd-plugin(1), nbdkit-null-plugin(1),
588       nbdkit-ondemand-plugin(1), nbdkit-ones-plugin(1),
589       nbdkit-partitioning-plugin(1), nbdkit-pattern-plugin(1),
590       nbdkit-random-plugin(1), nbdkit-S3-plugin(1),
591       nbdkit-sparse-random-plugin(1), nbdkit-split-plugin(1),
592       nbdkit-ssh-plugin(1), nbdkit-tmpdisk-plugin(1),
593       nbdkit-torrent-plugin(1), nbdkit-vddk-plugin(1), nbdkit-zero-plugin(1)
594       ; nbdkit-cc-plugin(3), nbdkit-golang-plugin(3), nbdkit-lua-plugin(3),
595       nbdkit-ocaml-plugin(3), nbdkit-perl-plugin(3), nbdkit-python-plugin(3),
596       nbdkit-ruby-plugin(3), nbdkit-rust-plugin(3), nbdkit-sh-plugin(3),
597       nbdkit-tcl-plugin(3) .
598
599   Filters
600       nbdkit-blocksize-filter(1), nbdkit-blocksize-policy-filter(1),
601       nbdkit-cache-filter(1), nbdkit-cacheextents-filter(1),
602       nbdkit-checkwrite-filter(1), nbdkit-cow-filter(1),
603       nbdkit-ddrescue-filter(1), nbdkit-delay-filter(1),
604       nbdkit-error-filter(1), nbdkit-exitlast-filter(1),
605       nbdkit-exitwhen-filter(1), nbdkit-exportname-filter(1),
606       nbdkit-ext2-filter(1), nbdkit-extentlist-filter(1),
607       nbdkit-evil-filter(1), nbdkit-fua-filter(1), nbdkit-gzip-filter(1),
608       nbdkit-ip-filter(1), nbdkit-limit-filter(1), nbdkit-log-filter(1),
609       nbdkit-luks-filter(1), nbdkit-multi-conn-filter(1),
610       nbdkit-nocache-filter(1), nbdkit-noextents-filter(1),
611       nbdkit-nofilter-filter(1), nbdkit-noparallel-filter(1),
612       nbdkit-nozero-filter(1), nbdkit-offset-filter(1),
613       nbdkit-partition-filter(1), nbdkit-pause-filter(1),
614       nbdkit-protect-filter(1), nbdkit-qcow2dec-filter(1),
615       nbdkit-rate-filter(1), nbdkit-readahead-filter(1),
616       nbdkit-retry-filter(1), nbdkit-retry-request-filter(1),
617       nbdkit-scan-filter(1), nbdkit-stats-filter(1), nbdkit-swab-filter(1),
618       nbdkit-tar-filter(1), nbdkit-tls-fallback-filter(1),
619       nbdkit-truncate-filter(1), nbdkit-xz-filter(1) .
620
621   For developers
622       nbdkit-plugin(3), nbdkit-filter(3).
623
624   Writing plugins in other programming languages
625       nbdkit-cc-plugin(3), nbdkit-golang-plugin(3), nbdkit-lua-plugin(3),
626       nbdkit-ocaml-plugin(3), nbdkit-perl-plugin(3), nbdkit-python-plugin(3),
627       nbdkit-ruby-plugin(3), nbdkit-rust-plugin(3), nbdkit-sh-plugin(3),
628       nbdkit-tcl-plugin(3) .
629
630   Release notes for previous releases of nbdkit
631       nbdkit-release-notes-1.36(1), nbdkit-release-notes-1.34(1),
632       nbdkit-release-notes-1.32(1), nbdkit-release-notes-1.30(1),
633       nbdkit-release-notes-1.28(1), nbdkit-release-notes-1.26(1),
634       nbdkit-release-notes-1.24(1), nbdkit-release-notes-1.22(1),
635       nbdkit-release-notes-1.20(1), nbdkit-release-notes-1.18(1),
636       nbdkit-release-notes-1.16(1), nbdkit-release-notes-1.14(1),
637       nbdkit-release-notes-1.12(1), nbdkit-release-notes-1.10(1),
638       nbdkit-release-notes-1.8(1), nbdkit-release-notes-1.6(1),
639       nbdkit-release-notes-1.4(1).
640
641   NBD clients
642       guestfish(1), libnbd(3), nbd-client(1), nbdcopy(1), nbdfuse(1),
643       nbdinfo(1), nbdsh(1), qemu(1).
644
645   nbdkit links
646       http://gitlab.com/nbdkit/nbdkit — Source code.
647
648   Other NBD servers
649       qemu-nbd(1), nbd-server(1), https://github.com/bignaux/lwNBD,
650       https://bitbucket.org/hirofuchi/xnbd.
651
652   Documentation for the NBD protocol
653       https://github.com/NetworkBlockDevice/nbd/blob/master/doc/proto.md,
654       https://nbd.sourceforge.io/.
655
656   Similar protocols
657       https://en.wikipedia.org/wiki/iSCSI,
658       https://en.wikipedia.org/wiki/ATA_over_Ethernet,
659       https://en.wikipedia.org/wiki/Fibre_Channel_over_Ethernet.
660
661   Other manual pages of interest
662       gnutls_priority_init(3), qemu-img(1), psktool(1), systemd.socket(5).
663

AUTHORS

665       Eric Blake
666
667       Laszlo Ersek
668
669       Richard W.M. Jones
670
671       Yann E. MORIN
672
673       Nikolaus Rath
674
675       François Revol
676
677       Nir Soffer
678
679       Alan Somers
680
681       Pino Toscano
682
684       Copyright Red Hat
685

LICENSE

687       Redistribution and use in source and binary forms, with or without
688       modification, are permitted provided that the following conditions are
689       met:
690
691       •   Redistributions of source code must retain the above copyright
692           notice, this list of conditions and the following disclaimer.
693
694       •   Redistributions in binary form must reproduce the above copyright
695           notice, this list of conditions and the following disclaimer in the
696           documentation and/or other materials provided with the
697           distribution.
698
699       •   Neither the name of Red Hat nor the names of its contributors may
700           be used to endorse or promote products derived from this software
701           without specific prior written permission.
702
703       THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND ANY
704       EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
705       IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
706       PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR CONTRIBUTORS BE
707       LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
708       CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
709       SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
710       BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
711       WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
712       OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
713       ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
714
715
716
717nbdkit-1.36.2                     2023-11-26                         nbdkit(1)
Impressum