# Live Discovery Patterns for Storage Migrations

## Discovery commands for storage migration planning

When planning to move disks between systems (ZFS → Ceph, decommission, etc.), always run these live first:

### Ceph OSD Discovery
```bash
# Full OSD info
ceph osd tree
ceph osd df

# Single OSD metadata (shows device path, size, rotational, hostname)
ceph osd metadata osd.N --conf /etc/pve/ceph.conf --keyring /etc/pve/priv/ceph.client.admin.keyring

# Device path tells you if disk is USB-backed:
# USB: "/dev/disk/by-path/pci-*usb-*"
# Native SATA: "/dev/disk/by-path/pci-*ata-*"
# NVMe: "/dev/disk/by-path/pci-*nvme-*"

# Pool-to-Crush-Rule mapping
ceph osd pool ls detail | grep -E "pool_name|crush_rule"
```

### ZFS Discovery
```bash
zpool status          # Which disks are members?
zpool list            # Capacity info
zfs list              # Datasets and usage
```

### Smart Health
```bash
smartctl -a /dev/sdX | grep -E "Model|Serial|Rotation|Reallocated|Power_On|Temp"
```

## Ceph Pool Details (from session 2026-07-03)

| Pool | Rule | Size | Applied To |
|------|------|------|------------|
| cephfs_data | replicated_rule (host) | 3 | CephFS |
| cephfs_metadata | replicated_ssd (host) | 3 | CephFS meta |
| vm_disks | replicated_ssd (host) | 3 | VM disks |
| rbd | replicated_hdd (host) | 3 | RBD |
| hdd_disk | replicated_hdd (host) | 3 | General storage |
| tm_disks | replicated_hdd (host) | 2 | TimeMachine |

CRUSH rules: `replicated_rule` = default (host), `replicated_ssd` = SSD-only, `replicated_hdd` = HDD-only.

## Ceph Version
Squid 19.2.4 (stable), on Proxmox VE cluster "pve" with nodes proxmox3-7 + n5pro.
