# byta namn på sysfs "devices"?

## irbanur

Hoj!

Sitter med ett litet pikant problem:

Jag håller på att bygga en ny filserver och moderkortet (Zotac G43-ITX) beter sig väldigt konstigt när jag hotswappar diskar; det håller på med nån form av round-robin för kernelnamnet för disken som jag stoppar in. Tar jag ut den fysiska disken /dev/sda och stoppar in den så kan den dyka upp som /dev/sd[abcdefg] (beroende på om devicenamet finns ledigt eller inte). Detta är ju inte ett sånt stort problem då jag har skrivit en udev-regel som mappar rätt sysfs-devpath mot rätt /dev-namn. MEN! När jag skapar arrayen så använder sig md av sysfs-namnet (kernelnamnet antar jag). 

Man kan ju tycka att det inte är ett sånt stort problem men jag har tankar om när jag vill byta diskar i arrayen online till större så vill jag bara plocka ur en disk, stoppa in den nya, adda den, itterera proceduren tills alla diskar är utbytta och syncade och sedan köra "mdadm --grow --size=max" för att få ut allt utrymme i arrayen. Ickeproblem kan tyckas, det är ju bara att det att när jag plockar ur sda och stoppar in den nya så kommer den fortfarande ha /dev-namnet /dev/sda men /sys-namnet kan ha blivit /sys/block/sdg och om jag "glömt" eller mer struntat i att faila och ta bort partitionen från arrayen så kommer inte "mdadm --grow.." funka alls. Den kommer bara synca upp efter att jag har startat om arrayen. 

Lite exempel:

```
atoz ~ # ls /dev/sd??

/dev/sda1  /dev/sdc1  /dev/sde1  /dev/sde2  /dev/sde3
```

Ingen sdb1 här!

```
atoz ~ # mdadm -C /dev/md0 -l5 -n3 /dev/sda1 /dev/sdc1 /dev/sdd1

mdadm: array /dev/md0 started.

atoz ~ # cat /proc/mdstat 

Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 

md0 : active raid5 sdd1[2] sda1[1] sdb1[0]

      976767872 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
```

Men här!

Rycker ur en disk och stoppar in den igen efter att den har failat i arrayen:

(På ett ungefär, har inte fysisk tillgång till burken just nu  :Wink:  )

```
atoz ~ # mdadm -a /dev/md0 /dev/sda1

atoz ~ # cat /proc/mdstat 

Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 

md0 : active raid5 sdd1[2] sda1[1](F) sdb1[0] sdc1[1]

      976767872 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]
```

Så länge sda1 ligger kvar så kan jag som sagt inte köra en grow..

Och nu (äntligen!) till pudelns kärna:

Kan jag på något sätt á la udev byta/låsa namn på sysfs-devicen? Via kernelparameter eller liknande?

för er som undrar så har jag slängt med min /etc/udev/rules.d/00-disks.rules också:

```
DEVPATH=="/devices/pci0000:00/0000:00:1f.2/host3/target3:0:0/3:0:0:0/block/sd?", NAME="sda"

DEVPATH=="/devices/pci0000:00/0000:00:1f.2/host3/target3:0:0/3:0:0:0/block/sd?/sd??", NAME="sda%n""

DEVPATH=="/devices/pci0000:00/0000:00:1f.2/host1/target1:0:0/1:0:0:0/block/sd?", NAME="sdb"

DEVPATH=="/devices/pci0000:00/0000:00:1f.2/host1/target1:0:0/1:0:0:0/block/sd?/sd??", NAME="sdb%n""

DEVPATH=="/devices/pci0000:00/0000:00:1f.2/host2/target2:0:0/2:0:0:0/block/sd?", NAME="sdc"

DEVPATH=="/devices/pci0000:00/0000:00:1f.2/host2/target2:0:0/2:0:0:0/block/sd?/sd??", NAME="sdc%n""

DEVPATH=="/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sd?", NAME="sdd"

DEVPATH=="/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sd?/sd??", NAME="sdd%n"

DEVPATH=="/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0/block/sd?", NAME="sde"

DEVPATH=="/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0/block/sd?/sd??", NAME="sde%n"

```

----------

