nbdkit-file-plugin - Man Page

nbdkit file plugin

Synopsis

 nbdkit file [file=]FILENAME
             [cache=default|none] [fadvise=normal|random|sequential]

Description

nbdkit-file-plugin is a file serving plugin for nbdkit(1).

It serves the named FILENAME over NBD.  Local block devices (eg. /dev/sda) may also be served.

Parameters

cache=default
cache=none

Using cache=none tries to prevent the kernel from keeping parts of the file that have already been read or written in the page cache.

fadvise=normal
fadvise=random
fadvise=sequential

This optional flag hints to the kernel that you will access the file normally, or in a random order, or sequentially.  The exact behaviour depends on your operating system, but for Linux using normal causes the kernel to read-ahead, sequential causes the kernel to read-ahead twice as much as normal, and random turns off read-ahead.  See also posix_fadvise(2).

The default is normal.

[file=]FILENAME

Serve the file named FILENAME.  A local block device name can also be used here.

This parameter is required.

file= is a magic config key and may be omitted in most cases. See “Magic parameters” in nbdkit(1).

Notes

Optimizing for random or sequential access

If you know in advance that the NBD client will access the file randomly or only sequentially then you can hint that to the kernel using:

 nbdkit file disk.img fadvise=random
 nbdkit file disk.img fadvise=sequential

As described in the “Parameters” section above, on Linux this disables or increases the amount of read-ahead that the kernel does.

Reducing evictions from the page cache

If the file is very large and you know the client will only read/write the file sequentially one time (eg for making a single copy or backup) then this will stop other processes from being evicted from the page cache:

 nbdkit file disk.img fadvise=sequential cache=none

Files on tmpfs

If you want to expose a file that resides on a file system known to have poor lseek(2) performance when searching for holes (tmpfs is known to be one such file system), you can use nbdkit-noextents-filter(1) to avoid the penalty of probing for holes.

Plugin --dump-plugin output

You can obtain extra information about how the file plugin was compiled by doing:

 nbdkit file --dump-plugin

Some of the fields which may appear are listed below.  Note these are for information only and may be changed or removed at any time in the future.

file_blksszget=yes
file_blkzeroout=yes

If both set, the plugin may be able to efficiently zero ranges of block devices, where the driver and block device itself supports this.

file_falloc_fl_punch_hole=yes

If set, the plugin may be able to punch holes (make sparse) files and block devices.

file_falloc_fl_zero_range=yes

If set, the plugin may be able to efficiently zero ranges of files and block devices.

Old rdelay and wdelay parameters.

Before nbdkit supported filters (< 1.2) this plugin had extra parameters rdelay and wdelay to insert delays.  These parameters have been moved to nbdkit-delay-filter(1).  Modify the command line to add --filter=delay in order to use these parameters.

Concatenating files

To concatenate and export multiple files, use nbdkit-split-plugin(1).

Debug Flag

-D file.zero=1

This enables very verbose debugging of the NBD zero request.  This can be used to tell if the file plugin is able to zero ranges in the file or block device efficiently or not.

Files

$plugindir/nbdkit-file-plugin.so

The plugin.

Use nbdkit --dump-config to find the location of $plugindir.

Version

nbdkit-file-plugin first appeared in nbdkit 1.0.

See Also

nbdkit(1), nbdkit-plugin(3), nbdkit-split-plugin(1), nbdkit-partitioning-plugin(1), nbdkit-tmpdisk-plugin(1), nbdkit-fua-filter(1), nbdkit-noextents-filter(1).

Authors

Eric Blake

Nir Soffer

Richard W.M. Jones

License

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

THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 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 DAMAGE.

Referenced By

nbdkit(1), nbdkit-cache-filter(1), nbdkit-cow-filter(1), nbdkit-curl-plugin(1), nbdkit-ddrescue-filter(1), nbdkit-delay-filter(1), nbdkit-error-filter(1), nbdkit-eval-plugin(1), nbdkit-floppy-plugin(1), nbdkit-fua-filter(1), nbdkit-gzip-filter(1), nbdkit-iso-plugin(1), nbdkit-linuxdisk-plugin(1), nbdkit-log-filter(1), nbdkit-loop(1), nbdkit-memory-plugin(1), nbdkit-nocache-filter(1), nbdkit-noextents-filter(1), nbdkit-noparallel-filter(1), nbdkit-nozero-filter(1), nbdkit-offset-filter(1), nbdkit-partition-filter(1), nbdkit-partitioning-plugin(1), nbdkit-plugin(3), nbdkit-release-notes-1.6(1), nbdkit-split-plugin(1), nbdkit-streaming-plugin(1), nbdkit-swab-filter(1), nbdkit-tar-filter(1), nbdkit-tmpdisk-plugin(1), nbdkit-torrent-plugin(1), nbdkit-truncate-filter(1), nbdkit-xz-filter(1), virt-p2v(1).

2020-08-08 nbdkit-1.21.23