You are not logged in.

#1 2009-11-13 19:45:32

stupac
Member
Registered: 2009-11-10
Posts: 8

HDD's keep switching /dev names

I'm having an interesting issue on my home desktop. Just after installing the base arch system I started getting this error randomly on some boots:

Filesystem Check Failed. Please repair manually and reboot. Note that the root file system is currently mounted read-only. To remount it read-write type: mount -n -o remount,rw / When you exit the maintenance shell the system will reboot automatically

Then of course I can't really do anything in the system. Rebooting a few times would typically cause the system to boot normally. I tried reiserfsck --fix-fixable and --rebuild-sb, but then I realized once I looked the partitions that /dev/sdd and /dev/sdb seemed to be switching. I had originally installed on /dev/sdd, which contains a fat partition and a reiser and a swap. /dev/sdb is supposed to contain just a fat and an ntfs partition (that I've been meaning to delete). When I get the error though, sdb contains the fat, reiser, and swap, and sdd is just a fat and ntfs. Looking at udevinfo confirms these suspicions that my WD3200(supposed to be sdb) is being swapped for my WD2500(supposed to be sdd). See here is what I get when I get the error:

# udevadm info -a -p $(udevadm info -q path -n /dev/sdd)

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:0f.0/host5/target5:0:0/5:0:0:0/block/sdd':
    KERNEL=="sdd"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{range}=="16"
    ATTR{ext_range}=="256"
    ATTR{removable}=="0"
    ATTR{ro}=="0"
    ATTR{size}=="625142448"
    ATTR{alignment_offset}=="0"
    ATTR{capability}=="52"
    ATTR{stat}=="     114     1490     6016      936        0        0        0        0        0      613      936"

  looking at parent device '/devices/pci0000:00/0000:00:0f.0/host5/target5:0:0/5:0:0:0':
    KERNELS=="5:0:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS=="sd"
    ATTRS{device_blocked}=="0"
    ATTRS{type}=="0"
    ATTRS{scsi_level}=="6"
    ATTRS{vendor}=="ATA     "
    ATTRS{model}=="WDC WD3200YS-01P"
    ATTRS{rev}=="21.0"
    ATTRS{state}=="running"
    ATTRS{timeout}=="30"
    ATTRS{iocounterbits}=="32"
    ATTRS{iorequest_cnt}=="0x8e"
    ATTRS{iodone_cnt}=="0x8e"
    ATTRS{ioerr_cnt}=="0x0"
    ATTRS{modalias}=="scsi:t-0x00"
    ATTRS{evt_media_change}=="0"
    ATTRS{queue_depth}=="1"
    ATTRS{queue_type}=="none"

  looking at parent device '/devices/pci0000:00/0000:00:0f.0/host5/target5:0:0':
    KERNELS=="target5:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/pci0000:00/0000:00:0f.0/host5':
    KERNELS=="host5"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/pci0000:00/0000:00:0f.0':
    KERNELS=="0000:00:0f.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="sata_via"
    ATTRS{vendor}=="0x1106"
    ATTRS{device}=="0x0591"
    ATTRS{subsystem_vendor}=="0x1106"
    ATTRS{subsystem_device}=="0x0591"
    ATTRS{class}=="0x01018f"
    ATTRS{irq}=="21"
    ATTRS{local_cpus}=="ffff"
    ATTRS{local_cpulist}=="0-15"
    ATTRS{modalias}=="pci:v00001106d00000591sv00001106sd00000591bc01sc01i8f"
    ATTRS{enable}=="1"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

# udevadm info -a -p $(udevadm info -q path -n /dev/sdb)

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:0f.1/host1/target1:0:1/1:0:1:0/block/sdb':
    KERNEL=="sdb"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{range}=="16"
    ATTR{ext_range}=="256"
    ATTR{removable}=="0"
    ATTR{ro}=="0"
    ATTR{size}=="488397168"
    ATTR{alignment_offset}=="0"
    ATTR{capability}=="52"
    ATTR{stat}=="     753     4336    38029    36040       22       20      336        3        0     5430    36040"

  looking at parent device '/devices/pci0000:00/0000:00:0f.1/host1/target1:0:1/1:0:1:0':
    KERNELS=="1:0:1:0"
    SUBSYSTEMS=="scsi"
    DRIVERS=="sd"
    ATTRS{device_blocked}=="0"
    ATTRS{type}=="0"
    ATTRS{scsi_level}=="6"
    ATTRS{vendor}=="ATA     "
    ATTRS{model}=="WDC WD2500LB-55E"
    ATTRS{rev}=="15.0"
    ATTRS{state}=="running"
    ATTRS{timeout}=="30"
    ATTRS{iocounterbits}=="32"
    ATTRS{iorequest_cnt}=="0x323"
    ATTRS{iodone_cnt}=="0x323"
    ATTRS{ioerr_cnt}=="0x0"
    ATTRS{modalias}=="scsi:t-0x00"
    ATTRS{evt_media_change}=="0"
    ATTRS{queue_depth}=="1"
    ATTRS{queue_type}=="none"

  looking at parent device '/devices/pci0000:00/0000:00:0f.1/host1/target1:0:1':
    KERNELS=="target1:0:1"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/pci0000:00/0000:00:0f.1/host1':
    KERNELS=="host1"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/pci0000:00/0000:00:0f.1':
    KERNELS=="0000:00:0f.1"
    SUBSYSTEMS=="pci"
    DRIVERS=="pata_via"
    ATTRS{vendor}=="0x1106"
    ATTRS{device}=="0x0571"
    ATTRS{subsystem_vendor}=="0x1106"
    ATTRS{subsystem_device}=="0x0571"
    ATTRS{class}=="0x01018a"
    ATTRS{irq}=="0"
    ATTRS{local_cpus}=="ffff"
    ATTRS{local_cpulist}=="0-15"
    ATTRS{modalias}=="pci:v00001106d00000571sv00001106sd00000571bc01sc01i8a"
    ATTRS{enable}=="1"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

I tried writing a rule to correct it:
/etc/udev/rules.d/99-hard-drive.rules

SUBSYSTEM=="block",ATTR{size}=="488397168",KERNEL="sdd",NAME="sdd"
SUBSYSTEM=="block",ATTR{size}=="625142448",KERNEL="sdb",NAME="sdb"

But so far this has been ineffectual. I'm not really sure where to proceed from here, can anyone help please? Thank you very much for your time!

Offline

#2 2009-11-13 19:52:08

skanky
Member
From: WAIS
Registered: 2009-10-23
Posts: 1,847

Re: HDD's keep switching /dev names

Try setting up your fstab using UUIDs:

http://wiki.archlinux.org/index.php/Fst … dentifiers

They are device dependant, so won't change arbitrarily.


"...one cannot be angry when one looks at a penguin."  - John Ruskin
"Life in general is a bit shit, and so too is the internet. And that's all there is." - scepticisle

Offline

#3 2009-11-13 22:41:13

stupac
Member
Registered: 2009-11-10
Posts: 8

Re: HDD's keep switching /dev names

Great idea Skanky, thanks! I'll try it when I get home.

Offline

#4 2009-11-13 22:43:47

tavianator
Member
From: Waterloo, ON, Canada
Registered: 2007-08-21
Posts: 858
Website

Re: HDD's keep switching /dev names

I find labels a bit more convenient than UUIDs, since you can make them meaningful.  They're discussed in the same wiki page linked above.

Offline

#5 2009-11-13 22:50:37

skanky
Member
From: WAIS
Registered: 2009-10-23
Posts: 1,847

Re: HDD's keep switching /dev names

Good idea. Can't remember why I stuck to UUIDs instead of labels. Might try them again myself.


"...one cannot be angry when one looks at a penguin."  - John Ruskin
"Life in general is a bit shit, and so too is the internet. And that's all there is." - scepticisle

Offline

Board footer

Powered by FluxBB