Mount the Avere vFXT cluster

Follow these steps to connect client machines to your vFXT cluster.

  1. Decide how to load-balance client traffic among your cluster nodes. Read Balance client load, below, for details.
  2. Identify the IP address and junction path to mount.
  3. Issue the mount command, with appropriate arguments.

Balance client load

To help balance client requests among all the nodes in the cluster, you should mount clients to the full range of client-facing IP addresses. There are several simple ways to automate this task.

Tip

Other load balancing methods might be appropriate for large or complicated systems; open a support ticket for help.)

If you prefer to use a DNS server for automatic server-side load balancing, you must set up and manage your own DNS server within Azure. In that case, you can configure round-robin DNS for the vFXT cluster according to this document: Avere cluster DNS configuration.

Sample balanced client mounting script

This code example uses client IP addresses as a randomizing element to distribute clients to all of the vFXT cluster's available IP addresses.

function mount_round_robin() {
    # to ensure the nodes are spread out somewhat evenly the default 
    # mount point is based on this node's IP octet4 % vFXT node count.
    declare -a AVEREVFXT_NODES="($(echo ${NFS_IP_CSV} | sed "s/,/ /g"))"
    OCTET4=$((`hostname -i | sed -e 's/^.*\.\([0-9]*\)/\1/'`))
    DEFAULT_MOUNT_INDEX=$((${OCTET4} % ${#AVEREVFXT_NODES[@]}))
    ROUND_ROBIN_IP=${AVEREVFXT_NODES[${DEFAULT_MOUNT_INDEX}]}

    DEFAULT_MOUNT_POINT="${BASE_DIR}/default"

    # no need to write again if it is already there
    if ! grep --quiet "${DEFAULT_MOUNT_POINT}" /etc/fstab; then
        echo "${ROUND_ROBIN_IP}:${NFS_PATH}    ${DEFAULT_MOUNT_POINT}    nfs hard,nointr,proto=tcp,mountproto=tcp,retry=30 0 0" >> /etc/fstab
        mkdir -p "${DEFAULT_MOUNT_POINT}"
        chown nfsnobody:nfsnobody "${DEFAULT_MOUNT_POINT}"
    fi
    if ! grep -qs "${DEFAULT_MOUNT_POINT} " /proc/mounts; then
        retrycmd_if_failure 12 20 mount "${DEFAULT_MOUNT_POINT}" || exit 1
    fi   
} 

The function above is part of the Batch example available in the Avere vFXT examples site.

Create the mount command

Note

If you did not create a new Blob container when creating your Avere vFXT cluster, follow the steps in Configure storage before attempting to mount clients.

From your client, the mount command maps the virtual server (vserver) on the vFXT cluster to a path on the local filesystem. The format is mount <vFXT path> <local path> {options}

There are three elements to the mount command:

  • vFXT path - (a combination of IP address and namespace junction path described below)
  • local path - the path on the client
  • mount command options - (listed in Mount command arguments)

Junction and IP

The vserver path is a combination of its IP address plus the path to a namespace junction. The namespace junction is a virtual path that was defined when the storage system was added.

If your cluster was created with Blob storage, the namespace path is /msazure

Example: mount 10.0.0.12:/msazure /mnt/vfxt

If you added storage after creating the cluster, the namespace junction path corresponds to the value you set in Namespace path when creating the junction. For example, if you used /avere/files as your namespace path, your clients would mount IP_address:/avere/files to their local mount point.

"Add new junction" dialog with /avere/files in the namespace path field

The IP address is one of the client-facing IP addresses defined for the vserver. You can find the range of client-facing IPs in two places in the Avere Control Panel:

  • VServers table (Dashboard tab) -

    Dashboard tab of the Avere Control Panel with the VServer tab selected in the data table below the graph, and the IP address section circled

  • Client Facing Network settings page -

    Settings > VServer > Client Facing Network configuration page with a circle around the Address Range section of the table for a particular vserver

In addition to the paths, include the Mount command arguments described below when mounting each client.

Mount command arguments

To ensure a seamless client mount, pass these settings and arguments in your mount command:

mount -o hard,nointr,proto=tcp,mountproto=tcp,retry=30 ${VSERVER_IP_ADDRESS}:/${NAMESPACE_PATH} ${LOCAL_FILESYSTEM_MOUNT_POINT}

Required settings
hard Soft mounts to the vFXT cluster are associated with application failures and possible data loss.
proto=netid This option supports appropriate handling of NFS network errors.
mountproto=netid This option supports appropriate handling of network errors for mount operations.
retry=n Set retry=30 to avoid transient mount failures. (A different value is recommended in foreground mounts.)
Preferred settings
nointr The option "nointr" is preferred for clients with legacy kernels (prior to April 2008) that support this option. Note that the option "intr" is the default.

Next steps

After you have mounted clients, you can use them to populate the backend data storage (core filer). Refer to these documents to learn more about additional setup tasks: