Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
nbdkit-client(1)		     NBDKIT			nbdkit-client(1)

NAME
     nbdkit-client - how to mount NBD filesystems on a client machine

DESCRIPTION
     For NBD exports that contain filesystems there are several approaches to
     mounting them on a physical machine.

     For virtual machines, see the section "ATTACHING NBD DEVICES TO A VIRTUAL
     MACHINE" at the end.

   Easy mounting at boot time
     For simple setups the following method is the easiest way to get an NBD
     filesystem to mount at boot.  Create or edit /etc/rc.local or
     /etc/rc.d/rc.local:

      #!/bin/sh -
      nm-online
      modprobe nbd
      nbd-client server /dev/nbd0
      mount /dev/nbd0 /mnt

   Mounting using systemd mount points
     You can use systemd mount points to mount NBD filesystems at boot and/or on
     demand.

     Set up an nbdtab(5) mapping.  If /etc/nbdtab doesn't exist, then create it
     first.  Add this line:

      nbd0 server / bs=512,persist

     As a workaround for https://github.com/NetworkBlockDevice/nbd/issues/91 you
     must currently modify the nbd@.service file:

      # cp /usr/lib/systemd/system/nbd@.service /etc/systemd/system/
      # vi /etc/systemd/system/nbd@.service

     and edit or create these settings in the "[Service]" section:

      [Service]
      Type=oneshot
      RemainAfterExit=yes
      ExecStart=/usr/sbin/nbd-client %i
      ExecStop=/usr/sbin/nbd-client -d /dev/%i

     Finally create a systemd mount file called /etc/systemd/system/mnt.mount:

      [Unit]
      Requires=nbd@nbd0.service
      [Mount]
      What=/dev/nbd0
      Where=/mnt
      Type=ext4

     You can either reboot now or do:

      # systemctl start mnt.mount

     Other systemd services which need this mount point can depend on this mount
     unit.

LOADING THE LINUX KERNEL MODULE
     The native Linux NBD client is a kernel module called "nbd.ko".  It is not
     always loaded on demand.  To ensure it is loaded you may need to do:

      # echo nbd > /etc/modules-load.d/nbd.conf

     This will not take effect until you reboot, so to load it right away do:

      # modprobe nbd

   RHEL and nbd.ko
     Red Hat Enterprise Linux 8 enabled the "nbd.ko" Linux kernel module but
     only for Unix domain sockets (ie. local connections).  This means you can-
     not connect to an NBD server over a TCP network.  This also affects Linux
     distributions derived from RHEL like CentOS, Alma and others.

     This does not affect use of nbdkit as an NBD server, only the Linux kernel
     as an NBD client.	Userspace Linux clients such as libnbd(3) tools will
     work.

ATTACHING NBD DEVICES TO A VIRTUAL MACHINE
     Notice in these cases that the virtual machine does not use the NBD proto-
     col directly.  Instead, the virtual machine sees a local disk.  Thus there
     is no need to enable an NBD client or kernel module inside the virtual ma-
     chine.  Behind the scenes the hypervisor (eg. Qemu) converts the local disk
     into an NBD connection.

   Using libvirt XML
     Use the virsh(1) "edit" subcommand to modify the libvirt XML of a virtual
     machine:

      # virsh edit guest-name

     The <disk> element should be placed in the <devices> section of the XML,
     after any other <disk> elements.  For more information about libvirt XML
     see https://libvirt.org/formatdomain.html

     For NBD devices served over a Unix domain socket (nbdkit -U option) add:

      <disk device="disk" type="network">
	<source protocol="nbd">
	  <host transport="unix" socket="/path/to/unix.sock"/>
	</source>
	<target dev="vdb" bus="virtio"/>
	<driver name="qemu" type="raw"/>
      </disk>

     If using a TCP socket (nbdkit -p option):

      <disk device="disk" type="network">
	<source protocol="nbd">
	  <host name="localhost" port="10809"/>
	</source>
	<target dev="vdb" bus="virtio"/>
	<driver name="qemu" type="raw"/>
      </disk>

   Using qemu directly
     Qemu can open NBD URIs.  To get nbdkit to show the URI it is serving use
     the --print-uri option.

     For example:

      $ nbdkit -f -U - --print-uri memory 1G
      nbd+unix://?socket=/tmp/nbdkitTV6kS8/socket
      Shell-quoted URI: "nbd+unix://?socket=/tmp/nbdkitTV6kS8/socket"
      Command to query the NBD endpoint:
	nbdinfo "nbd+unix://?socket=/tmp/nbdkitTV6kS8/socket"

      $ qemu-system-x86_64 [...] \
	  -drive file="nbd+unix://?socket=/tmp/nbdkitTV6kS8/socket",format=raw,if=virtio

SEE ALSO
     nbdkit(1), nbdkit-loop(1), nbdkit-service(1), nbd-client(8), nbdtab(5),
     systemd(1), systemd.mount(5), virsh(1), https://libvirt.org/formatdo-
     main.html.

AUTHORS
     Richard W.M. Jones

COPYRIGHT
     Copyright Red Hat

LICENSE
     Redistribution and use in source and binary forms, with or without modifi-
     cation, are permitted provided that the following conditions are met:

     *	 Redistributions of source code must retain the above copyright notice,
	 this list of conditions and the following disclaimer.

     *	 Redistributions in binary form must reproduce the above copyright no-
	 tice, this list of conditions and the following disclaimer in the docu-
	 mentation and/or other materials provided with the distribution.

     *	 Neither the name of Red Hat nor the names of its contributors may be
	 used to endorse or promote products derived from this software without
	 specific prior written permission.

     THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND ANY EX-
     PRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DIS-
     CLAIMED. IN NO EVENT SHALL RED HAT OR CONTRIBUTORS BE LIABLE FOR ANY DI-
     RECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SER-
     VICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
     CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABIL-
     ITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
     THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAM-
     AGE.

nbdkit-1.46.2			   2026-08-30			nbdkit-client(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=nbdkit-client&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help