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
Co-authored-by: Cursor <cursoragent@cursor.com>
222 lines
7.5 KiB
Bash
Executable File
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 "=========================================="
|
|
|