I know several ways to identify bad disks, e.g. there is the EMS tool and you can also see some SCSI error messages in syslog. But here is a low-level way to check if a disk is failing:
# echo 2400?20X | adb /dev/dsk/c3t8d0 2400: 44454645 43543031 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 # # echo 2400?20X | adb /dev/dsk/c2t0d0 2400: 44454645 43543031 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 #
If you see in the above output only zeroes, that means that everything is fine with the disk. Those counters are for BBDIR (BadBlockDirectory), it will be displayed here if any bad sector occurs on the disk. Any non-zero value here means that the disk should be changed. I don’t know what the first two values are meaning, please comment if you do. Logically, this method is only useful for local disks, not for LUNs from a storage.