3

I have a CentOS 4.x server running software raid. The server has two scsi disks in hot-swap trays. mdadm reports that the raid has failed, and so I would like to replace it.

I examine /proc/mdstat, which tells me my two raid devices have components on disks sda and sdb. It also tells me that sdb is the one that failed.

I examine /proc/scsi/scsi, which tells me I have two physical devices, at SCSI IDs 0 0 0 0 and 0-0-1-0.

Because I want to do the change hot, I assume that sdb is 0-0-1-0. So I say:

# echo "scsi remove-single-device 0 0 1 0" > /proc/scsi/scsi

...and the computer barfs because sda has just been removed, leaving the system with no valid drives.

Now upon reflection, the way I got into this mess was the last time a drive failed, it was sda/0-0-0-0, and I did it the old-school way -- stop the computer, remove the dead drive, then boot off of the survivor in it's old slot. This left me with a computer that thought that sda was 0-0-1-0. I then obtained and inserted, hot, a replacement, and added it like so:

# echo "scsi add-single-device 0 0 0 0" > /proc/scsi/scsi

...which worked, which meant I could apply a disk label, partition, and reconstruct my raid arrays. This also meant that the computer thinks that sdb is 0-0-0-0. Now sdb dies again (350 days later, but that's another issue) and I have forgotten all this.

So. Assuming that both my memory and my records keeping skills are inadequate for reminding me that this has happened, is there a way that in future can I compare the scsi device names (0-0-$n-0) and associate them with named devices (sd$x)?

1 Answer 1

5

You can look in /sys/block/sda/device, which will have a symlink starting with scsi_device that identifies the device:

$ ls -d /sys/block/sda/device/scsi_device*
/sys/block/sda/device/scsi_device:0:0:0:0

Or you can look in /sys/bus/scsi/devices:

$ ls /sys/bus/scsi/devices/
0:0:0:0  1:0:0:0  2:0:0:0  3:0:0:0  7:0:0:0  8:0:0:0

Each entry here represents a SCSI device. Inside each directory is a symlink starting with block: that identifies the corresponding block device:

$ ls -d /sys/bus/scsi/devices/0\:0\:0\:0/block*
/sys/bus/scsi/devices/0:0:0:0/block:sda
1
  • CentOS 4.x does not have /sys/blocl/sd?/device/scsi_device* file(s). But it does populate /sys/bus/scsi/devices/0\:0\:?\:0/block correctly. Thank you. Commented Dec 14, 2009 at 17:10

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .