139 votes

Comment étendre une partition et un système de fichiers ext4 ?

J'ai un disque de 400 Go avec une partition ext4 de 320 Go. Je voudrais agrandir la partition ext4 pour utiliser l'espace restant (80 Go d'espace libre).

+--------------------------------+--------+
|             ext4               |  Free  |
+--------------------------------+--------+

Comment ai-je pu faire ça ?

J'ai vu des gens utiliser resize2fs mais je ne comprends pas si ça redimensionne la partition.

Une autre solution serait d'utiliser fdisk mais je ne veux pas effacer ma partition et perdre des données. Comment pourrais-je simplement agrandir la partition sans perdre aucun fichier ?

Note : Je parle d'une partition de données non montée sans LVM et j'ai des sauvegardes, mais je voudrais éviter de passer du temps sur la récupération.

3voto

200_success Points 4681

parted peut resize les partitions et leurs systèmes de fichiers.

3voto

JTW Points 39

Parted ne fonctionne pas sur ext4 sous Centos. J'ai dû utiliser fdisk pour supprimer et recréer la partition, ce qui (j'ai validé) fonctionne sans perdre de données. J'ai suivi les étapes à http://geekpeek.net/resize-filesystem-fdisk-resize2fs/ . Les voici, en quelques mots :

$ sudo fdisk /dev/sdx 
> c
> u
> p
> d
> p
> w
$ sudo fdisk /dev/sdx 
> c
> u
> p
> n
> p
> 1
> (default)
> (default)
> p
> w

2voto

cyphun Points 53

Vous pouvez utiliser fdisk o cfdisk pour modifier (ou recréer) la partition (assurez-vous simplement de ne pas modifier sa limite de départ), puis redémarrez et resize2fs . Mais en général, il est préférable d'utiliser LVM-2 plutôt que MBR/GPT car cela vous permet d'apporter ces changements sans redémarrer le noyau.

2voto

Juste pour clarifier la façon dont je fais cela pour ceux qui lisent encore ce fil.
Si c'est la partition de démarrage que vous voulez redimensionner, alors vous devez démarrer à partir d'un disque de "secours" bootcd ou bootusb qui est juste un Live Linux. Cela vous permet d'exécuter Linux sur la machine autre que le disque sur lequel vous voulez faire des changements.

Je pense que le meilleur CD ou USB de "secours" dans ce cas serait un CD ou USB gparted amorçable.
Cas dans lesquels vous avez besoin d'une image de secours
1. La partition à développer est la dernière partition, mais vous avez démarré à partir de celle-ci et ne pouvez pas la démonter.
sda1 = boot (ou swap)
sda2 = swap (ou boot)
sda3 = /
Espace non utilisé

  1. Si la partition à développer n'est PAS la dernière partition, vous devez utiliser l'image de démarrage gparted pour déplacer ou redimensionner les partitions.
    sda1 = boot
    sda2 = / (la partition à étendre n'est pas la dernière)
    sda3 = swap
    espace non utilisé

Si vous souhaitez modifier une partition montée qui n'est pas la partition "racine" (/), comme /home qui est une partition différente, il n'est pas nécessaire d'utiliser une image de secours. Ceci est particulièrement vrai s'il s'agit de la dernière partition.
sda1 = boot
sda2 = /
sda3 = /home
espace non utilisé
-ou-
sda1 = /
sda2 = /home
espace non utilisé

C'est la situation que je rencontre lorsque je prends une image d'un disque ou d'un SSD plus petit et que je la déplace vers un SSD plus grand.

Dans ce cas, il suffit de démonter /home pendant que vous l'étendez. Mais pour démonter /home, vous devez vous assurer que vous n'êtes pas connecté à un compte utilisateur dont le répertoire personnel se trouve à l'intérieur. Comme le répertoire personnel de l'utilisateur "root" se trouve directement sous la racine du système / comme dans /root, si vous pouvez vous connecter à root, vous pouvez démonter /home.

Je me déconnecte d'une session GUI (KDE / Gnome / etc) et utilise [CTRL] + [ALT] + [F1] pour faire apparaître une session Shell.
Si vous venez de vous déconnecter d'un utilisateur, Linux peut mettre 20 à 30 secondes pour finir de fermer tous les fichiers, et vous pouvez donc obtenir des erreurs en essayant de monter /home.
1. umount /home (je réessaie cette commande si elle échoue pendant 30 secondes, puis je vais regarder les autres sessions pour voir si je suis "cd /home/xxx" quelque part).
2. partitionné /dev/sda
a. redimensionner x (x = partition que vous voulez redimensionner, utilisez "p" pour obtenir une liste de partitions)
b. Entrez le dernier secteur du redimensionnement = "-1" (moins 1 signifie 1 secteur à partir de la fin du disque).
c. q (démissionne)
3 resize2fs /dev/sda "x" (x = partition à redimensionner. Ceci remonte également le système de fichiers)
4. df -m (je vérifie /home pour m'assurer qu'il a été redimensionné)
Je n'ai jamais perdu de fichiers ou corrompu le disque en utilisant cette méthode.

Bonne chance

1voto

On m'a demandé de faire croître un disque monté en tant que /scratch sur un serveur Dell exécutant CentOS 7 sans interrompre les utilisateurs actuels. Il s'agissait d'une partition XFS sur un disque RAID 0 avec un disklabel GPT normal. Cela fonctionnerait pour une partition ext4 presque exactement de la même manière - voir plus loin.

Voici comment j'ai procédé sans démonter, redémarrer ou interrompre les opérations sur le système. J'ai juste utilisé les commandes Linux (et les outils RAID de Dell) :

  1. La croissance du volume RAID physique a été réalisée en ajoutant deux nouveaux disques au serveur et en utilisant l'outil OpenManage Server Administrator pour les ajouter au volume RAID existant. Cette opération a pris plusieurs jours, mais n'a nécessité aucun effort humain supplémentaire. Le serveur a continué à fonctionner avec des vitesses de disque inférieures pendant la reconstruction du disque RAID.
  2. La taille du disque en blocs était passée de 15623782400 à 23435673600 (blocs de 512 octets), mais la valeur de /sys/block/sdb/size était toujours à la valeur inférieure. Ceci a été corrigé en utilisant la commande : echo 1 > /sys/block/sdb/device/rescan
    pour que le pilote de disque mette à jour ses connaissances sur la taille et la forme du disque. Cette fonction semble avoir été mal annoncée : J'ai deviné ce qu'elle faisait d'après son nom !
  3. J'ai couru parted pour modifier le disklabel et déplacer sa copie à la fin du disque vers la nouvelle fin du disque. Heureusement, il a deviné exactement ce que je voulais faire sans encouragement et m'a guidé. D'abord, la copie du disklabel : Error: The backup GPT table is not at the end of the disk, as it should be. This might mean that another operating system believes the disk is smaller. Fix, by moving the backup to the end (and removing the old backup)? Fix/Ignore/Cancel? F
    Et ensuite la taille du disque telle que reflétée dans le disklabel : Warning: Not all of the space available to /dev/sdb appears to be used, you can fix the GPT to use all of the space (an extra 7811891200 blocks) or continue with the current setting? Fix/Ignore? F
    J'ai donc dû entrer deux fois "F" et ensuite "q" pour sortir avec le disklabel (et sa copie) corrigé. Cela a permis de corriger la plupart des problèmes sans avoir à réfléchir ou à travailler dur.
  4. J'ai dû modifier la taille de la partition pour remplir le disque, mais parted ne me permettait pas de le faire tant que le disque était encore monté - j'ai donc utilisé fdisk à la place : fdisk /dev/sdb d 1 n 1 (defaults were correct for full size of disk) t 1 11 (That's Microsoft basic data - which is the same as xfs). w
    Remarquez que j'avais établi qu'il utilisait le bon numéro de bloc de départ, 2048. Sinon, cela n'aurait pas fonctionné. J'ai eu la chance d'utiliser deux outils qui avaient la même convention pour le bloc de départ, mais j'ai d'abord vérifié le bloc de départ initial.
  5. J'ai aussi utilisé parted à ce stade pour donner à la partition le même nom qu'elle avait auparavant puisque fdisk ne prend pas en charge l'attribution de noms aux partitions. Un détail mineur.
  6. J'ai utilisé partprobe /dev/sdb (und partprobe /dev/sdb1 pour faire bonne mesure) pour que le système d'exploitation lise à nouveau la table de partition. Je pense que seule la première commande a réellement fait une différence.
  7. Enfin, j'ai utilisé xfs_growfs -d /scratch qui n'a mis que 1,6 seconde pour faire croître la partition jusqu'à sa taille finale, remplissant le disque nouvellement agrandi.

Cela fonctionnerait également avec des volumes ext4 : la seule différence serait d'utiliser resize2fs /dev/sdb1 au lieu de xfs_growfs -d /scratch - et en utilisant le numéro de type de partition correct pour ext4 au lieu de xfs. La commande fdisk peut lister les numéros de type pour les systèmes de disques courants, y compris ext4.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X