Augmenter la taille de la partition sur laquelle Ubuntu est installé?

60

J'ai Ubuntu installé sur un lecteur. Le problème est qu'il manque d'espace disque. Ceci est installé sur vmware. J'ai développé le lecteur virtuel et démarré dans Ubuntu. Mais lorsque j'ai ouvert gparted (sudo gparted), l'option déplacer / redimensionner n'est pas disponible. C'est la partition sur laquelle Ubuntu est installée, mais je dois la redimensionner. Des idées? Je suis à l'aise avec la ligne de commande

utilisateur51447
la source
Vous pouvez voir comment ils le font raspi-configpour Raspberry Pi, où l’extension du système de fichiers racine est quelque chose que vous faites presque chaque fois que vous configurez un nouveau Raspberry Pi. github.com/RPi-Distro/raspi-config/blob/…
sshow

Réponses:

16

Tu es presque là.
Vous ne pouvez pas redimensionner la partition en utilisant GParted lorsque Ubuntu est en cours d'exécution.
Vous devrez connecter l'ISO GParted sous forme de CD à la machine virtuelle et redémarrer la machine pour que le GParted soit chargé à la place d'Ubuntu (je pense que vous pouvez démarrer à partir du CD virtuel en appuyant sur F12 immédiatement après le démarrage de la machine).
Une fois que vous avez démarré dans GParted, l'option de déplacement / redimensionnement sera activée car Ubuntu n'est pas en cours d'exécution.

yossile
la source
139

En fait, vous POUVEZ agrandir le système de fichiers racine alors que Ubuntu est en cours d' exécution (j'ai appris moi - même récemment ici ) - cela semble incroyable , mais il est vrai :)

Voici la liste des étapes pour un scénario simple dans lequel vous avez deux partitions, /dev/sda1est une partition ext4 à partir de laquelle le système d'exploitation est démarré et /dev/sdb2est swap. Pour cet exercice, nous voulons supprimer la partition de swap et l'étendre /dev/sda1à tout le disque.

  1. Comme toujours, assurez-vous d'avoir une sauvegarde de vos données - car nous allons modifier la table de partition, vous risquez de perdre toutes vos données si vous faites une faute de frappe, par exemple.

  2. Courir sudo fdisk /dev/sda

    • utiliser ppour lister les partitions. Notez le cylindre de départ de/dev/sda1
    • utilisez dpour supprimer d’ abord la partition swap ( 2), puis la /dev/sda1partition. Ceci est très effrayant mais est en réalité inoffensif car les données ne sont pas écrites sur le disque tant que vous n’écrivez pas les modifications.
    • utiliser npour créer une nouvelle partition principale. Assurez-vous que son cylindre de démarrage est exactement le même que l'ancien /dev/sda1. Pour le cylindre final, acceptez le choix par défaut, qui consiste à faire en sorte que la partition s’étende sur tout le disque.
    • utiliser apour basculer l'indicateur de démarrage sur le nouveau/dev/sda1
    • Passez en revue vos modifications, respirez à fond et wécrivez la nouvelle table de partitions sur le disque. Vous recevrez un message indiquant que le noyau ne peut pas relire la table de partition car le périphérique est occupé, mais ce n'est pas grave.
  3. Redémarrez avec sudo reboot. Lors du démarrage du système, un système de fichiers plus petit réside dans une partition plus grande .

  4. La prochaine commande magique est resize2fs. Run sudo resize2fs /dev/sda1( Exécuter) : ce formulaire active par défaut le système de fichiers pour qu'il prenne tout l'espace disponible sur la partition.

Ça y est, nous venons de redimensionner une partition sur laquelle Ubuntu est installé, sans démarrer à partir d'un lecteur externe.

Sergey
la source
@EliahKagan: S'il vous plaît jeter un oeil à la réponse (de Gilles) j'ai lié à. L'idée est qu'il est possible d'utiliser fdiskpour agrandir la partition , tandis que le système d'exploitation continue à utiliser le système de fichiers plus petit. Ensuite. après un redémarrage, après que le noyau a relu la table de partition mise à jour, nous pouvons redimensionner le système de fichiers car il réside maintenant dans une partition plus grande.
Sergey
1
@ Isaac: Oui, nous devons encore redémarrer pour que le noyau relise la table de partitions. Cependant, dans de nombreux scénarios, un redémarrage rapide est un problème beaucoup moins grave que le démarrage à partir d'un support externe (pensez aux machines distantes, aux machines sans tête, aux VPS, etc.)
Sergey
2
Deux notes rapides: 1. Vous pouvez utiliser dfpour afficher l'espace "résultant" après cela (vérifiez que cela a fonctionné), et 2. n'oubliez pas de recréer un espace d'échange!
Christian Rondeau
1
Merci beaucoup. Ubuntu n'a jamais utilisé l'espace que j'ai donné au vdisk de VirtualBox. Maintenant je sais pourquoi. Merci beaucoup!
Penderi
1
@Sid: Il est très important que le cylindre de départ soit exactement le même. Si l'espace libre est n'importe où mais immédiatement après la partition, vous devez utiliser une autre méthode (ce qui nécessiterait de démarrer à partir d'un autre lecteur)
Sergey
21

Deux méthodes

1. Testé sur Ubuntu Server 16.04 à 18.10

Après avoir étendu le volume dans VMware ESXi (shutdown vm, sauvegarde / exportation vm, supprimez tous les instantanés, puis augmentation du nombre de disques, reprenez l'instantané de vm avant de suivre les étapes suivantes afin de pouvoir inverser erreur / erreur).

L'exemple suivant étend le volume sur une partition racine sur un système utilisant déjà LVM.

  1. sshdans le système, passez à la racine et exécutez cfdisk
    # cfdisk

  2. entrez la description de l'image ici

  3. entrez la description de l'image ici

  4. entrez la description de l'image ici

  5. entrez la description de l'image ici

  6. entrez la description de l'image ici

  7. entrez la description de l'image ici

  8. entrez la description de l'image ici

  9. entrez la description de l'image ici

  10. entrez la description de l'image ici

  11. entrez la description de l'image ici

  12. entrez la description de l'image ici

  13. Après avoir quitté cfdisk

     # fdisk -l /dev/sda 
     Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
     Units: sectors of 1 * 512 = 512 bytes
     Sector size (logical/physical): 512 bytes / 512 bytes
     I/O size (minimum/optimal): 512 bytes / 512 bytes
     Disklabel type: dos
     Disk identifier: 0xc8b647ff
    
     Device     Boot    Start      End  Sectors  Size Id Type
     /dev/sda1  *        2048   999423   997376  487M 83 Linux
     /dev/sda2        1001470 16775167 15773698  7.5G  5 Extended
     /dev/sda3       16775168 41943039 25167872   12G 8e Linux LVM (***** See new partition /dev/sda3*****)
     /dev/sda5        1001472 16775167 15773696  7.5G 8e Linux LVM
    
  14. Redémarrez le système avant la prochaine étape (sinon vous pourriez avoir Device /dev/sda3 not found (or ignored by filtering))

     # shutdown now -r
    
  15. Initialiser le nouveau volume

     # pvcreate /dev/sda3
       Physical volume "/dev/sda3" successfully created
    
  16. Obtenir le nom du volume à étendre

     # vgdisplay
       --- Volume group ---
       VG Name               linuxetc1-vg (***** this is vg i'm extending*****)
       System ID             
       Format                lvm2
       Metadata Areas        1
       Metadata Sequence No  3
       VG Access             read/write
       VG Status             resizable
       MAX LV                0
       Cur LV                2
       Open LV               2
       Max PV                0
       Cur PV                1
       Act PV                1
       VG Size               7.52 GiB
       PE Size               4.00 MiB
       Total PE              1925
       Alloc PE / Size       1925 / 7.52 GiB
       Free  PE / Size       0 / 0  
       ...
    
  17. Étendre le groupe de volumes

     # vgextend linuxetc1-vg /dev/sda3
       Volume group "linuxetc1-vg" successfully extended
    
  18. Étendre la racine

     # lvextend -l+100%FREE /dev/linuxetc1-vg/root
       Size of logical volume linuxetc1-vg/root changed from 6.52 GiB (1669 extents) to 18.52 GiB (4741 extents).
       Logical volume root successfully resized.
    
    
     Or if you only wanted to give 5 more GB to root
     # lvextend -L +5g /dev/linuxetc1-vg/root
    
  19. Obtenir le nom du système de fichiers pour l'étape suivante

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root  6.3G  2.5G  3.5G  42% /            (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    
  20. Étendre le système de fichiers

     # resize2fs /dev/mapper/linuxetc1--vg-root
     resize2fs 1.42.13 (17-May-2015)
     Filesystem at /dev/mapper/linuxetc1--vg-root is mounted on /; on-line resizing required
     old_desc_blocks = 1, new_desc_blocks = 2
     The filesystem on /dev/mapper/linuxetc1--vg-root is now 4854784 (4k) blocks long.
    
  21. Voir la taille accrue

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root   19G  2.5G   15G  15% /         (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    

2. Méthode plus rapide testée dans Ubuntu Server 18.04.3 LTS

Cette méthode est un peu plus rapide que la première. Cela est dû à une nouvelle option dans le cfdiskmenu appelée "Redimensionner" qui enregistre certaines étapes.

Après avoir étendu le volume dans VMware ESXi (shutdown vm, sauvegarde / exportation vm, supprimez tous les instantanés, puis augmentation du nombre de disques, reprenez l'instantané de vm avant de suivre les étapes suivantes afin de pouvoir inverser erreur / erreur).

L'exemple suivant étend le volume sur une partition racine sur un système utilisant déjà LVM.

  1. sshdans le système, passez à root et exécutez-le cfdisk.

  2. Choisissez la partition à étendre et sélectionnez "Redimensionner". entrez la description de l'image ici

  3. Définissez la "Nouvelle taille". entrez la description de l'image ici

  4. Après avoir appuyé sur Entrée, l'écran suivant s'affiche: "Partition [un certain nombre] redimensionnée": entrez la description de l'image ici

  5. Ensuite, vous devrez "écrire" (enregistrer) vos modifications: entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici

  6. Quittez cfdisk. Lorsque vous quittez, le message "Synchronisation des disques" peut s'afficher. entrez la description de l'image ici entrez la description de l'image ici

  7. J'ai redémarré mon système à ce stade, mais ce n'est peut-être pas nécessaire. Vous pouvez maintenant passer de l’étape 19 à la première méthode (répétée ci-dessous).

  8. (19) Obtenir le nom du système de fichiers pour l'étape suivante

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root  6.3G  2.5G  3.5G  42% /            (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    
  9. (20) Étendre le système de fichiers

     # resize2fs /dev/mapper/linuxetc1--vg-root
     resize2fs 1.42.13 (17-May-2015)
     Filesystem at /dev/mapper/linuxetc1--vg-root is mounted on /; on-line resizing required
     old_desc_blocks = 1, new_desc_blocks = 2
     The filesystem on /dev/mapper/linuxetc1--vg-root is now 4854784 (4k) blocks long.
    
  10. (21) Voir la taille augmentée

     # df -h
     Filesystem                      Size  Used Avail Use% Mounted on
     udev                            477M     0  477M   0% /dev
     tmpfs                           100M  4.6M   95M   5% /run
     /dev/mapper/linuxetc1--vg-root   19G  2.5G   15G  15% /         (***** this line*****)
     tmpfs                           497M     0  497M   0% /dev/shm
     tmpfs                           5.0M     0  5.0M   0% /run/lock
     tmpfs                           497M     0  497M   0% /sys/fs/cgroup
     /dev/sda1                       472M  105M  343M  24% /boot
     tmpfs                           100M     0  100M   0% /run/user/1000
    

Articles:
https://wiki.ubuntu.com/Lvm
http://www.geoffstratton.com/expand-hard-disk-ubuntu-lvm

jlindsey
la source
Sensationnel. C'était extrêmement utile. Si seulement je pouvais voter plus d'une fois. Merci!
Mario Tacke
1
Fonctionne parfaitement sur 18.10 sous ESXi. Merci!
John Vinopal le
Absolument fabuleux, juste ce dont j'avais besoin en tant que noob linux. .
Bigbadmouse
Grand guide! A suivi ceci pour étendre le stockage sur Ubuntu en tant que machine virtuelle Proxmox.
tokenizer_fsj
Fantastique! Merci pour ça. Cela a fonctionné pour 18.04 fonctionnant sur ESXi.
one.time le
0

La réponse de Sergey était excellente. Toutefois, si vous ne disposez pas de l'espace vide directement dans le périphérique suivant, vous devrez supprimer d'autres périphériques. Par exemple:

Device     Boot    Start       End  Sectors Size Id Type
/dev/sda1  *        2048  33556477 33554430  16G 83 Linux
/dev/sda2       33556478  41940991  8384514   4G  5 Extended
/dev/sda3       41940992 125829119 83888128  40G 83 Linux
/dev/sda5       33556480  41940991  8384512   4G 82 Linux swap / Solaris

Dans le cas ci-dessus, si vous souhaitez fusionner /dev/sda3avec /dev/sda1, vous devez supprimer /dev/sda1, /dev/sda2et /dev/sda3(avec dcommande), puis rajouter /dev/sda2et mettre à jour son type (avec net tcommandes).

jaycode
la source
0

J'ai réussi à agrandir ma partition primaire ext4 en utilisant la méthodologie décrite ici .

Quelques notes de mon expérience personnelle:

  • L’exemple de lien concerne la réduction de partition, d’où l’ordre suivant: resize2fs puis fdisk. Lors de l’agrandissement de la partition (comme dans mon cas), l’ordre devrait être d’abord fdisk, redémarrez puis resize2fs. De même, lors de l'utilisation de fdisk, les partitions principales ainsi que les partitions étendues doivent être supprimées et redéfinies.
  • J'ai démarré Ubuntu à partir d'un autre lecteur, puis j'ai travaillé sur ce lecteur qui était en réalité le miroir (utilisant dd) de l'ancien lecteur. Fait en bootable en utilisant GParted
  • La version actuelle de resize2fs (j'utilise Ubuntu 12.04LTS) supporte ext4 - pas besoin de faire les actions décrites dans le lien pour changer l'ext2.
Elchanan
la source
1
Bien que cela puisse théoriquement répondre à la question, il serait préférable d’inclure ici les parties essentielles de la réponse et de fournir le lien à titre de référence.
Braiam