#!/bin/bash # Drive Atlas Diagnostic Script # Run this on each server to gather PCI path information echo "=== Server Information ===" echo "Hostname: $(hostname)" echo "Date: $(date)" echo "" echo "=== All /dev/disk/by-path/ entries ===" ls -la /dev/disk/by-path/ | grep -v "part" | sort echo "" echo "=== Organized by PCI Address ===" for path in /dev/disk/by-path/*; do if [ -L "$path" ]; then # Skip partitions if [[ "$path" =~ -part[0-9]+$ ]]; then continue fi basename_path=$(basename "$path") target=$(readlink -f "$path") device=$(basename "$target") echo "Path: $basename_path" echo " -> Device: $device" # Try to get size if [ -b "$target" ]; then size=$(lsblk -d -n -o SIZE "$target" 2>/dev/null) echo " -> Size: $size" fi # Try to get SMART info for model if command -v smartctl >/dev/null 2>&1; then model=$(sudo smartctl -i "$target" 2>/dev/null | grep "Device Model\|Model Number" | cut -d: -f2 | xargs) if [ -n "$model" ]; then echo " -> Model: $model" fi fi echo "" fi done echo "=== PCI Devices with Storage Controllers ===" lspci | grep -i "storage\|raid\|sata\|sas\|nvme" echo "" echo "=== Current Block Devices ===" lsblk -d -o NAME,SIZE,TYPE,TRAN | grep -v "rbd\|loop" echo "" echo "=== Recommendations ===" echo "1. Note the PCI addresses (e.g., 0c:00.0) of your storage controllers" echo "2. For each bay, physically identify which drive is in it" echo "3. Match the PCI path pattern to the bay number" echo "4. Example: pci-0000:0c:00.0-ata-1 might be bay 1 on controller 0c:00.0"