function pvc-usage --description "Show Longhorn PVC usage (human-readable) mapped to namespace/name" begin kubectl -n longhorn-system get volumes.longhorn.io -o json \ | jq -r '.items[] | "\(.metadata.name)\t\(.status.actualSize)\t\(.spec.size)"' \ | sed 's/^/V\t/' kubectl get pvc -A -o json \ | jq -r '.items[] | "\(.spec.volumeName)\t\(.metadata.namespace)/\(.metadata.name)"' \ | sed 's/^/P\t/' end \ | awk 'BEGIN{FS="\t"} $1=="V"{vol=$2; vu[vol]=$3; vs[vol]=$4} $1=="P"{vol=$2; name=$3; map[vol]=name} END{ for (v in vu){ used=vu[v]+0; size=vs[v]+0; pct=(size>0?used/size*100:0); cmd="numfmt --to=iec --suffix=B " used; cmd|getline hu; close(cmd); cmd="numfmt --to=iec --suffix=B " size; cmd|getline hs; close(cmd); n=(v in map?map[v]:v); printf "%-40s %-10s / %-10s (%5.1f%%)\n", n, hu, hs, pct } }' | sort end