Skip to main content
PreFlight is a system and hardware validation tool developed by Regatta to evaluate whether an environment is ready for a Regatta installation. Because Regatta is a high-performance, distributed OLxP database, its runtime depends on stable and bottleneck-free CPU, memory, storage, and networking components. The PreFlight tool performs a comprehensive set of diagnostics and benchmarks to ensure that every host in the environment meets the performance, configuration, and connectivity requirements needed for a successful and reliable Regatta deployment..

Features

  • System performance benchmarking
  • Network throughput and latency testing
  • Disk I/O stress testing
  • System information and diagnostics
  • Lightweight with minimal dependecies

What Gets Checked

Operating System & Kernel

  • OS name and version detection
  • Kernel version and architecture
  • System uptime and boot information

CPU Analysis

  • Physical cores and logical threads
  • CPU model and frequency information
  • NUMA configuration
  • Performance benchmarking (sysbench)

Memory Analysis

  • Total, available, and used memory
  • Swap usage and configuration
  • Memory throughput benchmarking

Storage & Filesystem

  • Disk type detection (SSD/HDD/NVMe)
  • Filesystem information and mount options
  • Disk usage and available space
  • I/O performance testing (FIO)

Network Configuration

  • Network interface enumeration
  • IP address configuration
  • DNS resolution testing
  • Interconnectivity validation
  • Throughput testing (iperf3)

Security Analysis

  • SELinux: Status, mode, policy, boolean settings
  • AppArmor: Profile statistics and enforcement status
  • Firewall: UFW, firewalld, or iptables analysis
  • SSH Configuration: Port, authentication methods, security settings
  • Security Services: Status of critical security services

System Configuration

  • ulimit values (open files, stack size)
  • Important sysctl parameters
  • Process limits and system constraints

Kernel & Journal Log Capture

  • Copies dmesg and journalctl logs from hosts when present for troubleshooting
  • Hardware-related message extraction and categorization are available within host scripts

Prerequisites & Dependencies

Operating System Prerequisites

PreFlight currently supports:
  • Linux-based distributions (RHEL, CentOS, Rocky, Alma, Ubuntu, Debian, Oracle Linux, etc.)
  • x86-64 architecture (minimum required)

Dependency Management

There are two dependency groups required for running PreFlight:
  1. Orchestrator (preFlight.sh) Dependencies - Installed on the machine running the orchestrator script.
  2. Remote Host Dependencies - Installed on target hosts that PreFlight will test.
    • These can be automatically installed using --auto-install-deps (internet required).
    • If not using automatic installation, all dependencies must be manually installed beforehand.

Orchestrator (preFlight.sh) Dependencies

These must be installed manually on the orchestrator machine:
  • jq - JSON processing for parsing results
  • bc - mathematical calculations (compression ratios, analysis)
  • tar/gzip - archive creation (for —compress option)
  • ssh/scp - remote host communication
  • coreutils - common utilities (find, grep, awk, sed, etc.)

Remote Host Dependencies

These can be installed automatically using --auto-install-deps, provided the hosts have internet access:
  • curl
  • bc
  • tar
  • findutils
  • net-tools
  • bind-utils
  • iperf3 - network throughput benchmarking
  • fio - disk I/O benchmarking
  • sysbench - CPU and memory benchmarking

SSH

SSH key-based access is required for PreFlight to connect to target hosts. For single-For single-node deployments where PreFlight runs on the same machine it evaluates, you can enable local SSH access with:

Quick Start

All Options (Parameters) for the preFlight.sh

Configuration Parameters

Test Parameters

Examples

Inventory File Format

This file specifies the target hosts and which storage devices should be tested on each. It can be generated using util/detect_devices.sh. Example:

FIO Files

Custom fio test files can be used with --fio-files. They must follow the standard fio configuration format:

Output & Results

File Structure Overview

Note: All results are saved with timestamps.

Troubleshooting

SSH Connectivity Issues

Permission Issues


Advanced

Execution Flow

The system uses an orchestrator → hosts model:
The orchestrator triggers tests on all target hosts from the inventory file, collects results, and performs cleanup.

Orchestrator Machine

  • Script: preFlight.sh
  • Purpose: Coordinates all remote tests and aggregates results
  • Libraries: All files in /lib/*.sh
  • Dependencies: Primarily SSH utilities, JSON tools, and core utilities

Remote Hosts (Target Machines)

  • Scripts: Files in /host_files/ directory
    • system_readiness_check.sh - Main remote diagnostic script
    • fio_benchmark_only.sh - FIO testing script
    • remote_fio_wrapper.sh - FIO wrapper for remote execution
    • install_dependencies.sh - Dependency installation script
  • Purpose: Execute system tests and diagnostics
  • Libraries: lib/common.sh (copied to hosts)
  • Dependencies: Performance and system analysis tools

Responsibilities of Individual Scripts

System Readiness Check (host_files/system_readiness_check.sh)

  • Invoked by the orchestrator with prepared parameters.
  • Performs system diagnostics, CPU/memory benchmarks, and optional disk tests
  • Outputs structured JSON consumed by the orchestrator

Cluster Orchestrator (preFlight.sh)

  • Multi-machine coordination
  • Interconnectivity tests
  • Parallel and sequential FIO testing
  • Network throughput benchmarks (all-to-all or server-to-all)
  • Automatic dependency installation (--auto-install-deps)

FIO Benchmark Tool (host_files/fio_benchmark_only.sh)

  • Disk I/O performance testing
  • Supports basic and extensive test modes
  • Automatic device detection
  • Supports custom test configurations

License

PreFlight is licensed under the GNU General Public License v2.0 (GPL-2.0).