Aqui estão algumas outras alternativas, se você pode fazer certas suposições (eu gosto de / proc / partitions, entretanto, contanto que você esteja filtrando os números principais para não pegar volumes LVM, etc)
Assumindo que todos os seus discos são locais (ou seja, não SAN):
user@host [/home/q0px]
$ ls -l /dev/disk/by-path/
total 0
lrwxrwxrwx 1 root root 9 Dec 5 01:27 pci-0000:00:1f.1-ide-0:0 -> ../../hda
Se todas as partições tiverem UUIDs (também funciona para dispositivos SAN)
user@host [/home/q0px]
$ ls -l /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root 18 Dec 5 01:27 dc13d5cf-ba98-4339-99c5-0136177f7e22 -> ../../cciss/c0d0p1
Se a sua partição tiver rótulos (também orks para dispositivos SAN):
user@host [/home/q0px]
$ ls -l /dev/disk/by-label/
total 0
lrwxrwxrwx 1 root root 18 Dec 5 01:27 boot -> ../../cciss/c0d0p1