L'agrandissement d'une instance EC2 est facile comme un souffle (par exemple, créer une AMI, lancer une instance à partir de celle-ci, puis modifier la taille de stockage).
Mais la réduire devient plus difficile. Je souhaite réduire la taille du volume racine d'une instance Amazon Web Services (AWS) EC2 Elastic Block Store (EBS). Il y a un couple d'anciennes procédures de haut niveau sur le net. La version plus détaillée que j'ai trouvée est une réponse vieille d'un an à une question StackOverflow: comment puis-je réduire ma capacité de volume ebs , les étapes ont un niveau assez élevé:
Créez un nouveau volume EBS de la taille souhaitée (par exemple/dev/xvdg)
Lancer une instance et y attacher les deux volumes EBS
Vérifiez le système de fichiers (du volume racine d'origine): (par exemple) e2fsck -f/dev/xvda1
Réduire au maximum le volume racine d'origine: (par exemple ext2/3/4) resize2fs -M -p/dev/xvda1
Copiez les données avec dd:
Choisissez une taille de morceau (j'aime 16 Mo)
Calculez le nombre de morceaux (en utilisant le nombre de blocs de la sortie resize2fs): blocs * 4/(chunk_size_in_mb * 1024) - arrondissez un peu pour la sécurité
Copiez les données: (par exemple) dd if =/dev/xvda1 ibs = 16M of =/dev/xvdg obs = 16M count = 80
Redimensionnez le système de fichiers sur le nouveau volume EBS (plus petit): (par exemple) resize2fs -p/dev/xvdg
Vérifiez le système de fichiers (du volume racine d'origine): (par exemple) e2fsck -f/dev/xvdg
Détachez votre nouveau volume racine EBS et attachez-le à votre instance d'origine
Je ne parviens pas à trouver une solution détaillée "comment faire" étape par étape.
Mon volume racine EBS est attaché à une instance HVM Ubuntu.
Toute aide sera grandement appréciée.
Dans la console AWS:
Arrêtez l'instance que vous souhaitez redimensionner
Créez un instantané du volume actif, puis créez un volume "SSD à usage général" à partir de cet instantané.
Créez un autre volume "SSD à usage général" à la taille souhaitée.
Attachez ces 3 volumes à l'instance en tant que:
Démarrez l'instance.
Connectez-vous à la nouvelle instance via SSH.
créez ces nouveaux répertoires:
mkdir /source /target
mkfs.ext4 /dev/xvdf
mount -t ext4 /dev/xvdf /target
e2label /dev/xvdf /
mount -t ext4 /dev/xvdg /source
rsync -ax /source/ /target
Remarque: il n'y a pas de "/" suivant "/ cible". En outre, il peut y avoir quelques erreurs sur les liens symboliques et les attr, mais le redimensionnement a toujours réussi
umount /target
umount /source
De retour dans AWS Console: arrêtez l'instance et détachez tous les volumes.
Attachez le nouveau volume dimensionné à l'instance comme: "/ dev/sda1"
Démarrez l'instance et elle devrait démarrer.
ÉTAPE 10 IS IMPORTANT: étiquetez le nouveau volume avec "e2label" comme mentionné ci-dessus, ou l'instance semblera démarrer dans aws mais ne passera pas la vérification de connexion.
Le disque nouvellement créé ne contient pas la partition de démarrage, il devrait donc avoir GRUB installé et certains indicateurs correctement configurés avant qu'une instance puisse l'utiliser comme volume racine.
Ma (à partir d'aujourd'hui, solution de travail ) pour réduire un volume racine est:
Contexte: Nous avons une instance A, dont nous voulons réduire le volume racine. Appelons ce volume VA. Nous voulons réduire VA de 30 Go à 10 Go
REMARQUE: Les étapes suivantes sont principalement tirées de la solution de @bill:
Arrêtez l'instance que vous souhaitez redimensionner (A).
Créez un instantané du volume VA puis créez un volume "SSD à usage général" à partir de cet instantané. Ce volume, nous l'appellerons VASNAP.
Faites tourner une nouvelle instance avec Amazon Linux, nous appellerons cette instance C. Nous allons simplement utiliser cette instance pour copier le contenu de VASNAP vers VB. Nous pourrions probablement également utiliser l'instance A pour effectuer ces étapes, mais je préfère le faire sur une machine indépendante.
Attachez les volumes suivants à l'instance C./dev/xvdf pour VB./dev/xvdg pour VASNAP.
Redémarrez l'instance C.
Connectez-vous à l'instance C via SSH.
Créez ces nouveaux répertoires:
mkdir /source /target
mkfs.ext4 /dev/xvdf1
Si vous n'obtenez aucune erreur, passez à l'étape 11. Sinon, si vous n'avez pas /dev/xvdf1
, vous devez créer la partition en procédant comme suit: i-vii:
i) Si /dev/xvdf1
n'existe pas pour une raison quelconque, vous devez le créer. Entrez d'abord:
Sudo fdisk /dev/xvdf
.
ii) Essuyez le disque en entrant: wipefs
iii) Créez une nouvelle partition en entrant: n
iv) Entrez p
pour créer la partition principale
v) Continuez à appuyer sur Entrée pour continuer avec les paramètres par défaut.
vi) Lorsqu'il demande à nouveau une commande, entrez w
pour écrire les modifications et quittez.
vii) Vérifiez que vous disposez du /dev/xvdf1
partitionner en faisant: lsblk
Vous devriez voir quelque chose comme:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 250G 0 disk
└─xvda1 202:1 0 250G 0 part
xvdf 202:80 0 80G 0 disk
└─xvdf1 202:81 0 80G 0 part
xvdg 202:96 0 250G 0 disk
└─xvdg1 202:97 0 250G 0 part
Passez maintenant à l'étape 11.
mount -t ext4 /dev/xvdf1 /target
e2label /dev/xvdf1 /
mount -t ext4 /dev/xvdg1 /source
rsync -vaxSHAX /source/ /target
Remarque: il n'y a pas de "/" suivant "/ cible". En outre, il peut y avoir quelques erreurs sur les liens symboliques et les attr, mais le redimensionnement a toujours réussi
umount /target
De retour dans la console AWS: Dettach VB de l'instance C, et également dettach VA de A.
Attachez le nouveau volume de taille (VB) à l'instance comme: "/ dev/xvda"
L'instance de démarrage A, maintenant son périphérique racine fait 10 Go :)
Supprimez les instances B et C, ainsi que tous les volumes sauf VB, qui est désormais le volume racine de l'instance A.
Les étapes suivantes ont fonctionné pour moi
Étape 1. Créez un instantané du volume racine ebs et créez un nouveau volume à partir d'un instantané (appelons cette copie de volume)
Étape 2. Créez une nouvelle instance avec le volume racine ebs avec la taille souhaitée. (appelons ce volume redimensionné) Ce volume ebs aura la partition correcte pour le démarrage. (La création d'un nouveau volume ebs à partir de zéro n'a pas fonctionné pour moi)
Étape 3. Attachez volume-resize et volume-copy à une instance.
Étape 4. Formatez le redimensionnement du volume.
Sudo fdisk -l
Sudo mkfs -t ext4 /dev/xvdf1
Remarque: assurez-vous que le volume de la partition est entré /dev/xvdf1
ne pas /dev/xvdf
Étape 5. Montez volume-resize et volume-copy mkdir/mnt/copy mkdir/mnt/resize
Sudo mount /dev/xvdh1 /mnt/copy
Sudo mount /dev/xvdf1 /mnt/resize
Étape 6. Copiez les fichiers
rsync -ax /mnt/copy/ /mnt/resize
Étape 7. Assurez-vous que e2label est identique au volume racine
Sudo E2label /dev/xvdh1 > cloudimg-rootfs
Sudo E2label /dev/xvdf1 cloudimg-rootfs
Étape 8. Mettez à jour grub.conf sur la copie de volume pour correspondre au nouveau volume udid
Recherchez et remplacez uudid dans /boot/grub/grub.cfg
ubuntu@server:~/mnt$ Sudo blkid
/dev/xvdh1: LABEL="cloudimg-rootfs" UUID="1d61c588-f8fc-47c9-bdf5-07ae1a00e9a3" TYPE="ext4"
/dev/xvdf1: LABEL="cloudimg-rootfs" UUID="78786e15-f45d-46f9-8524-ae04402d1116" TYPE="ext4"
Étape 9. Démonter les volumes
Étape 10. Attachez un nouveau volume ebs redimensionné à l'instance/dev/sda1
L'article ci-dessous est un bon didacticiel simple sur la façon de réduire la taille du volume EBS. Il contient un guide étape par étape et des captures d'écran faciles à suivre.
Voici une approche alternative;
Attachez et montez l'ancien volume EBS sur une instance EC2 en cours d'exécution. Si vous souhaitez copier un volume de démarrage, il est préférable de le faire sur une autre instance, avec l'ancien volume monté en tant que données, et non avec le volume utilisé comme système actif.
Créez un nouveau volume EBS de la taille souhaitée.
Attachez le nouveau volume à l'instance et formatez (soigneusement) un nouveau système de fichiers dessus (par exemple, en utilisant mkfs). Montez-le.
Copiez l'ancien contenu du système de fichiers de l'ancien volume vers le nouveau volume:
rsync -vaxSHAX /oldvol/ /newvol/
Démontez le nouveau volume et détachez-le de l'instance.
Si vous copiez le système de fichiers racine, alors:
Créez un instantané EBS du nouveau volume.
Enregistrez l'instantané en tant que nouvelle AMI.