OVH Cloud OVH Cloud

RAID logiciel / SATA

20 réponses
Avatar
Xavier
Bonjour,

debian sarge testing kernel 2.6.8

J'essaie de mettre en place un RAID 1 logiciel sur 2 disques durs
Hitachi SATA de 80 Go pluggués sur une carte controleur PCI SATA de
marque SUNIX SATA2000 avec chipset SiI 3112 A.
Je n'ai pas construit de RAID 'matériel' avec le bios de la carte
controleur.

Je veux faire du raid uniquement sur un disque de stokage, mon / est
monté sur un autre IDE PATA.

Mon problème est que lorsque je reboote, le raid ne se monte pas car
visiblement il a un pb de superblocks.

Voici la liste des opérations effectuées :

- recompilation du noyau evec les options nécessaires :
- SCSI device support (Silicon Image SATA support)
- RAID (raid1)

- installation du package mdadm

- création d'une partition de type Linux raid autodetect (fd) de même
taille sur chacun des disques (sda et sdb) : sda1 et sdb1

- creation du RAID :
mdadm --create /dev/md0 -l 1 -n 2 /dev/sd[ab]1

- création du système de fichier :
mkreiserfs /dev/md0

- montage de md0 :
mkdir /mnt/array
mount /dev/md0 /mnt/array

- j'adapte mon fstab pour que l'array soit monté au démarrage en y
ajoutant la ligne :
/dev/md0 /mnt/array reiserfs defaults 0 2


Jusque là tout va bien, je peux créer un fichier, voir l'état du RAID
(mdadm --detail /dev/md0), simuler une défaillance sur un des disques
(mdadm /dev/md0 --fail /dev/sda), ajouter un disque de spare ... bref
tout à l'air de fonctionner à merveille. Mais au reboot, ca foire et à
mon avis ca commence à foirer lors du message :

md: invalid superblock checksum on sdb1
md: sdb1 has invalid sb, not importing!
md: md_import_device returned -22


Voici un extrait de mon 'dmesg | less':


Linux version 2.6.8 (root@axteka) (version gcc 3.3.5 (Debian 1:3.3.5-5))
...
libata version 1.02 loaded.
sata_sil version 0.54
PCI: Found IRQ 10 for device 0000:00:09.0
ata1: SATA max UDMA/100 cmd 0xC8804080 ctl 0xC880408A bmdma 0xC8804000
irq 10
ata2: SATA max UDMA/100 cmd 0xC88040C0 ctl 0xC88040CA bmdma 0xC8804008
irq 10
ata1: dev 0 cfg 49:2f00 82:74eb 83:7fea 84:4023 85:74e9 86:3c02 87:4023
88:203f
ata1: dev 0 ATA, max UDMA/100, 160836480 sectors: lba48
ata1: dev 0 configured for UDMA/100
scsi0 : sata_sil
ata2: dev 0 cfg 49:2f00 82:74eb 83:7fea 84:4023 85:74e8 86:3c02 87:4023
88:203f
ata2: dev 0 ATA, max UDMA/100, 160836480 sectors: lba48
ata2: dev 0 configured for UDMA/100
scsi1 : sata_sil
Vendor: ATA Model: HDS722580VLSA80 Rev: V32O
Type: Direct-Access ANSI SCSI revision: 05
Vendor: ATA Model: HDS722580VLSA80 Rev: V32O
Type: Direct-Access ANSI SCSI revision: 05
SCSI device sda: 160836480 512-byte hdwr sectors (82348 MB)
SCSI device sda: drive cache: write back
sda: sda1
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
SCSI device sdb: 160836480 512-byte hdwr sectors (82348 MB)
SCSI device sdb: drive cache: write back
sdb: sdb1
Attached scsi disk sdb at scsi1, channel 0, id 0, lun 0
...
md: md driver 0.90.0 MAX_MD_DEVS=256, MD_SB_DISKS=27
md: md0 stopped.
md: invalid superblock checksum on sdb1
md: sdb1 has invalid sb, not importing!
md: md_import_device returned -22
md: invalid superblock checksum on sda1
md: sda1 has invalid sb, not importing!
md: md_import_device returned -22
...
EXT3-fs: unable to read superblock



La dernière ligne, c'est quand il essaie de faire fsckeck sur md0, et
là, il entre dans un shell pour que le fasse manuellement.

Qu'est ce j'ai oublié ?

Merci de m'avoir lu.
Xavier

10 réponses

1 2
Avatar
Julien K.
Xavier wrote:

Bonjour,

J'essaie de mettre en place un RAID 1 logiciel sur 2 disques durs Hitachi
SATA de 80 Go pluggués sur une carte controleur PCI SATA de marque SUNIX
SATA2000 avec chipset SiI 3112 A.

md: invalid superblock checksum on sdb1 md: sdb1 has invalid sb, not
importing! md: md_import_device returned -22


Je ne sais pas si c'est transposable à Reiserfs mais quand j'ai créé le
raid-1 de mon serveur il a fallu passer par une étape de redimensionnement
de chaque /dev/md (voir le Software-Raid HOW-TO):


# e2fsck -f /dev/md0
(plein de trucs sur un superblock invalide)
# resize2fs /dev/md0

Apparemment c'est sur le fsck du boot que ça plante, peut-être qu'il
existe l'équivalent de resize2fs pour Reiserfs...

bye

JKr

Avatar
DaXav


Je ne sais pas si c'est transposable à Reiserfs mais quand j'ai créé le
raid-1 de mon serveur il a fallu passer par une étape de redimensionnement
de chaque /dev/md (voir le Software-Raid HOW-TO):


# e2fsck -f /dev/md0
(plein de trucs sur un superblock invalide)
# resize2fs /dev/md0

Apparemment c'est sur le fsck du boot que ça plante, peut-être qu'il
existe l'équivalent de resize2fs pour Reiserfs...



Rien à faire, j'ai essayé tous les checks possibles, suis passé en ext3
pour le test, j'ai l'impression que la création du raid modifie le
superblock des diques et que du coup, le fscheck est pas content.

Avatar
Julien K.
DaXav wrote:

Rien à faire, j'ai essayé tous les checks possibles, suis passé en ext3
pour le test, j'ai l'impression que la création du raid modifie le
superblock des diques et que du coup, le fscheck est pas content.


C'est pas un 'check' qui est nécessaire mais un redimensionnement de
chacune des partitions qui composent le RAID:

<<<<<
"When we created the raid device, the physical partion became slightly
smaller because a second superblock is stored at the end of the partition.
If you reboot the system now, the reboot will fail with an error indicating
the superblock is corrupt.

Resize them prior to the reboot, ensure that the all md based filesystems
are unmounted except root, and remount root read-only.

(rescue)# mount / -o remount,ro

You will be required to fsck each of the md devices. This is the reason for
remounting root read-only. The -f flag is required to force fsck to check a
clean filesystem.

(rescue)# e2fsck -f /dev/md0

This will generate the same error about inconsistent sizes and possibly
corrupted superblock.Say N to 'Abort?'.

(rescue)# resize2fs /dev/md0

Repeat for all /dev/md devices.







<http://www.tldp.org/HOWTO/Software-RAID-HOWTO-7.html#ss7.6>,
'Step 11 Resize filesystem'

Ma seule interrogation était de savoir si ça fonctionne de la même
manière avec Reiserfs qu'avec ext2 (d'ailleurs le passage en ext3 se fait
après la création du raid avec la commande tune2fs). Le reste marche, je
dois pas être le seul à l'avoir testé.

bye

JKr





Avatar
DaXav
DaXav wrote:

Rien à faire, j'ai essayé tous les checks possibles, suis passé en ext3
pour le test, j'ai l'impression que la création du raid modifie le
superblock des diques et que du coup, le fscheck est pas content.



C'est pas un 'check' qui est nécessaire mais un redimensionnement de
chacune des partitions qui composent le RAID:


Voici dans l'ordre, les opérations effectuée :

# creation d'une partition en type fd
fdisk /dev/sda
# creation d'une partition de même taille en fd
fdisk /dev/sdb
mke2fs /dev/sda1
mke2fs /dev/sdb1
mdadm --create /dev/md0 -l 1 -n 2 /dev/sd[ab]1
more /proc/mdstat
mke2fs /dev/md0
fsck -f /dev/md0
# là me dit "Remplissage à la fin de bloc bitmap n'est pas initialisé"
# même si je fixe, il dit pareil si je relance le check
resize2fs /dev/md0
# me dit 'Le système de fichier a déjà .... Rien à modifier!'
# au reboot, toujours la même chose :
md: md driver 0.90.0 MAX_MD_DEVS%6, MD_SB_DISKS'
md: md0 stopped.
md: invalid superblock checksum on sdb1
md: sdb1 has invalid sb, not importing!
md: md_import_device returned -22
md: invalid superblock checksum on sda1
md: sda1 has invalid sb, not importing!
md: md_import_device returned -22

J'ai essayé de faire les 'fsck -f' et 'resize2fs' sur sda1 et sdb1, le
résultat est le même.

Vraiment, je ne comprends pas. Peut il y avoir un pb matériel en cause ?
Ais je oublié une étape ?

Cdt,
Xavier


Avatar
Julien K.
DaXav wrote:
Rien à faire, j'ai essayé tous les checks possibles, suis passé en ext3
pour le test, j'ai l'impression que la création du raid modifie le
superblock des diques et que du coup, le fscheck est pas content.


C'est pas un 'check' qui est nécessaire mais un redimensionnement de
chacune des partitions qui composent le RAID:



Tout d'abord j'ai utilisé raidtools pour créer mon système, ça m'a paru
plus simple que mdadm.

Voici dans l'ordre, les opérations effectuée :

# creation d'une partition en type fd
fdisk /dev/sda
# creation d'une partition de même taille en fd
fdisk /dev/sdb


# fdisk -d /dev/sda | sfdisk /dev/sdc
(duplication du partiionnement *seulement* si les disques sont identiques
ce qui semble être ton cas)

Autre question: pourquoi mettre les deux disques sur la même nappe? Pas
de souci master/slave?

mke2fs /dev/sda1
mke2fs /dev/sdb1


Pourquoi donc maintenant? Moi je ne ferais pas cette étape...

mdadm --create /dev/md0 -l 1 -n 2 /dev/sd[ab]1


Ok. Il faut pas lui dire de démarrer le bidule aussi (--run)?

more /proc/mdstat


et???

mke2fs /dev/md0
fsck -f /dev/md0


Avec le disque démonté, non? Pourquoi pas "e2fsck -f /dev/md0" ?

# là me dit "Remplissage à la fin de bloc bitmap n'est pas initialisé"


Jamais vu cette erreur... Rien à propos d'un supreblock possiblement
corrompu?

# même si je fixe, il dit pareil si je relance le check
resize2fs /dev/md0


idem, disque démonté

# me dit 'Le système de fichier a déjà .... Rien à modifier!'
# au reboot, toujours la même chose :
md: md driver 0.90.0 MAX_MD_DEVS%6, MD_SB_DISKS'
md: md0 stopped.


Tu as bien tout mis en dur dans le kernel et pas en modules non chargés
au boot?

md: invalid superblock checksum on sdb1
md: sdb1 has invalid sb, not importing!
md: md_import_device returned -22
md: invalid superblock checksum on sda1
md: sda1 has invalid sb, not importing!
md: md_import_device returned -22


J'ai quelque chose comme:

md: raid1 personality registered as nr 3





md: md driver 0.90.1 MAX_MD_DEVS%6, MD_SB_DISKS'
...
md: Autodetecting RAID arrays.
md: autorun ...
md: considering hdc11 ...
md: adding hdc11 ...
<<<<<

J'ai essayé de faire les 'fsck -f' et 'resize2fs' sur sda1 et sdb1, le
résultat est le même.


Ah ben si tu le fais sur chacun des membres du raid ça ne va pas marcher
mais c'est normal, c'est comme si tu re-séparais les deux disques.

Vraiment, je ne comprends pas. Peut il y avoir un pb matériel en cause ?


Sais pas, crois pas.

Ais je oublié une étape ?


Je te conseillerais bien d'essayer de monter le panneau à la patte après
l'échec lors du boot puis de voir ce qui diffère avec les scripts mdadm-raid
de /etc/rcS.d. L'ordre des opérations (mkraid,e2fsck,resize2fs) est très
important...

Hope that helps,

JKr





Avatar
Julien K.
Julien K. wrote:
# fdisk -d /dev/sda | sfdisk /dev/sdc
(duplication du partiionnement *seulement* si les disques sont identiques
ce qui semble être ton cas)

Autre question: pourquoi mettre les deux disques sur la même nappe? Pas
de souci master/slave?


Chuis con, c'est du SCSI, nan?

bye

JKr

Avatar
DaXav


Autre question: pourquoi mettre les deux disques sur la même nappe?
Pas de souci master/slave?



Chuis con, c'est du SCSI, nan?


SATA


Avatar
DaXav

Tout d'abord j'ai utilisé raidtools pour créer mon système, ça m'a
paru plus simple que mdadm.


Mon package raidtools2 est tout bizarre, il n'a pas la commande
'mkraid'. Et comme j'ai lu qq part que c'était obsolète, et qu'il valait
mieux utiliser mdadm et que je suis un gentil garcon ...

# fdisk -d /dev/sda | sfdisk /dev/sdc
(duplication du partiionnement *seulement* si les disques sont identiques
ce qui semble être ton cas)


Ils le sont, je note la commande.

Autre question: pourquoi mettre les deux disques sur la même nappe?
Pas de souci master/slave?

mke2fs /dev/sda1
mke2fs /dev/sdb1



C'est du SATA.

Pourquoi donc maintenant? Moi je ne ferais pas cette étape...

mdadm --create /dev/md0 -l 1 -n 2 /dev/sd[ab]1



Au départ je ne le faisait pas, puis dans le doute, j'ai essayé comme ca.

Ok. Il faut pas lui dire de démarrer le bidule aussi (--run)?


Non, ca démarre la synchronisation après la création.

more /proc/mdstat



et???


C'était pour surveiller la fin de synch.

mke2fs /dev/md0
fsck -f /dev/md0



Avec le disque démonté, non? Pourquoi pas "e2fsck -f /dev/md0" ?


à ce stade, je n'ai rien monté.
Mais 'fsck -f /dev/md0' revient à "e2fsck -f /dev/md0" non ?

# là me dit "Remplissage à la fin de bloc bitmap n'est pas initialisé"



Jamais vu cette erreur... Rien à propos d'un supreblock possiblement
corrompu?


non pas sur md0. Sur sda1 et sdb1 oui.

# même si je fixe, il dit pareil si je relance le check
resize2fs /dev/md0



idem, disque démonté

# me dit 'Le système de fichier a déjà .... Rien à modifier!'
# au reboot, toujours la même chose :
md: md driver 0.90.0 MAX_MD_DEVS%6, MD_SB_DISKS'
md: md0 stopped.



Tu as bien tout mis en dur dans le kernel et pas en modules non
chargés au boot?


Je viens de vérifier et effectivement les options RAID et raid1 sont en
modules. Je recompile en dur de ce pas et je vois ce que ca donne !

md: invalid superblock checksum on sdb1
md: sdb1 has invalid sb, not importing!
md: md_import_device returned -22
md: invalid superblock checksum on sda1
md: sda1 has invalid sb, not importing!
md: md_import_device returned -22



J'ai quelque chose comme:

md: raid1 personality registered as nr 3





md: md driver 0.90.1 MAX_MD_DEVS%6, MD_SB_DISKS'
...
md: Autodetecting RAID arrays.
md: autorun ...
md: considering hdc11 ...
md: adding hdc11 ...
<<<<<

J'ai essayé de faire les 'fsck -f' et 'resize2fs' sur sda1 et sdb1, le
résultat est le même.



Ah ben si tu le fais sur chacun des membres du raid ça ne va pas
marcher mais c'est normal, c'est comme si tu re-séparais les deux disques.


C'est le "Repeat for all /dev/md devices" qui m'a poussé à faire ca. Les
devices du md0 étant bien sda1 et sdb1.

Vraiment, je ne comprends pas. Peut il y avoir un pb matériel en cause ?



Sais pas, crois pas.

Ais je oublié une étape ?



Je te conseillerais bien d'essayer de monter le panneau à la patte
après l'échec lors du boot puis de voir ce qui diffère avec les scripts
mdadm-raid de /etc/rcS.d. L'ordre des opérations
(mkraid,e2fsck,resize2fs) est très important...


monter le panneau à la patte ?

Hope that helps,


I think so !

Xavier






Avatar
Julien K.
DaXav wrote:
Tout d'abord j'ai utilisé raidtools pour créer mon système, ça m'a paru
plus simple que mdadm.


Mon package raidtools2 est tout bizarre, il n'a pas la commande 'mkraid'.
Et comme j'ai lu qq part que c'était obsolète, et qu'il valait mieux
utiliser mdadm et que je suis un gentil garcon ...


Oui je viens de lire que "raidtools2" est un package 'de transition' mais
qu'il n'est plus maintenu. Il reste cependant "raidtools" qui contient
toutes les commandes nécessaires.

# fdisk -d /dev/sda | sfdisk /dev/sdc (duplication du partiionnement
*seulement* si les disques sont identiques ce qui semble être ton cas)


Ils le sont, je note la commande.


Typo: # sfdisk -d /dev/sda | sfdisk /dev/sdc

more /proc/mdstat
et???



C'était pour surveiller la fin de synch.


Et une fois la synchro achevée ça donne quoi?

Ah et la commande suivante donne quoi?

# mdadm --detail /dev/md0

Chez moi ça donne:
<<<<<
thabor:~/work> sudo mdadm --detail /dev/md0
/dev/md0:
Version : 00.90.01
Creation Time : Mon Oct 25 13:21:37 2004
Raid Level : raid1
Array Size : 15936 (15.56 MiB 16.32 MB)
Device Size : 15936 (15.56 MiB 16.32 MB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent







Vérifie qu'il y a bien "Superblock is persistent"

Mais 'fsck -f /dev/md0' revient à "e2fsck -f /dev/md0" non ?


Je ne sais pas, il n'y a rien dans la doc à ce sujet.

# me dit 'Le système de fichier a déjà .... Rien à modifier!' # au
reboot, toujours la même chose : md: md driver 0.90.0
MAX_MD_DEVS%6, MD_SB_DISKS' md: md0 stopped.


Tu as bien tout mis en dur dans le kernel et pas en modules non chargés
au boot?


Je viens de vérifier et effectivement les options RAID et raid1 sont en
modules. Je recompile en dur de ce pas et je vois ce que ca donne !


Ok.

J'ai essayé de faire les 'fsck -f' et 'resize2fs' sur sda1 et sdb1,
le résultat est le même.



C'est le "Repeat for all /dev/md devices" qui m'a poussé à faire ca. Les
devices du md0 étant bien sda1 et sdb1.


Eh bien non, c'est sur les /dev/mdXX qu'il faut le faire.

Je te conseillerais bien d'essayer de monter le panneau à la patte
après l'échec lors du boot puis de voir ce qui diffère avec les scripts
mdadm-raid de /etc/rcS.d. L'ordre des opérations
(mkraid,e2fsck,resize2fs) est très important...


monter le panneau à la patte ?


Ben faire un assemblage puis de monter le /dev/mdX, un peu comme ce que
fait le script /etc/rcS.d/S25mdadm-raid...

bye

JKr





Avatar
DaXav

Et une fois la synchro achevée ça donne quoi?

Ah et la commande suivante donne quoi?

# mdadm --detail /dev/md0

Vérifie qu'il y a bien "Superblock is persistent"


Une fois la synchro achevée :


# more /proc/mdstat

Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
987840 blocks [2/2] [UU]

unused devices: <none>



# mdadm --detail /dev/md0

/dev/md0:
Version : 00.90.01
Creation Time : Sun Jun 26 12:23:09 2005
Raid Level : raid1
Array Size : 987840 (964.69 MiB 1011.55 MB)
Device Size : 987840 (964.69 MiB 1011.55 MB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Sun Jun 26 12:24:35 2005
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

UUID : 66787a1c:54c5d379:1c09e6eb:c66d8571
Events : 0.2

Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1



Et la tout va bien, je peux monter /dev/md0, ecrire dedans, simuler des
pannes, bref tout va bien ... jusqu'au reboot.


Je viens de vérifier et effectivement les options RAID et raid1 sont
en modules. Je recompile en dur de ce pas et je vois ce que ca donne !


Ok.



Tout en dur, Ca n'a rien changé.
Je commence a désespérer.

Xavier
--
Better late than never


1 2