Forum Linux.debian/ubuntu Agrandir un raid sans LVM

Posté par  . Licence CC By‑SA.
Étiquettes :
1
10
août
2018

Bonjour à toute et à tous,

Ma situation: un NAS avec un disque systeme et 3 disques de 4To en raid 5 software (md0), pas de LVM, le tout sous Debian stable. Le raid contient des données (environ 5 To).

Je souhaiterai pouvoir ajouter 2 disques de 4To au raid sans perdre de donner…

Mes questions:
- Puis je ajouter les disques un à un, sans LVM:
1er disque
mdadm --add puis mdadm --grow pour le 1er disque
puis resize2fs
Recommencer pour le 2e disque

Est ce la bonne méthode sans LVM (sans perdre les données)

  • Si je DOIS passer par lvm (ma 1ere idée n'est peut etre pas réalisable) je ne vois qu'un solution: copier les données du raid vers les 2 nouveaux disques refaire un raid + lvm avec les 3 disques recopier les données des 2 nouveaux disques vers le nouveau raid LVM (3 disques) Ajouter un a un les 2 nouveaux disques au raid LVM, sachant que la seule difference avec la version précédente sera une étape pour agrandir LVM avant le resizefs. Ai je bon ?

Lors de la mise en place de mon raid, j'ai regardé LVM (tout le monde disait qu'un bon raid c est mdadm + lvm) mais je n'en ai tiré qu'il ne créait qu'un couche logiciel intermédiaire servant surtout à faire du resizing de partition plus facilement.
Mais dans mon cas je n'ai qu'une partition dans mon raid (md0) et Je ne vois pas d'autre utilité à LVM. Je me trompe peut etre ?

Mon inquiétude porte principalement sur le fait de ne pas perdre les 6 To de film de données que j'ai…

Merci à celles et à ceux qui me répondront

+++
Bon vendredi

  • # En théorie ....

    Posté par  . Évalué à 3.

    Puis je ajouter les disques un à un, sans LVM

    De ce dont je me rappelle sur LVM, oui.

    1er disque
    mdadm --add puis mdadm --grow pour le 1er disque
    puis resize2fs
    Recommencer pour le 2e disque

    Tu devrais pouvoir ajouter le premier disque puis le second disque et faire le resize2fs a la fin. En effet ton volume MD est vu comme un disque. Sinon, as-tu fait iun fdisk par dessus ?

    Lors de la mise en place de mon raid, j'ai regardé LVM (tout le monde disait qu'un bon raid c est mdadm + lvm) mais je n'en ai tiré qu'il ne créait qu'un couche logiciel intermédiaire servant surtout à faire du resizing de partition plus facilement.

    Moi aussi c'est ce que j'en ai déduit quand j'ai joué avec mdadm au taf il y a quelques années. Par contre je pense que si je devais faire ce genre de truc aujourd'hui, je prendrais plutôt mdadm + xfs plutôt que mdadm + ext (ça tombe bien je compte le faire dans les semaines/mois à venir pour me faire un NAS perso …).

    Mais dans mon cas je n'ai qu'une partition dans mon raid (md0) et Je ne vois pas d'autre utilité à LVM. Je me trompe peut etre ?

    Dans ton cas, LVM + mdadm n'a probablement pas d'intéret. Je ne sais pas par contre comment se comporte mdadm quand tu veux remplacer un disque de taille S par un disque de taille S+N. Avec LVM, je sais faire. Avec MD, je ne sais pas (ça se fait peut-être très bien, mais j'ai jamais essayé).

    Mon inquiétude porte principalement sur le fait de ne pas perdre les 6 To de film de données que j'ai…

    Dans ce cas, fait une sauvegarde … Quoi que tu fasses, fait une sauvegarde. Ne tente rien sans sauvegarde, et surtout avant de commencer, vérifie que ta sauvegarde est bien lisible. Compris ? Promis ? Fais une sauvegarde FIABLE !!!

    Sinon, si tu veux etre sur de ton coup, tu peux tester en utilisant mdadm avec des images disques que tu crées avec dd : un truc du genre dd if=/dev/zero of= bs=1m count=1024 exécuté n fois te créera n images disques sur lesquelles tu pourra faire tes tests (voir par exemple ce site

    • [^] # Re: En théorie ....

      Posté par  . Évalué à 3.

      Ah j'oubliais de répondre à ça :

      Si je DOIS passer par lvm (ma 1ere idée n'est peut etre pas réalisable) je ne vois qu'un solution: copier les données du raid vers les 2 nouveaux disques refaire un raid + lvm avec les 3 disques recopier les données des 2 nouveaux disques vers le nouveau raid LVM (3 disques) Ajouter un a un les 2 nouveaux disques au raid LVM, sachant que la seule difference avec la version précédente sera une étape pour agrandir LVM avant le resizefs. Ai je bon ?

      Si tu dois refaire quelaue chose, renseigne toi sur d'autres systèmes de fichiers (exemple xfs) qui pourraient être plus appropriés pour ce genre de truc (en tout cas, lorsque je le ferai, je me renseignerai sur cette option). D'autres passant par ici pourront te donner leur avis.

    • [^] # Re: En théorie ....

      Posté par  . Évalué à 2.

      Perso, si les 3 disques a,b et c sont dans le RAID et d et e les deux nouveaux je ferai :

      1. création de la partition sur le 4e et 5e disque pour avoir sdd1 et sde1
      2. ajout du 4e disque dans le RAID : mdadm --manage /dev/md0 --add /dev/sdd
      3. idem étapes 2 pour ajouter le 5e disque
      4. étendre l'array sur les 5 disques : mdadm --grow /dev/md0 --raid-devices=5
      5. agrandir la partition du RAID : resize2fs /dev/md0
      6. Visualiser l'état de la reconstruction : cat /proc/mdstat

      J'ai déjà fait sur un RAID perso et cela fonctionne bien. Malheureusement il est souvent compliqué d'avoir les supports pour réaliser des sauvegardes d'une telle quantité de données…

      • [^] # Re: En théorie ....

        Posté par  . Évalué à 4.

        L'étape 1 est complètement inutile.

        • [^] # Re: En théorie ....

          Posté par  . Évalué à 3.

          … surtout que tu crées un device sdx1 sans l'utiliser (tu utilises sdx). Au mieux ça sert à rien, au pire tu as des partitions/volumes corrompus.

          • [^] # Re: En théorie ....

            Posté par  . Évalué à 2.

            Pour le reste g testé, ça marche.

            • [^] # Re: En théorie ....

              Posté par  . Évalué à 3. Dernière modification le 10 août 2018 à 16:21.

              Voici le test :

              On commence par créer les images disque et initialiser les peripheriques loop:

              for i in 1 2 3 4 5  ; do dd if=/dev/zero of=test${i}.img bs=1M count=1024; sudo losetup /dev/loop${i} ./test${i}.img ; done
              1024+0 records in
              1024+0 records out
              1073741824 bytes (1.1 GB) copied, 0.828014 s, 1.3 GB/s
              1024+0 records in
              1024+0 records out
              1073741824 bytes (1.1 GB) copied, 2.93688 s, 366 MB/s
              1024+0 records in
              1024+0 records out
              1073741824 bytes (1.1 GB) copied, 3.44726 s, 311 MB/s
              1024+0 records in
              1024+0 records out
              1073741824 bytes (1.1 GB) copied, 3.44369 s, 312 MB/s
              1024+0 records in
              1024+0 records out
              1073741824 bytes (1.1 GB) copied, 5.11845 s, 210 MB/s
              

              Ensuite on crée le device

              $ sudo mdadm --create /dev/md0 -n 3 -l 5  /dev/loop1 /dev/loop2 /dev/loop3
              mdadm: Defaulting to version 1.2 metadata
              mdadm: array /dev/md0 started.
              

              On crée le filesystem:

              $ sudo mkfs -T ext4 /dev/md0
              mke2fs 1.42.9 (28-Dec-2013)
              Filesystem label=
              OS type: Linux
              Block size=4096 (log=2)
              Fragment size=4096 (log=2)
              Stride=128 blocks, Stripe width=256 blocks
              131072 inodes, 523776 blocks
              26188 blocks (5.00%) reserved for the super user
              First data block=0
              Maximum filesystem blocks=536870912
              16 block groups
              32768 blocks per group, 32768 fragments per group
              8192 inodes per group
              Superblock backups stored on blocks:
                      32768, 98304, 163840, 229376, 294912
              
              Allocating group tables: done
              Writing inode tables: done
              Creating journal (8192 blocks): done
              Writing superblocks and filesystem accounting information: done
              

              On monte le filesystem:

              $ sudo mount /dev/md0 /mnt && df /mnt
              Filesystem     1K-blocks  Used Available Use% Mounted on
              /dev/md0         2029392  6144   1902112   1% /mnt
              

              On ajoute les devices :

              $ sudo mdadm --manage /dev/md0 --add /dev/loop5
              mdadm: added /dev/loop5
              $ sudo mdadm --manage /dev/md0 --add /dev/loop4
              mdadm: added /dev/loop4
              

              extension de l'array sur les deux disques :

              $  sudo mdadm --grow /dev/md0 --raid-devices=5
              mdadm: Need to backup 2048K of critical section..
              

              On vérifie l'état de la reconstruction :

              $ cat /proc/mdstat
              Personalities : [raid6] [raid5] [raid4]
              md0 : active raid5 loop4[5] loop5[4] loop3[3] loop2[1] loop1[0]
                    2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/5] [UUUUU]
                    [======>..............]  reshape = 34.1% (358400/1047552) finish=0.3min speed=29866K/sec
              
              unused devices: <none>
              $ cat /proc/mdstat
              Personalities : [raid6] [raid5] [raid4]
              md0 : active raid5 loop4[5] loop5[4] loop3[3] loop2[1] loop1[0]
                    2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/5] [UUUUU]
                    [=============>.......]  reshape = 69.3% (727040/1047552) finish=0.1min speed=33047K/sec
              
              unused devices: <none>
              $ cat /proc/mdstat
              Personalities : [raid6] [raid5] [raid4]
              md0 : active raid5 loop4[5] loop5[4] loop3[3] loop2[1] loop1[0]
                    2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/5] [UUUUU]
                    [===================>.]  reshape = 95.2% (998400/1047552) finish=0.0min speed=34427K/sec
              
              unused devices: <none>
              $ cat /proc/mdstat
              Personalities : [raid6] [raid5] [raid4]
              md0 : active raid5 loop4[5] loop5[4] loop3[3] loop2[1] loop1[0]
                    2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/5] [UUUUU]
                    [===================>.]  reshape = 95.2% (998400/1047552) finish=0.0min speed=28525K/sec
              
              unused devices: <none>
              $ cat /proc/mdstat
              Personalities : [raid6] [raid5] [raid4]
              md0 : active raid5 loop4[5] loop5[4] loop3[3] loop2[1] loop1[0]
                    2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/5] [UUUUU]
                    [===================>.]  reshape = 95.3% (998912/1047552) finish=0.0min speed=25613K/sec
              
              unused devices: <none>
              $ cat /proc/mdstat
              Personalities : [raid6] [raid5] [raid4]
              md0 : active raid5 loop4[5] loop5[4] loop3[3] loop2[1] loop1[0]
                    4190208 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/5] [UUUUU]
              
              unused devices: <none>
              

              Une fois que c'est terminé, on redimensionne le fs (j'ai fait un df avant et après le resize2fs pous s'assurer que le fs est bien étendu):

              $ df /mnt
              Filesystem     1K-blocks  Used Available Use% Mounted on
              /dev/md0         2029392  6144   1902112   1% /mnt
              $ resize2fs /dev/md0
              resize2fs 1.42.9 (28-Dec-2013)
              open: Permission denied while opening /dev/md0
              $ df /mnt
              Filesystem     1K-blocks  Used Available Use% Mounted on
              /dev/md0         2029392  6144   1902112   1% /mnt
              $ sudo resize2fs /dev/md0
              resize2fs 1.42.9 (28-Dec-2013)
              Filesystem at /dev/md0 is mounted on /mnt; on-line resizing required
              old_desc_blocks = 1, new_desc_blocks = 1
              The filesystem on /dev/md0 is now 1047552 blocks long.
              
              $ df /mnt
              Filesystem     1K-blocks  Used Available Use% Mounted on
              /dev/md0         4091584  8184   3878544   1% /mnt
              
      • [^] # Re: En théorie ....

        Posté par  . Évalué à 2.

        Ca marchera s'il n'a pas eu la mauvaise idée de faire un fdisk sur le /dev/mdx

        • [^] # Re: En théorie ....

          Posté par  . Évalué à 2.

          oula, là tu m'inquiétes (ca fait un bail que j'ai fait ce raid)
          j'ai du faire directement la création du fs sur /dev/md0.. mais au cas où, je détecte comment la chose ?

          • [^] # Re: En théorie ....

            Posté par  . Évalué à 2. Dernière modification le 11 août 2018 à 15:21.

            sudo fdisk -l /dev/chemin_du_device_md

            tu devrais avoir un device du style md0p1 qui apparaîtra si tu t'es amusé à faire un fdisk ou manip du genre. Poste le résultat si tu as un doute, on te le dira

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.