Lecteur EC2 pas de taille de volume EBS

18

J'ai une instance EC2 pour laquelle j'ai créé un volume EBS de 500 Go. Malheureusement, l'instance EC2 n'affiche que 8 Go disponibles.

Je n'ai qu'un seul lecteur, ce qui est juste.

[root@ip-10-244-134-250 ~]# ls -la /dev/x*
brw-rw---- 1 root disk 202, 1 Aug  7 08:54 /dev/xvda1

Mais, ce lecteur ne fait que 8 Go

[root@ip-10-244-134-250 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1            8.0G  1.3G  6.7G  16% /
tmpfs                 3.7G     0  3.7G   0% /dev/shm

Mais, fdisk et / proc / partitions affichent tous les deux une taille correcte

[root@ip-10-244-134-250 ~]# fdisk -l

Disk /dev/xvda1: 536.9 GB, 536870912000 bytes
255 heads, 63 sectors/track, 65270 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/xvda1 doesn't contain a valid partition table

[root@ip-10-244-134-250 ~]# cat /proc/partitions 
major minor  #blocks  name

 202        1  524288000 xvda1

Toute aide serait grandement appréciée, merci.

Christian
la source

Réponses:

34

Si le système de fichiers racine est ext3 ou ext4, exécutez:

sudo resize2fs /dev/xvda1

Si le système de fichiers racine est xfs (moins courant), exécutez:

sudo xfs_growfs /

Vous pouvez omettre "sudo" si vous êtes connecté en tant que root.

Ces commandes doivent être exécutées pendant que le système fonctionne et que le système de fichiers est monté.

Il est standard que les volumes EBS ne contiennent pas de table de partition. Le volume EBS est généralement formaté comme un système de fichiers dans son intégralité sans partitions.

Eric Hammond
la source
2
Ça m'irrite quand les gens vous votent sans explication. Quoi qu'il en soit, cela a fonctionné à merveille. Merci beaucoup!
Christian
1
/ moi hausse les épaules et continue sa vie :-) Heureux de vous aider. Voici quelques articles liés que j'ai écrits: alestic.com/2009/12/ec2-ebs-boot-resize alestic.com/2010/02/ec2-resize-running-ebs-root
Eric Hammond
2
Notez que le package cloud-init inclus dans les AMI Ubuntu exécute automatiquement resize2fs au démarrage. Je suis surpris que ce ne soit pas dans Amazon Linux car ils utilisent également cloud-init.
Eric Hammond
4
J'ai le même problème et lorsque j'exécute la commande, il dit: Le système de fichiers a déjà 2096896 blocs de long. Rien à faire! Il fait toujours 8 Go!
Neo
12

Les réponses semblent manquer quelques étapes avant de redimensionner spécialement pour les personnes qui modifient la taille de leur volume EBS. Si vous avez utilisé un instantané pour créer l'EBS ou avec certaines AMI, vous devrez étendre le disque (xvda), étendre la partition (xvda1), puis étendre le système de fichiers (/).

Si je lis ceci correctement, votre disque ressemble à ceci:

/dev/xvda
|__/dev/xvda1__|______________ Free space______________|

Il doit ressembler à ceci:

/dev/xvda
|______________________/dev/xvda1______________________|

Après cela, l'exécution resize2fsse développera dans ce nouvel espace à l'intérieur xvda1, en utilisant fdisknous pouvons augmenter la taille du bloc en le supprimant et en le créant à nouveau et en rendant la partition amorçable. il suffit d'un redémarrage. Dans la plupart des cas, cela ne devrait pas affecter vos données si vous utilisez le même cylindre de démarrage, mais notez que toute erreur dans la recréation de la partition entraînera la perte de toutes les données et / ou le serveur ne redémarrera pas. Je recommanderais de le faire comme première étape sur une instance nouvellement créée. Sinon, prenez un instantané de votre stockage EC2 EBS / etc.

J'ai marqué les étapes avec << # >> dans le bloc ci-dessous, donc elles ne font pas partie de la commande. Vous avez besoin des droits root, alors faites un "sudo sh" si vous n'êtes pas root.

<<1>> Look at the filesystem, it is 6G
<<2>> Look at the disk and the partition, the disk is 21.5 GB but the partition is 6 GB (6291456 blocks)
<<3>> Start fdisk for that disk (xvda, so not the partition xvda1)
<<4>> Switch to sector display.
<<5>> Print the partition(s), and remember the start sector (2048 in the example).
<<6>> Delete the partition.
<<7>> Create a new partition.
<<8>> Make it primary.
<<9>> First partition.
<<10>> Enter the old start sector, do NOT make any typo here!!! (2048 in the example) 
<<11>> Hit enter to accept the default (this is the remainder of the disk)
<<12>> Print the changes and make sure the start sector is ok, if not restart at <<6>>
<<13>> Make the partition bootable. do NOT forget this!!!
<<14>> Enter your partition number (1 in the example)
<<15>> Write the partition info back, this will end the fdisk session.
<<16>> Reboot the server, and wait for it to come up (this may take longer than usual).
<<17>> Verify the filesystem size.
<<18>> If the filesystem is not around 20Gb as expected, you can use this command.


# df -h  <<1>>

Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      6.0G  2.0G  3.7G  35% / 
tmpfs            15G     0   15G   0% /dev/shm

# fdisk -l  <<2>>

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
97 heads, 17 sectors/track, 25435 cylinders
Units = cylinders of 1649 * 512 = 844288 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003b587

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *           2        7632     6291456   83  Linux

# fdisk /dev/xvda  <<3>>

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): u  <<4>>
Changing display/entry units to sectors

Command (m for help): p  <<5>>

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
97 heads, 17 sectors/track, 25435 cylinders, total 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
Disk identifier: 0x0003b587

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *        2048    12584959     6291456   83  Linux

Command (m for help): d  <<6>>
Selected partition 1

Command (m for help): n  <<7>>
Command action
   e   extended
   p   primary partition (1-4)
p  <<8>>
Partition number (1-4): 1  <<9>>
First sector (17-41943039, default 17): 2048  <<10>>
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): <<11>>
Using default value 41943039

Command (m for help): p <<12>>

Disk /dev/xvda: 21.5 GB, 21474836480 bytes
97 heads, 17 sectors/track, 25435 cylinders, total 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
Disk identifier: 0x0003b587

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1            2048    41943039    20970496   83  Linux

Command (m for help): a  <<13>>
Partition number (1-4): 1  <<14>>


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

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: ...
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.

# reboot  <<16>>

<wait>

# df -h  <<17>>
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  2.0G   17G  11% / 
tmpfs            15G     0   15G   0% /dev/shm

# resize2fs /dev/xvda1  <<18>>
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/xvda1 is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/xvda1 to 5242624 (4k) blocks.
The filesystem on /dev/xvda1 is now 5242624 blocks long.

root@vs120 [~]#  df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  7.8G   11G  42% /
tmpfs           498M     0  498M   0% /dev/shm
/usr/tmpDSK     399M   11M  368M   3% /tmp
root@vs120 [~]#
Néo
la source
1
L'extension de la partition n'est nécessaire que si le volume est partitionné. C'est assez rare sur EC2. La meilleure pratique courante avec EBS consiste à formater l'intégralité du volume brut avec le système de fichiers sans le positionner au préalable. Cela est particulièrement vrai pour les volumes de démarrage. Le positionnement est un artefact des disques physiques, où ils ne sont pas tout à fait de la taille souhaitée pour vos systèmes de fichiers. Sur EC2, vous créez simplement des volumes EBS de la bonne taille et déposez le système de fichiers sur le volume brut sans partitions.
Eric Hammond
1
Je ne sais pas ce qui est rare, cela m'est arrivé sur les deux instances CentOS EC2 que j'ai lancées avec Generic SSD EBS Storage.
Neo
Qui a publié les AMI CentOS que vous avez utilisées?
Eric Hammond
@EricHammond centos.org
Néo
4
Je recommanderais de demander à centos.org d'arrêter de créer des AMI avec des volumes EBS racine partitionnés. Il n'y a aucun avantage à cela si vous utilisez une seule partition et cela rend le redimensionnement plus difficile. Amazon ne le fait pas avec ses AMI. Ubuntu, Red Hat et autres non plus. Il est préférable de simplement placer le système de fichiers sur le volume EBS brut sans barrières inutiles supplémentaires qui doivent être déplacées lors du redimensionnement.
Eric Hammond
2

Redimensionnez le système de fichiers sur le volume EBS. Si vous exécutez ext3(ce qui est généralement la valeur par défaut), vous pouvez simplement exécuter e2resize /dev/xvda1.

womble
la source
Le volume doit d'abord être hors ligne et démonté.
Farhan
1
Pas avec une distribution Linux même vaguement moderne. L'expansion en ligne des systèmes de fichiers ext3 est prise en charge depuis des années.
womble
Merci womble, j'utilise la distribution aws et e2resize n'est pas là. Ce n'est dans aucun repo de miam non plus. Dois-je simplement obtenir la source et la construire moi-même?
Christian
1

J'ai essayé la réponse de @Neo avec une instance créée à partir d'une AMI Ubuntu personnalisée. L'explication a été très utile mais j'avais besoin de garder les unités en tant que blocs et de sauter l'étape # 4. Cela a ensuite parfaitement fonctionné.

Un autre point est également qu'à l'étape 5, vous devez copier le bloc / cylindre de départ à utiliser à l'étape 10.

@ La réponse de Neo est si vous avez un périphérique de disque virtuel partitionné. Vous pouvez trouver si vous souffrez de ce problème avec les éléments suivants: lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 30G 0 disk └─xvda1 202:1 0 5G 0 part / Les xvda et xvda1 sont de tailles très différentes. Vous pouvez redimensionner2fs et cela ne fera aucune différence, dans mon cas, xvda1 est 5G et c'est tout ce que le système de fichiers utilisera.

Merci, @Neo

David B
la source