From e75dcc9a71fd6ddfb64cbbeac59e1db432ea3660 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Mon, 11 Mar 2024 00:42:33 +0300 Subject: [PATCH] Add documentation for VitastorFS --- README-ru.md | 6 +- README.md | 8 +- docs/intro/features.en.md | 4 +- docs/intro/features.ru.md | 4 +- docs/intro/quickstart.en.md | 7 ++ docs/intro/quickstart.ru.md | 8 ++ docs/usage/nfs.en.md | 158 ++++++++++++++++++++++++++++------ docs/usage/nfs.ru.md | 163 ++++++++++++++++++++++++++++++------ 8 files changed, 294 insertions(+), 64 deletions(-) diff --git a/README-ru.md b/README-ru.md index 63b13963..3af0ec3b 100644 --- a/README-ru.md +++ b/README-ru.md @@ -6,8 +6,8 @@ Вернём былую скорость кластерному блочному хранилищу! -Vitastor - распределённая блочная SDS (программная СХД), прямой аналог Ceph RBD и -внутренних СХД популярных облачных провайдеров. Однако, в отличие от них, Vitastor +Vitastor - распределённая блочная и файловая SDS (программная СХД), прямой аналог Ceph RBD и CephFS, +а также внутренних СХД популярных облачных провайдеров. Однако, в отличие от них, Vitastor быстрый и при этом простой. Только пока маленький :-). Vitastor архитектурно похож на Ceph, что означает атомарность и строгую консистентность, @@ -63,7 +63,7 @@ Vitastor поддерживает QEMU-драйвер, протоколы NBD и - [fio](docs/usage/fio.ru.md) для тестов производительности - [NBD](docs/usage/nbd.ru.md) для монтирования ядром - [QEMU и qemu-img](docs/usage/qemu.ru.md) - - [NFS](docs/usage/nfs.ru.md)-прокси для VMWare и подобных + - [NFS](docs/usage/nfs.ru.md) кластерная файловая система и псевдо-ФС прокси - Производительность - [Понимание сути производительности](docs/performance/understanding.ru.md) - [Теоретический максимум](docs/performance/theoretical.ru.md) diff --git a/README.md b/README.md index a18e8999..f34b4590 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,9 @@ Make Clustered Block Storage Fast Again. -Vitastor is a distributed block SDS, direct replacement of Ceph RBD and internal SDS's -of public clouds. However, in contrast to them, Vitastor is fast and simple at the same time. -The only thing is it's slightly young :-). +Vitastor is a distributed block and file SDS, direct replacement of Ceph RBD and CephFS, +and also internal SDS's of public clouds. However, in contrast to them, Vitastor is fast +and simple at the same time. The only thing is it's slightly young :-). Vitastor is architecturally similar to Ceph which means strong consistency, primary-replication, symmetric clustering and automatic data distribution over any @@ -63,7 +63,7 @@ Read more details below in the documentation. - [fio](docs/usage/fio.en.md) for benchmarks - [NBD](docs/usage/nbd.en.md) for kernel mounts - [QEMU and qemu-img](docs/usage/qemu.en.md) - - [NFS](docs/usage/nfs.en.md) emulator for VMWare and similar + - [NFS](docs/usage/nfs.en.md) clustered file system and pseudo-FS proxy - Performance - [Understanding storage performance](docs/performance/understanding.en.md) - [Theoretical performance](docs/performance/theoretical.en.md) diff --git a/docs/intro/features.en.md b/docs/intro/features.en.md index f58afd19..432a5bad 100644 --- a/docs/intro/features.en.md +++ b/docs/intro/features.en.md @@ -14,6 +14,7 @@ - Basic part: highly-available block storage with symmetric clustering and no SPOF - [Performance](../performance/comparison1.en.md) ;-D +- [Cluster file system](../usage/nfs.en.md#vitastorfs) - [Multiple redundancy schemes](../config/pool.en.md#scheme): Replication, XOR n+1, Reed-Solomon erasure codes based on jerasure and ISA-L libraries with any number of data and parity drives in a group - Configuration via simple JSON data structures in etcd (parameters, pools and images) @@ -46,13 +47,12 @@ - [CSI plugin for Kubernetes](../installation/kubernetes.en.md) - [OpenStack support: Cinder driver, Nova and libvirt patches](../installation/openstack.en.md) - [Proxmox storage plugin and packages](../installation/proxmox.en.md) -- [Simplified NFS proxy for file-based image access emulation (suitable for VMWare)](../usage/nfs.en.md) +- [Simplified NFS proxy for file-based image access emulation (suitable for VMWare)](../usage/nfs.en.md#pseudo-fs) ## Roadmap The following features are planned for the future: -- File system - Control plane optimisation - Other administrative tools - Web GUI diff --git a/docs/intro/features.ru.md b/docs/intro/features.ru.md index 467b621c..7db765c4 100644 --- a/docs/intro/features.ru.md +++ b/docs/intro/features.ru.md @@ -14,6 +14,7 @@ - Базовая часть - надёжное кластерное блочное хранилище без единой точки отказа - [Производительность](../performance/comparison1.ru.md) ;-D +- [Кластерная файловая система](../usage/nfs.ru.md#vitastorfs) - [Несколько схем отказоустойчивости](../config/pool.ru.md#scheme): репликация, XOR n+1 (1 диск чётности), коды коррекции ошибок Рида-Соломона на основе библиотек jerasure и ISA-L с любым числом дисков данных и чётности в группе - Конфигурация через простые человекочитаемые JSON-структуры в etcd @@ -48,11 +49,10 @@ - [CSI-плагин для Kubernetes](../installation/kubernetes.ru.md) - [Базовая поддержка OpenStack: драйвер Cinder, патчи для Nova и libvirt](../installation/openstack.ru.md) - [Плагин для Proxmox](../installation/proxmox.ru.md) -- [Упрощённая NFS-прокси для эмуляции файлового доступа к образам (подходит для VMWare)](../usage/nfs.ru.md) +- [Упрощённая NFS-прокси для эмуляции файлового доступа к образам (подходит для VMWare)](../usage/nfs.ru.md#псевдо-фс) ## Планы развития -- Файловая система - Оптимизация слоя управления - Другие инструменты администрирования - Web-интерфейс diff --git a/docs/intro/quickstart.en.md b/docs/intro/quickstart.en.md index 7209ab10..f1360adb 100644 --- a/docs/intro/quickstart.en.md +++ b/docs/intro/quickstart.en.md @@ -14,6 +14,7 @@ - [Check cluster status](#check-cluster-status) - [Create an image](#create-an-image) - [Install plugins](#install-plugins) +- [Create VitastorFS](#create-vitastorfs) ## Preparation @@ -114,3 +115,9 @@ After that, you can [run benchmarks](../usage/fio.en.md) or [start QEMU manually - [Proxmox](../installation/proxmox.en.md) - [OpenStack](../installation/openstack.en.md) - [Kubernetes CSI](../installation/kubernetes.en.md) + +## Create VitastorFS + +If you want to use clustered file system in addition to VM or container images: + +- [Follow the instructions here](../usage/nfs.en.md#vitastorfs) diff --git a/docs/intro/quickstart.ru.md b/docs/intro/quickstart.ru.md index 2585bf02..04359224 100644 --- a/docs/intro/quickstart.ru.md +++ b/docs/intro/quickstart.ru.md @@ -14,6 +14,7 @@ - [Проверьте состояние кластера](#проверьте-состояние-кластера) - [Создайте образ](#создайте-образ) - [Установите плагины](#установите-плагины) +- [Создайте VitastorFS](#создайте-vitastorfs) ## Подготовка @@ -116,3 +117,10 @@ vitastor-cli create -s 10G testimg - [Proxmox](../installation/proxmox.ru.md) - [OpenStack](../installation/openstack.ru.md) - [Kubernetes CSI](../installation/kubernetes.ru.md) + +## Создайте VitastorFS + +Если вы хотите использовать не только блочные образы виртуальных машин или контейнеров, +а также кластерную файловую систему, то: + +- [Следуйте инструкциям](../usage/nfs.en.md#vitastorfs) diff --git a/docs/usage/nfs.en.md b/docs/usage/nfs.en.md index 92cdf290..294e6a58 100644 --- a/docs/usage/nfs.en.md +++ b/docs/usage/nfs.en.md @@ -4,42 +4,146 @@ [Читать на русском](nfs.ru.md) -# NFS +# VitastorFS and pseudo-FS -Vitastor has a simplified NFS 3.0 proxy for file-based image access emulation. It's not -suitable as a full-featured file system, at least because all file/image metadata is stored -in etcd and kept in memory all the time - thus you can't put a lot of files in it. +Vitastor has two file system implementations. Both can be used via `vitastor-nfs`. -However, NFS proxy is totally fine as a method to provide VM image access and allows to -plug Vitastor into, for example, VMWare. It's important to note that for VMWare it's a much -better access method than iSCSI, because with iSCSI we'd have to put all VM images into one -Vitastor image exported as a LUN to VMWare and formatted with VMFS. VMWare doesn't use VMFS -over NFS. +Commands: +- [mount](#mount) +- [start](#start) -NFS proxy is stateless if you use immediate_commit=all mode (for SSD with capacitors or -HDDs with disabled cache), so you can run multiple NFS proxies and use a network load -balancer or any failover method you want to in that case. +## Pseudo-FS -vitastor-nfs usage: +Simplified pseudo-FS proxy is used for file-based image access emulation. It's not +suitable as a full-featured file system: it lacks a lot of FS features, it stores +all file/image metadata in memory and in etcd. So it's fine for hundreds or thousands +of large files/images, but not for millions. + +Pseudo-FS proxy is intended for environments where other block volume access methods +can't be used or impose additional restrictions - for example, VMWare. NFS is better +for VMWare than, for example, iSCSI, because with iSCSI, VMWare puts all VM images +into one large shared block image in its own VMFS file system, and with NFS, VMWare +doesn't use VMFS and puts each VM disk in a regular file which is equal to one +Vitastor block image, just as originally intended. + +To use Vitastor pseudo-FS locally, run `vitastor-nfs mount --block /mnt/vita`. + +Also you can start the network server: ``` -vitastor-nfs [STANDARD OPTIONS] [OTHER OPTIONS] - ---subdir export images prefixed / (default empty - export all images) ---portmap 0 do not listen on port 111 (portmap/rpcbind, requires root) ---bind bind service to address (default 0.0.0.0) ---nfspath set NFS export path to (default is /) ---port use port for NFS services (default is 2049) ---pool use as default pool for new files (images) ---foreground 1 stay in foreground, do not daemonize +vitastor-nfs start --block --etcd_address 192.168.5.10:2379 --portmap 0 --port 2050 --pool testpool ``` -Example start and mount commands (etcd_address is optional): +To mount the FS exported by this server, run: ``` -vitastor-nfs --etcd_address 192.168.5.10:2379 --portmap 0 --port 2050 --pool testpool +mount server:/ /mnt/ -o port=2050,mountport=2050,nfsvers=3,soft,nolock,tcp ``` -``` -mount localhost:/ /mnt/ -o port=2050,mountport=2050,nfsvers=3,soft,nolock,tcp -``` +## VitastorFS + +VitastorFS is a full-featured clustered (Read-Write-Many) file system. It supports most POSIX +features like hierarchical organization, symbolic links, hard links, quick renames and so on. + +VitastorFS metadata is stored in a Parallel Optimistic B-Tree key-value database, +implemented over a regular Vitastor block volume. Directory entries and inodes +are stored in a simple human-readable JSON format in the B-Tree. `vitastor-kv` tool +can be used to inspect the database. + +To use VitastorFS: + +1. Create a pool or choose an existing empty pool for FS data +2. Create an image for FS metadata, preferably in a faster (SSD or replica-HDD) pool, + but you can create it in the data pool too if you want (image size doesn't matter): + `vitastor-cli create -s 10G -p fastpool testfs` +3. Mark data pool as an FS pool: `vitastor-cli modify-pool --used-for-fs testfs data-pool` +4. Either mount the FS: `vitastor-nfs mount --fs testfs --pool data-pool /mnt/vita` +5. Or start the NFS server: `vitastor-nfs start --fs testfs --pool data-pool` + +### Supported POSIX features + +- Read-after-write semantics (read returns new data immediately after write) +- Linear and random read and write +- Writing outside current file size +- Hierarchical structure, immediate rename of files and directories +- File size change support (truncate) +- Permissions (chmod/chown) +- Flushing data to stable storage (if required) (fsync) +- Symbolic links +- Hard links +- Special files (devices, sockets, named pipes) +- File modification and attribute change time tracking (mtime and ctime) +- Modification time (mtime) and last access time (atime) change support (utimes) +- Correct handling of directory listing during file creation/deletion + +### Limitations + +POSIX features currently not implemented in VitastorFS: +- File locking is not supported +- Actually used space is not counted, so `du` always reports apparent file sizes + instead of actually allocated space +- Access times (`atime`) are not tracked (like `-o noatime`) +- Modification time (`mtime`) is updated lazily every second (like `-o lazytime`) + +Other notable missing features which should be addressed in the future: +- Defragmentation of "shared" inodes. Files smaller than pool object size (block_size + multiplied by data part count if pool is EC) are internally stored in large block + volumes sequentially, one after another, and leave garbage after deleting or resizing. + Defragmentator will be implemented to collect this garbage. +- Inode ID reuse. Currently inode IDs always grow, the limit is 2^48 inodes, so + in theory you may hit it if you create and delete a very large number of files +- Compaction of the key-value B-Tree. Current implementation never merges or deletes + B-Tree blocks, so B-Tree may become bloated over time. Currently you can + use `vitastor-kv dumpjson` & `loadjson` commands to recreate the index in such + situations. +- Filesystem check tool. VitastorFS doesn't have journal because it would impose a + severe performance hit, optimistic CAS-based transactions are used instead of it. + So, again, in theory an abnormal shutdown of the FS server may leave some garbage + in the DB. The FS is implemented is such way that this garbage doesn't affect its + function, but having a tool to clean it up still seems a right thing to do. + +## Horizontal scaling + +Linux NFS 3.0 client doesn't support built-in scaling or failover, i.e. you can't +specify multiple server addresses when mounting the FS. + +However, you can use any regular TCP load balancing over multiple NFS servers. +It's absolutely safe with `immediate_commit=all` and `client_enable_writeback=false` +settings, because Vitastor NFS proxy doesn't keep uncommitted data in memory +with these settings. But it may even work without `immediate_commit=all` because +the Linux NFS client repeats all uncommitted writes if it loses the connection. + +## Commands + +### mount + +`vitastor-nfs (--fs | --block) [-o ] mount ` + +Start local filesystem server and mount file system to . + +Use regular `umount ` to unmount the FS. + +The server will be automatically stopped when the FS is unmounted. + +| `-o|--options ` | Pass additional NFS mount options (ex.: -o async). | + +### start + +`vitastor-nfs (--fs | --block) start` + +Start network NFS server. Options: + +| `--bind ` | bind service to address (default 0.0.0.0) | +| `--port ` | use port for NFS services (default is 2049) | +| `--portmap 0` | do not listen on port 111 (portmap/rpcbind, requires root) | + +## Common options + +| `--fs ` | use VitastorFS with metadata in image | +| `--block` | use pseudo-FS presenting images as files | +| `--pool ` | use as default pool for new files | +| `--subdir ` | export instead of root directory | +| `--nfspath ` | set NFS export path to (default is /) | +| `--pidfile ` | write process ID to the specified file | +| `--logfile ` | log to the specified file | +| `--foreground 1` | stay in foreground, do not daemonize | diff --git a/docs/usage/nfs.ru.md b/docs/usage/nfs.ru.md index 73025d2c..51d089ff 100644 --- a/docs/usage/nfs.ru.md +++ b/docs/usage/nfs.ru.md @@ -4,41 +4,152 @@ [Read in English](nfs.en.md) -# NFS +# VitastorFS и псевдо-ФС -В Vitastor реализована упрощённая NFS 3.0 прокси для эмуляции файлового доступа к образам. -Это не полноценная файловая система, т.к. метаданные всех файлов (образов) сохраняются -в etcd и всё время хранятся в оперативной памяти - то есть, положить туда много файлов -не получится. +В Vitastor есть две реализации файловой системы. Обе используются через `vitastor-nfs`. -Однако в качестве способа доступа к образам виртуальных машин NFS прокси прекрасно подходит -и позволяет подключить Vitastor, например, к VMWare. +Команды: +- [mount](#mount) +- [start](#start) -При этом, если вы используете режим immediate_commit=all (для SSD с конденсаторами или HDD -с отключённым кэшем), то NFS-сервер не имеет состояния и вы можете свободно поднять -его в нескольких экземплярах и использовать поверх них сетевой балансировщик нагрузки или -схему с отказоустойчивостью. +## Псевдо-ФС -Использование vitastor-nfs: +Упрощённая реализация псевдо-ФС используется для эмуляции файлового доступа к блочным +образам Vitastor. Это не полноценная файловая система - в ней отсутствуют многие функции +POSIX ФС, а метаданные всех файлов (образов) сохраняются в etcd и всё время хранятся в +оперативной памяти - то есть, псевдо-ФС подходит для сотен или тысяч файлов, но не миллионов. + +Псевдо-ФС предназначена для доступа к образам виртуальных машин в средах, где другие +способы невозможны или неудобны - например, в VMWare. Для VMWare это лучшая опция, чем +iSCSI, так как при использовании iSCSI VMWare размещает все виртуальные машины в одном +большом блочном образе внутри собственной ФС VMFS, а с NFS VMFS не используется и каждый +диск ВМ представляется в виде одного файла, то есть, соответствует одному блочному образу +Vitastor, как это и задумано изначально. + +Чтобы подключить псевдо-ФС Vitastor, выполните команду `vitastor-nfs mount --block /mnt/vita`. + +Либо же запустите сетевой вариант сервера: ``` -vitastor-nfs [СТАНДАРТНЫЕ ОПЦИИ] [ДРУГИЕ ОПЦИИ] - ---subdir экспортировать "поддиректорию" - образы с префиксом имени / (по умолчанию пусто - экспортировать все образы) ---portmap 0 отключить сервис portmap/rpcbind на порту 111 (по умолчанию включён и требует root привилегий) ---bind принимать соединения по адресу (по умолчанию 0.0.0.0 - на всех) ---nfspath установить путь NFS-экспорта в (по умолчанию /) ---port использовать порт для NFS-сервисов (по умолчанию 2049) ---pool использовать пул для новых образов (обязательно, если пул в кластере не один) ---foreground 1 не уходить в фон после запуска +vitastor-nfs start --block --etcd_address 192.168.5.10:2379 --portmap 0 --port 2050 --pool testpool ``` -Пример монтирования Vitastor через NFS (etcd_address необязателен): +Примонтировать ФС, запущенную с такими опциями, можно следующей командой: ``` -vitastor-nfs --etcd_address 192.168.5.10:2379 --portmap 0 --port 2050 --pool testpool +mount server:/ /mnt/ -o port=2050,mountport=2050,nfsvers=3,soft,nolock,tcp ``` -``` -mount localhost:/ /mnt/ -o port=2050,mountport=2050,nfsvers=3,soft,nolock,tcp -``` +## VitastorFS + +VitastorFS - полноценная кластерная (Read-Write-Many) файловая система. Она поддерживает +большую часть функций POSIX - иерархическую организацию, символические ссылки, жёсткие +ссылки, быстрые переименования и так далее. + +Метаданные VitastorFS хранятся в собственной реализации БД формата ключ-значения, +основанной на Параллельном Оптимистичном Б-дереве поверх обычного блочного образа Vitastor. +И записи каталогов, и иноды, как обычно в Vitastor, хранятся в простом человекочитаемом +JSON-формате :-). Для инспекции содержимого БД можно использовать инструмент `vitastor-kv`. + +Чтобы использовать VitastorFS: + +1. Создайте пул для данных ФС или выберите существующий пустой пул +2. Создайте блочный образ для метаданных ФС, желательно, в более быстром пуле (на SSD + или по крайней мере на HDD, но без EC), но можно и в том же пуле, что данные + (размер образа значения не имеет): + `vitastor-cli create -s 10G -p fastpool testfs` +3. Пометьте пул данных как ФС-пул: `vitastor-cli modify-pool --used-for-fs testfs data-pool` +4. Либо примонтируйте ФС: `vitastor-nfs mount --fs testfs --pool data-pool /mnt/vita` +5. Либо запустите сетевой NFS-сервер: `vitastor-nfs start --fs testfs --pool data-pool` + +### Поддерживаемые функции POSIX + +- Чтение актуальной версии данных сразу после записи +- Последовательное и произвольное чтение и запись +- Запись за пределами текущего размера файла +- Иерархическая организация, мгновенное переименование файлов и каталогов +- Изменение размера файла (truncate) +- Права на файлы (chmod/chown) +- Фиксация данных на диски (когда необходимо) (fsync) +- Символические ссылки +- Жёсткие ссылки +- Специальные файлы (устройства, сокеты, каналы) +- Отслеживание времён модификации (mtime), изменения атрибутов (ctime) +- Ручное изменение времён модификации (mtime), последнего доступа (atime) +- Корректная обработка изменений списка файлов во время листинга + +### Ограничения + +Отсутствующие на данный момент в VitastorFS функции POSIX: +- Блокировки файлов не поддерживаются +- Фактически занятое файлами место не подсчитывается и не возвращается вызовами + stat(2), так что `du` всегда показывает сумму размеров файлов, а не фактически занятое место +- Времена доступа (`atime`) не отслеживаются (как будто ФС смонтирована с `-o noatime`) +- Времена модификации (`mtime`) отслеживаются асинхронно (как будто ФС смонтирована с `-o lazytime`) + +Другие недостающие функции, которые нужно добавить в будущем: +- Дефрагментация "общих инодов". На уровне реализации ФС файлы, меньшие, чем размер + объекта пула (block_size умножить на число частей данных, если пул EC), + упаковываются друг за другом в большие "общие" иноды/тома. Если такие файлы удалять + или увеличивать, они перемещаются и оставляют за собой "мусор", вот тут-то и нужен + дефрагментатор. +- Переиспользование номеров инодов. В текущей реализации номера инодов всё время + увеличиваются, так что в теории вы можете упереться в лимит, если насоздаёте + и наудаляете больше, чем 2^48 файлов. +- Очистка места в Б-дереве метаданных. Текущая реализация никогда не сливает и не + удаляет блоки Б-дерева, так что в теории дерево может разростись и стать неоптимальным. + Если вы столкнётесь с такой ситуацией сейчас, вы можете решить её с помощью + команд `vitastor-kv dumpjson` и `loadjson` (т.е. пересоздав и загрузив обратно все метаданные ФС). +- Инструмент проверки метаданных файловой системы. У VitastorFS нет журнала, так как + журнал бы сильно замедлил реализацию, вместо него используются оптимистичные + транзакции на основе CAS (сравнить-и-записать), и теоретически при нештатном + завершении сервера ФС в БД также могут оставаться неконсистентные "мусорные" + записи. ФС устроена так, что на работу они не влияют, но для порядка и их стоит + уметь подчищать. + +## Горизонтальное масштабирование + +Клиент Linux NFS 3.0 не поддерживает встроенное масштабирование или отказоустойчивость. +То есть, вы не можете задать несколько адресов серверов при монтировании ФС. + +Однако вы можете использовать любые стандартные сетевые балансировщики нагрузки +или схемы с отказоустойчивостью. Это точно безопасно при настройках `immediate_commit=all` и +`client_enable_writeback=false`, так как с ними NFS-сервер Vitastor вообще не хранит +в памяти ещё не зафиксированные на дисках данные; и вполне вероятно безопасно +даже без `immediate_commit=all`, потому что NFS-клиент ядра Linux повторяет все +незафиксированные запросы при потере соединения. + +## Команды + +### mount + +`vitastor-nfs (--fs | --block) mount [-o ] ` + +Запустить локальный сервер и примонтировать ФС в директорию . + +Чтобы отмонтировать ФС, используйте обычную команду `umount `. + +Сервер автоматически останавливается при отмонтировании ФС. + +| `-o|--options ` | Передать дополнительные опции монтирования NFS (пример: -o async). | + +### start + +`vitastor-nfs (--fs | --block) start` + +Запустить сетевой NFS-сервер. Опции: + +| `--bind ` | принимать соединения по адресу (по умолчанию 0.0.0.0 - на всех) | +| `--port ` | использовать порт для NFS-сервисов (по умолчанию 2049) | +| `--portmap 0` | отключить сервис portmap/rpcbind на порту 111 (по умолчанию включён и требует root привилегий) | + +## Общие опции + +| `--fs ` | использовать VitastorFS с метаданными в образе | +| `--block` | использовать псевдо-ФС для доступа к блочным образам | +| `--pool ` | использовать пул для новых файлов (обязательно, если пул в кластере не один) | +| `--subdir ` | экспортировать подкаталог , а не корень ФС | +| `--nfspath ` | установить путь NFS-экспорта в (по умолчанию /) | +| `--pidfile ` | записать ID процесса в заданный файл | +| `--logfile ` | записывать логи в заданный файл | +| `--foreground 1` | не уходить в фон после запуска |