Troubleshooting the FUSE-Based POSIX Client
Explains how to enable and collect the stack trace to troubleshoot POSIX client issues.
This section contains information for troubleshooting the FUSE-based POSIX client.
Enabling Traces
To enable traces at system startup, set the property fs.mapr.trace in the
core-site.xml file. For example:
<property>
<name>fs.mapr.trace</name>
<value>DEBUG | INFO | WARN | ERROR | CRITICAL | OFF</value>
<description> </description>
</property>
Collecting the Stack Trace
If the mountpoint is not responding or if the file system operations are taking too much time, collect the stack trace of all the threads to debug. To collect the stack trace of all threads, run the following command:
gstack <fuse-process-id> > ./gstack.log
If the file system commands fail, repeat the file system command with
strace and collect the log file:
strace <file system command> > ./strace.log
Issue: FUSE POSIX client does not honor the MAPR_SUBNETS environment variable
The FUSE POSIX client may not honor the MAPR_SUBNETS environment variable
on client nodes. When you set MAPR_SUBNETS on a client node to restrict
FUSE traffic to a specific network interface (for example, 192.168.4.0/24), the POSIX client
may continue to use both NICs to communicate with data nodes, instead of restricting
to the specified subnet only.
Cause
The MAPR_SOURCE_HONOUR_SUBNETS flag controls source‑side filtering
of client connections based on the subnets configured in MAPR_SUBNETS. When
this flag is set to true on the client, the FUSE/POSIX client attempts to
use only those local interfaces whose IPs fall within the CIDR ranges listed in
MAPR_SUBNETS. If MAPR_SUBNETS is incomplete or
incorrect, or if MAPR_SOURCE_HONOUR_SUBNETS is not set as expected, source
IP selection may not match the intended storage network design.
Resolution:
MAPR_SUBNETS. The logic works as follows:- When MAPR_SUBNETS is not set (default), it uses
INADDR_ANY(the kernel selects the interface). - When one or more subnets are specified in
MAPR_SUBNETS, it uses the source IP of the client node matching that subnet mask.
-
Every subnet listed in
MAPR_SUBNETSmust be routable from all cluster nodes. If any data node lacks a route to the client's source subnet, write operations may hang or fail. Verify routing on all nodes before enabling. -
When an interface listed in
MAPR_SUBNETSgoes down on a FUSE client, ongoing I/O may stall for several minutes before failing over to another interface. The delay occurs because existing TCP connections continue retrying until kernel timeouts expire, which is controlled largely by net.ipv4.tcp_retries2, and additional time is required for RPC reconnect and FUSE cidcache refresh. Users requiring faster failover should tune TCP retry settings appropriately.
Configuration Required
| Variable | Purpose |
|---|---|
MAPR_SUBNETS |
Specifies the subnet(s) the client should use, comma separated (for example, "196.171.4.0/24,172.23.46.0/24") |
MAPR_SOURCE_HONOUR_SUBNETS |
Must be enabled (set to true) to activate client-side subnet enforcement. By
default it is disabled which means the kernel selects the interface for
communication regardless of MAPR_SUBNETS. |
# vim /opt/mapr/initscripts/mapr-fuse
# Function to mount the filesystem, if not already mounted.
do_start()
{
export MAPR_SUBNETS="192.168.4.0/24"
export MAPR_SOURCE_HONOUR_SUBNETS="true"