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


46

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

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

Comment pourrais-je faire ça?

J'ai vu des gens utiliser resize2fsmais je ne comprends pas s'il redimensionne la partition.

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

Remarque: je parle d'une partition de données non montée sans LVM et j'ai des sauvegardes, mais j'aimerais éviter de perdre du temps sur la restauration.


Ce type de question a été posé et répondu à plusieurs reprises, à ma connaissance. Avez-vous consulté les archives ici?
MDPC

Réponses:


46

Vous devez commencer par la partition non montée. Si vous ne pouvez pas le démonter (par exemple, c'est la partition racine ou quelque chose d'autre que le système doit exécuter), utilisez quelque chose comme System Rescue CD .

  1. Exécutez partedou, gpartedsi vous préférez, une interface graphique, et redimensionnez la partition pour utiliser l'espace supplémentaire. Je préfère gpartedcar cela vous donne une belle représentation graphique, très similaire à celle que vous avez dessinée dans votre question.

  2. resize2fs /dev/whatever

  3. e2fsck /dev/whatever (juste pour savoir si vous êtes du bon côté)

  4. Remontez votre partition.

Bien que je n’aie jamais vu cela échouer, sauvegardez d’abord vos données!


5
La resize2fspage de manuel dit: Si le système de fichiers est monté, il peut être utilisé pour augmenter la taille du système de fichiers monté, à condition que le noyau prenne en charge le redimensionnement en ligne. (Au moment d'écrire ces lignes, le noyau Linux 2.6 prend en charge le redimensionnement en ligne pour les systèmes de fichiers montés avec ext3 et ext4.). Cependant, redimensionner un système de fichiers monté est une opération plus dangereuse, car le noyau pourrait facilement geler ou se bloquer en exécutant un code rarement utilisé, laissant ainsi votre système de fichiers en mauvais état.
200_success

1
Vrai - mais vous ne voulez pas jouer avec votre table de partition avec le système de fichiers monté. C'est pourquoi j'ai commencé avec le fs non monté.
Flup

1
Pour ext4, placez-vous resize4fsplutôt sur RHEL 5.
Zac Thompson

1
La croissance de la partition avec votre système de fichiers racine devrait fonctionner correctement si: 1.Vous ne modifiez pas le numéro du secteur de départ. 2.Vous redémarrez après avoir changé la table de partition avant de passer à l'étape suivante.
Kasperd

Parted refuse de redimensionner une partition ext4 sur CentOS 6.
reinierpost

21

Oui, vous pouvez installer EXT4 fs en ligne si votre partition est déjà triée. Avez-vous trié la partition? Avez-vous LVM?

sudo resize2fs /dev/drive_to_grow

fdiskredimensionnera votre partition, c'est vrai, mais si c'est une partition racine (ou s'il s'agit d'une partition montée), il faudra d'abord la démonter. Donc probablement déconnecté!

Comme pour tout ce qui concerne les opérations de disque / disque dur, il est fortement recommandé d’avoir un processus de récupération de sauvegarde, testé et bien compris.


Si vous utilisez, fdiskassurez-vous de bien utiliser MBR et non GPT (avec un MBR hybride par exemple).
Stek29

2
Sur mon serveur Debian XEN, j'ai redimensionné mon volume logique avec lvextend +40G /dev/vg0/volumeName, puis ouvert une session en tant que racine dans la machine virtuelle et entré resize2fs /dev/xvda2ce qui fait passer le système de fichiers racine en cours d'exécution au nouveau maximum. Je ne sais pas si cela était nécessaire, mais j'ai redémarré la machine virtuelle après cette action. Tout semble aller bien.
rubo77

1
@ rubo77 Non, pas besoin de redémarrer,
Chris

5

Remarque: sur certains serveurs VDS, vous pouvez avoir une partition racine non principale et devoir d'abord redimensionner le conteneur de partitions étendues.

Par exemple, vous venez de mettre à niveau votre plan et disposez de quelque chose comme:

Disk /dev/vda: 83886080s
Number  Start    End        Size       Type      File system  Flags
1      2048s    194559s    192512s    primary   ext2         boot
2      196606s  51197951s  51001346s  extended
5      196608s  51197951s  51001344s  logical   ext4

Ici / dev / vda2 - est votre conteneur étendu. Et / dev / vda5 - la partition principale que nous devons redimensionner au maximum.

Le plus simple:

apt-get -y install parted
parted /dev/vda unit s print all # print current data for a case
parted /dev/vda resizepart 2 yes -- -1s # resize /dev/vda2 first
parted /dev/vda resizepart 5 yes -- -1s # resize /dev/vda5
partprobe /dev/vda # re-read partition table
resize2fs /dev/vda5 # get your space

Ce qui m'a vraiment aidé, c'est de voir que vous pouvez définir ENDun nombre négatif. Habituellement, vous ne connaissez pas la taille exacte de Linux d'une partition redimensionnée - vous ne savez pas comment définir l' ENDargument de resizepart. Le régler sur -1sredimensionnera votre partition au maximum.
Srigi

Erreur: jeton non valide
-1s

3

partedpeut resizepartitions et leurs systèmes de fichiers.


Merci, j'utilisais le graphique et il ne supporte pas le redimensionnement de partition. J'ai vu l'option sur le programme cli, mais pourriez-vous me dire comment l'utiliser sans perdre des données? Dans resize NUMBER START END, START et END sont-ils les numéros de secteur? Comment pourrais-je savoir cela?
mimipc

Il est toujours recommandé de sauvegarder vos données avant toute opération risquée telle que le redimensionnement d'une partition. partedprend en charge un choix d'unités - par exemple, utilisez le ssuffixe pour les secteurs, Bou GBpour les octets, %pour le pourcentage de la taille du périphérique et cylpour les cylindres.
200_success

3

Parted ne fonctionne pas sur ext4 sur Centos. J'ai dû utiliser fdisk pour supprimer et recréer la partition, ce qui (je l'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

1
Bienvenue sur Server Fault! Veuillez résumer les étapes de la réponse pour vous prémunir contre la pourriture du lien.
200_success

Utilisé ce processus mais utilisé gdisk pour créer la partition. Cela m'a permis de sauvegarder les données et de créer une partition> 2 To
pcnate

2

Vous pouvez utiliser fdiskou cfdiskpour 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 modifications sans redémarrage du noyau.


1

Juste pour clarifier comment je fais cela pour tous ceux qui lisent encore ce fil.
S'il s'agit de la partition de démarrage que vous souhaitez redimensionner, vous devez démarrer à partir d'un lecteur "de secours" bootcd ou bootusb qui est simplement un disque Live Linux. Cela vous permet d'exécuter Linux sur la machine autre que le lecteur sur lequel vous souhaitez apporter des modifications.

Je pense que le meilleur "sauvetage" cd ou usb dans ce cas serait un boîtier USB ou CD gparted démarrable
dans lequel vous avez besoin d'une image de secours
1. La partition à développer est la dernière partition, mais vous ne pouvez pas la démonter.
sda1 = boot (ou swap)
sda2 = swap (ou boot)
sda3 = /
espace inutilisé

  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 à développer n'est pas la dernière)
    sda3 = permuter l'
    espace inutilisé

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. Cela est particulièrement vrai si c'est la dernière partition.
sda1 = boot
sda2 = /
sda3 = /
espace inutilisé home
-or- ou
sda1 = /
sda2 = /
espace inutilisé home

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

Dans ce cas, il vous suffit de démonter / home pendant que vous le prolongez. Mais pour démonter / home, vous devez vous assurer de ne pas être connecté à un compte d'utilisateur dont le répertoire de départ se trouve. Etant donné que le répertoire personnel de l'utilisateur "root" se trouve directement sous la racine système / sous / 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 ouvrir une session shell.
Si vous venez de vous déconnecter d’un utilisateur, il faut 20 à 30 secondes à Linux pour terminer la fermeture des fichiers. Par conséquent, des erreurs peuvent survenir lors de la tentative de démontage / home.
1. umount / home (je réessaie cette commande si elle échoue pendant 30 secondes au maximum, puis examinez les autres sessions pour voir si je suis "cd / home / xxx" quelque part.)
2. partagé / dev / sda
a. redimensionner x (x = partition que vous voulez redimensionner, utilisez "p" pour obtenir une liste de partitions)
b. Entrez le dernier secteur de resize = "-1" (moins 1 signifie qu'un secteur à partir de la fin du disque)
c. q (quitte parted)
3 resize2fs / dev / sda "x" (x = partition à redimensionner. Ceci remonte également le système de fichiers)
4. df -m (je vérifie / home pour vérifier qu'il est redimensionné)
Je n'ai jamais perdu de fichiers ni corrompu le lecteur à l'aide de cette méthode.

Bonne chance


Et pourtant, vous ne faites aucune sauvegarde.
Deer Hunter
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.