nbdkit-file-plugin(1) | NBDKIT | nbdkit-file-plugin(1) |
nbdkit-file-plugin - nbdkit file plugin
nbdkit file [file=]FILENAME [cache=default|none] [fadvise=normal|random|sequential]
nbdkit file dir=DIRECTORY
"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.
If you use the "dir" parameter the plugin works in a different mode where it serves files from the given "DIRECTORY", chosen by the client using the NBD export name.
Either file or dir must be given which controls the mode of the plugin, either serving a single file or the files in a directory.
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.
Serve all regular files and block devices located directly inside the directory named "DIRECTORY", including those found by following symbolic links. Other special files in the directory (such as subdirectories, pipes, or Unix sockets) are ignored.
When this mode is used, the file to be served is chosen by the export name passed by the client, where the client can request a list of available exports using NBD_OPT_LIST. A client that requests the default export ("") will be rejected. However, you can use nbdkit-exportname-filter(1) to adjust what export names the client sees or uses as a default. For security, when using directory mode, this plugin will not accept export names containing slash ("/").
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=" is a magic config key and may be omitted in most cases. See "Magic parameters" in nbdkit(1).
Serve the Windows volume specified by the device name. See: https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#win32-device-namespaces.
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.
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
Only use fadvise=sequential if reading, and the reads are mainly sequential.
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.
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.
This plugin supports sparse files on Windows (with hole punching). However for this to work the files must already have the sparse property, the plugin will not make existing files sparse. Use the "fsutil sparse" command to control the sparseness property of files.
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.
To concatenate and export multiple files, use nbdkit-split-plugin(1).
Use "nbdkit --dump-config" to find the location of $plugindir.
"nbdkit-file-plugin" first appeared in nbdkit 1.0.
nbdkit(1), nbdkit-plugin(3), nbdkit-split-plugin(1), nbdkit-partitioning-plugin(1), nbdkit-tmpdisk-plugin(1), nbdkit-exportname-filter(1), nbdkit-fua-filter(1), nbdkit-luks-filter(1), nbdkit-noextents-filter(1).
Eric Blake
Nir Soffer
Richard W.M. Jones
Copyright (C) 2013-2020 Red Hat Inc.
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.
2023-01-04 | nbdkit-1.32.5 |