Network File System (NFS)

Beta

The NFS connector is in the beta phase of development and may not be available on your enrollment. Functionality may change during active development.

Connect to Network File System (NFS) exports to sync data between folders and Foundry datasets. The connector supports NFS versions 3 and 4.1.

Supported capabilities

CapabilityStatus
Exploration🟡 Beta
Bulk import🟡 Beta
Incremental🟡 Beta
File exports🔴 Not available

Data model

The connector can transfer files of any type into Foundry datasets. File formats are preserved, and no schemas are applied during or after the transfer. Apply any necessary schema to the output dataset, or write a downstream transformation to access the data.

Performance and limitations

There is no limit to the size of transferable files. However, network issues can result in failures of large-scale transfers. In particular, direct cloud syncs that take more than two days to run will be interrupted. To avoid network issues, we recommend using smaller file sizes and limiting the number of files that are ingested in every execution of the sync. Syncs can be scheduled to run frequently.

Setup

  1. Open the Data Connection application and select + New Source in the upper right corner of the screen.
  2. Select NFS from the Protocol sources section.
  3. Follow the additional configuration prompts to continue the setup of your connector using the information in the sections below.

To access on-premises NFS servers, we recommend using an agent proxy connection. Alternatively, you can use secure tunnels (currently still in beta).

Learn more about setting up a connector in Foundry.

Configuration options

The following configuration options are available for the NFS connector:

OptionRequired?DefaultDescription
HostYesThe domain name pointing to the server or the IP address of the server.
Export pathYesThe exported filesystem path on the NFS server to connect to, for example /exports/data.
NFS versionYesThe NFS protocol version to use. Review the NFSv4.1 settings and NFSv3 settings sections below for version-specific options.

We recommend using NFSv4.1 whenever the NFS server supports it. NFSv4.1 supports RPC over TLS and Kerberos on a single port, which allows the whole connection to be secured. NFSv3 spreads its work across several RPC services that are secured separately and cannot protect the whole connection.

NFSv4.1 settings

OptionRequired?DefaultDescription
NFS portNo2049The port on which the NFS server is running.
Enable RPC over TLSNofalseSecures all traffic using RPC-over-TLS (RFC 9289 ↗).
AuthenticationYesThe RPC security flavor used to authenticate the connection, either Kerberos or AUTH_SYS. Review the Authentication section below for more information.

If neither RPC over TLS nor the krb5p Kerberos protection level is enabled, file contents are sent over the network unencrypted. This is only safe if the full network path is trusted.

NFSv3 settings

NFSv3 splits its work across four RPC services, each reachable on its own port and secured independently. Enabling TLS on one service leaves the others unencrypted.

OptionRequired?DefaultDescription
Access UIDYesThe numeric user ID presented to the NFS server.
Access GIDYesThe numeric group ID presented to the NFS server, also sent as the sole supplementary group.
Portmapper portNo111The TCP port of the portmapper (rpcbind) service, used to discover the port of any service that is not given a fixed port. Portmapper traffic is never encrypted.
NFS serviceYesThe NFS program, which carries all file data.
Mount serviceYesThe MOUNT program, used to obtain the root file handle for the export.
Lock serviceYesThe NLM (network lock manager) program.
Status serviceYesThe NSM (network status monitor) program, used for lock recovery notifications.

The following options are available for each of the four NFSv3 services:

OptionDescription
Discover the port using the portmapperWhen enabled, the connector asks the portmapper for the service's port when connecting instead of using a fixed port.
PortThe fixed port the service is bound to on the NFS server. Only used if the port is not discovered through the portmapper.
Wrap this service's traffic in TLSRequires the NFS server to accept RPC over TLS on this service.

Without TLS, NFSv3 sends file contents and the AUTH_SYS identity over the network unencrypted, and the MOUNT service transmits the root file handle and export metadata unencrypted. Ensure the network is fully trusted, enable TLS on the services your NFS server supports, or use NFSv4.1.

Authentication

NFSv3 sources always authenticate with AUTH_SYS. NFSv4.1 sources can authenticate with either Kerberos or AUTH_SYS.

AUTH_SYS

AUTH_SYS presents a numeric user ID (Access UID) and group ID (Access GID) to the NFS server. The server does not verify this identity, so access is governed entirely by the permissions of the export. The default identity 0/0 only grants root access on exports that are not configured to squash root access.

OptionRequired?Description
Access UIDYesThe numeric user ID presented to the NFS server, between 0 and 4294967295.
Access GIDYesThe numeric group ID presented to the NFS server, between 0 and 4294967295.

Kerberos

Kerberos authentication is only available for NFSv4.1 and uses a password to authenticate the principal.

OptionRequired?DefaultDescription
RealmYesThe Kerberos realm, for example EXAMPLE.COM. Realms are conventionally written in upper case.
KDC hostYesThe hostname or IP address of the Kerberos key distribution center (KDC).
KDC portNo88The TCP port of the KDC.
PrincipalYesThe Kerberos principal to authenticate as. The principal is combined with the realm to authenticate, for example nfsclient@EXAMPLE.COM.
Kerberos passwordYesThe password for the principal.
Protection levelYesThe RPCSEC_GSS protection level. Review the table below for more information.

The following protection levels are available:

Protection levelDescription
Authentication (krb5)Authenticates the connection only. Requests and file contents are neither integrity protected nor encrypted.
Integrity (krb5i)Authenticates the connection and integrity protects each request, but file contents are still sent unencrypted.
Encryption (krb5p)Authenticates the connection and encrypts the RPC payload, so file contents are protected in transit.

Only Encryption (krb5p) is supported when RPC over TLS is enabled.

TLS

TLS requires the NFS server to support RPC over TLS as described by RFC 9289 ↗. If you enable TLS on a source whose NFS server does not support RPC over TLS, the connection will fail.

When TLS is enabled, the connector validates the NFS server's certificate and checks that the certificate's subject alternative name matches the configured Host. If the NFS server uses a self-signed certificate or a certificate issued by a private certificate authority, add the server certificate to the source. If the NFS server requires mutual TLS (mTLS), add a client certificate to the source.

Networking

You must add a network egress policy to allowlist the connection. The required egress policies depend on the NFS version:

  • NFSv4.1: The connector must be able to reach Host on NFS port (2049 by default). When using Kerberos authentication, the connector must also be able to reach KDC host on KDC port (88 by default).
  • NFSv3: The connector must be able to reach Host on Portmapper port (111 by default) and on the port of each NFSv3 service. Services that discover their port through the portmapper are assigned a port by the NFS server when connecting, so their egress policies cannot be determined ahead of time. We recommend assigning a fixed port to each service on the NFS server and in the source configuration.

Data Connection suggests the required egress policies based on the source configuration.

Sync data from NFS

The NFS connector syncs files from the export into a Foundry dataset. Each sync walks the selected subfolder and every folder nested below it. Learn more about file-based ingestion modes.

Sync configuration options

OptionRequired?DefaultDescription
SubfolderNoThe directory below the export root to sync. Leave empty to sync the whole export.
Include patternsNoGlob patterns matched against each file's path relative to the export root, for example *.csv. A file is synced only if it matches at least one of these patterns. Leave empty to include every file.
Exclude patternsNoGlob patterns matched against each file's path relative to the export root, for example archive/**. A file matching any of these patterns is skipped, even when an include pattern also matches it.
Follow symbolic linksNofalseWhen disabled, symbolic links are skipped entirely. When enabled, links are resolved against the export root, and any target outside the export is skipped.
Maximum depthNoHow many directory levels below the subfolder to descend. A value of 0 syncs only the files in the subfolder itself. Leave empty to descend without limit.
Minimum file sizeNoOnly sync files of at least this many bytes.
Maximum file sizeNoOnly sync files of at most this many bytes.
Modified afterNoOnly sync files modified after this time. This filter is applied on every run, independently of incremental syncs.
Modified beforeNoOnly sync files modified before this time.
Order byNoTraversal orderThe order in which files that passed filtering are sorted before applying Maximum files per run. Options are Traversal order, Path, Size, and Last modified.
DirectionNoAscendingThe sort direction for Order by.
Maximum files per runNoAfter filtering and sorting, keep at most this many files. Together with Order by, you can express conditions such as "the 100 oldest files" or "the 10 largest files".

Incremental syncs

When incremental sync is enabled, each run records the modification time of the newest file it synced, and the next run only syncs files modified after that time. The first run syncs all files that match the sync configuration. Modification times are reported by the NFS server, so incremental syncs do not depend on the clocks of the connector and the NFS server being in agreement.

When an incremental sync uses Maximum files per run, files are always synced oldest first, and each run picks up where the previous run stopped. No files are skipped, including when the limit falls between files with identical modification times. Incremental syncs with a limit must leave Order by empty or sort by Last modified in Ascending order; other orderings cause the sync to fail.

Incremental syncs should use the APPEND or UPDATE transaction type. With the default SNAPSHOT transaction type, each run replaces the dataset with only the files found in that run.

Media sets

The NFS connector does not support media set syncs. Files synced from NFS land in a regular dataset.