Comment puis-je redimensionner une partition racine externe à l'exécution?

191

Comment puis-je augmenter la taille de la partition racine d'un système à l'exécution?

J'ai une partition qui n'est pas allouée après la partition racine (qui est également ext4), comment puis-je ajouter cet espace non alloué à l'espace alloué à la partition racine sans avoir à arrêter le serveur?

    
posée BonboBingo 30.01.2011 - 18:23
la source

10 réponses

167

Interface graphique utilisateur (Ubuntu 14.04 et versions ultérieures) : GParted v0.17 et versions ultérieures fournissent une interface graphique intéressante pour cela. (Les anciennes versions refuseront de redimensionner une partition montée).

Ligne de commande (toute version d'Ubuntu): Il y a trois étapes à cela.

Étape 1. La partition doit d'abord être redimensionnée. Si vous utilisez LVM, c'est facile et vous savez probablement comment procéder. Si vous utilisez des partitions classiques, c'est un peu plus compliqué, et peut nécessiter un redémarrage (bien que vous n'ayez jamais à démarrer un autre système ou un live CD).

Voici comment procéder: Utilisez fdisk pour supprimer d’abord la partition (l’idée est de conserver les données sur le disque), puis recréez-la soigneusement avec une taille plus grande au même endroit.

Exemple:

$ sudo fdisk /dev/sda

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     9437183     4717568   83  Linux

Command (m for help): d
Selected partition 1

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4, default 1): 1
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
Using default value 10485759

Command (m for help): p

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048    10485759     5241856   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

Encore une fois, il est essentiel que la nouvelle partition démarre au même bloc que l’ancienne. L'identifiant doit également correspondre (83 pour les systèmes Linux). Préparez-vous à perdre toutes vos données à la moindre erreur.

Pour être du bon côté, vous pouvez également restaurer l'indicateur de démarrage (que selon Wikipedia est toujours requis sur certains ordinateurs) en appuyant sur a .

Consultez la section des commentaires pour savoir comment procéder si votre partition de swap vous gêne.

À l’heure actuelle, il devrait être évident que les gens recommandent d’utiliser un CD en direct. ; -)

Étape 2. Comme fdisk vous le rappelle utilement, vous devez recharger la table de partition avant de continuer. Le moyen le plus sûr est de redémarrer simplement; mais vous pouvez également utiliser partprobe ou kpartx (plus d'informations) .

Étape 3. Une fois la partition redimensionnée et la table de partition rechargée, il suffit d'exécuter resize2fs sur le système de fichiers, et vous pouvez le faire même lorsqu'il est monté en tant que partition racine.

Exemple:

$ sudo resize2fs /dev/sda1
    
réponse donnée Søren Løvborg 06.04.2012 - 16:23
la source
110

Il est possible d'effectuer un redimensionnement en ligne d'un système de fichiers ext4, même s'il s'agit de votre partition racine. Utilisez la commande resize2fs .

sudo resize2fs /dev/sda1

EDIT: la réduction en ligne n'est pas autorisée:

root@brunojcm-htpc:/home# resize2fs /dev/sda5 2654693
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/sda5 is mounted on /; on-line resizing required
resize2fs: On-line shrinking not supported
    
réponse donnée CodeAddict 02.03.2012 - 11:50
la source
18

Une solution plus simple - utilisez growpart <device> <partition> :

growpart /dev/xvda 1  # Grows the partition; note the space
resize2fs /dev/xvda1  # Grows the filesystem

Comme toujours, sauvegardez votre table de partition ( sfdisk -d /dev/xvda > partition_bak.dmp ) au cas où.

    
réponse donnée STRML 18.07.2017 - 15:26
la source
8

Vous pouvez également utiliser GParted - tant que la partition que vous redimensionnez n’est pas celle par laquelle vous avez démarré - sinon je suggère que l’option Live CD soit un peu plus facile pour les débutants.

GParted effectue essentiellement toutes les étapes - uniquement sur la base d’une interface utilisateur graphique.

    
réponse donnée leatherjacket 30.09.2012 - 13:34
la source
8

Oui, vous pouvez réduire / déplacer / développer une partition racine en ligne sans redémarrage (ni livecd, ni usbkey): consultez cette réponse . C'est très bien écrit et facile à suivre, bien que assez long et un peu risqué. Donc, si vous ne voulez que développer votre partition ext4, vous pouvez vous en tenir aux solutions de travail resize2fs classiques.

La solution générale que je souhaite utiliser fonctionnera sur tout type de solution dédiée ou VPS par exemple.

TLDR; Cette solution implique que pivot_root à tmpfs vous permet umount de sécuriser votre partition racine en direct et de la manipuler. Une fois cela fait, vous aurez pivot_root sur votre nouvelle partition racine.

Cela permet à peu près n'importe quelle manipulation sur le système de fichiers racine (déplacez-le, changez le système de fichiers, changez son périphérique physique ...).

Aucun redémarrage n'est requis dans le processus, et permet de contourner la limitation de resize2fs ne pas pouvoir réduire les partitions ext4 .

J'ai personnellement utilisé ceci, et ça marche très bien aussi sur le système debian, donc ça devrait fonctionner sur Ubuntu. Je suis très surpris de ne pas voir cette solution approfondie un peu plus liée aux nombreuses questions sur les sites Web de stackexchange qui traitent du même problème.

Remarque: Bien sûr, si vous souhaitez développer votre partition, un simple resize2fs sera suffisant, comme indiqué dans de nombreux endroits et dans d’autres réponses.

    
réponse donnée vaab 01.02.2016 - 03:08
la source
5

Vous venez de terminer de redimensionner une partition racine ext4 sur un système actif pendant que la racine était montée.

[root@habib i686]# resize2fs /dev/vg_habib/lv_root
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/vg_habib/lv_root is mounted on /; on-line resizing required
old_desc_blocks = 4, new_desc_blocks = 10
Performing an on-line resize of /dev/vg_habib/lv_root to 38427648 (4k) blocks.
The filesystem on /dev/vg_habib/lv_root is now 38427648 blocks long.

[root@habib i686]# 
    
réponse donnée CDR 04.12.2012 - 23:40
la source
0

Je viens de le faire avec succès sans umount , pivot_root ou suppression temporaire de la partition principale, en utilisant le noyau 3.2 partagé sur le noyau Ubuntu 16.04, 4.4.0. Pour être prudent, j'ai tout fait à partir d'une console virtuelle avec le réseau désactivé, et j'ai pris un instantané au cas où, mais le snapshot n'était pas nécessaire, donc j'aurais pu le faire via SSH et sans modifier les niveaux d'exécution. >

Déterminer la taille de la partition: parted /dev/sda1 print | egrep "Disk.*GB"

Vous pouvez éventuellement basculer en mode multi-utilisateur sans réseau (doit être effectué depuis une console, pas SSH):

runlevel     # remember the original runlevel
init 2

Prenez éventuellement un instantané de machine virtuelle pour être prudent.

Redimensionner la partition:

parted
p
resizepart NUMBER SIZE
# answer "Yes" when asked about resizing a live partition.
q

Redimensionner le système de fichiers: resize2fs /dev/sda1

Si quelque chose ne va pas, vous pouvez restaurer votre instantané ici. Si tout s'est bien passé, revenez au niveau normal (obtenu ci-dessus) - normalement 5: init 5 . Il peut être préférable de faire un redémarrage complet à ce stade pour s’assurer que tout revient correctement (j’ai eu un problème de date / ntp par la suite).

    
réponse donnée Roger Dueck 14.07.2017 - 02:09
la source
0

Comme indiqué précédemment:

  • l'extension en direct d'un système racine est possible. (pas de difficultés, car la section de démarrage ne doit pas être déplacée)

  • réduire une partition racine en direct doit être effectuée à partir d’un périphérique d’amorçage externe (démarrage à partir du système live cd / usb-stick), comme s’il y avait un défaut, une incompatibilité .. redémarré et ne pourra éventuellement pas démarrer correctement.

Toute sorte de "mais je l'ai fait et ça marche", c'est de la chance.

    
réponse donnée ascervera 10.01.2014 - 22:58
la source
0

Suivez ces étapes.

  1. ouvrir le terminal en tant que superutilisateur su
  2. exécuter parted
  3. tapez p pour voir les partitions disponibles
  4. identifiez votre numéro de partition racine (ex: 'sda 3' signifie le numéro 3) et supprimez une partition adjacente en utilisant rm PARTITION NUMBER pour créer de l'espace libre.
  5. maintenant, augmentez la taille de la racine en tapant resizepart ROOT NUMBER et redémarrez le système si nécessaire
  6. quittez parted en tapant exit et dans le type de terminal partprobe et appuyez sur Entrée (cela peut être fait même après le redémarrage)
  7. exécutez enfin resize2fs /dev/sda PARTITION NUMBER et profitez d'une partition racine spacieuse.
réponse donnée Gurunadha Reddy 13.09.2017 - 22:22
la source
-6

Comme indiqué précédemment fonctionne correctement, il suffit de réinitialiser l'indicateur de démarrage

exécuter 'parted'

parted /dev/sda

vérifier le numéro de partition

(parted) print

réinitialiser l'indicateur de démarrage sur le numéro de partition '1' dans ce cas

(parted) set 1 boot on
(parted) quit
    
réponse donnée benko 16.05.2013 - 15:39
la source

Lire d'autres questions sur les étiquettes