Files
Sankofa/scripts/analyze-r630-disk-layout.sh
defiQUG 33d50fb91e
Some checks failed
API CI / API Lint (push) Successful in 47s
API CI / API Type Check (push) Failing after 47s
API CI / API Test (push) Successful in 1m0s
API CI / API Build (push) Failing after 50s
API CI / Build Docker Image (push) Has been skipped
Build Crossplane Provider / build (push) Failing after 5m51s
CD Pipeline / Deploy to Staging (push) Failing after 29s
CI Pipeline / Lint and Type Check (push) Failing after 36s
CI Pipeline / Build (push) Has been skipped
CI Pipeline / Test Backend (push) Failing after 1m33s
CI Pipeline / Test Frontend (push) Failing after 30s
CI Pipeline / Security Scan (push) Failing after 1m16s
Crossplane Provider CI / Go Test (push) Failing after 3m23s
Crossplane Provider CI / Go Lint (push) Failing after 7m27s
Crossplane Provider CI / Go Build (push) Failing after 3m27s
Deploy to Staging / Deploy to Staging (push) Failing after 30s
Portal CI / Portal Lint (push) Failing after 21s
Portal CI / Portal Type Check (push) Failing after 21s
Portal CI / Portal Test (push) Failing after 21s
Portal CI / Portal Build (push) Failing after 22s
Test Suite / frontend-tests (push) Failing after 30s
Test Suite / api-tests (push) Failing after 49s
Test Suite / blockchain-tests (push) Failing after 30s
Type Check / type-check (map[directory:. name:root]) (push) Failing after 23s
Type Check / type-check (map[directory:api name:api]) (push) Failing after 21s
Type Check / type-check (map[directory:portal name:portal]) (push) Failing after 19s
Validate Configuration Files / validate (push) Failing after 1m52s
CD Pipeline / Deploy to Production (push) Has been skipped
chore: consolidate local WIP (repo cleanup 20260707)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-07 09:41:34 -07:00

222 lines
7.5 KiB
Bash
Executable File

#!/bin/bash
# Comprehensive disk layout analysis for R630-01
# Analyzes the current disk configuration and provides recommendations
# Don't exit on error - we want to continue even if some commands fail
set +e
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m'
echo "=========================================="
echo -e "${CYAN}R630-01 Disk Layout Analysis${NC}"
echo "=========================================="
echo ""
# Check if running as root
if [ "$EUID" -ne 0 ]; then
echo -e "${YELLOW}Warning: Some information may be limited without root access${NC}"
echo ""
fi
echo -e "${BLUE}=== System Overview ===${NC}"
echo "-----------------------------------"
echo "Hostname: $(hostname 2>/dev/null || echo 'unknown')"
echo "Date: $(date)"
echo ""
echo -e "${BLUE}=== Complete Block Device Layout ===${NC}"
echo "-----------------------------------"
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE,MODEL,SERIAL,UUID
echo ""
echo -e "${BLUE}=== Disk Categorization ===${NC}"
echo "-----------------------------------"
# System disk (sda)
echo -e "${GREEN}System Disk (sda):${NC}"
if [ -b /dev/sda ]; then
sda_size=$(lsblk -d -n -o SIZE /dev/sda 2>/dev/null || echo "unknown")
echo " Size: $sda_size"
echo " Partitions:"
lsblk -n /dev/sda | grep -v "^sda" | sed 's/^/ /'
echo " LVM Volumes:"
if command -v pvs &>/dev/null; then
pvs 2>/dev/null | grep sda | sed 's/^/ /' || echo " (No LVM volumes found)"
fi
echo " Status: ${GREEN}Active system disk${NC}"
else
echo " ${RED}Not found${NC}"
fi
echo ""
# Secondary disk (sdb)
echo -e "${YELLOW}Secondary Disk (sdb):${NC}"
if [ -b /dev/sdb ]; then
sdb_size=$(lsblk -d -n -o SIZE /dev/sdb 2>/dev/null || echo "unknown")
echo " Size: $sdb_size"
partitions=$(lsblk -n /dev/sdb 2>/dev/null | grep -c "part" || echo "0")
if [ "$partitions" -eq 0 ]; then
echo " Status: ${YELLOW}Unused - No partitions${NC}"
echo " Recommendation: Available for Ceph OSD or Proxmox storage"
else
echo " Partitions:"
lsblk -n /dev/sdb | grep -v "^sdb" | sed 's/^/ /'
echo " Status: ${YELLOW}Has partitions${NC}"
fi
else
echo " ${RED}Not found${NC}"
fi
echo ""
# Ceph candidate disks (sdc-sdh)
echo -e "${CYAN}Ceph Candidate Disks (sdc-sdh):${NC}"
ceph_disks=0
ceph_available=0
ceph_used=0
for disk in sdc sdd sde sdf sdg sdh; do
if [ -b "/dev/$disk" ]; then
ceph_disks=$((ceph_disks + 1))
size=$(lsblk -d -n -o SIZE /dev/$disk 2>/dev/null || echo "unknown")
partitions=$(lsblk -n /dev/$disk 2>/dev/null | grep -c "part" || echo "0")
partitions=$(echo "$partitions" | tr -d '\n' | head -1)
mountpoint=$(lsblk -d -n -o MOUNTPOINT /dev/$disk 2>/dev/null | tr -d '\n' || echo "")
fstype=$(lsblk -d -n -o FSTYPE /dev/$disk 2>/dev/null | tr -d '\n' || echo "")
echo " /dev/$disk:"
echo " Size: $size"
if [ "${partitions:-0}" -eq 0 ] && [ -z "$mountpoint" ] && [ -z "$fstype" ]; then
echo -e " Status: ${GREEN}Available (no partitions, unmounted)${NC}"
ceph_available=$((ceph_available + 1))
elif [ "${partitions:-0}" -gt 0 ]; then
echo " Partitions: $partitions"
lsblk -n /dev/$disk | grep -v "^$disk" | sed 's/^/ /'
echo -e " Status: ${YELLOW}Has partitions${NC}"
ceph_used=$((ceph_used + 1))
else
echo -e " Status: ${YELLOW}In use (mounted or has filesystem)${NC}"
ceph_used=$((ceph_used + 1))
fi
# Check if in LVM
if command -v pvs &>/dev/null; then
in_lvm=$(pvs 2>/dev/null | grep "/dev/$disk" | wc -l)
if [ "$in_lvm" -gt 0 ]; then
vg=$(pvs 2>/dev/null | grep "/dev/$disk" | awk '{print $2}')
echo -e " LVM: ${YELLOW}In volume group: $vg${NC}"
fi
fi
# Check if has Ceph OSD
if command -v ceph-volume &>/dev/null; then
has_osd=$(ceph-volume lvm list /dev/$disk 2>/dev/null | grep -c "osd\." || echo "0")
if [ "$has_osd" -gt 0 ]; then
osd_id=$(ceph-volume lvm list /dev/$disk 2>/dev/null | grep -oP "osd\.\K\d+" | head -1)
echo -e " Ceph: ${GREEN}OSD $osd_id${NC}"
fi
fi
else
echo " /dev/$disk: ${RED}Not found${NC}"
fi
done
echo ""
echo -e "${BLUE}=== Storage Summary ===${NC}"
echo "-----------------------------------"
echo "Total block devices: $(lsblk -d -n | grep -c '^sd' || echo '0')"
echo "System disk (sda): 1"
echo "Secondary disk (sdb): $([ -b /dev/sdb ] && echo '1' || echo '0')"
echo "Ceph candidate disks (sdc-sdh): $ceph_disks"
echo " - Available: $ceph_available"
echo " - In use: $ceph_used"
echo ""
echo -e "${BLUE}=== Proxmox Storage Status ===${NC}"
echo "-----------------------------------"
if command -v pvesm &>/dev/null; then
pvesm status 2>/dev/null || echo -e "${YELLOW}pvesm not accessible${NC}"
else
echo -e "${YELLOW}pvesm command not found${NC}"
fi
echo ""
echo -e "${BLUE}=== Ceph Status ===${NC}"
echo "-----------------------------------"
if command -v ceph &>/dev/null; then
echo "Ceph health:"
ceph health 2>/dev/null || echo -e "${YELLOW}Ceph not accessible${NC}"
echo ""
echo "OSD tree:"
ceph osd tree 2>/dev/null || echo -e "${YELLOW}Ceph not accessible${NC}"
echo ""
echo "OSD details:"
ceph osd df 2>/dev/null || echo -e "${YELLOW}Ceph not accessible${NC}"
else
echo -e "${YELLOW}Ceph not installed${NC}"
fi
echo ""
echo -e "${BLUE}=== LVM Status ===${NC}"
echo "-----------------------------------"
if command -v vgs &>/dev/null; then
echo "Volume Groups:"
vgs 2>/dev/null | sed 's/^/ /' || echo -e " ${YELLOW}No volume groups found${NC}"
echo ""
echo "Physical Volumes:"
pvs 2>/dev/null | sed 's/^/ /' || echo -e " ${YELLOW}No physical volumes found${NC}"
echo ""
echo "Logical Volumes:"
lvs 2>/dev/null | sed 's/^/ /' || echo -e " ${YELLOW}No logical volumes found${NC}"
else
echo -e "${YELLOW}LVM not available${NC}"
fi
echo ""
echo -e "${BLUE}=== Recommendations ===${NC}"
echo "-----------------------------------"
if [ "$ceph_available" -gt 0 ]; then
echo -e "${GREEN}Available disks for Ceph OSD:${NC}"
for disk in sdc sdd sde sdf sdg sdh; do
if [ -b "/dev/$disk" ]; then
partitions=$(lsblk -n /dev/$disk 2>/dev/null | grep -c "part" || echo "0")
mountpoint=$(lsblk -d -n -o MOUNTPOINT /dev/$disk 2>/dev/null || echo "")
if [ "$partitions" -eq 0 ] && [ -z "$mountpoint" ]; then
echo " - /dev/$disk: Ready for Ceph OSD"
echo " Command: ceph-volume lvm create --data /dev/$disk"
fi
fi
done
echo ""
fi
if [ -b /dev/sdb ]; then
partitions=$(lsblk -n /dev/sdb 2>/dev/null | grep -c "part" || echo "0")
if [ "$partitions" -eq 0 ]; then
echo -e "${GREEN}Secondary disk (sdb) available:${NC}"
echo " - Can be used for Ceph OSD"
echo " - Can be added as Proxmox storage"
echo " - Can be used for backup storage"
echo ""
fi
fi
if [ "$ceph_used" -gt 0 ]; then
echo -e "${YELLOW}Disks currently in use:${NC}"
echo " - Review partitions and usage before repurposing"
echo " - Check if data needs to be migrated"
echo ""
fi
echo "=========================================="
echo -e "${CYAN}Analysis Complete${NC}"
echo "=========================================="