- Provision oracle-publisher on CT 3500 (quoted DATA_SOURCE URLs, dotenv). - Host-side pct-lxc-3501-net-up for ccip-monitor eth0 after migrate. - CoinGecko key script: avoid sed & corruption; document quoted URLs. - Besu node list reload, fstrim/RPC scripts, storage health docs. - Submodule smom-dbis-138: web3 v6 pin, oracle check default host r630-02. Made-with: Cursor
67 lines
2.5 KiB
Bash
Executable File
67 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# Run fstrim in all running LXC containers on Proxmox hosts (reclaim thin pool space).
|
||
# Usage: ./scripts/maintenance/fstrim-all-running-ct.sh [--dry-run]
|
||
# Requires: SSH key-based access to ml110, r630-01, r630-02.
|
||
# See: docs/04-configuration/STORAGE_GROWTH_AND_HEALTH.md
|
||
#
|
||
# Environment (optional):
|
||
# FSTRIM_TIMEOUT_SEC Seconds per CT (default 180). Use 45–60 for faster fleet passes when many CTs hang on FITRIM.
|
||
# FSTRIM_HOSTS Space-separated host keys: ml110 r630-01 r630-02 (default: all three).
|
||
|
||
set -euo pipefail
|
||
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
||
[[ -f "${PROJECT_ROOT}/config/ip-addresses.conf" ]] && source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true
|
||
|
||
ML110="${PROXMOX_HOST_ML110:-192.168.11.10}"
|
||
R630_01="${PROXMOX_HOST_R630_01:-192.168.11.11}"
|
||
R630_02="${PROXMOX_HOST_R630_02:-192.168.11.12}"
|
||
|
||
FSTRIM_TIMEOUT_SEC="${FSTRIM_TIMEOUT_SEC:-180}"
|
||
# shellcheck disable=SC2206
|
||
FSTRIM_HOSTS_ARR=(${FSTRIM_HOSTS:-ml110 r630-01 r630-02})
|
||
|
||
DRY_RUN=0
|
||
[[ "${1:-}" == "--dry-run" ]] && DRY_RUN=1
|
||
|
||
run_ssh() { ssh -o ConnectTimeout=15 -o ServerAliveInterval=10 -o StrictHostKeyChecking=accept-new root@"$1" "$2" 2>/dev/null || true; }
|
||
|
||
fstrim_host() {
|
||
local host_ip="$1" host_name="$2"
|
||
local vmids
|
||
vmids=$(run_ssh "$host_ip" "pct list 2>/dev/null | awk 'NR>1 && \$2==\"running\" {print \$1}'" || true)
|
||
if [[ -z "$vmids" ]]; then
|
||
echo " $host_name ($host_ip): no running containers or unreachable"
|
||
return 0
|
||
fi
|
||
for vmid in $vmids; do
|
||
if [[ $DRY_RUN -eq 1 ]]; then
|
||
echo " [dry-run] $host_name VMID $vmid: would run fstrim -v / (timeout ${FSTRIM_TIMEOUT_SEC}s)"
|
||
else
|
||
# timeout: some CTs hang on FITRIM or slow storage; do not block entire fleet
|
||
out=$(run_ssh "$host_ip" "timeout \"${FSTRIM_TIMEOUT_SEC}\" pct exec $vmid -- fstrim -v / 2>&1" || true)
|
||
echo " $host_name VMID $vmid: ${out:-done}"
|
||
fi
|
||
done
|
||
}
|
||
|
||
echo "=== fstrim all running CTs (reclaim thin pool space) ==="
|
||
echo " timeout_per_ct=${FSTRIM_TIMEOUT_SEC}s hosts=${FSTRIM_HOSTS_ARR[*]}"
|
||
[[ $DRY_RUN -eq 1 ]] && echo "(dry-run: no changes)"
|
||
echo ""
|
||
|
||
for key in "${FSTRIM_HOSTS_ARR[@]}"; do
|
||
case "$key" in
|
||
ml110) fstrim_host "$ML110" "ml110" ;;
|
||
r630-01) fstrim_host "$R630_01" "r630-01" ;;
|
||
r630-02) fstrim_host "$R630_02" "r630-02" ;;
|
||
*)
|
||
echo " Unknown FSTRIM_HOSTS entry: $key (use ml110, r630-01, r630-02)"
|
||
;;
|
||
esac
|
||
done
|
||
|
||
echo ""
|
||
echo "Done. Schedule weekly via cron or run with daily-weekly-checks weekly."
|