Add Veritas VxVM and VCS storage expansion toolkit
This commit is contained in:
+70
@@ -0,0 +1,70 @@
|
||||
#!/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
|
||||
source "$SCRIPT_DIR/00_env.sh"
|
||||
|
||||
parse_common_args "$@"
|
||||
require_inputs dg disks
|
||||
|
||||
missing=0
|
||||
for cmd in vxdg vxdisk vxprint tr; do
|
||||
require_cmd "$cmd" || missing=1
|
||||
done
|
||||
|
||||
if (( missing != 0 )); then
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if ! vxdg list "$DISKGROUP" >/dev/null 2>&1; then
|
||||
critical "diskgroup not found: $DISKGROUP"
|
||||
exit 1
|
||||
fi
|
||||
ok "diskgroup exists: $DISKGROUP"
|
||||
|
||||
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
|
||||
|
||||
summary="$(vxdisk list 2>/dev/null | awk -v disk="$disk" '$1 == disk {print $0}')"
|
||||
if [[ -z "$summary" ]]; then
|
||||
warning "unable to find summary row for $disk; using detailed status only"
|
||||
elif printf '%s\n' "$summary" | awk '{print $3}' | grep -qv '^-'; then
|
||||
critical "disk '$disk' appears to belong to a diskgroup: $summary"
|
||||
status=1
|
||||
continue
|
||||
fi
|
||||
|
||||
info="$(disk_status_line "$disk")"
|
||||
disk_status="${info#*|}"
|
||||
if [[ "$disk_status" == *"online invalid"* ]]; then
|
||||
critical "disk '$disk' is still online invalid; initialize it before adding to a diskgroup"
|
||||
status=1
|
||||
continue
|
||||
fi
|
||||
|
||||
ok "disk '$disk' appears initialized and unassigned"
|
||||
done
|
||||
|
||||
if (( status != 0 )); then
|
||||
critical "one or more disks failed validation; diskgroup extension not attempted"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
confirm_execute "This will add disk(s) '$DISKS' to VxVM diskgroup '$DISKGROUP'."
|
||||
|
||||
for disk in $DISKS; do
|
||||
alias_base="$(printf '%s_%s' "$DISKGROUP" "$disk" | tr -c 'A-Za-z0-9_' '_')"
|
||||
run_cmd "Add disk $disk to diskgroup $DISKGROUP as $alias_base" vxdg -g "$DISKGROUP" adddisk "${alias_base}=${disk}"
|
||||
done
|
||||
|
||||
capture_cmd "Diskgroup details after extension" vxdg list "$DISKGROUP"
|
||||
capture_cmd "VxVM layout after diskgroup extension" vxprint -g "$DISKGROUP" -ht
|
||||
ok "diskgroup extension step completed"
|
||||
Reference in New Issue
Block a user