[linux][RAID]Passer en RAID sans perdre mes données

Bonjour à tous,

J’ai récemment récupéré un vieux PC que je transformerais bien en serveur perso avec un RAID 1 pour parer à l’éventualité d’un crash disque.

J’ai installé l’ubuntu dapper drake dessus.

Mon ancien poste était sous windows avec un RAID 1 (mirroring donc) software sur une carte controlleur. Pour des raisons de simplicité, j’ai viré cette carte et mis les deux disques sur le contrôlleur IDE de la carte mère.

Jusque là, mon raisonnement était le suivant :

  • je branche un des deux disques en mirroring partoche NTFS sur mon PC sous windows 2000, je vérifie que j’accede aux données
  • je branche le deuxième sous linux, je le partitionne et formate en ext3
  • je copie le contenu du premier vers le deuxième par ethernet
  • je met le disque encore en NTFS sur le PC linux, le formate, le monte en RAID et hop ! Les donnés se synchronisent et mon serveur est OK.

Seul problème, j’en suis à la dernière étape et j’ai vu (un peu tard il est vrai) un peu partout que lors de la création d’un périphérique RAID, il faut d’abord monter le périphérique RAID avec les deux HD et ensuite créer les partitions… Ce qui pose un problème dans mon cas car je ne peux pas passer par un autre disque pour sauvegarder temporairement le contenu (pas la place ailleurs).

La question en résumé est donc : est-il possible de créer un raid mirroring avec un HD déjà rempli sans qu’il perde ses données sous linux ?

A priori, nope. De ce que je connais, tu crées l’espace raid, puis tu le partitionnes. Je ne suis pas certain que tu puisse ajouter facilement un disque.

Ca s’apparente pour moi à de la reconstruction, et là c’est un peu la ligne de commande pas sympathique.

Un soft de replication quasi temps reel devrait faire l’affaire, sans utiliser de raid non ?

Sauf qu’il veut etre en raid a la fin B)

Meme chose que goodboy, je pense que ce n’est pas possible facilement.
C’est une des raisons pour laquelle d’ailleurs j’ai preferer une solution 2 disques avec sychronisation quotidienne plutot que RAID1.

Ceci dit, ca doit etre possible dans l’absolue, parce que quand tu as un des deux disques d’un RAID qui crame, faut quand meme bien pouvoir le remplacer par un nouveau sans perdre ce qu’il y a sur l’autre. Et l’operation s’apparente a ce que tu essayes de faire.

A creuser. Si tu trouves, je veux bien que tu postes la reponse, ca m’interesse.

Ben

Bon j’ai bien une idee mais je sais pas si ca va marcher.

Je me base sur deux liens ubuntu: ici et la

L’idee: Tu cree l’array raid en faulty directement.
En imaginant que ta partoche raid 1 (la numero 1) soit /dev/hda5:

Si ca marche pas (parce que y a pas assez de disque), essaye ca:

Si ca marche pas non plus, mon idee marche pas B)

Si ca marche, il va falloir que tu formate la partoche:

Tu montes et tu recopie ton disque. Tu verifie quand meme que ca tourne sur le linux. Et apres:

En imaginant que ta partoche s’appelle hdb5.

Oublie enfin de declarer le disque en automatique (voir les documents fournis)

LoneWolf
Une idee saugrenue en passant…

La solution la plus simple ne reste-t-elle pas la sauvegarde incrémentale automatique avec RSYNC par exemple ?

De plus avec cette méthode , seul le disque système tourne en permanence, économie d’énergie et de bruit.

non ?

[quote=“LoneWolf, post:5, topic: 31979”]Bon j’ai bien une idee mais je sais pas si ca va marcher.

Je me base sur deux liens ubuntu: ici et la

L’idee: Tu cree l’array raid en faulty directement.
En imaginant que ta partoche raid 1 (la numero 1) soit /dev/hda5:

Si ca marche pas (parce que y a pas assez de disque), essaye ca:

Si ca marche pas non plus, mon idee marche pas B)

Si ca marche, il va falloir que tu formate la partoche:

Tu montes et tu recopie ton disque. Tu verifie quand meme que ca tourne sur le linux. Et apres:

En imaginant que ta partoche s’appelle hdb5.

Oublie enfin de declarer le disque en automatique (voir les documents fournis)

LoneWolf
Une idee saugrenue en passant…[/quote]
Ok, donc si je résume ton exemple :

  • le disque actuellement en NTFS est le hda5 de ton exemple et que celui que j’ai installé bien au chaud en ext3 est le hdb5
  • je prends le hda5, je le configure en tant que raid mirroring tout seul (avec devices = 2 ou 1)
  • si ça fonctionne, je le formatte en ext3
  • puis j’ajoute le hdb5 à l’ensemble RAID, et je le laisse synchroniser…

L’idée semble sympa mais j’ai une inconnue qui me gène : comment vérifier que ça tourne ? On peut accéder à un RAID non finalisé ?

Et enfin, qu’entends-tu par “oublie de déclarer le disque en automatique” ? J’édite le fstab pour retirer les infos du hdb5, c’est ça ?

[quote=“M_le_maudit, post:6, topic: 31979”]La solution la plus simple ne reste-t-elle pas la sauvegarde incrémentale automatique avec RSYNC par exemple ?

De plus avec cette méthode , seul le disque système tourne en permanence, économie d’énergie et de bruit.[/quote]
C’est une idée à creuser. Ce qui me gène avec cette méthode, c’est que j’ignore l’impact sur les performances et sur la durée de vie des HD.
Si jamais cette commande doit parcourir tout le disque pour recopier les différences (160 Go à chaque fois quand même), peut être que mon système ramera à ce moment là. En plus, je devrais le faire le plus régulièrement possible pour éviter les pertes importantes en cas de crash du premier disque. Chose impossible avec le RAID1.
Mais je la garde sous le coude, merci !

Bon, c’était presque ça…

En fait, au moment de créer l’ensemble RAID, il faut bien faire un raid_devices=2 MAIS mettre en deuxième device “missing”, ce qui donnera :

Cette page m’a bien aidé à comprendre.

Le RAID array est en cours de rebuild, merci beaucoup pour votre aide !

Bon, par contre j’ai un message d’erreur bien génant au reboot : il me dit que le superblock ou la table de partition est peut être abimée car il y a une différence de taille entre les deux.
J’ai essayé de faire un fsck sur le device RAID mais il a juste parcouru le disque sans rien réparer.
Comment peut on mettre à jour le superblock pour qu’il corresponde au contenu du filesystem ?

Donne le vrai message plutot (dmesg est ton pote) parce qu’un message d’erreur que tu adaptes en francais, ca le fera pas.

Essaye aussi de preciser ta config (comment t’as reconstruit le raid et tout ca)

LoneWolf
Precisons encore plus

Pour le RAID, je l’ai reconstruit exactement comme tu me l’avais recommandé (excepté pour la commande mdadm --create où il faut ajouter le deuxième disque en missing).

Pour le vrai message d’erreur, ça vient juste après cette pause publicitaire (et le temps que le fsck /dev/md0 -v -c se termine…)

edit : je n’ai pas récupéré le message exact avec dmsg, voici donc ce que j’obtiens après avoir lancé une commande fsck :

root@nunux:~# fsck.ext3 /dev/md0 -v -c e2fsck 1.38 (30-Jun-2005) The filesystem size (according to the superblock) is 40019915 blocks The physical size of the device is 40019888 blocks Either the superblock or the partition table is likely to be corrupt! Abort<y>? yes

A noter que si je monte la partoche /dev/md0, j’accède à ses fichiers sans souci… Mais il m’interrompt le chargement de l’OS quand même (c’est pour ça que je suis loggué en root d’ailleurs, chose normalement impossible sous ubuntu).

est ce que les deux partitions utilises pour le raid sont STRICTEMENT de meme taille? J’ai besoin aussi de la geometry des disques (CHS) que tu peux trouver en regardant dans le dmesg, cherche la ligne qui commence par “ide: Assuming” et regarde plus bas, tu dois avoir les carateristiques disque.

LoneWolf
C’est embetant quand meme.

Alors juste pour info, mes périphériques IDE sont comme suit
IDE 1 :
maître -> Disque de 30 Go sur lequel est installé le système
esclave -> Graveur de DVD
IDE2 :
maître -> Disque de 160 Go deuxième élément du RAID
esclave -> Disque de 160 Go premier élément du RAID
(je sais, c’est pas logique que le premier soit l’esclave mais ça m’économisait un transfert de données).

Pour les caractéristiques disques, voilà ce que j’ai obtenu tout à l’heure avec dmesg (j’ai viré tout ce qui ne concerne pas ces deux disques) :

[17179575.796000] ide1: BM-DMA at 0xff08-0xff0f, BIOS settings: hdc:DMA, hdd:DMA [17179576.600000] Probing IDE interface ide1... [17179576.888000] hdc: Maxtor 6Y160P0, ATA DISK drive [17179577.168000] hdd: Maxtor 6Y160P0, ATA DISK drive [17179577.224000] ide1 at 0x170-0x177,0x376 on irq 15 [17179577.324000] hdc: max request size: 1024KiB [17179577.324000] hdc: 320173056 sectors (163928 MB) w/7936KiB Cache, CHS=19929/255/63, UDMA(100) [17179577.324000] hdc: cache flushes supported [17179577.324000] hdc:<6>hdb: ATAPI 40X DVD-ROM DVD-R CD-R/RW drive, 2048kB Cache, UDMA(33) [17179577.324000] Uniform CD-ROM driver Revision: 3.20 [17179577.328000] hdc1 [17179577.328000] hdd: max request size: 1024KiB [17179577.328000] hdd: 320173056 sectors (163928 MB) w/7936KiB Cache, CHS=19929/255/63, UDMA(100) [17179577.328000] hdd: cache flushes supported [17179577.328000] hdd: hdd1

Normalement les deux partoches sont de même taille mais je ne peux te confirmer ça tant que je n’ai pas accès à l’outil de partition de gnome… Et le compte root n’a pas de raccourci créé dans le menu d’admin, or je ne connais pas le programme appellé par ce raccourci. Blocage stupide de noob.

Je viens de checker (c’est gparted l’outil… C’est noté) et les deux partitions sont strictement identiques, à savoir (recopié depuis l’outil d’information de chaque partoche) :

[code]hdX1
size : 152.66 GB
used : 85.19 (56%)
unused : 67.48 (44%)
flags :

path : /dev/hdX1
status : not mounted

first sector : 63
last sector : 310159384
total sectors : 320159321[/code]

edit : je pense savoir quel est le souci… J’ai monté la partoche ext3 directement sans la formatter depuis le RAID. Donc, j’avais une partoche non RAID montée sur un système RAID. Je peux quand même accéder aux données, ce qui me permet de jongler avec mes disques et de me faire un système propre.

Je suis en train de remonter ça, c’est en cours. Pour faire simple, j’ai donc :

  • désactivé le check sur le périphérique RAID dans le /etc/fstab (pour que l’OS se charge malgré l’erreur de superblock, pour cela il faut mettre la dernière colonne du fichier à 0 au lieu de 1)
  • démonté le RAID et remonté le hdd1 en accès direct. En effet, à cause de ma boulette, il se monte sans souci en dehors de son RAID array (ouf, j’ai accès à mes données).
  • créé un nouvel array, assigné deux périphériques (le hdc1 et un missing)
  • formaté en ext3 le périphérique RAID (chose que je n’avais pas fait).
  • là je suis en train de copier les données du hdd1 vers le périphérique raid
  • une fois que tout ceci sera copié, je démonterai le hdd1 puis l’incorporerais au raid et je le laisserais se synchroniser
  • je remettrais le check dans le fichier fstab puis rebooterais… et si ça fonctionne, c’est que mon erreur était effectivement d’avoir laissé la partoche d’origine sans reformater depuis le RAID (cette page - voir point 8 - m’a aidé à comprendre mon erreur)

Finalement Linux c’est rigolo…

Final edit : c’est bon, ça fonctionne. C’était bien mon erreur, tout va bien maintenant. Merci pour votre aide !

(remontée des entrailles de la DB)

Mes aventures avec le RAID, suite…

J’ai récemment eu la très mauvaise idée de vouloir upgrader mon linux en 7.04. L’upgrade s’est plutôt mal passé, aucun reboot possible.
Bon, pas grave, je retente en formattant tout le disque système, après tout mes données sont sur le raid donc ça devrait tourner…
Je passe les galères de la 7.04, j’ai passé deux jours à essayer de l’installer, rien ne fonctionnait, l’OS ne se chargeait même pas (une erreur semble-t-il rencontrée par beaucoup de gens) ce qui m’a forcé à revenir à la 6.06 réinstallé “from scratch”.

Le problème, maintenant… C’est que je n’arrive plus à créer le RAID array, mes deux disques qui le composaient sont tous les deux vus par l’OS mais affichent leur partitions comme étant de type “inconnu”.

Je ne peux pas monter les partitions et si je tente de créer un RAID array avec un seul disque comme avant (pour éviter de perdre mes données au cas où il se décide à tout me sucrer), il me sort un beau “mdadm: Cannot open /dev/hdc1: Device or resource busy” et une autre ligne “create aborted”.

J’ai essayé de monter la partoche seule pour accéder aux données à tout hasard (histoire de sauvegarder ce qui peut l’être au besoin), mais sans succès.

Comment peut-on trouver ce qui bloque un device pour le libérer ?

Merci de votre aide, je crois que je vais craquer là…

edit : j’ai oublié de préciser, mais au moment de la réinstallation d’ubuntu, mes deux disques étaient débranchés (suite à un problème lors de l’install de la 7.04 où il semblait que le fait de posséder plusieurs HD générait mon souci du moment), bref j’avais oublié de les rebrancher au moment de l’install, donc il est possible qu’un fichier de config n’ait pas été rempli.

il faudrait plus d’info notamment sur la detection des disques

file nous la meme portion de dmesg que precedement pour voir comment il detecte les disques

eventuellement /proc/mdstat

fait aussi un fdisk -l pour voir.

Alors use, faudrait voir a pas oublier les bonnes habitudes hein B)

LoneWolf
Les reflexes se perdent, tss tss B)

Ok, je te donne ça de suite.
Le dmesg :

[17179574.988000] Probing IDE interface ide0... [17179575.276000] hda: IBM-DTLA-307030, ATA DISK drive [17179575.724000] hdb: LITE-ON DVDRW SOHW-812S, ATAPI CD/DVD-ROM drive [17179575.780000] ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 [17179575.792000] Probing IDE interface ide1... [17179576.080000] hdc: Maxtor 6Y160P0, ATA DISK drive [17179576.360000] hdd: Maxtor 6Y160P0, ATA DISK drive [17179576.416000] ide1 at 0x170-0x177,0x376 on irq 15 [17179576.460000] hda: max request size: 128KiB [17179576.484000] hda: 60036480 sectors (30738 MB) w/1916KiB Cache, CHS=59560/16 /63, UDMA(33) [17179576.484000] hda: cache flushes not supported [17179576.484000] hda: hda1 hda2 < hda5 > [17179576.516000] hdc: max request size: 1024KiB [17179576.516000] hdc: 320173056 sectors (163928 MB) w/7936KiB Cache, CHS=19929/ 255/63, UDMA(100) [17179576.516000] hdc: cache flushes supported [17179576.516000] hdc:<6>hdb: ATAPI 40X DVD-ROM DVD-R CD-R/RW drive, 2048kB Cac he, UDMA(33) [17179576.520000] Uniform CD-ROM driver Revision: 3.20 [17179576.524000] hdc1 [17179576.524000] hdd: max request size: 1024KiB [17179576.524000] hdd: 320173056 sectors (163928 MB) w/7936KiB Cache, CHS=19929/ 255/63, UDMA(100) [17179576.524000] hdd: cache flushes supported [17179576.524000] hdd: hdd1
et le fdisk

[code]Disque /dev/hdc: 163.9 Go, 163928604672 octets
255 têtes, 63 secteurs/piste, 19929 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets

Périphérique Amorce Début Fin Blocs Id Système
/dev/hdc1 1 19929 160079661 83 Linux

Disque /dev/hdd: 163.9 Go, 163928604672 octets
255 têtes, 63 secteurs/piste, 19929 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets

Périphérique Amorce Début Fin Blocs Id Système
/dev/hdd1 1 19929 160079661 83 Linux

Disque /dev/md0: 163.9 Go, 163921461248 octets
2 têtes, 4 secteurs/piste, 40019888 cylindres
Unités = cylindres de 8 * 512 = 4096 octets

Disque /dev/md0 ne contient pas une table de partition valide[/code]

pour le md0, c’est surement parce que j’ai créé le fichier sans réussir à assigner le RAID array…

Par contre le fichier /proc/mdstat est vide.

arrete ton md0 (genre tu reboot pour etre sur, c’est radical) et tu peux lire ca:
http://www.linuxmanpages.com/man8/mdadm.8.php

Notamment les passage “assemble” et “query”.

Detaille bien dans ton post tous les resultats des differents essais que tu vas faire, j’essairais de t’aider un peu plus tard dans l’apres midi

LoneWolf
things to do, be back later

Bon, c’est réglé… Je vous copie-colle les lignes de commande utilisées :

[code]usewriter@linux-ubuntu:~$ sudo mdadm --query /dev/hdc1
/dev/hdc1: is not an md array
/dev/hdc1: device 0 in 2 device active raid1 md0. Use mdadm --examine for more detail.
usewriter@linux-ubuntu:~$ sudo mdadm --query /dev/hdd1
/dev/hdd1: is not an md array
/dev/hdd1: device 1 in 2 device active raid1 md0. Use mdadm --examine for more detail.
usewriter@linux-ubuntu:~$ sudo mdadm --examine /dev/hdc1
/dev/hdc1:
Magic : a92b4efc
Version : 00.90.03
UUID : 9cebf15e:4c2328a9:81d82df3:7fd19e24
Creation Time : Sun Dec 3 14:34:16 2006
Raid Level : raid1
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0

Update Time : Thu May  3 09:36:30 2007
	  State : clean

Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Checksum : 291db2b9 - correct
Events : 0.81219

  Number   Major   Minor   RaidDevice State

this 0 22 1 0 active sync /dev/hdc1

0 0 22 1 0 active sync /dev/hdc1
1 1 22 65 1 active sync /dev/hdd1
usewriter@linux-ubuntu:~$ sudo mdadm --examine /dev/hdd1
/dev/hdd1:
Magic : a92b4efc
Version : 00.90.03
UUID : 9cebf15e:4c2328a9:81d82df3:7fd19e24
Creation Time : Sun Dec 3 14:34:16 2006
Raid Level : raid1
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0

Update Time : Thu May  3 09:36:30 2007
	  State : clean

Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Checksum : 291db2fb - correct
Events : 0.81219

  Number   Major   Minor   RaidDevice State

this 1 22 65 1 active sync /dev/hdd1

0 0 22 1 0 active sync /dev/hdc1
1 1 22 65 1 active sync /dev/hdd1
usewriter@linux-ubuntu:~$ sudo mknod /dev/md0 b 9 0
usewriter@linux-ubuntu:~$ sudo mdadm --assemble /dev/md0 /dev/hdc1 /dev/hdd1

mdadm: device /dev/md0 already active - cannot assemble it
usewriter@linux-ubuntu:~$ sudo mdadm --misc --stop /dev/md0
usewriter@linux-ubuntu:~$ sudo mdadm --assemble /dev/md0 /dev/hdc1 /dev/hdd1

mdadm: /dev/md0 has been started with 2 drives.
usewriter@linux-ubuntu:~$ sudo mdadm --query /dev/md0
/dev/md0: 152.66GiB raid1 2 devices, 0 spares. Use mdadm --detail for more detail.
/dev/md0: No md super block found, not an md component.
usewriter@linux-ubuntu:~$ sudo mdadm --query --detail /dev/md0
/dev/md0:
Version : 00.90.03
Creation Time : Sun Dec 3 14:34:16 2006
Raid Level : raid1
Array Size : 160079552 (152.66 GiB 163.92 GB)
Device Size : 160079552 (152.66 GiB 163.92 GB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Thu May  3 09:36:30 2007
	  State : clean

Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

	   UUID : 9cebf15e:4c2328a9:81d82df3:7fd19e24
	 Events : 0.81219

Number   Major   Minor   RaidDevice State
   0	  22		1		0	  active sync   /dev/hdc1
   1	  22	   65		1	  active sync   /dev/hdd1[/code]

Donc en fait, c’était juste uber simple… Il faut faire un assemble tout bete (après s’etre assuré que les infos de raid étaient correctes sur les deux disques).

C’est étonnant qu’il n’y ait pas de tutorial simple d’accès pour ce genre de manip…

Merci LoneWolf !

[quote=“use-writer, post:19, topic: 31979”]Donc en fait, c’était juste uber simple… Il faut faire un assemble tout bete (après s’etre assuré que les infos de raid étaient correctes sur les deux disques).

C’est étonnant qu’il n’y ait pas de tutorial simple d’accès pour ce genre de manip…

Merci LoneWolf ![/quote]
De rien B)

Sinon, pour le manque de tuto, je pense que c’est simplement parce qu’il existe plein de tuto pas mal fait pour la creation d’array raid soft, et que le assemble est un concept tres simple a capter une fois qu’on a suivit le tuto pour la creation, et que le manpage suffit pour ca.

LoneWolf
Ne pas reinventer la roue B)