Comment augmenter la taille d'un disque sur une instance en cours d'exécution sur Amazon EC2

13

J'ai obtenu une instance en cours d'exécution d'une configuration de serveur EC 2 avec Ubunto. Quelle est la meilleure façon d'augmenter la taille du disque sans aucun temps d'arrêt et sans risque minimal?

En lisant les guides, une façon serait de créer un nouveau disque, de migrer les données, de désactiver le disque d'échange d'instance et de le rallumer. Cette approche semble un peu risquée nécessitera un certain temps d'arrêt. Je me demande s'il y a une meilleure approche?

googletorp
la source

Réponses:

14

Amazon AWS vient de sortir (le 13 février 2017) une nouvelle fonctionnalité qui permet de changer la taille d'un volume EBS.

source: https://aws.amazon.com/blogs/aws/amazon-ebs-update-new-elastic-volumes-change-everything/

Cela permet d'augmenter la taille d'un volume EBS sur une instance existante, pendant son exécution.

Il est important de noter que la modification de la taille du volume ne modifie pas la taille du système de fichiers sur le volume (pour la plupart des systèmes de fichiers). Des étapes supplémentaires peuvent être nécessaires (selon le système de fichiers) dans le système d'exploitation lui-même. Par exemple, un système resizefsde ext4fichiers utilisé par la plupart des systèmes d'exploitation Linux aujourd'hui.

La documentation complète d'AWS décrivant le processus est disponible à l' adresse http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html

Dans certains cas, le périphérique de bloc a des partitions mappées, et seulement alors une (ou plusieurs) des partitions inclut un système de fichiers. Dans ce cas, la partition devra d'abord être redimensionnée, puis seulement le système de fichiers. Ce processus est également décrit dans la documentation .

La nouvelle fonctionnalité de redimensionnement "en ligne" décrite dans le blog ne s'applique qu'aux instances de génération actuelles, et il existe d'autres considérations et limitations qui doivent être vérifiées avant de tenter un redimensionnement de volume.

Evgeny
la source
Avant de redimensionner le système de fichiers, vous devrez également redimensionner la partition sous-jacente, ce qui bloque vraiment les partitions physiques pour un redimensionnement à chaud.
Tensibai
@Tensibai désolé, je ne comprends pas ce que signifie "blocage sur des partitions physiques pour un redimensionnement à chaud". Voulez-vous dire que la modification de la taille du volume à l'aide des API AWS bloquera les écritures / lectures sur le volume?
Evgeny
Non, je veux dire que le disque sera plus grand, mais la partition restera la même, vous devez utiliser fdiskpour la redimensionner, concernant la partition racine, vous ne pouvez généralement pas écrire la table de partition du disque pendant qu'elle est montée, et vous ne pouvez pas le démonter. Vous devrez redémarrer à un moment donné :)
Tensibai
À droite, si vous utilisez plusieurs partitions avant d'ajouter la couche du système de fichiers - les partitions devront d'abord être redimensionnées. Merci, je vais essayer d'ajouter cela dans la réponse en citant un guide sur la façon dont c'est fait.
Evgeny
La question mentionnée sans temps d'arrêt. Cependant, pour redimensionner un volume racine, il semble que vous deviez supprimer l'instance pour effectuer cette étape?
Chris Stryczynski
2

Ce que je fais (et cela ne répond pas exactement à votre question) est le suivant:

  1. Créez un volume EBS et joignez-le au document d' instance ici
  2. Nouvelle analyse des bus scsi echo '- - -' > /sys/bus/scsi/devices/host1/scsi_host/host1/scan(vous devrez peut-être adapter le numéro d'hôte)
  3. Créer un volume physique avec pvcreatesur le nouveau disque trouvé ( fdisk -lpour lister tous les disques)
  4. Créez un groupe de volumes, puis un volume logique sur celui-ci ( vgcreateet lvcreate)
  5. Formatez le volume logique avec le système de fichiers souhaité
  6. tar le point de montage cible pour le restaurer.
  7. Montez ce volume là où vous avez besoin d'un nouvel espace.
  8. Restaurez le goudron dans cet espace nouvellement monté.

Les étapes 6 et 8 sont facultatives si vous utilisez un nouvel espace avant d'installer quelque chose. Si vous souhaitez remplacer un répertoire existant, vous devez éviter évidement que quelque chose n'y soit écrit entre la fin de l'archive et la restauration.

Vous pouvez répéter les étapes 4 à 8 pour différents points de montage, cela permet d'étendre l'espace nécessaire puis de redimensionner ces volumes en ligne sans interruption.

Tensibai
la source
0

Évolutivité du stockage du système de fichiers ZFS Zero Downtime sur AWS (ou ailleurs)

upsize

  1. Installez ZFS sur EC2.

    http://serverascode.com/2016/09/05/aws-zfs-user-data.html

  2. Créez un zpool pour vos données en masse à l'aide d'un volume EBS.
  3. Ajoutez un autre EBS pour obtenir plus de stockage de blocs. (ou définissez le pool autoexpand = true et augmentez simplement votre EBS)
  4. Ajoutez le nouvel EBS à votre zpool pour libérer de l'espace. (sauf si vous avez utilisé l'extension automatique et augmenté la taille EBS)

Réduire

  1. Créez un nouveau zpool sur le nouvel EBS suffisamment grand pour contenir les données réduites. (n'a pas encore besoin d'être monté, ni même sur le même EC2)
  2. instantané de l'ancien trop gros zpool
  3. zfs-envoyer l'instantané au nouveau zpool
  4. promouvoir l'instantané reçu sur le nouveau pool et le monter
  5. détruire l'ancienne piscine
  6. détruire l'EBS de l'ancienne piscine
Jeremy
la source
0

Après avoir redimensionné le volume EBS, voici ce que je viens d'exécuter lorsque j'avais besoin d'étendre un pool ZFS:

parted -l # Get the list of partitions 
parted /dev/xvdf rm 9 # Remove the buffer partition
parted /dev/xvdf resizepart 1 100% # Resize the partition
zpool online -e <zfs partition name> /dev/xvdf # Expand the zpool and the filesystem it holds
Michael Pereira
la source