Configuring the MapR FUSE-Based POSIX Client
Lists FUSE configuration parameters.
The POSIX client configuration values can be set in the
/opt/mapr/conf/fuse.conf
file. After installing the
FUSE-based POSIX client, you can edit the configuration file to define the values
for the following parameters and save the file.
/opt/mapr/bin/posix-client-* --help
Here * refers to basic or platinum
client package installed on the system. If necessary, set the shared
LD_LIBRARY_PATH
environment variable to run the help
option with the command. For example:export LD_LIBRARY_PATH=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79.x86_64/jre/lib/amd64/server/:/opt/mapr/lib
fuse.conf
file. All other FUSE configuration parameters are not
supported. For more information on the non-mapr configuration parameters, refer to FUSE
documentation.Parameter | Default Value | Description |
---|---|---|
fuse.mount.point |
/mapr |
(Required) Specifies the mount point where MapR file system must be mounted.
Ensure that the specified mount point is empty before starting the service. Once
mounted, the POSIX client has access to all the clusters specified in
/opt/mapr/conf/mapr-clusters.conf file. The value should not be
/mapr if you wish to mask MapR branding. NOTE: If NFS server is
also running on this node, ensure that the FUSE mount point is different from the
NFS server mount point. |
fuse.log.path |
/opt/mapr/logs |
Specifies the path where the log files must be stored. |
fuse.client.lib.path |
/tmp |
Specifies the path to where the client libraries must be stored. |
fuse.allow.other |
1 |
Allow other users to access the mountpoint. Value can be:
Set this to |
fuse.big.writes |
1 |
Specifies whether to enable writes larger than 4KB. Value can be:
|
fuse.affinity |
0 (disabled) |
Specifies whether to enable (1 ) or disable
(0 ) NUMA affinity. If enabled, sets the NUMA affinity for the POSIX
client. |
fuse.auto.unmount |
1 (enabled) |
Specifies whether to automatically unmount the filesystem when the process is
terminated. Value can be:
|
fuse.num.libs |
|
Specifies the number of client libraries to run with. For:
NOTE: Each additional library will
consume more memory and CPU. |
fuse.ra.sessions |
|
Specifies the number of parallel read ahead sessions per library. Each open
file acts as one read ahead session. For example, for the default value of 5, up to
5 files can have read ahead sessions per library. If value is set to
0 , readahead will be disabled. NOTE: A greater value will allow
more number of parallel read ahead sessions, which is useful if more number of
files need to be opened simultaneously. However, note that each additional read
ahead session will consume more memory (512K per read ahead session) and
threads. |
fuse.num.threads |
64 |
Specifies the number of FUSE threads in userspace per mountpoint. A higher number allows parallel processing of multiple operations. Recommended value is only up to 64. |
fuse.asyncdirect.io |
1 (enabled) |
Specifies whether to enable asynchronous direct IO. Value can be:
|
fuse.max.read |
131072 |
Specifies the maximum size of read requests. |
fuse.max.readahead |
128k |
Specifies the maximum bytes to readahead. |
fuse.max.write |
131072 |
Specifies the maximum size allowed in a (single) write request. |
fuse.sync.read |
0 |
Specifies whether to enable or disable synchronized reads. Value can be:
|
fuse.max.background |
64 |
Specifies the maximum number of asynchronous requests that can be submitted. IOs submits beyond the maximum limit (specified here) will be blocked. |
fuse.congestion.threshold |
10 |
Specifies the kernel’s congestion threshold. |
fuse.flush.inline |
0 |
Specifies whether (1) or not (0) to flush all writes inline. Value can be:
|
fuse.fast.local.directio |
0 |
Specifies whether to optimize or disable FUSE client for local direct IO. Value
can be:
|
fuse.disable.shardcache |
0 |
Specifies whether to disable shard cache, which is a cache of lookups. Value
can be:
|
fuse.fsname |
Specifies the filesystem source, which is the first field in
/etc/mtab file. The default value is the FUSE mountpoint. |
|
fuse.ticketfile.location |
/opt/mapr/conf/maprfuseticket |
Specifies the ticket to use to start the service in secure mode. Generate the
required ticket and place it in /opt/mapr/conf/<maprfuseticket> .
NOTE: To support impersonation, provide the mapr user ticket file location or the
user’s servicewithimpersonation ticket file location. You can use the mapr user
ticket on the server node and service with impersonation ticket on client node.
The FUSE service must be started by the root user if servicewithimpersonation
ticket is specified. See also: Setting up Ticket for
POSIX Client. |
fuse.nonempty |
0 |
Specifies whether FUSE can be mounted at a non-empty mountpoint (1) or at an
empty mountpoint (0). Value can be:
|
fuse.xattr.enable |
0 (false) |
Specifies whether (true) or not (false) to enable extended attributes through
the FUSE client. Value can be:
hadoop fs command; however, this must be enabled to perform any
operations on extended attributes using the FUSE-based POSIX client.NOTE: Of the
five types of extended attribute namespaces in Linux, system, trusted, user, raw,
and security, only user namespace is supported. For all other namespaces, EINVAL
is returned. |
fuse.attr.timeout |
3.0 |
The timeout value in seconds for file/directory (regular) attributes (such as
file size, UID, GID, etc., which are normally stored inside the inode) cache. This
is used to determine whether to use the cached attribute information (only if within
the specified timeout window) or fetch attribute information again. The default is
3.0 second, which specifies that cached attribute information must be considered
stale and refreshed after 3.0 second. For this option, it is possible to give
fractions of a second as well (for example,
fuse.attr.timeout=2.8 ).Set the value for this
parameter to |
fuse.entry.timeout |
3.0 |
The timeout value in seconds for the name lookup cache. This is used to
determine whether to use the cached entry for the name lookup (if within the
specified timeout window) or lookup name again. The default is 3.0 second, which
specifies that cached name lookup information must be considered stale and refreshed
after 3.0 second. For this option, it is possible to give fractions of a second as
well (for example, fuse.entry.timeout=2.8 ).Set
the value for this parameter to |
fuse.hb.interval |
5 |
Specifies the heartbeat interval (in seconds) for the FUSE-based POSIX client. |
fuse.export |
Denotes the fully-qualified cluster path to the volume or directory under the
mount point. When this property is not specified, all clusters found in
When this property is specified, it overrides the
default behavior, and causes exactly one path from one cluster to be exposed at
the entity specified by the If If NOTE: If the
value is not a valid path to the name of a volume or directory, the FUSE service
will not start. The value cannot be the path to a file. |
|
fuse.enforce.core.pattern |
false |
Specifies whether (true ) or not (false ) to
write to /proc/sys/kernel/core_pattern file when the FUSE-based
POSIX starts. The default value is false . If true ,
the core_pattern file contains an
/opt/cores/%e.core.%p.%h entry and if false , the
file is not touched. |
fuse.access.type |
rw |
Sets the type of access on the mount point. Value can be:
rw . |
fuse.auto.inval.data |
1 |
Specifies whether (1) or not (0) to automatically invalidate the kernel FUSE cache for any data change, which causes mtime change, on the files. If set to 1, when the file is read, correct file data is returned. If set to 0, kernel cache of the data, which might not have the most current change, might be returned. |
fuse.disable.writeback |
0 | Specifies whether (1 ) or not (0 ) to disable
writeback cache. This parameter is applicable only in kernel versions >= 3.15. By
default, in kernel versions >= 3.15, writeback is enabled. To disable writeback
cache, set the value for this parameter to 1 . If enabled, the
writes are buffered in the kernel. However, when multiple FUSE clients work on the
same file, writes to file by one FUSE client might never be seen by other FUSE
clients performing a read because the kernel does not update the attributes of the
file unless the file is modified locally. You can disable writeback cache to allow
the kernel to perform a write through. |
fuse.cluster.conf.location |
/opt/mapr/conf/mapr-clusters.conf |
The path to the configuration file to use. |
fuse.enable.readdirplus | 0 | Set this to 1 to enable readdirplus() functionality. |
fuse.direntcache.nentries | 0 | Indicates the number of RPC responses to cache in dirent cache for readdirplus(). Set this parameter to a number greater than 0, to enable the dirent cache. |
fuse.direntcache.timeout | 0 | Indicates the time (in seconds) to cache each readdir() RPC result from MFS. Set this parameter to a number greater than 0, to set the time to cache each entry. |
fuse.negative.timeout | 3.0 | Applicable for both Basic and Platinum POSIX clients. For MapR 6.0.1,
install EBF patch version Indicates the duration in seconds to cache negative lookup results. Negative lookup results that are returned when a file does not exist (lookup retuned ENOENT), are cached for the specified number of seconds. The lookup is performed again, only after this period elapses. The file is deemed to be non-existent till this period elapses. The default value of 3.0 indicates that negative lookup results are cached for 3 seconds. Set this value to fuse.conf . Make sure to copy this parameter from
fuse.conf.new to fuse.conf , only if you want to
change the default value and disable this cache. |
You must start/restart the FUSE-based POSIX client for the changes to take effect. See Starting and Stopping the POSIX Client for more information.
Configuration Backup When Installing/Upgrading POSIX Clients
When you install a patch, the /opt/mapr/conf/fuse.conf.new
file
contains the new settings. You can copy the new parameters (with default values) to your
existing fuse.conf
file and restart FUSE for the settings to take
effect.
When you upgrade from a prior release, on all supported OS other than Ubuntu, the
old fuse.conf
file is backed up as fuse.conf.backup
,
before being overwritten with the new settings. This backup is available in the
/opt/mapr/conf
directory.
On Ubuntu, the upgrade process does not create a backup copy of the file. You need to
manually backup the fuse.conf
file before upgrading, as this file is
overwritten with the new settings after upgrading.
To continue using FUSE with your custom settings, and take advantage of the new
settings, manually copy your custom settings in the fuse.conf.backup
file
to the fuse.conf
file, set custom values for the new parameters in the
fuse.conf
file where necessary, and restart FUSE for the settings to
take effect.
To restart FUSE, use one of the following commands depending on the posix client you use:
- For posix basic: service mapr-posix-client-basic restart
- For posix platinum: service mapr-posix-client-platinum restart
Optimizing FUSE performance when running the Flexible I/O tester (fio tool)
Performance Tips
- With Linux kernels prior to version 4.8, size extending writes are serialized by the kernel, and result in degraded write performance. For optimized write performance, ensure that the Linux kernel in use, is at least version 4.8.
- With kernel 4.8 and above, fio performance improves when using larger block sizes and larger number of jobs (numjobs). Keep numjobs constant and use larger blocksizes (>128k) for enhanced performance.
For example, for optimised performance, the fio
command could be as
follows:
fio --ioengine=libaio --direct=1 --gtod_reduce=1 --name=perftest --filename=perfile
--bs=16m --iodepth=64 --size=4G --rw=write --numjobs=4