Portál AbcLinuxu, 10. května 2025 11:33
Mám v PC dva "identické" (tedy stejný výrobce a typ) pevné disky. A chtěl bych, aby první byl vždy /dev/sda
a druhý vždy /dev/sdb
. I tedy v případě, že bych třeba přidal do PC ještě jeden pevný disk.
Napadlo mě, že bych mohl vytvořit udev pravidlo založené na sériovém číslu prvního disku a sériovém číslu druhého disku.
Pomocí příkazu udevadm info --query=path --path=/sys/block/sda --attribute-walk
jsem si zobrazil možné "match keys" pro /dev/sda. Ale nikde jsem nenašel "match key" operující se sériovým číslem disku!
Prosím tedy o radu, jak udělat, aby první disk byl vždy /dev/sda a druhý vždy /dev/sdb, i přestože v možných "match keys" chybí hodnota operující s sériovým číslem disku. Předem díky za reakce.
Řešení dotazu:
Kdyz si predstavim, ze bootuju system z /sda a nejdnou se to jako obrati nebo co, tak to trochu nedava smysl.. NN
Zásadně používám jak v /etc/fstab tak v /boot/grub/menu.lst koncept UUID nebo LABEL, takže problém nevidím.
Ještě dodám, že mám svépomocí vytvořenou bootovací flashku s Arch Linuxem. A chci opravdu, aby nedošlo ke změně písmenek, i kdybych v budoucnu přidal nový pevný disky, ať ho píchnu "kamkoli".
Problém je ten, že možná budu reklamovat základní desku, tudíž musím disky odpojit z desky. Až budu mít novou (opravenou) desku, tak bude trochu problém se "trefit" tak, aby zůstaly zachovány "písmenka", protože se de facto ty dva disky ničím neliší (koupil jsem najednou 2 kusy).
Jde mi o to, abych se třeba neúmyslně nespletl, když třeba jeden disk budu přerozdělovat a druhý zůstane, jak je.
Jde mi o to, abych se třeba neúmyslně nespletl, když třeba jeden disk budu přerozdělovat a druhý zůstane, jak je.
Ještě dodám, že mám vytvořený záchranný disk (na USB flashce) na bázi Arch Linuxu, ze kterého můžu např. nainstalovat Arch Linux, opravit intalaci Arch Linuxu. A tam mi jde hlavně o to, abych náhodou nespletl písmenka.
Děkuju.
Myslím, že jsem našel řešení. Kdyby se mi náhodou podařilo disky zapojit do desky v opačném pořádí, než jak byly dřív, tak bych to řešil pomocí udev následovně a bylo by
KERNEL=="sda", SYMLINK+="pev_diskB" KERNEL=="sdb", SYMLINK+="pev_diskA"
A normálně bych tedy pracoval se zařízeními /dev/pev_diskA
a /dev/pev_diskB
.
Máš pravdu s tím, že řeším blbosti. Dyž já jsem už takovej. Moc díky za odpověď, která mě nakopla.
Díky. Pro mě je přijatelnější /dev/disk/by-label
. UUID bývá hnusná posloupnost znaků, zatímco LABEL lze vytvořit tak, že se to dá jednodušše zapamatovat.
Jenom pro úplnost uvádím obsah /dev/disk/by-id
:
lrwxrwxrwx 1 root root 9 26. pro 17.09 ata-ST31000528AS_9VP6YQ06 -> ../../sda lrwxrwxrwx 1 root root 10 26. pro 17.09 ata-ST31000528AS_9VP6YQ06-part1 -> ../../sda1 lrwxrwxrwx 1 root root 10 26. pro 17.09 ata-ST31000528AS_9VP6YQ06-part2 -> ../../sda2 lrwxrwxrwx 1 root root 10 26. pro 17.09 ata-ST31000528AS_9VP6YQ06-part3 -> ../../sda3 lrwxrwxrwx 1 root root 10 26. pro 17.15 ata-ST31000528AS_9VP6YQ06-part4 -> ../../sda4 lrwxrwxrwx 1 root root 9 26. pro 17.09 ata-ST31000528AS_9VP6ZG2R -> ../../sdb lrwxrwxrwx 1 root root 10 26. pro 17.15 ata-ST31000528AS_9VP6ZG2R-part1 -> ../../sdb1 lrwxrwxrwx 1 root root 9 26. pro 17.09 scsi-SATA_ST31000528AS_9VP6YQ06 -> ../../sda lrwxrwxrwx 1 root root 10 26. pro 17.09 scsi-SATA_ST31000528AS_9VP6YQ06-part1 -> ../../sda1 lrwxrwxrwx 1 root root 10 26. pro 17.09 scsi-SATA_ST31000528AS_9VP6YQ06-part2 -> ../../sda2 lrwxrwxrwx 1 root root 10 26. pro 17.09 scsi-SATA_ST31000528AS_9VP6YQ06-part3 -> ../../sda3 lrwxrwxrwx 1 root root 10 26. pro 17.15 scsi-SATA_ST31000528AS_9VP6YQ06-part4 -> ../../sda4 lrwxrwxrwx 1 root root 9 26. pro 17.09 scsi-SATA_ST31000528AS_9VP6ZG2R -> ../../sdb lrwxrwxrwx 1 root root 10 26. pro 17.15 scsi-SATA_ST31000528AS_9VP6ZG2R-part1 -> ../../sdb1 lrwxrwxrwx 1 root root 9 26. pro 17.09 wwn-0x5000c5002057d403 -> ../../sdb lrwxrwxrwx 1 root root 10 26. pro 17.15 wwn-0x5000c5002057d403-part1 -> ../../sdb1 lrwxrwxrwx 1 root root 9 26. pro 17.09 wwn-0x5000c5002057e1ea -> ../../sda lrwxrwxrwx 1 root root 10 26. pro 17.09 wwn-0x5000c5002057e1ea-part1 -> ../../sda1 lrwxrwxrwx 1 root root 10 26. pro 17.09 wwn-0x5000c5002057e1ea-part2 -> ../../sda2 lrwxrwxrwx 1 root root 10 26. pro 17.09 wwn-0x5000c5002057e1ea-part3 -> ../../sda3 lrwxrwxrwx 1 root root 10 26. pro 17.15 wwn-0x5000c5002057e1ea-part4 -> ../../sda4
Přičemž sériové číslo prvního disku je: 9VP6YQ06. Druhý má sériové číslo: 9VP6ZG2R.
Asi to nakonec (pokud budu reklamovat tu desku) vyřeším, že si disky nějak označím (třeba první '1', druhý '2'). Jiné řešení nevidím.
To je podle mě marná snaha. Možná by to šlo pomocí portů řadiče, ale pokud jde o externí disky, tam to samozřejmě aplikovat nelze.
Mám s udev pravidly důležitou, a přesto pouhým jedním slovem vyjádřitelnou zkušenost: nefungují. Například nedokážou zajistit ani takovou prkotinu, aby dvě síťová rozhraní od různých výrobců s různými MAC adresami byla pojmenovaná vždy eth{0,1}
ve správném pořadí. Poté, co zoufalý správce něco takového zkusí (query, další úprava a kontrola pravidel, znova vygenerování bootovacího ramdisku, další restart...), velmi rychle pochopí, že jediným řešením je pevné pořadí zavádění modulů od těch síťovek. Je to smutné, ale je to tak.
U disků bohužel žádná podobná možnost není — oba obsluhuje jeden a tentýž kernelový modul.
Díky za napsání zkušenosti s udev.
Taky je docela dobře možné, že to funguje jenom v RHEL. Těžko říct. Já jsem bohužel ještě neviděl na vlastní oči stroj, kde by udev pravidla fungovala.
Tak já takový na ukázku mám, hned na 4 různých strojích.
A chybí mi tam „systém“. (ArchLinux s vanilla kernelem.) Udev normálně běží a funguje, „jenom“ ignoruje jakákoliv pravidla.
Zkuste se podívat na doprovodné utilitky k udevu. Např. na OpenSuSE 11.3 mi funguje
KERNEL=="sd[a-z]*", PROGRAM=="scsi_id -g -d %N", RESULT=="SATA SAMSUNG HD153WIS1UVJD1Z801585 ", NAME="sdb%n" KERNEL=="sd[a-z]*", PROGRAM=="scsi_id -g -d %N", RESULT=="SATA WDC WD15EADS-00 WD-WCAVY2757487", NAME="sdc%n" KERNEL=="sd[a-z]*", PROGRAM=="scsi_id -g -d %N", RESULT=="SATA WDC WD15EADS-00 WD-WCAVY0422919", NAME="sdd%n" KERNEL=="sd[a-z]*", PROGRAM=="scsi_id -g -d %N", RESULT=="SATA SAMSUNG HD154UIS1Y6J1LS806521 ", NAME="sde%n" KERNEL=="sd[a-z]*", PROGRAM=="scsi_id -g -d %N", RESULT=="SATA ST31500341AS 9VS29NRN", NAME="sdf%n" KERNEL=="sd[a-z]*", PROGRAM=="scsi_id -g -d %N", RESULT=="SATA WDC WD15EADS-00 WD-WCAVY0318396", NAME="sdg%n"
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.