1a4340e7cSPierrick Bouvier.. _qemu-nbd: 2a4340e7cSPierrick Bouvier 38a1f7d29SPaolo Bonzini===================================== 487c0868fSPeter MaydellQEMU Disk Network Block Device Server 587c0868fSPeter Maydell===================================== 687c0868fSPeter Maydell 787c0868fSPeter MaydellSynopsis 887c0868fSPeter Maydell-------- 987c0868fSPeter Maydell 1087c0868fSPeter Maydell**qemu-nbd** [*OPTION*]... *filename* 1187c0868fSPeter Maydell 1287c0868fSPeter Maydell**qemu-nbd** -L [*OPTION*]... 1387c0868fSPeter Maydell 1487c0868fSPeter Maydell**qemu-nbd** -d *dev* 1587c0868fSPeter Maydell 1687c0868fSPeter MaydellDescription 1787c0868fSPeter Maydell----------- 1887c0868fSPeter Maydell 1987c0868fSPeter MaydellExport a QEMU disk image using the NBD protocol. 2087c0868fSPeter Maydell 2187c0868fSPeter MaydellOther uses: 2287c0868fSPeter Maydell 2387c0868fSPeter Maydell- Bind a /dev/nbdX block device to a QEMU server (on Linux). 2487c0868fSPeter Maydell- As a client to query exports of a remote NBD server. 2587c0868fSPeter Maydell 2687c0868fSPeter MaydellOptions 2787c0868fSPeter Maydell------- 2887c0868fSPeter Maydell 2987c0868fSPeter Maydell.. program:: qemu-nbd 3087c0868fSPeter Maydell 3187c0868fSPeter Maydell*filename* is a disk image filename, or a set of block 32a2c2d44aSEric Blakedriver options if :option:`--image-opts` is specified. 3387c0868fSPeter Maydell 3487c0868fSPeter Maydell*dev* is an NBD device. 3587c0868fSPeter Maydell 368f75cae2SRao, Lei.. option:: --object type,id=ID,... 3787c0868fSPeter Maydell 3887c0868fSPeter Maydell Define a new instance of the *type* object class identified by *ID*. 3987c0868fSPeter Maydell See the :manpage:`qemu(1)` manual page for full details of the properties 4087c0868fSPeter Maydell supported. The common object types that it makes sense to define are the 4187c0868fSPeter Maydell ``secret`` object, which is used to supply passwords and/or encryption 4287c0868fSPeter Maydell keys, and the ``tls-creds`` object, which is used to supply TLS 43c5ba6219SPhilippe Mathieu-Daudé credentials for the ``qemu-nbd`` server or client. 4487c0868fSPeter Maydell 4587c0868fSPeter Maydell.. option:: -p, --port=PORT 4687c0868fSPeter Maydell 4787c0868fSPeter Maydell TCP port to listen on as a server, or connect to as a client 4887c0868fSPeter Maydell (default ``10809``). 4987c0868fSPeter Maydell 5087c0868fSPeter Maydell.. option:: -o, --offset=OFFSET 5187c0868fSPeter Maydell 5287c0868fSPeter Maydell The offset into the image. 5387c0868fSPeter Maydell 5487c0868fSPeter Maydell.. option:: -b, --bind=IFACE 5587c0868fSPeter Maydell 5687c0868fSPeter Maydell The interface to bind to as a server, or connect to as a client 5787c0868fSPeter Maydell (default ``0.0.0.0``). 5887c0868fSPeter Maydell 5987c0868fSPeter Maydell.. option:: -k, --socket=PATH 6087c0868fSPeter Maydell 6187c0868fSPeter Maydell Use a unix socket with path *PATH*. 6287c0868fSPeter Maydell 6387c0868fSPeter Maydell.. option:: --image-opts 6487c0868fSPeter Maydell 6587c0868fSPeter Maydell Treat *filename* as a set of image options, instead of a plain 6687c0868fSPeter Maydell filename. If this flag is specified, the ``-f`` flag should 6787c0868fSPeter Maydell not be used, instead the :option:`format=` option should be set. 6887c0868fSPeter Maydell 6987c0868fSPeter Maydell.. option:: -f, --format=FMT 7087c0868fSPeter Maydell 7187c0868fSPeter Maydell Force the use of the block driver for format *FMT* instead of 7287c0868fSPeter Maydell auto-detecting. 7387c0868fSPeter Maydell 7487c0868fSPeter Maydell.. option:: -r, --read-only 7587c0868fSPeter Maydell 7687c0868fSPeter Maydell Export the disk as read-only. 7787c0868fSPeter Maydell 78dbc7b014SEric Blake.. option:: -A, --allocation-depth 79dbc7b014SEric Blake 80dbc7b014SEric Blake Expose allocation depth information via the 81dbc7b014SEric Blake ``qemu:allocation-depth`` metadata context accessible through 82dbc7b014SEric Blake NBD_OPT_SET_META_CONTEXT. 83dbc7b014SEric Blake 8487c0868fSPeter Maydell.. option:: -B, --bitmap=NAME 8587c0868fSPeter Maydell 8687c0868fSPeter Maydell If *filename* has a qcow2 persistent bitmap *NAME*, expose 87dbc7b014SEric Blake that bitmap via the ``qemu:dirty-bitmap:NAME`` metadata context 8887c0868fSPeter Maydell accessible through NBD_OPT_SET_META_CONTEXT. 8987c0868fSPeter Maydell 9087c0868fSPeter Maydell.. option:: -s, --snapshot 9187c0868fSPeter Maydell 9287c0868fSPeter Maydell Use *filename* as an external snapshot, create a temporary 9387c0868fSPeter Maydell file with ``backing_file=``\ *filename*, redirect the write to 9487c0868fSPeter Maydell the temporary one. 9587c0868fSPeter Maydell 9687c0868fSPeter Maydell.. option:: -l, --load-snapshot=SNAPSHOT_PARAM 9787c0868fSPeter Maydell 9887c0868fSPeter Maydell Load an internal snapshot inside *filename* and export it 9987c0868fSPeter Maydell as an read-only device, SNAPSHOT_PARAM format is 10087c0868fSPeter Maydell ``snapshot.id=[ID],snapshot.name=[NAME]`` or ``[ID_OR_NAME]`` 10187c0868fSPeter Maydell 10287c0868fSPeter Maydell.. option:: --cache=CACHE 10387c0868fSPeter Maydell 10409615257SNir Soffer The cache mode to be used with the file. Valid values are: 10509615257SNir Soffer ``none``, ``writeback`` (the default), ``writethrough``, 10609615257SNir Soffer ``directsync`` and ``unsafe``. See the documentation of 10709615257SNir Soffer the emulator's ``-drive cache=...`` option for more info. 10887c0868fSPeter Maydell 10987c0868fSPeter Maydell.. option:: -n, --nocache 11087c0868fSPeter Maydell 11187c0868fSPeter Maydell Equivalent to :option:`--cache=none`. 11287c0868fSPeter Maydell 11387c0868fSPeter Maydell.. option:: --aio=AIO 11487c0868fSPeter Maydell 1157680274dSAarushi Mehta Set the asynchronous I/O mode between ``threads`` (the default), 1167680274dSAarushi Mehta ``native`` (Linux only), and ``io_uring`` (Linux 5.1+). 11787c0868fSPeter Maydell 11887c0868fSPeter Maydell.. option:: --discard=DISCARD 11987c0868fSPeter Maydell 12087c0868fSPeter Maydell Control whether ``discard`` (also known as ``trim`` or ``unmap``) 12187c0868fSPeter Maydell requests are ignored or passed to the filesystem. *DISCARD* is one of 12287c0868fSPeter Maydell ``ignore`` (or ``off``), ``unmap`` (or ``on``). The default is 12387c0868fSPeter Maydell ``ignore``. 12487c0868fSPeter Maydell 12587c0868fSPeter Maydell.. option:: --detect-zeroes=DETECT_ZEROES 12687c0868fSPeter Maydell 12787c0868fSPeter Maydell Control the automatic conversion of plain zero writes by the OS to 12887c0868fSPeter Maydell driver-specific optimized zero write commands. *DETECT_ZEROES* is one of 12987c0868fSPeter Maydell ``off``, ``on``, or ``unmap``. ``unmap`` 13087c0868fSPeter Maydell converts a zero write to an unmap operation and can only be used if 13187c0868fSPeter Maydell *DISCARD* is set to ``unmap``. The default is ``off``. 13287c0868fSPeter Maydell 13387c0868fSPeter Maydell.. option:: -c, --connect=DEV 13487c0868fSPeter Maydell 13587c0868fSPeter Maydell Connect *filename* to NBD device *DEV* (Linux only). 13687c0868fSPeter Maydell 13787c0868fSPeter Maydell.. option:: -d, --disconnect 13887c0868fSPeter Maydell 13987c0868fSPeter Maydell Disconnect the device *DEV* (Linux only). 14087c0868fSPeter Maydell 14187c0868fSPeter Maydell.. option:: -e, --shared=NUM 14287c0868fSPeter Maydell 14387c0868fSPeter Maydell Allow up to *NUM* clients to share the device (default 14458a6fdccSEric Blake ``1``), 0 for unlimited. 14587c0868fSPeter Maydell 14687c0868fSPeter Maydell.. option:: -t, --persistent 14787c0868fSPeter Maydell 14887c0868fSPeter Maydell Don't exit on the last connection. 14987c0868fSPeter Maydell 15087c0868fSPeter Maydell.. option:: -x, --export-name=NAME 15187c0868fSPeter Maydell 15287c0868fSPeter Maydell Set the NBD volume export name (default of a zero-length string). 15387c0868fSPeter Maydell 15487c0868fSPeter Maydell.. option:: -D, --description=DESCRIPTION 15587c0868fSPeter Maydell 15687c0868fSPeter Maydell Set the NBD volume export description, as a human-readable 15787c0868fSPeter Maydell string. 15887c0868fSPeter Maydell 159*617017f8SEric Blake.. option:: --handshake-limit=N 160*617017f8SEric Blake 161*617017f8SEric Blake Set the timeout for a client to successfully complete its handshake 162*617017f8SEric Blake to N seconds (default 10), or 0 for no limit. 163*617017f8SEric Blake 16487c0868fSPeter Maydell.. option:: -L, --list 16587c0868fSPeter Maydell 16687c0868fSPeter Maydell Connect as a client and list all details about the exports exposed by 16787c0868fSPeter Maydell a remote NBD server. This enables list mode, and is incompatible 16887c0868fSPeter Maydell with options that change behavior related to a specific export (such as 16987c0868fSPeter Maydell :option:`--export-name`, :option:`--offset`, ...). 17087c0868fSPeter Maydell 17187c0868fSPeter Maydell.. option:: --tls-creds=ID 17287c0868fSPeter Maydell 17387c0868fSPeter Maydell Enable mandatory TLS encryption for the server by setting the ID 174a2c2d44aSEric Blake of the TLS credentials object previously created with the 175a2c2d44aSEric Blake :option:`--object` option; or provide the credentials needed for 176a2c2d44aSEric Blake connecting as a client in list mode. 17787c0868fSPeter Maydell 178003b2b25SDaniel P. Berrangé.. option:: --tls-hostname=hostname 179003b2b25SDaniel P. Berrangé 180003b2b25SDaniel P. Berrangé When validating an x509 certificate received over a TLS connection, 181003b2b25SDaniel P. Berrangé the hostname that the NBD client used to connect will be checked 182003b2b25SDaniel P. Berrangé against information in the server provided certificate. Sometimes 183003b2b25SDaniel P. Berrangé it might be required to override the hostname used to perform this 184003b2b25SDaniel P. Berrangé check. For example, if the NBD client is using a tunnel from localhost 185a2c2d44aSEric Blake to connect to the remote server, the :option:`--tls-hostname` option should 186003b2b25SDaniel P. Berrangé be used to set the officially expected hostname of the remote NBD 187003b2b25SDaniel P. Berrangé server. This can also be used if accessing NBD over a UNIX socket 188003b2b25SDaniel P. Berrangé where there is no inherent hostname available. This is only permitted 189a2c2d44aSEric Blake when acting as a NBD client with the :option:`--list` option. 190003b2b25SDaniel P. Berrangé 19187c0868fSPeter Maydell.. option:: --fork 19287c0868fSPeter Maydell 19387c0868fSPeter Maydell Fork off the server process and exit the parent once the server is running. 19487c0868fSPeter Maydell 19587c0868fSPeter Maydell.. option:: --pid-file=PATH 19687c0868fSPeter Maydell 19787c0868fSPeter Maydell Store the server's process ID in the given file. 19887c0868fSPeter Maydell 19987c0868fSPeter Maydell.. option:: --tls-authz=ID 20087c0868fSPeter Maydell 20187c0868fSPeter Maydell Specify the ID of a qauthz object previously created with the 20287c0868fSPeter Maydell :option:`--object` option. This will be used to authorize connecting users 20387c0868fSPeter Maydell against their x509 distinguished name. 20487c0868fSPeter Maydell 20587c0868fSPeter Maydell.. option:: -v, --verbose 20687c0868fSPeter Maydell 20735e087deSDenis V. Lunev Display extra debugging information. This option also keeps the original 20835e087deSDenis V. Lunev *STDERR* stream open if the ``qemu-nbd`` process is daemonized due to 20935e087deSDenis V. Lunev other options like :option:`--fork` or :option:`-c`. 21087c0868fSPeter Maydell 21187c0868fSPeter Maydell.. option:: -h, --help 21287c0868fSPeter Maydell 21387c0868fSPeter Maydell Display this help and exit. 21487c0868fSPeter Maydell 21587c0868fSPeter Maydell.. option:: -V, --version 21687c0868fSPeter Maydell 21787c0868fSPeter Maydell Display version information and exit. 21887c0868fSPeter Maydell 21987c0868fSPeter Maydell.. option:: -T, --trace [[enable=]PATTERN][,events=FILE][,file=FILE] 22087c0868fSPeter Maydell 221bb43ee6cSPeter Maydell .. include:: ../qemu-option-trace.rst.inc 22287c0868fSPeter Maydell 22387c0868fSPeter MaydellExamples 22487c0868fSPeter Maydell-------- 22587c0868fSPeter Maydell 22687c0868fSPeter MaydellStart a server listening on port 10809 that exposes only the 22787c0868fSPeter Maydellguest-visible contents of a qcow2 file, with no TLS encryption, and 22887c0868fSPeter Maydellwith the default export name (an empty string). The command is 22987c0868fSPeter Maydellone-shot, and will block until the first successful client 23087c0868fSPeter Maydelldisconnects: 23187c0868fSPeter Maydell 23287c0868fSPeter Maydell:: 23387c0868fSPeter Maydell 23487c0868fSPeter Maydell qemu-nbd -f qcow2 file.qcow2 23587c0868fSPeter Maydell 23687c0868fSPeter MaydellStart a long-running server listening with encryption on port 10810, 2372d2e4843SThomas Huthand allow clients with a specific X.509 certificate to connect to 23887c0868fSPeter Maydella 1 megabyte subset of a raw file, using the export name 'subset': 23987c0868fSPeter Maydell 24087c0868fSPeter Maydell:: 24187c0868fSPeter Maydell 24287c0868fSPeter Maydell qemu-nbd \ 24387c0868fSPeter Maydell --object tls-creds-x509,id=tls0,endpoint=server,dir=/path/to/qemutls \ 24487c0868fSPeter Maydell --object 'authz-simple,id=auth0,identity=CN=laptop.example.com,,\ 24587c0868fSPeter Maydell O=Example Org,,L=London,,ST=London,,C=GB' \ 24687c0868fSPeter Maydell --tls-creds tls0 --tls-authz auth0 \ 24787c0868fSPeter Maydell -t -x subset -p 10810 \ 24887c0868fSPeter Maydell --image-opts driver=raw,offset=1M,size=1M,file.driver=file,file.filename=file.raw 24987c0868fSPeter Maydell 2500bc16997SEric BlakeServe a read-only copy of a guest image over a Unix socket with as 2510bc16997SEric Blakemany as 5 simultaneous readers, with a persistent process forked as a 2520bc16997SEric Blakedaemon: 25387c0868fSPeter Maydell 25487c0868fSPeter Maydell:: 25587c0868fSPeter Maydell 25687c0868fSPeter Maydell qemu-nbd --fork --persistent --shared=5 --socket=/path/to/sock \ 2570bc16997SEric Blake --read-only --format=qcow2 file.qcow2 25887c0868fSPeter Maydell 25987c0868fSPeter MaydellExpose the guest-visible contents of a qcow2 file via a block device 26087c0868fSPeter Maydell/dev/nbd0 (and possibly creating /dev/nbd0p1 and friends for 26187c0868fSPeter Maydellpartitions found within), then disconnect the device when done. 262c5ba6219SPhilippe Mathieu-DaudéAccess to bind ``qemu-nbd`` to a /dev/nbd device generally requires root 26387c0868fSPeter Maydellprivileges, and may also require the execution of ``modprobe nbd`` 26487c0868fSPeter Maydellto enable the kernel NBD client module. *CAUTION*: Do not use 26587c0868fSPeter Maydellthis method to mount filesystems from an untrusted guest image - a 26687c0868fSPeter Maydellmalicious guest may have prepared the image to attempt to trigger 26787c0868fSPeter Maydellkernel bugs in partition probing or file system mounting. 26887c0868fSPeter Maydell 26987c0868fSPeter Maydell:: 27087c0868fSPeter Maydell 27187c0868fSPeter Maydell qemu-nbd -c /dev/nbd0 -f qcow2 file.qcow2 27287c0868fSPeter Maydell qemu-nbd -d /dev/nbd0 27387c0868fSPeter Maydell 27487c0868fSPeter MaydellQuery a remote server to see details about what export(s) it is 27587c0868fSPeter Maydellserving on port 10809, and authenticating via PSK: 27687c0868fSPeter Maydell 27787c0868fSPeter Maydell:: 27887c0868fSPeter Maydell 27987c0868fSPeter Maydell qemu-nbd \ 28087c0868fSPeter Maydell --object tls-creds-psk,id=tls0,dir=/tmp/keys,username=eblake,endpoint=client \ 28187c0868fSPeter Maydell --tls-creds tls0 -L -b remote.example.com 28287c0868fSPeter Maydell 28387c0868fSPeter MaydellSee also 28487c0868fSPeter Maydell-------- 28587c0868fSPeter Maydell 28687c0868fSPeter Maydell:manpage:`qemu(1)`, :manpage:`qemu-img(1)` 287