EC2 Impossible de redimensionner le volume après avoir augmenté la taille

95

J'ai suivi les étapes de redimensionnement d'un volume EC2

  1. Arrêt de l'instance
  2. A pris un instantané du volume actuel
  3. Création d'un nouveau volume à partir de l'instantané précédent avec une taille plus grande dans la même région
  4. Détacher l'ancien volume de l'instance
  5. Attaché le nouveau volume à l'instance au même point de montage

L'ancien volume était de 5 Go et celui que j'ai créé est de 100 Go Maintenant, lorsque je redémarre l'instance et que je l'exécute, df -h Ivoyez toujours ceci

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvde1            4.7G  3.5G 1021M  78% /
tmpfs                 296M     0  296M   0% /dev/shm

C'est ce que je reçois en courant

sudo resize2fs /dev/xvde1

The filesystem is already 1247037 blocks long.  Nothing to do!

Si je cours cat /proc/partitionsje vois

 202       64  104857600 xvde
 202       65    4988151 xvde1
 202       66     249007 xvde2

D'après ce que j'ai compris si j'ai suivi les bonnes étapes, xvde devrait avoir les mêmes données que xvde1 mais je ne sais pas comment l'utiliser

Comment puis-je utiliser le nouveau volume ou umount xvde1 et monter xvde à la place?

Je ne peux pas comprendre ce que je fais de mal

J'ai aussi essayé sudo ifs_growfs /dev/xvde1

xfs_growfs: /dev/xvde1 is not a mounted XFS filesystem

Btw, c'est une boîte Linux avec centos 6.2 x86_64

Merci d'avance pour votre aide

Wilman Arambillete
la source

Réponses:

70

Merci Wilman vos commandes ont fonctionné correctement, une petite amélioration doit être envisagée si nous augmentons les EBS dans des tailles plus grandes

  1. Arrêtez l'instance
  2. Créer un instantané à partir du volume
  3. Créer un nouveau volume basé sur l'instantané augmentant la taille
  4. Vérifiez et mémorisez le point de montage du volume actuel (ie /dev/sda1)
  5. Détacher le volume actuel
  6. Attachez le volume récemment créé à l'instance, en définissant le point de montage exact
  7. Redémarrez l'instance
  8. Accès via SSH à l'instance et exécution fdisk /dev/xvde

    AVERTISSEMENT: le mode compatible DOS est obsolète. Il est fortement recommandé de désactiver le mode (commande 'c') et de changer les unités d'affichage en secteurs (commande 'u')

  9. Appuyez ppour afficher les partitions actuelles

  10. Appuyez sur dpour supprimer les partitions actuelles (s'il y en a plus d'une, vous devez en supprimer une à la fois) REMARQUE: ne vous inquiétez pas, les données ne sont pas perdues
  11. Appuyez sur npour créer une nouvelle partition
  12. Hit ppour le définir comme principal
  13. Frappez 1pour régler le premier cylindre
  14. Définissez le nouvel espace souhaité (s'il est vide, tout l'espace est réservé)
  15. Hit apour le rendre amorçable
  16. Frapper 1et wécrire des changements
  17. Redémarrez l'instance OU utilisez partprobe(à partir du partedpackage) pour informer le noyau de la nouvelle table de partition
  18. Connectez-vous via SSH et exécutez resize2fs / dev / xvde1
  19. Enfin, vérifiez le nouvel espace exécutant df -h
dcf
la source
1
"ATTENTION: le mode compatible DOS est obsolète. Il est fortement recommandé de désactiver le mode (commande 'c') et de changer les unités d'affichage en secteurs (commande 'u')" Ce n'était pas nécessaire pour moi (Ubuntu 13.04). Il avait déjà désactivé la compatibilité DOS et utilisé les secteurs par défaut. Appuyez sur cet upassez aux modes obsolètes.
wisbucky
6
La solution fonctionnait très bien mais l'instance était bloquée sur "1/2 chèques réussis" avec un signe d'exclamation (ReadHat 6.5). Pour résoudre ce problème, j'ai mis le "premier cylindre" à 16 (comme auparavant). Après cela, l'instance a démarré normalement avec "2/2 vérifications réussies". J'espère que ça aide quelqu'un ...
user3586516
1
Moi aussi, j'ai dû changer le premier cylindre, mais j'ai dû le changer en 2048. Je recommanderais de vérifier votre paramètre de partition actuel avant de le supprimer.
Doyley
9
Après avoir redémarré mon instance, je ne parviens pas à me connecter via SSH. La connexion expire et la console aws indique qu'elle ne peut pas démarrer ses vérifications d'état. Je pense que c'est mort. Une idée de quoi faire?
Richard
5
Cette réponse est désormais obsolète maintenant qu'AWS prend en charge le redimensionnement en ligne pour les volumes EBS.
Dale Anderson
303

Il n'est plus nécessaire d'arrêter l'instance et de détacher le volume EBS pour le redimensionner!

13 février 2017, Amazon a annoncé: " Mise à jour Amazon EBS - Les nouveaux volumes élastiques changent tout "

Le processus fonctionne même si le volume à étendre est le volume racine de l'instance en cours d'exécution!


Disons que nous voulons augmenter le lecteur de démarrage d'Ubuntu de 8G à 16G "à la volée".

étape-1) connectez-vous à la console Web AWS -> EBS -> cliquez avec le bouton droit de la souris sur celui que vous souhaitez redimensionner -> "Modifier le volume" -> modifiez le champ "Taille" et cliquez sur le bouton [Modifier]

entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici


step-2) ssh dans l'instance et redimensionner la partition:

listons les périphériques de bloc attachés à notre boîte:
lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
└─xvda1 202:1    0   8G  0 part /

Comme vous pouvez le voir, / dev / xvda1 est toujours une partition de 8 Gio sur un périphérique de 16 Gio et il n'y a pas d'autres partitions sur le volume. Utilisons "growpart" pour redimensionner la partition 8G jusqu'à 16G:

# install "cloud-guest-utils" if it is not installed already
apt install cloud-guest-utils

# resize partition
growpart /dev/xvda 1

Vérifions le résultat (vous pouvez voir que / dev / xvda1 est maintenant 16G):

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
└─xvda1 202:1    0  16G  0 part /

Beaucoup de réponses SO suggèrent d'utiliser fdisk avec supprimer / recréer des partitions, ce qui est un processus désagréable, risqué et sujet aux erreurs, en particulier lorsque nous changeons de lecteur de démarrage.


étape-3) redimensionner le système de fichiers pour qu'il s'agrandisse complètement pour utiliser pleinement le nouvel espace de partition
# Check before resizing ("Avail" shows 1.1G):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  6.3G  1.1G  86% /

# resize filesystem
resize2fs /dev/xvda1

# Check after resizing ("Avail" now shows 8.7G!-):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       16G  6.3G  8.7G  42% /

Nous n'avons donc aucun temps d'arrêt et beaucoup de nouvel espace à utiliser.
Prendre plaisir!

Mise à jour: mise à jour: utilisez sudo xfs_growfs / dev / xvda1 au lieu de resize2fs lorsque le système de fichiers XFS.

Dmitry Shevkoplyas
la source
le redimensionnement de la partition a été d'une grande aide .... !! Le plus merveilleux était que cela fonctionnait même pour le volume racine.
piyushmandovra
4
Quelqu'un acceptera-t-il cela comme la bonne réponse? Juste parce que ... ça l'est.
eduardohl
Solide, merci beaucoup ... J'étais tellement sceptique dans l'exécution des étapes mentionnées dans les réponses ci-dessus mais c'était tellement cool ...
AAgg
4
Huh, la documentation officielle ne mentionne pas growpart, c'est pourquoi je ne pouvais pas faire fonctionner ça avant. Merci!
Ibrahim
1
@Shihas, oui. Exactement. Même le lecteur monté "root" amorçable peut être augmenté en toute sécurité sans redémarrage requis!
Dmitry Shevkoplyas
42

Commentaire du préfet par jperelli ci-dessus.

J'ai fait face au même problème aujourd'hui. La documentation AWS ne mentionne pas clairement growpart. J'ai compris à la dure et en effet les deux commandes fonctionnaient parfaitement sur M4.large et M4.xlarge avec Ubuntu

sudo growpart /dev/xvda 1
sudo resize2fs /dev/xvda1
Sachin Shintre
la source
la deuxième réponse pour l'attachement et cette réponse est pour le redimensionnement
Adiii
Incroyable! travaillé sur mon instance t2.small. Ouf. Je pensais que ce serait plus sanglant que ça. Merci!
publicknowledge
Je n'arrive pas à installer cloud-guest-utils qui contient growpart. Linux version 3.16.0-4-amd64
nettie
15

[RÉSOLU]

C'est ce qu'il fallait faire

  1. Arrêtez l'instance
  2. Créer un instantané à partir du volume
  3. Créer un nouveau volume basé sur l'instantané augmentant la taille
  4. Vérifiez et mémorisez le point de montage du volume actuel (c'est-à-dire / dev / sda1)
  5. Détacher le volume actuel
  6. Attachez le volume récemment créé à l'instance, en définissant le point de montage exact
  7. Redémarrez l'instance
  8. Accès via SSH à l'instance et exécution fdisk /dev/xvde
  9. Appuyez ppour afficher les partitions actuelles
  10. Appuyez sur dpour supprimer les partitions actuelles (s'il y en a plus d'une, vous devez en supprimer une à la fois) REMARQUE: ne vous inquiétez pas, les données ne sont pas perdues
  11. Appuyez sur npour créer une nouvelle partition
  12. Hit ppour le définir comme principal
  13. Frappez 1pour régler le premier cylindre
  14. Définissez le nouvel espace souhaité (s'il est vide, tout l'espace est réservé)
  15. Hit apour le rendre amorçable
  16. Frapper 1et wécrire des changements
  17. Redémarrer l'instance
  18. Connectez-vous via SSH et exécutez resize2fs /dev/xvde1
  19. Vérifiez enfin le nouvel espace en cours d'exécution df -h

Ça y est

Bonne chance!

Wilman Arambillete
la source
1
Dans les volumes Amazon EBS, il semble important d'utiliser le même point de montage dans resize2fs que vous utilisez avec fdisk. df affiche quelque chose comme / dev / xvda1 comme volume EBS attaché, mais la commande resize2fs ne fonctionnait pour moi que lorsque j'ai utilisé l'identifiant / dev / sdf1, que j'avais utilisé lorsque j'ai créé la nouvelle partition dans fdisk.
Garreth McDaid
Ceci est dans la documentation AWS. Ce qui est médiocre, c'est que leurs procédures sont encore incomplètes après 3 ans. Si vous avez une image, vous pouvez vous rabattre, bien sûr. Il est toujours possible de suspendre temporairement le nouveau disque à partir d'une instance exécutant un bureau, mais le besoin de le monter pour un redimensionnement peut être un problème si vous envisagez d'utiliser gparted. gcloud se redimensionne à la volée.
mckenzm
Mon périphérique de stockage (/ dev / xvda1) a commencé au secteur 16065, pas au secteur 1. Donc l'étape 13 (Hit 1 pour régler le premier cylindre) devait être 16065 dans mon cas.
Simon Paarlberg
N'allez pas avec ces solutions, vous risquez de perdre vos données. En fait, j'ai compris de ne pas opter pour l'option de suppression de partition si afficher les valeurs de la liste de partition dans la table de partition, car si la liste est là, elle supprime littéralement la partition, donc les données seront perdues même si la réponse dit "Ce ne sera pas le cas supprimer". Il existe un moyen d'étendre la taille de la partition, vérifiez en bas qu'il existe d'autres utilitaires qui vous aideront à étendre la taille de votre partition en douceur.
piyushmandovra
6
  1. connectez-vous à la console Web AWS -> EBS -> cliquez avec le bouton droit de la souris sur celui que vous souhaitez redimensionner -> "Modifier le volume" -> modifiez le champ "Taille" et cliquez sur le bouton [Modifier]

  2. growpart /dev/xvda 1

  3. resize2fs /dev/xvda1

Ceci est une version simple de la réponse de Dmitry Shevkoplyas. La documentation AWS n'affiche pas la growpartcommande. Cela fonctionne bien pour ubuntu AMI.

jperelli
la source
6
  1. sudo growpart / dev / xvda 1
  2. sudo resize2fs / dev / xvda1

les deux commandes ci-dessus m'ont fait gagner du temps pour les instances AWS ubuntu ec2.

HD298
la source
5

Cela fonctionnera pour le système de fichiers xfs, exécutez simplement cette commande

xfs_growfs /
Saurabh Chandra Patel
la source
fais ma journée ... ma SEMAINE!
Cristian Sepulveda
cela fonctionne vraiment!
Corneliu Maftuleac
4

Juste au cas où quelqu'un ici pour GCP google cloud platform,
essayez ceci:

sudo growpart /dev/sdb 1
sudo resize2fs /dev/sdb1
yunus
la source
2

Avez-vous fait une partition sur ce volume? Si vous l'avez fait, vous devrez d'abord agrandir la partition.

chantheman
la source
non je ne l'ai pas fait. Dois-je faire ça? Rappelez-vous que ce nouveau volume que j'ai joint est censé contenir toutes les données précédentes car il s'agit d'un instantané du volume original
Wilman Arambillete
Non, mais j'ai eu cette erreur s'il y avait une partition attachée. Allez et vérifiez que vous avez fait le volume de la bonne taille, et vérifiez que vous avez monté le nouveau volume.
chantheman
En outre, vous n'avez pas besoin d'arrêter l'instance pour ce faire. Vous pouvez utiliser des écritures sur ce volume en toute sécurité, mais vous pouvez effectuer un instantané avec l'instance en cours d'exécution.
chantheman
1

L'indicateur de démarrage (a) ne fonctionnait pas dans mon cas (EC2, centos6.5), j'ai donc dû recréer le volume à partir de l'instantané. Après avoir répété toutes les étapes SAUF le drapeau amorçable - tout fonctionnait parfaitement, j'ai donc pu resize2fs après. Je vous remercie!

sandr
la source
1

Merci, @Dimitry, cela a fonctionné comme un charme avec un petit changement pour correspondre à mon système de fichiers.

source: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#recognize-expanded-volume-linux

Utilisez ensuite la commande suivante, en remplaçant le point de montage du système de fichiers (les systèmes de fichiers XFS doivent être montés pour les redimensionner):

[ec2-user ~]$ sudo xfs_growfs -d /mnt
meta-data=/dev/xvdf              isize=256    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 262144 to 26214400

Remarque Si vous recevez un échec de xfsctl: erreur d'allocation de mémoire impossible, vous devrez peut-être mettre à jour le noyau Linux sur votre instance. Pour plus d'informations, reportez-vous à la documentation de votre système d'exploitation spécifique. Si vous recevez un message Le système de fichiers contient déjà nnnnnnn blocs. Rien à faire! erreur, consultez Extension d'une partition Linux.

user2125117
la source
0

Vous n'avez pas assez de représentants pour commenter ci-dessus; mais notez également dans les commentaires ci-dessus que vous pouvez corrompre votre instance si vous commencez à 1; si vous appuyez sur «u» après avoir démarré fdisk avant de lister vos partitions avec «p», cela vous donnera le numéro de départ correct pour ne pas corrompre vos volumes. Pour centos 6.5 AMI, également comme mentionné ci-dessus 2048 était correct pour moi.

Reece
la source
0

Donc, au cas où quelqu'un aurait le problème où il aurait rencontré ce problème avec une utilisation à 100%, et pas d'espace pour même exécuter la commande growpart (car cela crée un fichier dans / tmp)

Voici une commande que j'ai trouvée qui contourne même lorsque le volume EBS est utilisé, et aussi si vous n'avez plus d'espace sur votre ec2 et que vous êtes à 100%

/sbin/parted ---pretend-input-tty /dev/xvda resizepart 1 yes 100%

voir ce site ici:

https://www.elastic.co/blog/autoresize-ebs-root-volume-on-aws-amis

CodeJunkie
la source
Cette commande doit être suivie de sudo resize2fs /dev/xvda1pour mettre à jour /etc/fstab, seulement après cela df -haffichera l'espace disque augmenté
karmendra
0

Mettez un espace entre le nom et le numéro, ex:

sudo growpart /dev/xvda 1

Notez qu'il y a un espace entre le nom du périphérique et le numéro de partition.

Pour étendre la partition sur chaque volume, utilisez les commandes growpart suivantes. Notez qu'il y a un espace entre le nom du périphérique et le numéro de partition.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html

mwafi
la source