VAST provides a high-performance NFS interface enhanced with multipathing, enabling clients to communicate with multiple VAST server nodes (CNodes) in parallel. This is achieved through the VAST NFS client, which builds on the standard Linux kernel NFS driver and provides multipathing support for both TCP and RDMA transport modes.
Multipathing enables:
Load-balanced traffic across multiple VIPs.
Parallel data paths for improved throughput.
Support for multiple client-side NICs to utilize all available bandwidth.
Note: The VAST NFS client is optional and best used in high-performance scenarios with large, sequential I/O—like AI training or HPC—where it enables multi-path, RDMA, or GPU Direct for higher throughput. For general-purpose workloads or many small files, it offers a small benefit only.
Mounting with Multipathing
The VAST Enhanced NFS client introduces several mount options to leverage multipathing fully:
NFSv3:
sudo mount -o vers=3,nconnect=34,pconnect=4,mdconnect=2,spread_reads,spread_writes,noextend,lookupcache=pos,remoteports=dns localports=192.168.0.100~192.168.0.200 vast.example.com:/export /mnt/vastNFSv4:
sudo mount -o vers=4.1,nconnect=32,pconnect=4,remoteports=dns localports=192.168.0.100~192.168.0.200 vast.example.com:/export /mnt/vastOption | Description |
|---|---|
nconnect=<N> | Sets the total number of TCP connections per mount. These connections are distributed across VIPs. Notes:
|
pconnect=<NUM> | Controls the number of connections made by each client. The nconnect parameter still controls the total number of connections. For example, passing nconnect=32 and pconnect=4 will create 8 clients with 4 connections each, all to the same destination address, and regardless of how big is remoteports. (Note: pconnect applies to vastnfs 4.5 or later) When using mdconnect=2, there are two connections out of nconnect settings that are dedicated to metadata, hence the values of 34 (32 + 2) |
remoteports | Enables connections to multiple VIPs (server-side IPs). Note: It is recommended to use remoteport=dns, so the client can issue DNS queries with the mount target DNS name and retrieve an array of addresses. |
localports | Specifies multiple client-side IPs for outgoing traffic (NFSv3 only). |
spread_reads | Distributes read operations across all connections to increase throughput. |
spread_writes | Distributes write operations across all connections. |
lookupcache=pos | Reduces the delay in discovering newly created files on other clients by enabling positive lookup caching, which is useful when one client waits for another to create a file. |
mdconnect=2 | Enables dedicated metadata channels, preventing metadata operations from being blocked behind large read/write I/O. |
noextend | Turns off the default extend-to-page optimization in writes. Useful for specific NFSv3 workflows with multiple clients. No tradeoffs; safe default. |