Add GPFS storage expansion toolkit
This commit is contained in:
+56
@@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env bash
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
set -o 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
|
||||
ok "DRY-RUN: mmrestripefs $FILESYSTEM -b"
|
||||
confirm_execute "restripe for $FILESYSTEM"
|
||||
if [[ "$DRY_RUN" == "false" ]]; then
|
||||
run_cmd mmrestripefs "$FILESYSTEM" -b
|
||||
fi
|
||||
fi
|
||||
Reference in New Issue
Block a user