pbs_allinone.sh: 스토리지 선택 개선

- 복구 시 사용 가능한 스토리지 목록 자동 표시
- 스토리지 존재 여부 및 VM/CT 이미지 저장 가능 여부 검증
- 잘못된 스토리지 입력 시 재입력 요청
- 스토리지 용량 및 사용률 정보 표시 (GB 단위)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Claude 2025-11-14 23:32:23 +09:00
parent 269350c1d2
commit 1c6e6dcf56

View File

@ -325,6 +325,32 @@ PYEOF
return 0
}
# 사용 가능한 스토리지 목록 표시
list_available_storage() {
echo ""
log_step "사용 가능한 스토리지 목록"
echo ""
# VM/CT 이미지를 저장할 수 있는 스토리지만 필터링
pvesm status -content images,rootdir 2>/dev/null | tail -n +2 | while read -r line; do
storage_name=$(echo "$line" | awk '{print $1}')
storage_type=$(echo "$line" | awk '{print $2}')
total_mb=$(echo "$line" | awk '{print $4}')
used_mb=$(echo "$line" | awk '{print $5}')
avail_mb=$(echo "$line" | awk '{print $6}')
usage_pct=$(echo "$line" | awk '{print $7}')
# MB를 GB로 변환
total_gb=$(echo "scale=2; $total_mb / 1024 / 1024" | bc)
avail_gb=$(echo "scale=2; $avail_mb / 1024 / 1024" | bc)
echo -e " ${GREEN}${NC} ${CYAN}${storage_name}${NC}"
echo -e " 타입: ${storage_type} | 용량: ${total_gb}GB | 여유: ${avail_gb}GB | 사용률: ${usage_pct}"
done
echo ""
}
# 복구 설정 입력
get_restore_config() {
echo ""
@ -335,9 +361,29 @@ get_restore_config() {
read -p "$(echo -e ${CYAN}복구할 VM/CT ID${NC}) [기본값: ${TEMPLATE_VMID}]: " TARGET_VMID
TARGET_VMID=${TARGET_VMID:-$TEMPLATE_VMID}
# 스토리지
read -p "$(echo -e ${CYAN}저장 스토리지${NC}) [기본값: local-lvm]: " input_storage
TARGET_STORAGE=${input_storage:-local-lvm}
# 사용 가능한 스토리지 목록 표시
list_available_storage
# 스토리지 선택
while true; do
read -p "$(echo -e ${CYAN}저장 스토리지 이름${NC}) [기본값: local-lvm]: " input_storage
TARGET_STORAGE=${input_storage:-local-lvm}
# 입력한 스토리지가 존재하는지 확인
if pvesm status -storage "${TARGET_STORAGE}" &>/dev/null; then
# VM/CT 이미지를 저장할 수 있는지 확인
if pvesm status -storage "${TARGET_STORAGE}" -content images &>/dev/null || \
pvesm status -storage "${TARGET_STORAGE}" -content rootdir &>/dev/null; then
log_success "스토리지 '${TARGET_STORAGE}' 선택됨"
break
else
log_error "스토리지 '${TARGET_STORAGE}'는 VM/CT 이미지를 저장할 수 없습니다"
fi
else
log_error "스토리지 '${TARGET_STORAGE}'를 찾을 수 없습니다"
fi
echo ""
done
echo ""
log_info "복구 요약:"