TUTOS.EU

Etendre la taille d'un disque GPT sous Linux

Vous avez un disque dont la table de partitions est gérée par GPT.
Vous avez augmenté la taille de votre disque dur et vous voulez prendre en compte cette nouvelle taille.

Commencez par faire un scan scsi des disques

scsi-rescan --forcerescan
Lien vers le fichier : cliquez ici Copier le code

Sous Ubuntu, scsi-rescan ne passera surement pas. Sur kerneltalks.com il indique cette commande qu'il faut adapter. Ici elle est faite pour mettre à jour la taille du disque sda :

echo 1>/sys/class/block/sda/device/rescan

J'avais aussi vu ceci mais cela ne passe quasi jamais :

for host in /sys/class/scsi_host/*; do echo "- - -" | sudo tee $host/scan; ls /dev/sd* ; done
Lien vers le fichier : cliquez ici Copier le code

Affichez vos disques avec cette commande. Vous devez visualiser la nouvelle taille de votre disque

lsblk -a
Lien vers le fichier : cliquez ici Copier le code

Exemple

[root@NomMachine~]# lsblk -a
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                         8:0    0   66G  0 disk
├─sda1                      8:1    0    1G  0 part /boot
└─sda2                      8:2    0   63G  0 part
  ├─centos-root           253:0    0    6G  0 lvm  /
  ├─centos-swap           253:1    0    2G  0 lvm  [SWAP]
  ├─centos-usr            253:2    0   16G  0 lvm  /usr
  ├─centos-home           253:4    0    1G  0 lvm  /home
  ├─centos-var            253:5    0    4G  0 lvm  /var
  ├─centos-var_log        253:6    0    5G  0 lvm  /var/log
  ├─centos-opt            253:7    0    1G  0 lvm  /opt
  └─centos-tmp            253:8    0    2G  0 lvm  /tmp
sdb                         8:16   0   10T  0 disk
└─sdb1                      8:17   0    7T  0 part
  └─logstash-lv--logstash 253:3    0    7T  0 lvm  /logstash
sr0                        11:0    1 1024M  0 rom

Pour notre cas on va vouloir étendre /logstash qui est sur la partition sdb1 du disque sdb

Comme le disque est en gpt, on va utiliser

parted
Lien vers le fichier : cliquez ici Copier le code

[root@NomMachine~]# parted
GNU Parted 3.1
Utilisation de /dev/sda
Bievenue sur GNU Parted ! Tapez 'help' pour voir la liste des commandes.

Avec lsblk -a on a vu que notre partition sdb1 est sur le disque sdb
Donc on va sélectionner le disque sdb sous parted puis afficher l'espace disponible

select /dev/sdb
print free
Lien vers le fichier : cliquez ici Copier le code

Il m'arrive d'avoir ce message d'erreur qui s'affiche :

Erreur: La sauvegarde de la table GPT n'est pas à la fin du disque ainsi qu'elle le devrait. Cela peut vouloir dire qu'un autre sytème d'exploitation croit que le
disque est plus petit. Faut-il corriger en déplaçant la copie à la fin du disque (et enlever la vieille sauvegarde) ?

 

En anglais j'ai eu un message du type

Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an extra 1971322880 blocks) or continue with the
current setting?

 

Je réponds alors en tapant Fix

Suite à quoi j'ai un message du type

Avertissement: Il semble que l'espace disponible sur /dev/sdb ne soit pas totalement utilisé, voulez-vous ajuster la table GPT pour utiliser tout l'espace (xxxxx
blocs en plus) ou continuer ainsi ?

 

Je réponds également par Fix

 

 

Avec la commande print free on voit qu'actuellement la partition numéro 1 se termine à 7697GB   mais qu'elle pourrait aller jusque 11,0Tb

(parted) select /dev/sdb
Utilisation de /dev/sdb
(parted) print free
Modèle: VMware Virtual disk (scsi)
Disque /dev/sdb : 11,0TB
Taille des secteurs (logiques/physiques): 512B/512B
Table de partitions : gpt
Disk Flags:

Numéro  Début   Fin     Taille  Système de fichiers  Nom       Fanions
        17,4kB  2048MB  2048MB  Espace libre
 1      2048MB  7697GB  7695GB                       logstash
        7697GB  11,0TB  3299GB  Espace libre

On va donc vouloir retailler la partition. Pour cela on va utiliser la commande resizepart

resizepart numéro_partition
Lien vers le fichier : cliquez ici Copier le code

Et on va dire qu'on veut maintenant que la partition aille jusqu'à 11,0Tb
Ensuite on utilisera la commande print pour contrôler la nouvelle taille

(parted) resizepart 1
Fin ?  [7697GB]? 11,0Tb
(parted) print
Modèle: VMware Virtual disk (scsi)
Disque /dev/sdb : 11,0TB
Taille des secteurs (logiques/physiques): 512B/512B
Table de partitions : gpt
Disk Flags:

Numéro  Début   Fin     Taille  Système de fichiers  Nom       Fanions
 1      2048MB  11,0TB  11,0TB                       logstash

(parted)

Utilisez la commande q pour quitter parted

(parted) q

Si vous utilisez lvm, il faut maintenant faire un pvresize de la partition

[root@NomMachine ~]# pvresize /dev/sdb1
  Physical volume "/dev/sdb1" changed
  1 physical volume(s) resized or updated / 0 physical volume(s) not resized

Au final on fait un lvextend avec l'option resizefs et 100%FREE pour attribuer tout l'espace libre

lvextend --resizefs -l +100%FREE /dev/logstash/lv-logstash
Lien vers le fichier : cliquez ici Copier le code

Pour information on aurait pu décider de n'ajouter que 2Go avec

lvextend --resizefs -L+2G /dev/logstash/lv-logstash
Lien vers le fichier : cliquez ici Copier le code

Pages Web

Site WebDescription
access.redhat.comResizing a partition with parted

2