Skip to content

storage_config.yml

This file configures shared storage for the cluster, including NFS and VAST Data mounts, Dell PowerScale/PowerVault, and swap configuration.

Parameter Reference

Mounts Configuration

Parameter

Details

mounts

list / elements=dict

Cloud-init compatible mount configurations. Source must be known at boot time. Each entry must define exactly one targeting field: functional_group_prefix or groups.

name

string / required

Unique identifier for this mount entry

source

string / required

Device name or network path (e.g., /dev/sdc, UUID=xxx, 192.168.1.100:/export/share, powervault:<name>)

mount_point

string / required

Mount point path

fs_type

string

Filesystem type. Overrides mount_params profile when specified.

Default: auto.

mnt_opts

string

Mount options. Overrides mount_params profile when specified.

dump_freq

string

Dump frequency (usually 0). Overrides mount_params profile when specified.

Default: 0.

fsck_pass

string

Fsck pass number (usually 0 or 2). Overrides mount_params profile when specified.

Default: 0.

mount_params

string

Named profile key from the mount_params section. Use an existing profile. The current runtime does not reject an unknown name and instead falls back to auto, defaults, 0, and 0 for the filesystem, mount options, dump frequency, and fsck pass.

mount_on_oim

boolean

Whether to mount this filesystem on the OIM node. Default: false. Ensure the storage system is accessible to OIM

Default: False.

node_key

string

Per-node subdirectory isolation variable. Optional and disabled when omitted.
Allowed values:
- local_hostname - hostname of the node
- local_ipv4 - IPv4 address of the node
- instance_id - instance ID of the node from cloud-init
When set, node_mount_point is required.
Generates bind mounts: <mount_point>/<node_key_value>/<target> -> <target>

node_mount_point

list / elements=string

List of bind mount target paths. Required when node_key is set.

functional_group_prefix

list / elements=string

List of OpenCHAMI functional group prefixes to apply this mount to. Exactly one of functional_group_prefix or groups is required.

groups

list / elements=string

List of GROUP_NAME values from pxe_mapping_file.csv. Exactly one of groups or functional_group_prefix is required.

permissions

dict

Directory ownership and mode commands generated for mount_point. The current command order applies them before mount -av, so they affect the underlying local directory rather than guaranteeing permissions on the mounted filesystem.

owner

string

User owner of the mount point (name or numeric UID)

Default: root.

group

string

Group owner of the mount point (name or numeric GID)

Default: root.

mode

string

Octal permission mode (e.g., 0755, 1777)

Default: 0644.

Mount_params Configuration

Parameter

Details

mount_params

dict

Named mount parameter profiles. Each profile defines fs_type and mnt_opts, with optional dump_freq and fsck_pass. Custom fields are rejected.

<mount_params_key>

dict

Profile name referenced by a mount's mount_params value.

fs_type

string / required

Default filesystem type

mnt_opts

string / required

Default mount options

dump_freq

string

Default dump frequency

fsck_pass

string

Default fsck pass number

PowerVault Configuration

Parameter

Details

powervault_config

list / elements=dict

List of PowerVault iSCSI volume connection definitions. Processed via runcmd script because device path is only known after iSCSI login + multipath scan.

name

string / required

Unique identifier for this PowerVault volume

ip

list / elements=string / required

List of target controller IP addresses for iSCSI discovery

port

integer

TCP port for iSCSI target (default 3260)

Range: 1-65535.

iscsi_initiator

string / required

iSCSI initiator IQN

volume_id

string / required

Volume identifier (hex string / WWN) for multipath device matching

mount_point

string / required

Where the discovered device gets mounted

fs_type

string

Filesystem type. Overrides mount_params profile when specified.

Default: xfs.

mnt_opts

string

Mount options. Overrides mount_params profile when specified.

dump_freq

string

Accepted by the input schema, but the current PowerVault setup script writes 0 in the generated fstab entry and does not apply this value.

fsck_pass

string

Accepted by the input schema, but the current PowerVault setup script writes 0 in the generated fstab entry and does not apply this value.

mount_params

string

Named profile key from the mount_params section. Use an existing profile. The current runtime does not reject an unknown name and instead falls back to xfs with defaults,_netdev,noatime.

node_key

string

Optional cloud-init selector for per-node bind mounts. Accepted values are local_hostname, local_ipv4, and instance_id. When set, node_mount_point is required; no value is selected by default.

node_mount_point

list / elements=string

List of bind mount target paths. Required when node_key is set. Each gets: mount_point/<node_key_value>/<target_stripped_slash> -> <target>

functional_group_prefix

list / elements=string / required

Required list of functional group prefixes for node targeting. PowerVault entries do not support a groups alternative.

permissions

dict

Recursive ownership and mode applied to the root PowerVault mount_point after the per-node bind paths are created. This block runs only when node_key and node_mount_point are set; it is not limited to an individual bind path.

owner

string

User owner of the mount point (name or numeric UID)

Default: root.

group

string

Group owner of the mount point (name or numeric GID)

Default: root.

mode

string

Octal permission mode (e.g., 0755, 1777)

Default: 0755.

Swap Configuration

Parameter

Details

swap

list / elements=dict

Swap file configurations

filename

string / required

Path to the swap file to create

size

string / required

Size in bytes, 'auto', or human-readable format (e.g., 2G, 512M)

maxsize

string

Maximum size (used with size: auto)

functional_group_prefix

list / elements=string / required

Required list of OpenCHAMI functional group prefixes to which this swap applies. Swap entries do not support a groups alternative.

S3 endpoint configuration is not part of storage_config.yml. Orchestrator loads the authoritative S3 endpoint and bucket from Image Build Manager's generated build_status.yml contract.

Usage example

File: $OMNIA_DATA_PATH/orchestrator/input/$OMNIA_PROJECT_NAME/storage_config.yml
---
mounts:
  - name: "nfs_slurm"
    source: "172.16.107.168:/mnt/share/omnia"
    mount_point: "/share_omnia"
    fs_type: "nfs"
    mnt_opts: "nosuid,rw,sync,hard,intr"
    mount_on_oim: true
    functional_group_prefix: ["slurm", "login"]

  - name: "nfs_k8s"
    source: "172.16.107.121:/mnt/share/omnia_k8s"
    mount_point: "/opt/omnia/k8s_mount"
    fs_type: "nfs"
    mnt_opts: "nosuid,rw,sync,hard,intr"
    mount_on_oim: true
    functional_group_prefix: ["service_kube"]

  - name: "vast_storage"
    source: "172.16.107.77:/share/vast"
    mount_point: "/mnt/vast"
    mount_params: "vast_rdma"
    mount_on_oim: true
    functional_group_prefix: ["slurm_node", "login"]

mount_params:
  # Default NFS mount
  nfs_default:
    fs_type: "nfs"
    mnt_opts: "nosuid,rw,sync,hard"
    dump_freq: "0"
    fsck_pass: "0"

  # VAST NFS RDMA storage over IB - standard configuration
  vast_rdma:
    fs_type: "nfs"
    mnt_opts: "proto=rdma,nconnect=8,timeo=600,retrans=2,rsize=1048576,wsize=1048576,hard"

  vast_tcp:
    fs_type: "nfs"
    mnt_opts: "nosuid,rw,sync,hard"

  # PowerVault iSCSI storage - block device with XFS
  powervault_iscsi:
    fs_type: "xfs"
    mnt_opts: "defaults,_netdev,noatime,x-systemd.requires=iscsi.service"
    dump_freq: "0"
    fsck_pass: "0"

powervault_config:
  - name: powervault1
    ip:
      - 172.1.2.3
    port: 3260
    iscsi_initiator: iqn.2025-01.com.dell:scontrol-node
    volume_id: 00c0ff4343f1f1f1001c8c4e6901000000
    # mount params
    mount_point: "/mnt/slurm"
    mount_params: "powervault_iscsi"
    node_key: "local_hostname" # per_node_id,node_subdir_key
    node_mount_point: # bind_paths, sub_mounts
      - "/var/lib/mysql" # /mnt/slurm/<local_hostname>/var/lib/mysql
      - "/var/spool/slurm" # /mnt/slurm/<local_hostname>/var/spool/slurm
    functional_group_prefix: ["slurm_control_node"]
    permissions:
      owner: "slurm"
      group: "slurm"
      mode: "0750"

swap:
  - name: "compute_swap"
    filename: "/swapfile"
    size: "2G"
    maxsize: "4G"
    functional_group_prefix: ["slurm_node"]

The standard optional Slurm VAST mount uses name: vast_storage. Orchestrator includes it only when slurm_cluster[0].vast_storage_name is non-empty and references that name. When vast_storage_name is empty or omitted, the standard vast_storage entry is skipped and the selected Slurm NFS mount supplies the shared-data and HPC-tools paths. No additional storage role field is supported or required.

Info