udev

Fórumok

Üdv,

Van egy intel server, alaplapon 2 sata csatlakozó
00:1f.2 IDE interface: Intel Corporation 82801EB (ICH5) SATA Controller (rev 02)
és egy pci-x-es raid kártya 8 sata csatlakozóval
04:0e.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID (rev 07)

Az a probléma, hogy reboot-kor cserélgeti az sd* eszközöket, az alaplapi diszkek hol
sda|sdb-k hol sdg|sdh-k. Szeretném megmondani a rendszernek, hogy mondjuk az alaplapi
vezérlőn a diszkek fixen sdz|sdv legyenek.
/dev/disk/by-id/
ata-SAMSUNG_SP2504C-S09QJ1FL310591...
scsi-SATA_SAMSUNG_SP2504CS09QJ1FL310591...
...
a raid kártán lévők nem látszanak itt, csak a /dev/disk/by-path ban:
pci-0000:00:1f.2-scsi-0:0:0:0
pci-0000:00:1f.2-scsi-1:0:0:0
pci-0000:04:0e.0-scsi-0:1:0:0
...

Próbáltam a z20_persistent.rules -ban


KERNEL=="sd*[!0-9]|sr*",                ENV{ID_SERIAL_SHORT}=="?*", \                                                                          
        ENV{ID_VENDOR}=="ATA", \                                                                                                               
        SYMLINK+="disk/by-id/ata-$env{ID_MODEL}-$env{ID_SERIAL_SHORT}"

a sd*[!0-9]|sr* részt megváltoztatni, de nem sekerült a várt eredményt elérni,
lehet nem is itt kell belenyúlni...

Tud erre valaki megoldást javasolni?
Debian:
2.6.18-5
Ubuntu:
2.6.20-16

Mik

Hozzászólások

Megválaszolom magamnak:


cat /etc/udev/rules.d/10-local.rules 

# find the physical path of the device

KERNEL=="sd*[!0-9]",            IMPORT{program}="path_id $devpath"
LABEL="no_hardware_id"

# import the variables of partitions from the parent disks
KERNEL=="sd*[0-9]",                     IMPORT{parent}="ID_*"

# create the devices
KERNEL=="sd*[!0-9]", SUBSYSTEMS=="pci", DRIVERS=="megaraid", ENV{ID_PATH}=="pci-0000:04:0e.0-scsi-0:1:0:0", \
        NAME="raid/sda"
KERNEL=="sd*[!0-9]", SUBSYSTEMS=="pci", DRIVERS=="megaraid", ENV{ID_PATH}=="pci-0000:04:0e.0-scsi-0:1:1:0", \
        NAME="raid/sdb"
KERNEL=="sd*[!0-9]", SUBSYSTEMS=="pci", DRIVERS=="megaraid", ENV{ID_PATH}=="pci-0000:04:0e.0-scsi-0:1:2:0", \
        NAME="raid/sdc"
KERNEL=="sd*[!0-9]", SUBSYSTEMS=="pci", DRIVERS=="megaraid", ENV{ID_PATH}=="pci-0000:04:0e.0-scsi-0:1:3:0", \
        NAME="raid/sdd"
KERNEL=="sd*[!0-9]", SUBSYSTEMS=="pci", DRIVERS=="megaraid", ENV{ID_PATH}=="pci-0000:04:0e.0-scsi-0:1:4:0", \
        NAME="raid/sde"
KERNEL=="sd*[!0-9]", SUBSYSTEMS=="pci", DRIVERS=="megaraid", ENV{ID_PATH}=="pci-0000:04:0e.0-scsi-0:1:5:0", \
        NAME="raid/sdf"
KERNEL=="sd*[!0-9]", SUBSYSTEMS=="pci", DRIVERS=="megaraid", ENV{ID_PATH}=="pci-0000:04:0e.0-scsi-0:1:6:0", \
        NAME="raid/sdg"
KERNEL=="sd*[!0-9]", SUBSYSTEMS=="pci", DRIVERS=="megaraid", ENV{ID_PATH}=="pci-0000:04:0e.0-scsi-0:1:7:0", \
        NAME="raid/sdh"

KERNELS=="0000:04:0e.0", SUBSYSTEMS=="pci", DRIVERS=="megaraid", ENV{ID_PATH}=="pci-0000:04:0e.0-scsi-0:1:0:0", \
        NAME="raid/sda%n"
KERNELS=="0000:04:0e.0", SUBSYSTEMS=="pci", DRIVERS=="megaraid", ENV{ID_PATH}=="pci-0000:04:0e.0-scsi-0:1:1:0", \
        NAME="raid/sdb%n"
KERNELS=="0000:04:0e.0", SUBSYSTEMS=="pci", DRIVERS=="megaraid", ENV{ID_PATH}=="pci-0000:04:0e.0-scsi-0:1:2:0", \
        NAME="raid/sdc%n"
KERNELS=="0000:04:0e.0", SUBSYSTEMS=="pci", DRIVERS=="megaraid", ENV{ID_PATH}=="pci-0000:04:0e.0-scsi-0:1:3:0", \
        NAME="raid/sdd%n"
KERNELS=="0000:04:0e.0", SUBSYSTEMS=="pci", DRIVERS=="megaraid", ENV{ID_PATH}=="pci-0000:04:0e.0-scsi-0:1:4:0", \
        NAME="raid/sde%n"
KERNELS=="0000:04:0e.0", SUBSYSTEMS=="pci", DRIVERS=="megaraid", ENV{ID_PATH}=="pci-0000:04:0e.0-scsi-0:1:5:0", \
        NAME="raid/sdf%n"
KERNELS=="0000:04:0e.0", SUBSYSTEMS=="pci", DRIVERS=="megaraid", ENV{ID_PATH}=="pci-0000:04:0e.0-scsi-0:1:6:0", \
        NAME="raid/sdg%n"
KERNELS=="0000:04:0e.0", SUBSYSTEMS=="pci", DRIVERS=="megaraid", ENV{ID_PATH}=="pci-0000:04:0e.0-scsi-0:1:7:0", \
        NAME="raid/sdh%n"

# end of processing
LABEL="no_volume_id"

Sziasztok,

Nekem is hasonló problémám lenne... Van két vinyó ami RAID kártyán van mirroringban, és mikor a 3.-ikat rádugom akkor abból lesz sda, és a RAID kártyán lévőkből sdb. Csináltam is saját ruleokat a /etc/udev/rules.d/10-local.rules fileba:
KERNEL=="sda", NAME="sdb"
KERNEL=="sdb", NAME="sda"

Persze reboot után a sorrend az maradt ugyanúgy, és az /etc/udev/rules.d alatt azt a filet sem láttam amit én hoztam létre. A ruleokkal van baj, vagy pedig az kevés hogy csak létrehozom a filet és beleírom ezeket?

Köszönöm!

Tegnap este valahogy sikerült működésre bírnom, viszont ma reggel már nem hajlandó menni... Ami tegnap működött:
KERNEL=="sda", NAME="renamed_disk"

Viszont ami sdb volt abból lett sda, és a renamed_disk is rá mutatott, amit pedig át akartam nevezni abból pedig sda lett. Próbáltam úgy is, hogy ATTRS{model}, ATTRS{vendor}-t adok meg, úgy viszont egyáltalán nem működött. Azért nem értem, mert megoldásként írják ezt is amit először próbáltam: http://ubuntuforums.org/showthread.php?t=966665, azt meg végképp nem, hogy valami hogy tud egyszer működni, egyszer pedig nem. Arra nincs lehetőség, hogy valahogy megadjam hogy a RAID vezérlő modulja előbb töltődjön be, és akkor tutira abból lesz sda?

Végül ez alapján oldottam meg: http://ubuntuforums.org/showthread.php?t=219600

Ajánlom figyelmedbe ezt az olvasmányt. Azt kell kitalálnod, hogyan tudod a két lemezt azonosítani. Szerintem nem igazán okos a KERNEL=="sdx" megoldás, mert ezzel megint csak a detektálási sorrendre hagyatkozol.

Próbálj megfelelő SUBSYSTEM és DRIVER szabályokat írni, vagy tényleg kitotózni a megfelelő ATTRS paramétereket. Jó eszköz ehhez az udevinfo parancs. Jó dolog még a OPTIONS+="last_rule" opció, hogy más szabályok ne írják fölül a tiedet. A megváltoztatott szabályokat az

udevcontrol reload_rules

paranccsal tudod újraolvasni, bár esetedben alighanem jobb ötlet a reboot.

Csaba