fio — Installation¶
This guide covers deploying fio onto Linux VMs on the Azure Local cluster.
Prerequisites¶
In addition to the common prerequisites:
- Linux VMs deployed on the Azure Local cluster and reachable via SSH (port 22)
- SSH key-based authentication configured — the
linux_sshcredential must be available via Key Vault or interactive prompt - Ansible 2.14+ accessible from the management station (WSL2 or Linux jump box)
- fio 3.28+ will be installed by
Install-Fio.ps1
See Credential Management for linux_ssh setup.
Deploy fio via Ansible¶
Install-Fio.ps1 wraps the Ansible playbook invocation:
.\tools\fio\scripts\Install-Fio.ps1 `
-ClusterName "hci01.corp.infiniteimprobability.com" `
-Nodes @("hci01-node1", "hci01-node2", "hci01-node3", "hci01-node4") `
-AnsibleInventory "config/ansible/inventory.yml" `
-PlaybookPath "tools/fio/playbooks/deploy-fio.yml"
What the Script Does¶
- Validates
ansible-playbookis available on$PATH - Verifies the inventory file and playbook exist at the provided paths
- Runs
ansible-playbook deploy-fio.yml -i inventory.yml - Returns an object with
ClusterName,Nodes,Playbook, andStatus: Installed
Parameters¶
| Parameter | Type | Default | Description |
|---|---|---|---|
-ClusterName |
string | required | Cluster display name (used for logging) |
-Nodes |
string[] | required | DNS names or IPs of target Linux VMs |
-AnsibleInventory |
string | config/ansible/inventory.yml |
Path to Ansible inventory file |
-PlaybookPath |
string | tools/fio/playbooks/deploy-fio.yml |
Path to the deploy playbook |
-CredentialSource |
string | Interactive |
KeyVault, Interactive, or Parameter |
Verify Installation¶
After Install-Fio.ps1 completes, verify fio is installed and accessible:
Expected output: fio-3.34 (or any 3.28+).
Supported fio Version¶
The framework targets fio 3.28+. Earlier versions may not support the --output-format=json structured output required by Collect-FioResults.ps1. If an incompatible version is detected, the collection script will fail with a JSON parse error.
Remote Directory Structure¶
| Path | Purpose |
|---|---|
/tmp/fio-test/ |
Test target directory (pre-created by Start-FioTest.ps1) |
/tmp/fio-results/<RunId>/fio-results.json |
Structured JSON output per node |
Results are retrieved by Collect-FioResults.ps1 via SCP and removed from the remote node after successful collection.
Ansible Inventory Format¶
# config/ansible/inventory.yml
all:
hosts:
hci01-node1:
ansible_host: 192.168.100.11
ansible_user: azureuser
ansible_ssh_private_key_file: ~/.ssh/id_rsa
hci01-node2:
ansible_host: 192.168.100.12
ansible_user: azureuser
ansible_ssh_private_key_file: ~/.ssh/id_rsa
Next Steps¶
- Workload Profiles — Choose and configure a test profile
- Monitoring — Review alert thresholds active during fio runs