mdadm - Supprimer le disque de RAID0

11

Donc, je voudrais savoir, il est possible de faire ce qui suit avec mdadm:

  1. Je commence par la configuration RAID0 sur 2 disques: sdaet sdb.
  2. Je voudrais ajouter un disque de plus à la baie sdcet y déplacer toutes les données sdb.
  3. Déconnectez-vous sdb.

En ce moment , je ne vois qu'une seule option - j'arrête le tableau, copie sdbà sdcavec ddou tout autre outil bloc-copie et commencer à l'arrière du tableau.

Dois-je manquer quelque chose? Est-il possible de le faire avec mdadm?

maniaque
la source
Vous pouvez créer sdb sur un miroir temporaire, puis synchroniser sdc sur celui-ci en arrière-plan - cela a réduit le temps d'arrêt nécessaire, même si je ne l'ai pas fait en tant que débutant à votre place.
peterh
Je ne suis pas un débutant à coup sûr :) Pouvez-vous m'en dire plus sur le miroir temporaire? Est-ce la fonctionnalité mdadm?
maniaque
Non, c'est une fonction de raid simple. J'ai pensé à un tableau raid1 temporaire, qui pourrait être la place de sdb dans votre tableau raid1. Pendant que vous synchronisez sdb vers sdc, vous pouvez également l'utiliser dans le cadre de votre tableau raid0.
peterh
Alors, je vous comprends bien? 1. Arrêtez la baie. 2. Créez une matrice RAID1 supplémentaire avec sbd et sdc. 3. Et comment pourrais-je demander à mdadm de démarrer mon RAID0 avec md1 au lieu de sdb?
maniaque
Je n'ai pas beaucoup recherché, mais il semble certainement que vous devriez pouvoir passer d'un RAID0 -> RAID5. Puis réduisez à un RAID0.
Zoredache

Réponses:

17

Tout d'abord: à ceux qui croient encore en "RAID0 n'a pas de disque de rechange". Il pourrait avoir un disque de secours manuel, fait par l'homme, qui comprend les niveaux RAID et mdadm. mdadm est un RAID logiciel, il pourrait donc faire beaucoup de choses intéressantes.

Crédits à Zoredache pour l'idée!

Donc, la situation:

  • vous disposez d'une matrice RAID0 de deux disques
  • vous souhaitez remplacer l'un d'eux sans interruption de la baie

Si le temps d'arrêt est acceptable, vous pouvez toujours faire une copie de bloc de disque avec dd et réassembler le tableau, mdadm fera OK.

Solution: utilisez RAID4 comme solution intermédiaire

RAID0 -> RAID4 -> RAID0

Donc, si vous ne vous souvenez pas de RAID4, c'est simple. Il a un bloc de parité, mais contrairement à RAID5, il n'est pas distribué sur la baie, mais réside sur UN disque. C'est le point, c'est important et c'est la raison pour laquelle RAID5 ne fonctionnera pas.

Ce dont vous aurez besoin: deux autres disques de la même taille que le disque que vous souhaitez remplacer.

Environnement:

  • Ubuntu 14.04 Thrusty Thar
  • mdadm - v3.2.5 - 18 mai 2012
  • / dev / sdb - commencez par le remplacer par le
  • / dev / sdc - commencez par
  • / dev / sdd - sera utilisé temporairement
  • / dev / sde - sera utilisé à la place de sdb

Le guide mdadm de secours à chaud RAID0 ultime;)

sudo mdadm -C /dev/md0 -l 0 -n 2 /dev/sd[bc]

md0 : active raid0 sdc[1] sdb[0]
      2096128 blocks super 1.2 512k chunks

Nous avons créé un tableau raid0, il a l'air doux.

sudo md5sum /dev/md0

b422ba644a3c83cdf28adfa94cb658f3  /dev/md0

C'est notre point de contrôle - si même un bit diffère dans le résultat /dev/md0- nous avons échoué.

sudo mdadm /dev/md0 --grow --level=4

md0 : active raid4 sdc[1] sdb[0]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

Nous avons donc développé notre baie pour qu'elle devienne RAID4. Nous n'avons pas encore ajouté le disque de parité, alors faisons-le. La croissance sera instantanée - il n'y a rien à recalculer ou à recalculer.

sudo mdadm /dev/md0 -a /dev/sdd

md0 : active raid4 sdd[3] sdc[1] sdb[0]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
      [===>.................]  recovery = 19.7% (207784/1048064) finish=0.2min speed=51946K/sec

Nous avons ajouté un sdddisque de parité. Ceci est important à retenir - l'ordre des disques dans la première rangée n'est pas synchronisé avec l'image de la deuxième rangée! [UU_]

sdd est affiché en premier, mais en fait c'est le dernier, et ne contient pas les données, mais la parité.

sudo mdadm /dev/md0 -f /dev/sdb

md0 : active raid4 sdd[3] sdc[1] sdb[0](F)
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]

Nous avons rendu notre disque sdb défectueux, pour le supprimer dans les étapes suivantes.

sudo mdadm --detail /dev/md0

State : clean, degraded

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       32        1      active sync   /dev/sdc
       3       8       48        2      active sync   /dev/sdd

       0       8       16        -      faulty spare   /dev/sdb

Les détails nous montrent la suppression du premier disque et ici nous pouvons voir le véritable ordre des disques dans la matrice. Il est important de suivre le disque avec parité, nous ne devons pas le laisser dans la baie lors du retour à RAID0.

sudo mdadm /dev/md0 -r /dev/sdb

md0 : active raid4 sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]

sdb est complètement retiré, pourrait être emporté.

sudo mdadm /dev/md0 -a /dev/sde

md0 : active raid4 sde[4] sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
      [==>..................]  recovery = 14.8% (156648/1048064) finish=0.2min speed=52216K/sec

Nous avons ajouté le remplacement de notre disque sdb. Et c'est parti: maintenant les données de sdb sont récupérées en utilisant la parité. Sweeeeet.

md0 : active raid4 sde[4] sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/3] [UUU]

Terminé. En ce moment, nous sommes complètement en sécurité - toutes les données de sdb sont récupérées, et maintenant nous devons supprimer sdd (rappelez-vous, il maintient la parité).

sudo mdadm /dev/md0 -f /dev/sdd

md0 : active raid4 sde[4] sdd[3](F) sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

SDD défectueux.

sudo mdadm /dev/md0 -r /dev/sdd

md0 : active raid4 sde[4] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

Sdd supprimé de notre tableau. Nous sommes prêts à redevenir RAID0.

sudo mdadm /dev/md0 --grow --level=0 --backup-file=backup

md0 : active raid4 sde[4] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
      [=>...................]  reshape =  7.0% (73728/1048064) finish=1.5min speed=10532K/sec

Aaaaaaand bang!

md0 : active raid0 sde[4] sdc[1]
      2096128 blocks super 1.2 512k chunks

Terminé. Regardons la somme de contrôle md5.

sudo md5sum /dev/md0

b422ba644a3c83cdf28adfa94cb658f3  /dev/md0

D'autres questions? RAID0 pourrait donc avoir un disque de secours. Cela s'appelle "utilisateur";)

maniaque
la source
1

Autant que je sache, une fois que vous avez configuré un RAID0, vous ne pouvez pas changer l'un des disques. Vous pouvez effectuer une sauvegarde et basculer les disques et restaurer la sauvegarde. Je voudrais juste RAID5 ces 3 disques que vous avez. De cette façon, à l'avenir, vous pouvez supprimer un disque et le reconstruire.

joeg1ff
la source
Eh bien, je sais comment faire la chose dont je parle avec RAID5 - je peux ajouter un nouveau disque à la matrice (en tant que disque de rechange), puis marquer le disque que j'aime comme défectueux et le retirer de la matrice, en essuyant le superbloc par la suite. Mais je suis intéressé par la même opération avec RAID0 :)
maniaque
@maniaque Cela s'appelle RAID 0 parce que zéro est la quantité de RAID que vous obtenez. Rien d'important ne devrait jamais être placé sur un RAID 0.
Michael Hampton
@MichaelHampton Je pense que vous parlez de redondance et non de RAID, mais votre déclaration est correcte à 100%.
joeg1ff
@MichaelHampton Veuillez voir ma réponse ci-dessous :)
maniaque
0

RAID 0 ne fournit pas de redondance.

Il ne prend donc pas en charge le remplacement des disques durs.

user2743554
la source
1
Regardez ci-dessous, s'il vous plaît. Il n'y a rien d'impossible, quand on comprend les niveaux RAID;)
maniaque