Configure NFS Exports
Azure CycleCloud provides built-in support for exporting a simple Network File System.
Create an NFS Export
To export a directory from a node as a shared NFS filesystem, provide a mount configuration section with
type=nfs and an export path:
[[[configuration cyclecloud.exports.nfs_data]]] type = nfs export_path = /mnt/exports/nfs_data
The above configuration
cyclecloud.exports.nfs_data specifies that you are configuring directory
/mnt/exports/nfs_data to be exported as an NFS filesystem named
nfs_data. The attributes within the configuration section describe the exported filesystem properties.
Note that you can only have one fileserver per cluster otherwise the discovery mechanisms will interfere.
NFS exports can also be configured in a cluster template. A node can have an arbitrary number of exports but only one node in a cluster may be a fileserver. In the example below we show configs to add to a node to disable the default nfs exports and add a new export named backup. This export will then be available to other nodes via the mount configurations in this page.
[[[configuration]]] run_list = recipe[cshared::directories],recipe[cshared::server] cyclecloud.discoverable = true cshared.server.shared_dir = /shared cyclecloud.mounts.sched.disabled = true cyclecloud.mounts.shared.disabled = true cshared.server.legacy_links_disabled = true [[[configuration cyclecloud.exports.backup]]] type = nfs export_path = /mnt/raid/backup options = no_root_squash samba.enabled = false
Configuring an NFS server and file share
Most HPC workflows will mount a network file system (NFS) to nodes that can be used for shared application data and job results. A file server node can be defined in a CycleCloud cluster template. The template configs provide very fine control over the file system properties. The local filesystem is defined by
mounts and the NFS service is defined by
The following example pulls these topics together in a single node file share.
[[node fileserver]] Credentials = my-creds Region = northeurope MachineType = Standard_D16s_v3 KeypairLocation = ~/.ssh/cyclecloud.pem SubnetId = /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rg1/providers/Microsoft.Network/virtualNetworks/vnet1/subnets/subnet1 [[[configuration]]] run_list = recipe[cshared::server] cyclecloud.discoverable = true cyclecloud.mounts.sched.disabled = true cyclecloud.mounts.shared.disabled = true cshared.server.legacy_links_disabled = true [[[volume v00]]] SSD = true Size = $VolumeSize Mount = all [[[volume v01]]] SSD = true Size = $VolumeSize Mount = all [[[configuration cyclecloud.mounts.all]]] fs_type = ext4 raid_level = 0 options = noatime,nodiratime,nobarrier,nofail mointpoint = /data [[[configuration cyclecloud.exports.nfs_data]]] type = nfs export_path = /data/export [parameters NFS] [[parameter VolumeSize]] DefaultValue = 1024
configuration section contains automation parameters interpreted by the node when it starts. These instructions are necessary to invoke the NFS configuration.
This example defines two SSD volumes, or Azure Premium Disks, which will be mounted in a RAID 0 configuration to the mount point /data.
volume sections define the volumes while the
cyclecloud.mounts section defines how the volumes are mounted.
exports section then specifies which directory to export. Since the
export_path falls under the RAID volume, data written to this export will be handled by the RAID volume.
Using local disks for a file share is not supported. The
volume section refers to Azure Disk Storage.
Export Configuration Options
|type||REQUIRED The type attribute must be set to
|export_path||The local path to export as an NFS filesystem. If the directory does not exist already, it will be created.|
|owner||The user account that should own the exported directory.|
|group||The group of the user that should own the exported directory.|
|mode||The default filesystem permissions on the exported directory.|
|network||The network interface on which the directory is exported. Defaults to all:
|sync||Synchronous/asynchronous export option. Defaults to
|writable||The ro/rw export option for the filesystem. Defaults to
|options||Any non-default options to use when exporting the filesystem.|