Aucune des autres solutions ne fonctionnera si le volume est utilisé comme périphérique racine (amorçable).
Le disque nouvellement créé ne contient pas la partition de démarrage, il faudrait donc que GRUB soit installé et que certains indicateurs soient correctement configurés avant qu'une instance puisse l'utiliser comme volume racine.
Mon (à partir d'aujourd'hui, travaillant ) solution 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 la VA de 30 Go à, disons, 10 Go
- Créez une nouvelle instance ec2, B, avec le même système d'exploitation que l'instance A. En tant que stockage, choisissez un volume du même type que VA, mais avec une taille de 10 Go. (ou quelle que soit votre taille cible). Nous avons donc maintenant une instance B qui utilise ce nouveau volume (appelons-le VB) comme volume racine.
- Une fois la nouvelle instance (B) en cours d'exécution. Arrêtez-le et détachez son volume racine (VB).
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
- Formatez la partition principale de VB avec un système de fichiers ext4:
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) Entrée 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 avez la /dev/xvdf1
partition 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.
- Montez-le dans ce répertoire:
mount -t ext4 /dev/xvdf1 /target
- Ceci est très important, le système de fichiers a besoin d'un e2label pour Linux pour le reconnaître et le démarrer, utilisez "e2label / dev / xvda1" sur une instance active pour voir ce que cela devrait être, dans ce cas, le label est: "/"
e2label /dev/xvdf1 /
- Montez VASNAP sur / source:
mount -t ext4 /dev/xvdg1 /source
- Copiez le contenu:
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 VB:
umount /target
De retour dans AWS Console: Dettach VB de l'instance C, et également dettach VA de A.
Attachez le nouveau volume dimensionné (VB) à l'instance comme: "/ dev / xvda"
L'instance de démarrage A, maintenant son périphérique racine fait 10 Go :)
Supprimez les deux instances B et C, ainsi que tous les volumes sauf VB, qui est désormais le volume racine de l'instance A.