Puis-je créer un logiciel RAID 1 avec un seul appareil

20

J'ai un seul disque dont je veux créer un miroir; appelons ce disque sda. Je viens d'acheter un autre disque de taille identique, que nous pouvons appeler sdb. sdaet sdbavoir une partition appelée sda1et sdb1respectivement.

Lors de la création d'un raid, je ne veux pas effacer mon sdanettoyage et recommencer, je veux juste qu'il commence à refléter avec sdb. Ma pensée était de faire:

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=1 /dev/sda1

... pour créer la matrice sans sdbdisque, puis exécutez quelque chose comme (je pense à haute voix à la commande suivante, car je ne sais pas comment réaliser cette étape)

mdadm /dev/md0 --add /dev/sdb1

La note sdb1est supposée être formatée de la même manière quesda1

Est-ce possible?

qui suis je
la source
Oui, vous pouvez. Ce n'est pas aussi simple que cela --add, et vous devez être prudent, mais ce n'est pas très compliqué. Voir Comment configurer la mise en miroir de disques dans Ubuntu? (Je ne peux pas proposer cette question en double à cause des nouvelles règles.)
Gilles 'SO- arrête d'être méchant'

Réponses:

28

La réponse simple à la question du titre est "Oui". Mais ce que vous voulez vraiment faire, c'est la prochaine étape, qui consiste à mettre en miroir les données existantes.

Il est possible de convertir le disque existant, mais c'est risqué, comme mentionné, en raison de l'emplacement des métadonnées. Il est préférable de créer un miroir vide (cassé) avec le nouveau disque et d'y copier les données existantes. Ensuite, si cela ne fonctionne pas, vous redémarrez simplement l'original non mis en miroir.

Tout d'abord, initialisez en /dev/sdb1tant que nouveau /dev/md0avec un lecteur manquant et initialisez le système de fichiers (je suppose que ext3, mais le choix vous appartient)

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sdb1 missing
mkfs -text3 /dev/md0

Maintenant, /dev/sda1c'est probablement votre système de fichiers racine ( /), donc pour des raisons de sécurité, vous devriez faire la prochaine étape à partir d'un CD en direct, d'un disque de secours ou d'un autre système amorçable qui peut accéder aux deux /dev/sda1et /dev/md0bien que j'aie réussi à le faire en passant en mode mono-utilisateur.

Copiez tout le contenu du système de fichiers sur /dev/sda1à /dev/md0. Par exemple:

mount /dev/sda1 /mnt/a       # only do this if /dev/sda1 isn't mounted as root
mount /dev/md0 /mnt/b
cd /mnt/a                    # or "cd /" if it's the root filesystem
cp -dpRxv . /mnt/b

Modifiez /etc/fstabou assurez-vous que, lors du prochain démarrage, /dev/md0est monté à la place de /dev/sda1. Votre système est probablement configuré pour démarrer à partir de /dev/sda1et les paramètres de démarrage spécifient probablement cela en tant que périphérique racine, donc lors du redémarrage, vous devez le modifier manuellement afin que la racine soit /dev/md0(en supposant qu'elle /dev/sda1soit racine). Après le redémarrage, vérifiez qu'il /dev/md0est maintenant monté ( df) et qu'il fonctionne comme un miroir dégradé ( cat /proc/mdstat). Ajoutez /dev/sda1au tableau:

mdadm /dev/md0 --add /dev/sda1

Étant donné que la reconstruction remplacera /dev/sda1, la version de métadonnées que vous utilisez n'est pas pertinente. Comme toujours lors de modifications majeures, effectuez une sauvegarde complète (si possible) ou assurez-vous au moins que tout ce qui ne peut pas être recréé est sûr.

Vous devrez régénérer votre configuration de démarrage pour l'utiliser en /dev/md0tant que root (si elle /dev/sda1était root) et probablement besoin de régénérer mdadm.confpour vous assurer qu'elle /dev/md0est toujours démarrée.

StarNamer
la source
Parfait exactement ce dont j'ai besoin: D
whoami
2
Ne l'utilisez pas cppour copier des systèmes de fichiers, vous manquerez certaines choses comme les liens durs, les attributs étendus ... Utilisez tarou rsyncavec les options appropriées. Lors du démarrage d'un Live CD, prenez garde que le mappage uid-user est différent (voir les options --numeric-owner de tar / rsync). Voir aussi clone2fs pour le clonage de systèmes de fichiers extx.
Stéphane Chazelas
1
Les options pour cpgérer la préservation des liens (-d), le mode, la propriété et les horodatages (-p), le faire récursivement (-R) et rester sur un système de fichiers (-x), mais je pense que vous avez peut-être raison sur les liens durs et étendus les attributs.
StarNamer
rsync -aH --delete /mnt/olddisk/ /mnt/newarray/est une bonne option. Ajoutez -vih --progresssi vous voulez vraiment voir ce qu'il fait.
rudolfbyker
4

Bien sûr, vous pouvez le créer en spécifiant que le deuxième disque est actuellement missing:

mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 missing /dev/sda1
eppesuig
la source
Doux merci, je suis probablement OCD ici, mais y a-t-il une raison pour laquelle vous avez ajouté le manquant avant le / dev / sda1, l'ordre est-il important?
whoami
Je pense que l'ordre n'a pas d'importance.
eppesuig
3
Attention à ça! avec --metadata = 1.2 (la nouvelle valeur par défaut), les métadonnées RAID (1 Mo) seront insérées au début (remplaçant le contenu là-bas). Et le début du tableau md démarrera 1 Mo dans / dev / sda1 (/ dev / md0 sera 1 Mo plus court que / dev / sda1). Avec des métadonnées = 0,9 (l'ancienne valeur par défaut), les métadonnées (64 Ko) seront insérées à la fin en remplaçant ce qui s'y trouve. Utilisez donc --metadata = 0.9 et redimensionnez d'abord le FS. Quoi que vous fassiez, faites une sauvegarde au préalable.
Stéphane Chazelas
3

Vous pouvez le faire. Vous devez être un peu prudent, mais ce n'est pas dangereux¹ si vous faites très attention à ne rien taper et que cela ne laisse aucun problème dans la configuration.

Je recommande fortement de ne faire aucune des manipulations sur un système live. C'est possible dans certains cas mais nécessite des précautions supplémentaires. Démarrez à partir d'un liveCD / liveUSB tel que Parted ou SystemRescueCD .

Tout d'abord, vous devez réduire un peu le volume pour faire de la place aux métadonnées mdraid (le superbloc). Il existe plusieurs formats de métadonnées , vous devez en utiliser un qui place les métadonnées à la fin du disque. (Dans certaines configurations, vous pouvez avoir suffisamment d'espace pour placer le superbloc au début, mais c'est plus compliqué et sujet aux risques, donc j'y vais.)

Vous devez vous assurer que les 128 derniers Ko du périphérique de bloc ne sont pas utilisés, pour faire de la place pour le superbloc. Vous devrez donc réduire le système de fichiers /dev/sda1. S'il s'agit d'un système de fichiers ext2 / ext3 / ext4, obtenez la taille actuelle du système de fichiers avec tune2fs /dev/sda1, puis exécutez resize2fs /dev/sda1 NNNoù NNN est cette taille moins 128 Ko. Vous pouvez le faire avec Parted à la place. Si vous devez réduire un système de fichiers extN, vous devrez d'abord le démonter; un système de fichiers btrfs peut être réduit en direct.

Une fois que vous avez vérifié que les 128 derniers Ko du périphérique de bloc sont libres, appelez mdadm --createpour créer un volume RAID-1. Cela ne touche aucune partie du volume en dehors du superbloc. Initialement, le volume aura un seul composant: tous les autres sont définis comme ayant échoué. Vous devez réussir --level=1(ou de manière équivalente -n 1) (cette approche ne fonctionne que pour RAID-1) et --metadata=0.9ou --metadata=1.0(le format de superbloc par défaut 1.2 place le superbloc au début du périphérique, ce qui peut écraser les données). L'argument de --raid-devices( -n) est le nombre de composants (y compris ceux manquants) dans le volume RAID.

mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=1.0 /dev/sda1 missing

Vous pouvez maintenant activer la baie et ajouter d'autres composants.

mdadm --add /dev/md0 /dev/sdb1

Remarque sur les chargeurs de démarrage: Grub2 comprend Linux RAID-1 et peut démarrer à partir de celui-ci. Les chargeurs de démarrage tels que Grub1 qui ne comprennent pas le RAID lisent de manière transparente à partir des volumes miroir, mais votre système ne démarre pas si le lecteur à partir duquel le chargeur de démarrage lit échoue. Si le volume RAID est sur une partition, assurez-vous d'installer le secteur de démarrage de Grub sur les deux disques.

¹ Assurez-vous d'avoir des sauvegardes. «Pas dangereux» signifie «vous n'en aurez probablement pas besoin», et non «jouer vos données».

Republié et légèrement adapté de Comment configurer la mise en miroir de disques (RAID-1)

Gilles 'SO- arrête d'être méchant'
la source