Zum Inhalt springen

Mehrere externe Festplatte mit identischem Device Namen

Folgende Problemstellung:
Ein Server mit Ubuntu Linux (8.04) soll seine Daten regelmässig auf externe Platten sichern, die Platten werden im Wochenrhythmus getauscht – das eigentliche Sicherungsscript wird per Cron-Job gestartet.

Die vom System den externen Platten zugewiesenen Device-Namen sind nicht immer die Gleichen – im Schlimmsten Fall bekommt man nach einem Reboot statt /dev/sdb1 ein /dev/sda1 zu sehen, was das Sicherungsscript dann duchraus ein wenig in die Irre führen kann.
Natürlich könnte man das Script entsprechend anpassen um mit solchen Varianten umgehen zu können, allerdings denke ich dass es da einen besseren Weg gibt -> mit udev einen fixen Namen zuweisen.

udevinfo -a -p $(udevinfo -q path -n /dev/sdb1)

Listet uns alle Parameter des Devices „/dev/sdb1“ auf, aus der Menge können wir uns dann die passenden herauspicken.

Udevinfo 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 ‚/block/sdb/sdb1‘:
KERNEL==“sdb1″
SUBSYSTEM==“block“
DRIVER==““
ATTR{dev}==“8:17″
ATTR{start}==“63″
ATTR{size}==“1465144002″
ATTR{stat}==“ 69 138 0 0″

looking at parent device ‚/block/sdb‘:
KERNELS==“sdb“
SUBSYSTEMS==“block“
DRIVERS==““
ATTRS{dev}==“8:16″
ATTRS{range}==“16″
ATTRS{removable}==“0″
ATTRS{size}==“1465149168″
ATTRS{stat}==“ 21 120 714 150 0 0 0 0 0 120 150″
ATTRS{capability}==“12″

looking at parent device ‚/devices/pci0000:00/0000:00:1a.7/usb7/7-3/7-3:1.0/host14/target14:0:0/14:0:0:0‘:
KERNELS==“14:0:0:0″
SUBSYSTEMS==“scsi“
DRIVERS==“sd“
ATTRS{device_blocked}==“0″
ATTRS{type}==“0″
ATTRS{scsi_level}==“3″
ATTRS{vendor}==“Maxtor „
ATTRS{model}==“OneTouch „
ATTRS{rev}==“0125″
ATTRS{state}==“running“
ATTRS{timeout}==“30″
ATTRS{iocounterbits}==“32″
ATTRS{iorequest_cnt}==“0x1c“
ATTRS{iodone_cnt}==“0x1c“
ATTRS{ioerr_cnt}==“0x0″
ATTRS{modalias}==“scsi:t-0x00″
ATTRS{evt_media_change}==“0″
ATTRS{queue_depth}==“1″
ATTRS{queue_type}==“none“
ATTRS{max_sectors}==“240″

looking at parent device ‚/devices/pci0000:00/0000:00:1a.7/usb7/7-3/7-3:1.0/host14/target14:0:0‘:
KERNELS==“target14:0:0″
SUBSYSTEMS==““
DRIVERS==““

looking at parent device ‚/devices/pci0000:00/0000:00:1a.7/usb7/7-3/7-3:1.0/host14‘:
KERNELS==“host14″
SUBSYSTEMS==““
DRIVERS==““

looking at parent device ‚/devices/pci0000:00/0000:00:1a.7/usb7/7-3/7-3:1.0‘:
KERNELS==“7-3:1.0″
SUBSYSTEMS==“usb“
DRIVERS==“usb-storage“
ATTRS{bInterfaceNumber}==“00″
ATTRS{bAlternateSetting}==“ 0″
ATTRS{bNumEndpoints}==“02″
ATTRS{bInterfaceClass}==“08″
ATTRS{bInterfaceSubClass}==“06″
ATTRS{bInterfaceProtocol}==“50″
ATTRS{modalias}==“usb:v0D49p7310d0125dc00dsc00dp00ic08isc06ip50″

looking at parent device ‚/devices/pci0000:00/0000:00:1a.7/usb7/7-3‘:
KERNELS==“7-3″
SUBSYSTEMS==“usb“
DRIVERS==“usb“
ATTRS{dev}==“189:780″
ATTRS{configuration}==““
ATTRS{bNumInterfaces}==“ 1″
ATTRS{bConfigurationValue}==“1″
ATTRS{bmAttributes}==“c0″
ATTRS{bMaxPower}==“ 2mA“
ATTRS{urbnum}==“136″
ATTRS{idVendor}==“0d49″
ATTRS{idProduct}==“7310″
ATTRS{bcdDevice}==“0125″
ATTRS{bDeviceClass}==“00″
ATTRS{bDeviceSubClass}==“00″
ATTRS{bDeviceProtocol}==“00″
ATTRS{bNumConfigurations}==“1″
ATTRS{bMaxPacketSize0}==“64″
ATTRS{speed}==“480″
ATTRS{busnum}==“7″
ATTRS{devnum}==“13″
ATTRS{version}==“ 2.00″
ATTRS{maxchild}==“0″
ATTRS{quirks}==“0x0″
ATTRS{authorized}==“1″
ATTRS{manufacturer}==“Maxtor „
ATTRS{product}==“OneTouch „
ATTRS{serial}==“2HA199B9 „

looking at parent device ‚/devices/pci0000:00/0000:00:1a.7/usb7‘:
KERNELS==“usb7″
SUBSYSTEMS==“usb“
DRIVERS==“usb“
ATTRS{dev}==“189:768″
ATTRS{configuration}==““
ATTRS{bNumInterfaces}==“ 1″
ATTRS{bConfigurationValue}==“1″
ATTRS{bmAttributes}==“e0″
ATTRS{bMaxPower}==“ 0mA“
ATTRS{urbnum}==“608″
ATTRS{idVendor}==“0000″
ATTRS{idProduct}==“0000″
ATTRS{bcdDevice}==“0206″
ATTRS{bDeviceClass}==“09″
ATTRS{bDeviceSubClass}==“00″
ATTRS{bDeviceProtocol}==“01″
ATTRS{bNumConfigurations}==“1″
ATTRS{bMaxPacketSize0}==“64″
ATTRS{speed}==“480″
ATTRS{busnum}==“7″
ATTRS{devnum}==“1″
ATTRS{version}==“ 2.00″
ATTRS{maxchild}==“6″
ATTRS{quirks}==“0x0″
ATTRS{authorized}==“1″
ATTRS{manufacturer}==“Linux 2.6.24-23-server ehci_hcd“
ATTRS{product}==“EHCI Host Controller“
ATTRS{serial}==“0000:00:1a.7″
ATTRS{authorized_default}==“1″

looking at parent device ‚/devices/pci0000:00/0000:00:1a.7‘:
KERNELS==“0000:00:1a.7″
SUBSYSTEMS==“pci“
DRIVERS==“ehci_hcd“
ATTRS{vendor}==“0x8086″
ATTRS{device}==“0x293c“
ATTRS{subsystem_vendor}==“0x1043″
ATTRS{subsystem_device}==“0x8277″
ATTRS{class}==“0x0c0320″
ATTRS{irq}==“19″
ATTRS{local_cpus}==“ff“
ATTRS{modalias}==“pci:v00008086d0000293Csv00001043sd00008277bc0Csc03i20″
ATTRS{enable}==“1″
ATTRS{broken_parity_status}==“0″
ATTRS{msi_bus}==““

looking at parent device ‚/devices/pci0000:00‘:
KERNELS==“pci0000:00″
SUBSYSTEMS==““
DRIVERS==““

In meinem Fall habe ich mich entschieden die Seriennummer der Maxtor Festplatte zu verwenden.
Die passende udev Regel landet dann in der Datei „/etc/udev/rules.d/10-local.rules“ und sieht wie folgt aus:

SUBSYSTEM==“block“,SUBSYSTEMS==“usb“,ATTRS{serial}==“2HA199B9″,NAME=“backup_disk“

Zur Erklärung:
SUBSYSTEM bezeichnet das SUBSYSTEM das im Device Baum ganz oben steht
SUBSYSTEMS bezeichnet das SUBSYSTEM in welchem die Seriennummer steht
ATTRS[serial} beinhaltet dann die Seriennummer der gewünschten Festplatte
NAME ist der Device-Name den die Platte künftig haben soll (/dev/backup_disk)

Nach dem gleichen Schema landen dann noch die Seriennummern der anderen Festplatten in der 10-local.rules Datei.

/etc/init.d/udev restart

Und schon ist die neue Regel aktiv, sobald die Platte angeschlossen wird bekommt sie also den gewünschten Namen zugewiesen! (/dev/backup_disk)

Zu beachten ist allerdings dass immer nur eine der Sicherungsplatten gleichzeitig angeschlossen werden kann, da sie sich ja den Device-Namen teilen. Und dass in diesem Fall nicht die Festplatte /dev/sdb sonder die Partition /dev/sdb1 entsprechend umgeschrieben wurde – also sollte die Platte bereits vorher partitioniert und formatiert sein bevor man die Regel aktiviert! (alternativ kann man auch mit

SUBSYSTEM==“block“,SUBSYSTEMS==“usb“,ATTRS{serial}==“2HA199B9″,SYMLINK+=“backup_disk“

einen Symlink setzen lassen und den eigentlich Device Namen /dev/sdb belassen…

Schlagwörter:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert