2026-05-05 21:40:09 +00:00
|
|
|
#!/usr/bin/env bash
|
2026-05-08 21:18:22 +00:00
|
|
|
set -euo pipefail
|
2026-05-05 21:40:09 +00:00
|
|
|
|
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
|
# shellcheck source=00_env.sh
|
|
|
|
|
source "$SCRIPT_DIR/00_env.sh"
|
|
|
|
|
|
|
|
|
|
parse_common_args "$@"
|
|
|
|
|
require_inputs disks
|
|
|
|
|
|
|
|
|
|
missing=0
|
|
|
|
|
for cmd in vxdisk vxdisksetup awk; do
|
|
|
|
|
require_cmd "$cmd" || missing=1
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
if (( missing != 0 )); then
|
|
|
|
|
exit 2
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
status=0
|
|
|
|
|
for disk in $DISKS; do
|
|
|
|
|
if ! vxdisk list "$disk" >/dev/null 2>&1; then
|
|
|
|
|
critical "disk not found in vxdisk list: $disk"
|
|
|
|
|
status=1
|
|
|
|
|
continue
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
info="$(disk_status_line "$disk")"
|
|
|
|
|
disk_status="${info#*|}"
|
|
|
|
|
if [[ "$disk_status" != *"online invalid"* ]]; then
|
|
|
|
|
critical "disk '$disk' is not safe to initialize; status is '${disk_status:-unknown}', expected 'online invalid'"
|
|
|
|
|
status=1
|
|
|
|
|
continue
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
ok "disk '$disk' validated as online invalid"
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
if (( status != 0 )); then
|
|
|
|
|
critical "one or more disks failed validation; no initialization attempted"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
confirm_execute "This will initialize VxVM metadata on disk(s): $DISKS"
|
|
|
|
|
|
|
|
|
|
for disk in $DISKS; do
|
|
|
|
|
run_cmd "Initialize VxVM disk $disk" vxdisksetup -i "$disk"
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
for disk in $DISKS; do
|
|
|
|
|
capture_cmd "Post-initialization VxVM disk state for $disk" vxdisk list "$disk"
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
ok "disk initialization step completed"
|