La panne!

Cela devait arriver (et ca vous arrivera, Murphy est la pour ca):

  Aug  5 06:25:34 sophie mdadm[1199]: Fail event detected on md device /dev/md0, component device /dev/sdb1

Disque HS, heureusement, le serveur a ses données sur des disques RAID (RAID0, mode mirroir).

LDLC

Petite commande chez LDLC pour avoir du disque avec la bonne connectique (du SATA, oui, M'sieur), livré 2 jours après (rien ne presse un disque est encore OK, mais ne trainons pas)

Mise en place

Arret du serveur, debranchement du disque HS, mise en place du nouveau. bon, c'est du 320Go a la place de 200Go, mais ca va. reboot du PC.
Au boot, le classique press F1 .... puis l'OS est chargé.


  root@ns2:~# cat /proc/mdstat 
  ...
  md0 : active raid1 sda1[0]
        7815488 blocks [2/1] [U_]
  ...

Table de partitions, HEIN?

Les méthodes sur le web imaginent que vous retrouvez un disque identique au précédent, et que vous savez exactement la taille de chaque partition a l'octet pret. Moi, perso, je m'en souviens plus.... Alors je prend les bons outils qui font les choses bien. En effet avec un disque neuf, on a ca:

  root@ns2:~# fdisk /dev/sdb
  Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
  Building a new DOS disklabel with disk identifier 0xb31ed563.
  Changes will remain in memory only, until you decide to write them.
  After that, of course, the previous content won't be recoverable.
  
  Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
  
  WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
           switch off the mode (command 'c') and change display units to
           sectors (command 'u').
  Command (m for help): q
  

Il est temps de connaitre les bonnes tailles des partitions, sans limiter mon 320Go à un 200Go


  root@ns2:~# sfdisk -d /dev/sda | sfdisk /dev/sdb
  root@ns2:~# fdisk -l /dev/sda
  
  Disk /dev/sda: 200.0 GB, 200049647616 bytes
  255 heads, 63 sectors/track, 24321 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes
  Sector size (logical/physical): 512 bytes / 512 bytes
  I/O size (minimum/optimal): 512 bytes / 512 bytes
  Disk identifier: 0x000c4348
  
   Device Boot      Start         End      Blocks   Id  System
  /dev/sda1   *           1         973     7815591   fd  Linux raid autodetect
  /dev/sda2             974       24321   187542810   fd  Linux raid autodetect
  root@ns2:~# fdisk -l /dev/sdb
  
  Disk /dev/sdb: 320.1 GB, 320072933376 bytes
  255 heads, 63 sectors/track, 38913 cylinders
  Units = cylinders of 16065 * 512 = 8225280 bytes
  Sector size (logical/physical): 512 bytes / 512 bytes
  I/O size (minimum/optimal): 512 bytes / 512 bytes
  Disk identifier: 0x00000000
  
     Device Boot      Start         End      Blocks   Id  System
  /dev/sdb1   *           1         973     7815591   fd  Linux raid autodetect
  /dev/sdb2             974       24321   187542810   fd  Linux raid autodetect
  

Tout va bien, on a créé une nouvelle table de partition avec la même taille (sfdisk -d /dev/sda | sfdisk /dev/sdb). Et contrairement aux méthodes plus bourrines, la table de partition est pour un disque de 320Go et on peut encore creer des partitions derrière.

Reconsolidation du RAID

D'abord, on vérifie qu'est ce qu'on écrase. A faire sans avoir une Fischer sur la table!

  root@ns2:~#  mdadm --misc --detail /dev/md0
  /dev/md0:
        Version : 0.90
  Creation Time : Sat Jul 15 19:48:23 2006
     Raid Level : raid1
     Array Size : 7815488 (7.45 GiB 8.00 GB)
  Used Dev Size : 7815488 (7.45 GiB 8.00 GB)
   Raid Devices : 2
  Total Devices : 1 
  Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Fri Aug 24 16:30:57 2012
          State : clean, degraded
  Active Devices : 1
  Working Devices : 1
  Failed Devices : 0
  Spare Devices : 0

           UUID : b677a1b8:a8777bf6:87d31425:345fc01d
         Events : 0.2932

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

On est sur le bon, /dev/md0 est en théorie stocké par /dev/sda1 et /dev/sdb1. (ACHH, ce RAID a 6ans!!!!)

  root@ns2:~# mdadm /dev/md0 --manage --add /dev/sdb1
  root@ns2:~# cat /proc/mdstat 
  Personalities : [raid1] 
  md0 : active raid1 sdb1[2] sda1[0]
      7815488 blocks [2/1] [U_]
      [>....................]  recovery =  2.8% (221312/7815488) finish=1.8min speed=64262K/sec

Tout est bon, dans le meilleur des mondes, ca se reconstruit... donc pareil pour l'autre partition...

  root@ns2:~# mdadm /dev/md1 --manage --add /dev/sdb2

Conclusion

40s dans l'OS pour lancer tout cela. Franchement, c'est pas dur, et c'est rien par rapport à perdre 15 ans de photos, de projets, de mails de documents, allez expliquez à votre femme que vous avez perdu toutes ses photos ....

(PS: Le RAID vous sauve d'une panne (1 disque qui lache clairement, mais ne vous dispense pas de backup. Un RAID ne peut rien contre un rm -fr / ou une corruption silentieuse.

Je retourne faire une petite partie de http://www.springrts.com, avec ma Fischer.