6135 links
  • GuiGui's Show
  • Home
  • Login
  • RSS Feed
  • ATOM Feed
  • Tag cloud
  • Picture wall
  • Daily
Links per page: 20 50 100
 
  • Suse Doc: Storage Administration Guide - Resizing Software RAID Arrays with mdadm - December 16 2013
    Soit une machine, deux disques durs, des volumes RAID 1, pas d'usage de LVM (c'est pour les faibles/chiens, il faut croire :/ ). On veut redimensionner à la baisse (réduire la taille quoi) un volume RAID afin de récupérer de l'espace pour créer une nouvelle partition. Évidemment, on ne veut subir aucune perte de données. Pour ce faire, il faut bien évidemment que la taille finale de la partition redimensionnée soit supérieure à la taille totale des données qui y sont stockées. L'opération se fait à chaud, avec le système GNU/Linux installé sur la machine en cours d'exécution, pas de live.

    Voilà ce que donne un cfdisk sur l'un des disques (le deuxième est identique) :
    Nom       Ind.         Partition      S. Fic.               [Étiq.]              Taille (Mo)
    -------------------------------------------------------------------------------------------------------------------
                                                  Inutilisable                                        1,05    *
      sda1    Amorce     Primaire     ext4                  [boot]                   999,30    *
      sda2                    Primaire     linux_raid_m      [mdresize:0]      10000,27    *
      sda3                    Primaire     linux_raid_m      [mdresize:1]        8998,46    *
      sda4                    Primaire     swap                                           1475,77    *

    « Inutilisable » est de l'espace libre mais on a le droit à 4 partitions primaires avec une table des partition MBR ; Deuxième partition (sda2) : système ; Troisième : données.

    Ici, c'est la partition sda3 (qui forme, avec sdb3 la grappe RAID 1 md1) que nous voulons redimensionner pour la passer d'environ 9G à environ 7G.
    /dev/md1  8,3G  147M  7,7G  2% /home


    Voici les différentes étapes pour y parvenir :
    1) umount /dev/md1

    2) e2fsck -f /dev/md1

    3) On réduit la taille du système de fichiers : resize2fs /dev/md1 7G

    4) On réduit la taille du conteneur, c'est-à-dire le volume RAID : mdadm --grow /dev/md1 --size=7G


    5a) On sort la première partition de la grappe RAID : mdadm /dev/md1 --fail /dev/sda3 --remove /dev/sda3

    6a) On redimensionne la partition (ici : sda3) avec fdisk ou (mon préféré) cfdisk : d (supprimer) - [ 3 -] n (nouvelle) - p (primaire) - 7500M - debut - type : DA (ou FD, "l'ancien" « linux raid autodetect ») - w (écrire). Oui, 7500M est supérieur aux 7G désirés mais c'est volontaire : être sûr que la partition ne soit pas plus petite que le conteneur RAID qu'elle va recevoir. Si vous avez une table des partitions GPT, il suffit d'utiliser gdisk pour cette étape, ça marche tout pareil : d - 3 - n - 3 - +7500M - DA - w . Les autres étapes restent inchangées

    7a) On reintègre la partition à la grappe RAID : mdadm -a /dev/md1 /dev/sda3

    8a) On attend le resync RAID. Pour voir la progression : watch cat /proc/mdstat

    On recommence les étapes 5 à 8 avec la deuxième partition qui constitue md1) :
    5b) mdadm /dev/md1 --fail /dev/sdb3 --remove /dev/sdb3

    6b) cfdisk - d - [ 3 -] n - p - 7500 - debut - type : DA - écrire

    7b) mdadm -a /dev/md1 /dev/sdb3

    8b) Attente resync RAID

    Note : oui, on pourrait être plus bourrin c'est-à-dire stopper le RAID et modifier directement la taille des deux partitions, sans resync.


    9) On démonte le RAID sinon la prochaine étape ne peut pas fonctionner (ressource occupée) : mdadm --stop /dev/md1

    10) On informe le noyau que les tables des partitions ont changées, sans rebooter bien sûr (cette commande fait partie du package parted chez Debian) : partprobe . La commande « blockdev --rereadpt » (package util-linux) fait le job tout aussi bien.

    11) Si on tente de monter le RAID, mdadm nous informera que les superblocks sont endommagés et qu'il ne peut donc pas assembler la grappe. Nous allons réécrire les headers : mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb3
    mdadm nous informe que : « /dev/sda3 appears to be part of a raid array ; /dev/sdb3 appears to be part of a raid array ;  /dev/sda3 appears to contain an ext2fs file system ;  /dev/sdb3 appears to contain an ext2fs file system », ce qui est une bonne chose.

    12) On actualise mdadm.conf pour que tout fonctionne au prochain reboot : mdadm --detail --scan >> /etc/mdadm/mdadm.conf
    Attention : penser à effacer le(s) doublon(s) à la mano dans mdadm.conf. Penser également à mettre à jour fstab ou crypttab s'ils utilisent l'UUID de la grappe RAID comme identifier (ls -lh /dev/disk/by-uuid pour trouver le nouvel UUID de la grappe RAID). Évidemment, si la grappe RAID redimensionnée héberge le système GNU/Linux, il faut reconstruire l'initramfs : update-initramfs -u

    13) e2fsck -f /dev/md1
    Si jamais le message suivant s'affiche :
    « La taille du système de fichiers (selon le superbloc) est de 1835008 blocs
    La taille physique du périphérique est de 1830368 blocs
    Le superbloc ou la table des partitions est peut-être corrompue !
    abort ? » -> répondre : n

    14) resize2fs /dev/md1

    15) N'est pas utile mais par sécurité : e2fsck -f /dev/md1


    On ajuste la taille du conteneur ainsi que la taille du système de fichiers à celle de la partition :
    16) mdadm --grow /dev/md1 -z max

    17) resize2fs /dev/md1


    Résultat :
    Nom       Ind.          Partition      S. Fic.           [Étiq.]                Taille (Mo)
    ------------------------------------------------------------------------------------------------------------------
                                                  Inutilisable                                       1,05    *
      sda1    Amorce     Primaire     ext4                  [boot]                  999,30    *
      sda2                    Primaire     linux_raid_m      [mdresize:0]     10000,27    *
      sda3                    Primaire     linux_raid_m      [mdresize:1]       7501,46    *
                                                  Inutilisable                                  1497,01    *
      sda4                    Primaire     swap                                          1475,77    *

    /dev/md1  6,9G  142M  6,4G  3% /home


    Autre ressource intéressante : http://www.howtoforge.com/how-to-resize-raid-partitions-shrink-and-grow-software-raid
    December 10, 2014 at 11:03:50 PM UTC - permalink - https://www.suse.com/documentation/sled11/stor_admin/data/raidresize.html
Links per page: 20 50 100
 
Mentions légales identiques à celles de mon blog | CC BY-SA 3.0

Shaarli - The personal, minimalist, super fast, database-free, bookmarking service by the Shaarli community