Files
portfolio/infra-run/scripts/bash/gpfs/06_rebalance_filesystem.sh
T
Mateusz Suski ca5a876d03
lint / shell-yaml-ansible (push) Failing after 21s
Improve infra-run portfolio credibility
2026-05-08 21:18:22 +00:00

59 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=00_env.sh
. "$SCRIPT_DIR/00_env.sh"
BACKGROUND=false
usage() {
printf 'Usage: %s --fs <filesystem> [--execute] [--background]\n' "$(basename "$0")"
}
while [[ "$#" -gt 0 ]]; do
case "$1" in
--fs) FILESYSTEM="${2:-}"; shift 2 ;;
--execute) DRY_RUN=false; shift ;;
--background) BACKGROUND=true; shift ;;
-h|--help) usage; exit 0 ;;
*) critical "Unknown argument: $1"; usage; exit 2 ;;
esac
done
if [[ -z "$FILESYSTEM" ]]; then
critical "Missing required --fs <filesystem>"
usage
exit 2
fi
for cmd in mmlsdisk mmrestripefs; do
require_cmd "$cmd" || exit 2
done
warning "Restripe/rebalance can be I/O intensive. Run only in an approved change window."
section "Current disk balance"
mmlsdisk "$FILESYSTEM" 2>&1 | tee -a "$LOG_FILE" || warning "Unable to show current disk state"
section "Planned rebalance"
if [[ "$BACKGROUND" == "true" ]]; then
if [[ "$DRY_RUN" == "true" ]]; then
ok "DRY-RUN: mmrestripefs $FILESYSTEM -b &"
else
confirm_execute "background restripe for $FILESYSTEM"
ok "RUN: mmrestripefs $FILESYSTEM -b &"
mmrestripefs "$FILESYSTEM" -b 2>&1 | tee -a "$LOG_FILE" &
fi
else
if [[ "$DRY_RUN" == "true" ]]; then
ok "DRY-RUN: mmrestripefs $FILESYSTEM -b"
else
warning "EXECUTE: mmrestripefs $FILESYSTEM -b"
fi
confirm_execute "restripe for $FILESYSTEM"
if [[ "$DRY_RUN" == "false" ]]; then
run_cmd mmrestripefs "$FILESYSTEM" -b
fi
fi