120 lines
4.4 KiB
Bash
Executable File
120 lines
4.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Verify Storage Configuration
|
|
# Checks if storage is configured for optimal deployment performance
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
|
|
source "$PROJECT_ROOT/lib/common.sh" 2>/dev/null || {
|
|
log_info() { echo "[INFO] $1"; }
|
|
log_success() { echo "[✓] $1"; }
|
|
log_error() { echo "[ERROR] $1"; }
|
|
log_warn() { echo "[WARN] $1"; }
|
|
}
|
|
|
|
# Load configuration
|
|
load_config "$PROJECT_ROOT/config/proxmox.conf" 2>/dev/null || true
|
|
|
|
log_info "========================================="
|
|
log_info "Storage Configuration Verification"
|
|
log_info "========================================="
|
|
log_info ""
|
|
|
|
# Check if running on Proxmox host
|
|
if ! command_exists pvesm; then
|
|
log_error "pvesm command not found. This script must be run on Proxmox host."
|
|
exit 1
|
|
fi
|
|
|
|
# Get configured storage
|
|
CONFIGURED_STORAGE="${PROXMOX_STORAGE:-local-lvm}"
|
|
log_info "Configured storage: $CONFIGURED_STORAGE"
|
|
|
|
# List available storage
|
|
log_info ""
|
|
log_info "=== Available Storage ==="
|
|
pvesm status 2>/dev/null || {
|
|
log_error "Failed to list storage. Are you running as root?"
|
|
exit 1
|
|
}
|
|
|
|
log_info ""
|
|
log_info "=== Storage Details ==="
|
|
|
|
# Check if configured storage exists
|
|
if pvesm status 2>/dev/null | grep -q "^$CONFIGURED_STORAGE"; then
|
|
log_success "Configured storage '$CONFIGURED_STORAGE' exists"
|
|
|
|
# Get storage details
|
|
STORAGE_TYPE=$(pvesm status 2>/dev/null | grep "^$CONFIGURED_STORAGE" | awk '{print $2}')
|
|
STORAGE_STATUS=$(pvesm status 2>/dev/null | grep "^$CONFIGURED_STORAGE" | awk '{print $3}')
|
|
STORAGE_TOTAL=$(pvesm status 2>/dev/null | grep "^$CONFIGURED_STORAGE" | awk '{print $4}')
|
|
STORAGE_USED=$(pvesm status 2>/dev/null | grep "^$CONFIGURED_STORAGE" | awk '{print $5}')
|
|
STORAGE_AVAIL=$(pvesm status 2>/dev/null | grep "^$CONFIGURED_STORAGE" | awk '{print $6}')
|
|
|
|
log_info " Type: $STORAGE_TYPE"
|
|
log_info " Status: $STORAGE_STATUS"
|
|
log_info " Total: $STORAGE_TOTAL"
|
|
log_info " Used: $STORAGE_USED"
|
|
log_info " Available: $STORAGE_AVAIL"
|
|
|
|
# Check storage type
|
|
log_info ""
|
|
log_info "=== Storage Type Analysis ==="
|
|
|
|
if [[ "$STORAGE_TYPE" == "lvm" ]] || [[ "$STORAGE_TYPE" == "lvmthin" ]] || [[ "$STORAGE_TYPE" == "zfspool" ]] || [[ "$STORAGE_TYPE" == "dir" ]]; then
|
|
if echo "$CONFIGURED_STORAGE" | grep -q "local"; then
|
|
log_success "Storage is local (recommended for deployment performance)"
|
|
log_info " Local storage provides:"
|
|
log_info " • Faster container creation (15-30 min saved)"
|
|
log_info " • Faster OS template installation"
|
|
log_info " • Lower latency for I/O operations"
|
|
else
|
|
log_warn "Storage appears to be network-based"
|
|
log_info " Network storage considerations:"
|
|
log_info " • Slower container creation"
|
|
log_info " • Higher latency"
|
|
log_info " • May benefit from caching"
|
|
log_info ""
|
|
log_info " Recommendation: Use local storage if possible for deployment"
|
|
fi
|
|
else
|
|
log_warn "Storage type '$STORAGE_TYPE' detected"
|
|
log_info " Verify this is optimal for your deployment needs"
|
|
fi
|
|
|
|
# Check available space (estimate requirement: ~100GB per container, 67 containers = ~6.7TB)
|
|
log_info ""
|
|
log_info "=== Storage Capacity Check ==="
|
|
ESTIMATED_NEED="6.7T" # Rough estimate for 67 containers
|
|
log_info "Estimated storage needed: ~$ESTIMATED_NEED (for 67 containers)"
|
|
log_info "Available storage: $STORAGE_AVAIL"
|
|
|
|
# Note: Actual space check would require parsing storage sizes
|
|
log_info " Verify sufficient space is available for deployment"
|
|
|
|
else
|
|
log_error "Configured storage '$CONFIGURED_STORAGE' not found"
|
|
log_info ""
|
|
log_info "Available storage options:"
|
|
pvesm status 2>/dev/null | awk '{print " - " $1 " (" $2 ")"}'
|
|
log_info ""
|
|
log_info "To fix: Update PROXMOX_STORAGE in config/proxmox.conf"
|
|
exit 1
|
|
fi
|
|
|
|
log_info ""
|
|
log_info "=== Storage Performance Recommendations ==="
|
|
log_info ""
|
|
log_info "For optimal deployment performance:"
|
|
log_info " ✓ Use local storage (local-lvm, local, local-zfs)"
|
|
log_info " ✓ Ensure sufficient available space"
|
|
log_info " ✓ Monitor storage I/O during deployment"
|
|
log_info " ✓ Consider SSD-based storage for faster operations"
|
|
log_info ""
|
|
|
|
log_success "Storage configuration verification complete"
|
|
|