Agrandir la taille d’une partition sur Linux

Si vous connaissez déjà les tenants et les aboutissants, rendez-vous en fin d’article pour un condensé avec les commandes sans prise de tête…

Linux est bien pratique, et beaucoup plus simple à gérer que Windows.

Si vous utilisez un serveur de virtualisation, ou un SAN, vous pourriez avoir envie d’agrandir un LUN ou un disque virtuel, pour ensuite agrandir le un système de fichier sur ledit disque ou LUN. Alors voici comment procéder.

Pour saisir comment c’est possible, il faut bien comprendre ce que nous allons faire. Il y a trois couches pour arriver à notre système de fichier:

  1. Le disque dur, support physique de nos données
  2. La partition, qui comme son nom l’indique est une surface « découpée » sur le disque afin d’y mettre un système de fichier (ou autre choses)
  3. Le système de fichier. Celui-ci se compose d’une table d’allocation et/ou d’un journal, et gère le placement de vos données sur le disque.

Lorsqu’on agrandit le disque, on n’agrandit ni la partition, ni le système de fichier. Lorsqu’on agrandit la partition, on n’agrandit pas le système de fichier. Il s’agit donc bien de trois opérations tout à fait différentes.

Bien entendu, il va sans dire qu’il faut que l’espace ajouté soit adjacent à la partition que l’on souhaite agrandir. Par exemple, si vous avez trois partitions, sdb1, sdb2, et sdb3, cette dernière étant à la fin du disque, il ne sera pas possible d’agrandir sdb1 ou sdb2… Dans ce cas, il vaut mieux opter pour la création d’un nouveau LUN ou d’un nouveau disque virtuel plus grand, et de faire une migration du contenu. C’est également très simple à réaliser. Mais on y reviendra peut-être dans un autre article.

Dans notre exemple, nous allons opter pour un disque virtuel ou un LUN identifié dans notre système linux comme /dev/sdb avec trois partitions: /dev/sdb1, /dev/sdb2 et /dev/sdb3. Nous souhaitons agrandir /dev/sdb3.

Avant toute chose, je vous suggère fortement de faire une sauvegarde de vos données. Elles ne risquent rien si on ne fait pas d’erreur de manipulation, mais si vous êtes dans le monde de l’informatique, vous devez bien savoir que le risque zéro n’existe pas. Alors inutile de tenter le diable.

Pour notre opération, les outils suivant vont nous être nécessaires:

fdisk     # Il va nous permettre de supprimer et de refaire une partition à la dimension souhaitée
fsck      # Indispensable pour remettre les idées en place dans notre partition
tune2fs   # Il va nous permettre de supprimer le journal du disque et de le recréer ensuite
resize2fs # L'outil qui va redimensionner le système de fichier

Dans notre exemple, la partition /dev/sdb3 que nous allons agrandir n’est PAS utilisée pour une des partitions du système (root, /var, /boot, etc…). Si elle l’était, nous ne pourrions pas la démonter, et donc nous ne pourrions pas procéder à l’agrandissement du système de fichier. Si vous souhaitez faire cette opération sur une partition système montée, vous devez utiliser un rescueCD ou un LiveCD afin de pouvoir manipuler la partition en question.

La première étape consiste donc à agrandir le LUN ou le disque virtuel.

Sur un Clariion, dans Navisphere, un simple clic-droit sur le volume et « Expand » vous donnera la marche à suivre (il faut avoir créer un volume additionnel au préalable afin de créer un metalun). Sur un Dell|Compellent, pareil, mais sans avoir besoin de créer un volume auparavant. Compellent est beaucoup plus flexible. POur un Equallogic, il suffit de modifier la taille du volume. Pour les autres, lisez votre mode d’emploi… La réponse y est. Tous les SAN actuels permettent l’agrandissement d’un LUN.

Sur VMWare Workstation, il est nécessaire d’éteindre la machine virtuelle pour pouvoir agrandir le disque. Une fois la VM arrêtée, allez dans les paramètres de celle-ci, sur le disque à agrandir, puis dans le menu le bouton Outils (ou Utilitaires ?), il y a une option Etendre (Expand). Tapez simplement la nouvelle taille souhaitée. POur ESXi, c’est plus facile. Sans éteindre la machine virtuelle, il est possible de changer la taille du disque dans les paramètres de celui-ci.

Une fois cette opération faite, si la machine était éteinte, allumez-la, et la nouvelle taille de disque sera reconnue. Si vous avez fait cette opération sur une machine allumée, il faut rescanner le bus. Le plus simple pour ce faire est d’utiliser l’excellent script de rescan-scsi-bus.sh de Kurt Garloff et Hannes Reinecke

Le script doit être lancé avec le paramètre -r (remove) sinon la nouvelle taille ne sera pas reconnue.

./rescan-scsi-bus.sh -r

Pour vérifier que la taille a bien changé, faites un fdisk -l avant et après la commande. Vous pourrez ainsi comparer la capacité.

Une fois cette opération effectuée, nous pouvez procéder à l’étape suivante, à savoir l’agrandissement de la partition. Rappelons-nous que nous avons trois partitions existantes: sdb1, sdb2, et sdb3. Et c’est sdb3, qui est à la fin du disque, que l’on souhaite agrandir. Pour ce faire, il va falloir la supprimer et la recréer.

Contrairement à ce que l’on pourrait penser, supprimer une partition avec fdisk n’efface pas les données sur le disque. Ce n’est qu’une altération de la table des partitions. Dès lors, supprimer la dernière partition pour la recréer plus grande ne pose aucun problème. Comme elle commencera sur le même bloc que quand on l’a effacée, elle retrouvera ses petits.

ATTENTION: Si vous aviez effacé sdb2 par exemple, et que maintenant vous faites votre opération, la nouvelle partition sdb3 commencera où commençait avant la partition sdb2, et vous ne retrouverez pas votre système de fichier. Il est impératif dans ce cas de figure de noter le début de la partition (en faisait un « p » pour voir la liste des partition) avant de l’effacer.

Pour supprimer et recréer la partition, celle-ci doit impérativement être démontée.

umount /dev/sdb3
fdisk /dev/sdb
d       # pour effacer la partition (delete)
3       # pour indiquer la partition sdb3
n       # pour recréer la partition
p       # pour recréer une partition primaire
3       # parce que c'est la partition 3 que l'on veut créer
[Enter] # pour accepter le bloc proposé, à savoir le premier bloc disponible, le même que celui de la partition effacée. 
[Enter] # pour accepter le bloc de fin, qui par défaut, est le dernier bloc disponible
w       # pour enregistrer les changements dans la table de partitions

La deuxième étape est terminée. Nous avons donc maintenant une disque plus grand, et une partition agrandie. Il reste à agrandir le système de fichier.

tune2fs -O ^has_journal /dev/sdb3 # va supprimer le journal du système de fichier
fsck -f -y /dev/sdb3              # afin d'assurer l'intégrité du système de fichier
resize2fs /dev/sdb3               # qui sans option va par défaut agrandir le système 
                                    # de fichier à la taille de la partition
fsck -f -y /dev/sdb3              # On revérifie l'intégrité des données
tune2fs -O has_journal /dev/sdb3  # Et enfin on recrée le journal d'indexation

Et voilà. Opération terminée. Vous avez un nouveau système de fichier égal à l’espace ajouté sur votre LUN ou disque virtuel.

En condensé, ça donne ceci:

  1. Agrandissez le disque
  2. Rescannez le bus (voir le script)
  3. Démontez la partition
  4. Effacez la partition
  5. Recréé la partition en vous assurant de la refaire sur le même bloc ou secteur de départ
  6. Supprimez le journal
  7. Agrandissez le système de fichier
  8. Recréez le journal
  9. Plus qu’à remonter la partition
./rescan-scsi-bus.sh -r
umount /dev/sdb3
fdisk /dev/sdb
d       # pour effacer la partition /delete)
3       # pour indiquer la partition sdb3
n       # pour recréer la partition
p       # pour recréer une partition primaire
3       # parce que c'est la partition 3 que l'on veut créer
[Enter] # pour accepter le bloc proposé, à savoir le premier bloc disponible, 
          # le même que celui de la partition effacée. 
[Enter] # pour accepter le bloc de fin, qui par défaut, est le dernier bloc disponible
w       # pour enregistrer les changements dans la table de partitions
tune2fs -O ^has_journal /dev/sdb3
fsck -f -y /dev/sdb3
resize2fs /dev/sdb3
fsck -f -y /dev/sdb3
tune2fs -O has_journal /dev/sdb3
mount /dev/sdb3 /point_de_montage

4 réflexions sur “Agrandir la taille d’une partition sur Linux

  1. Bonjour.
    Mon problème est que mon système d’exploitation (linux mint) à refusé de
    télécharger et d’installer de nouvelles mises à jour, disant le volume boot n’avait
    plus d’espace libre.
    Merci de me dire quoi faire dans ce cas.
    Cordialement.
    Robert.

  2. Bonjour. Si boot n’a plus de place c’est plus délicat. Il faudrait comprendre pourquoi. Tu as peut-être stocker dans boot des choses qui n’ont rien à y faire. Je te conseille d’aller sur les forums Mint ou Ubuntu pour partager ton problème. Tu y trouveras toute l’aide dont tu as besoin

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *