Supprimer un message
philfr
J'ai refait un peu joujou avec mdadm pour vérifier mes dires.
Si tu crées ton array avec
mdadm --create /dev/md0 --raid-devices=4 --level=5 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
mdadm mettra un "persistent superblock" sur chaque partition pour retrouver ses jeunes par après.
Donc si par la suite, tu réaasembles ton array avec
mdadm --assemble /dev/md0 /dev/sde1 /dev/sdb1 /dev/sdd1 /dev/sdc1
mdadm se foutra pas mal que tu les as mis dans le désordre et fera ce qu'il faut.
Ton problème initial est donc à mon avis un non problème, mais je suppose que si tu l'as posé, c'est qu'il t'est arrivé quelque chose (ou peut-être était-ce juste une inquiétude ?)
Si tu mets le type de tes partitions à fd, le kernel peut les détecter au boot, et tu ne devras même pas redémarrer ton array. Je dis ça parce que c'est comme ça chez moi, mais il semble que les arrays autodétectées soient maintenant déconseillées et plus supportées avec le nouveau format de superblock (lien)
Une bonne façon de faire des tests avec mdadm est de jouer avec les loopback devices: tu crées des fichiers normaux (p.ex. avec dd if=/dev/zero of=partition1 bs=1k count=100000 crée un fichier de 100MB) puis tu fais passer ces fichiers pour des partitions avec les loopback devices (losetup -f partition1 crée un "device" /dev/loop0) que tu peux ensuite utiliser à la place de partitions dans tes essais mdadm. Tu peux alors les corrompre exprès, les supprimer, les rajouter, et voir que ton array marche toujours...
A propos des /dev/disk/by-xxx (normalement pas utile pour les RAID, mais pour info):
Si tu fais ls -l /dev/disk/by-id, tu devrais voir tous tes disques et partitions avec un nom immuable, lié à la marque et au no. de série.
Sur une machine ici par exemple, j'ai:
[root@punch philfr]# ls -l /dev/disk/by-id
total 0
lrwxrwxrwx 1 root root 9 2008-09-04 11:43 ata-Maxtor_6Y250P0_Y64XTEME -> ../../hdb
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 ata-Maxtor_6Y250P0_Y64XTEME-part1 -> ../../hdb1
lrwxrwxrwx 1 root root 9 2008-09-04 11:43 ata-WDC_WD400BB-60DGA0_WD-WMADK2629553 -> ../../hda
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 ata-WDC_WD400BB-60DGA0_WD-WMADK2629553-part1 -> ../../hda1
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 ata-WDC_WD400BB-60DGA0_WD-WMADK2629553-part2 -> ../../hda2
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 ata-WDC_WD400BB-60DGA0_WD-WMADK2629553-part3 -> ../../hda3
lrwxrwxrwx 1 root root 9 2008-09-04 12:45 usb-Memorex_TD_Classic_003B_07710C1702FF -> ../../sda
lrwxrwxrwx 1 root root 10 2008-09-04 12:45 usb-Memorex_TD_Classic_003B_07710C1702FF-part1 -> ../../sda1
[root@punch philfr]#
Les /dev/disk/by-path identifient la façon dont un disque est connecté à la machine et non le disque (si tu connectes un autre disque au même connecteur il aura donc ici le même nom)
Chez moi:
[root@punch raidtests]# ls -l /dev/disk/by-path/
total 0
lrwxrwxrwx 1 root root 9 2008-09-04 12:45 pci-0000:00:1d.7-usb-0:1:1.0-scsi-0:0:0:0 -> ../../sda
lrwxrwxrwx 1 root root 10 2008-09-04 12:45 pci-0000:00:1d.7-usb-0:1:1.0-scsi-0:0:0:0-part1 -> ../../sda1
lrwxrwxrwx 1 root root 9 2008-09-04 11:43 pci-0000:00:1f.1-ide-0:0 -> ../../hda
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 pci-0000:00:1f.1-ide-0:0-part1 -> ../../hda1
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 pci-0000:00:1f.1-ide-0:0-part2 -> ../../hda2
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 pci-0000:00:1f.1-ide-0:0-part3 -> ../../hda3
lrwxrwxrwx 1 root root 9 2008-09-04 11:43 pci-0000:00:1f.1-ide-0:1 -> ../../hdb
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 pci-0000:00:1f.1-ide-0:1-part1 -> ../../hdb1
lrwxrwxrwx 1 root root 9 2008-09-04 11:43 pci-0000:00:1f.1-ide-1:1 -> ../../hdd
[root@punch raidtests]#
Toujours sur ma même machine:
Le /dev/disk/by-uuid identifie uniquement les partitions qui ont un uuid:
[root@punch raidtests]# ls -l /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root 10 2008-09-04 12:45 465D-ADAA -> ../../sda1
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 608a1fb8-0152-4cf2-ad56-c7bb6e0dc374 -> ../../hda3
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 f7699bc0-376e-44c5-80ca-dac4a00408cd -> ../../hda1
[root@punch raidtests]#
Si tu crées ton array avec
mdadm --create /dev/md0 --raid-devices=4 --level=5 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
mdadm mettra un "persistent superblock" sur chaque partition pour retrouver ses jeunes par après.
Donc si par la suite, tu réaasembles ton array avec
mdadm --assemble /dev/md0 /dev/sde1 /dev/sdb1 /dev/sdd1 /dev/sdc1
mdadm se foutra pas mal que tu les as mis dans le désordre et fera ce qu'il faut.
Ton problème initial est donc à mon avis un non problème, mais je suppose que si tu l'as posé, c'est qu'il t'est arrivé quelque chose (ou peut-être était-ce juste une inquiétude ?)
Si tu mets le type de tes partitions à fd, le kernel peut les détecter au boot, et tu ne devras même pas redémarrer ton array. Je dis ça parce que c'est comme ça chez moi, mais il semble que les arrays autodétectées soient maintenant déconseillées et plus supportées avec le nouveau format de superblock (lien)
Une bonne façon de faire des tests avec mdadm est de jouer avec les loopback devices: tu crées des fichiers normaux (p.ex. avec dd if=/dev/zero of=partition1 bs=1k count=100000 crée un fichier de 100MB) puis tu fais passer ces fichiers pour des partitions avec les loopback devices (losetup -f partition1 crée un "device" /dev/loop0) que tu peux ensuite utiliser à la place de partitions dans tes essais mdadm. Tu peux alors les corrompre exprès, les supprimer, les rajouter, et voir que ton array marche toujours...
A propos des /dev/disk/by-xxx (normalement pas utile pour les RAID, mais pour info):
Si tu fais ls -l /dev/disk/by-id, tu devrais voir tous tes disques et partitions avec un nom immuable, lié à la marque et au no. de série.
Sur une machine ici par exemple, j'ai:
[root@punch philfr]# ls -l /dev/disk/by-id
total 0
lrwxrwxrwx 1 root root 9 2008-09-04 11:43 ata-Maxtor_6Y250P0_Y64XTEME -> ../../hdb
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 ata-Maxtor_6Y250P0_Y64XTEME-part1 -> ../../hdb1
lrwxrwxrwx 1 root root 9 2008-09-04 11:43 ata-WDC_WD400BB-60DGA0_WD-WMADK2629553 -> ../../hda
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 ata-WDC_WD400BB-60DGA0_WD-WMADK2629553-part1 -> ../../hda1
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 ata-WDC_WD400BB-60DGA0_WD-WMADK2629553-part2 -> ../../hda2
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 ata-WDC_WD400BB-60DGA0_WD-WMADK2629553-part3 -> ../../hda3
lrwxrwxrwx 1 root root 9 2008-09-04 12:45 usb-Memorex_TD_Classic_003B_07710C1702FF -> ../../sda
lrwxrwxrwx 1 root root 10 2008-09-04 12:45 usb-Memorex_TD_Classic_003B_07710C1702FF-part1 -> ../../sda1
[root@punch philfr]#
Les /dev/disk/by-path identifient la façon dont un disque est connecté à la machine et non le disque (si tu connectes un autre disque au même connecteur il aura donc ici le même nom)
Chez moi:
[root@punch raidtests]# ls -l /dev/disk/by-path/
total 0
lrwxrwxrwx 1 root root 9 2008-09-04 12:45 pci-0000:00:1d.7-usb-0:1:1.0-scsi-0:0:0:0 -> ../../sda
lrwxrwxrwx 1 root root 10 2008-09-04 12:45 pci-0000:00:1d.7-usb-0:1:1.0-scsi-0:0:0:0-part1 -> ../../sda1
lrwxrwxrwx 1 root root 9 2008-09-04 11:43 pci-0000:00:1f.1-ide-0:0 -> ../../hda
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 pci-0000:00:1f.1-ide-0:0-part1 -> ../../hda1
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 pci-0000:00:1f.1-ide-0:0-part2 -> ../../hda2
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 pci-0000:00:1f.1-ide-0:0-part3 -> ../../hda3
lrwxrwxrwx 1 root root 9 2008-09-04 11:43 pci-0000:00:1f.1-ide-0:1 -> ../../hdb
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 pci-0000:00:1f.1-ide-0:1-part1 -> ../../hdb1
lrwxrwxrwx 1 root root 9 2008-09-04 11:43 pci-0000:00:1f.1-ide-1:1 -> ../../hdd
[root@punch raidtests]#
Toujours sur ma même machine:
Le /dev/disk/by-uuid identifie uniquement les partitions qui ont un uuid:
[root@punch raidtests]# ls -l /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root 10 2008-09-04 12:45 465D-ADAA -> ../../sda1
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 608a1fb8-0152-4cf2-ad56-c7bb6e0dc374 -> ../../hda3
lrwxrwxrwx 1 root root 10 2008-09-04 11:43 f7699bc0-376e-44c5-80ca-dac4a00408cd -> ../../hda1
[root@punch raidtests]#