Je ne sais pas d'une façon que vous pouvez 'restaurer' un joint de volume, mais la façon dont je voudrais faire est de créer un volume à partir de l'instantané, puis retirez l'original et de fixer la nouvelle.
Si vous utilisez une instance EC2, et vous voulez le restaurer à l'état capturés dans un instantané antérieur, alors vous devez arrêter de l'instance, de le détacher de son volume actuel, créer un nouveau volume de la capture d'écran, fixez le nouveau volume à votre exemple, et redémarrer votre instance. En outre, il y a quelques subtilités autour de la spécification de la zone de disponibilité du nouveau volume, et le nom de l'appareil lors du détachement/re-fixer le volume.
La logique pourrait plus facile de voir si vous le faites à partir de la ligne de commande, au lieu de partir de l'AWS d'une INTERFACE web.
Le script bash suivant est convient pas pour une utilisation en production, car elle est dépourvue de toute vérification des erreurs et il utilise juste sleep à la place de bureaux de vote pour s'assurer AWS commandes se sont terminées. Mais il n'effectuer toutes ces étapes avec succès:
#!/bin/bash
set -e
# IN PARAMS
INSTANCE_ID=<YOUR_INSTANCE_ID_HERE>
SNAPSHOT_ID=<YOUR_SNAPSHOT_ID_HERE>
# OUT PARAMS
VOLUME_ID=
# begin execution
echo "Gathering information about the instance"
DEVICE_NAME=`ec2-describe-instance-attribute ${INSTANCE_ID} --block-device-mapping | awk '{print $2}'`
OLD_VOLUME_ID=`ec2-describe-instance-attribute ${INSTANCE_ID} --block-device-mapping | awk '{print $3}'`
echo "Found instance ${INSTANCE_ID} has volume ${OLD_VOLUME_ID} on device ${DEVICE_NAME}"
echo "Creating new volume from snapshot"
AVAILABILITY_ZONE=`ec2-describe-availability-zones --filter state=available | head -n 1 | awk '{print $2}'`
VOLUME_ID=`ec2-create-volume --availability-zone ${AVAILABILITY_ZONE} --snapshot ${SNAPSHOT_ID} | awk '{print $2}'`
echo "Created new volume: ${VOLUME_ID}"
sleep 20
echo "Stopping the instance"
ec2-stop-instances $INSTANCE_ID
sleep 20
echo "Detaching current volume"
ec2-detach-volume $OLD_VOLUME_ID --instance $INSTANCE_ID --device $DEVICE_NAME
sleep 20
echo "Attaching new volume"
ec2-attach-volume $VOLUME_ID --instance $INSTANCE_ID --device $DEVICE_NAME
sleep 20
echo "Starting the instance"
ec2-start-instances $INSTANCE_ID
wow ... merci pour cet! ... j'ai été cheque et il est fait de travail, à l'exception: ec2-début de l'instance et de l'ec2-stop-cas semble fonctionner maintenant que ec2start et ec2stop. Aussi, j'ai eu à préciser la région dans toutes les commandes --région depuis pour moi n'était pas celui par défaut. J'ai également découvert que je ne pouvais pas fixer les volumes d'instances qui ne sont pas dans la même zone de disponibilité, donc j'ai dû modifier le script pour utiliser la même zone de disponibilité de cette instance. Merci pour ces commentaires. Je fixe ec2-{start,stop}-exemple, qui devrait avoir été ec2-{start,stop}-instances. Mais vous avez raison: cela devrait également interroger et vérifier la zone de disponibilité. En fin de compte, j'ai écrit un script python qui gère ça, et utilise d'interrogation à la place du sommeil. Bash devient assez lourd. Comme je suis particulièrement frustré de ma tentative d'ajout d'un lien vers AWS CLI pour votre réponse, j'aimerais avoir votre avis sur cette méta-post dans le meta.stackoverflow.com/questions/319581/...
Pour remplacer un volume relié à une instance avec un nouveau volume créé à partir d'un instantané:
Créer un volume à partir de l'instantané dans la même zone de disponibilité de l'instance est dans (clic droit sur l'instantané et cliquez sur "créer un volume à partir de l'instantané")
Mieux pour arrêter l'instance afin d'éviter toute application de s'écraser. Attendre jusqu'à ce que l'instance est arrêtée.
Écrire exactement le nom d'appareil du volume d'origine (c'est écrit dans la console AWS sous les instances de vue ou des volumes de vue)
Détacher le vieux volume, le supprimer par la suite si vous n'en avez pas besoin.
Fixer le volume nouvellement créé (à partir de l'instantané) à l'instance avec le même nom de périphérique.
J'ai touché le script fourni par @algues d'utiliser aws cli et d'interrogation à la place du sommeil. Il ira chercher le dernier instantané de volume donné.
Faire un volume à partir de l'instantané de monter le volume sur un EC2 de la machine et de copier des fichiers à partir d'elle.
Vérifier l'EC2 machine.
Choisissez un exemple. EC2 onglet | CAS | Cas.
Faire une note de l'EC2 de la machine de la zone de disponibilité.
Créer un volume.
Trouver le snapshot que vous voulez copier des fichiers depuis et cochez la case. ELASTIC BLOCK STORE | Instantanés
Cliquez sur le bouton Create Volume et de remplir les champs.
o La Taille doit être plus grand que la taille des instantanés (gratuit micro-instances obtenir une 8 GO de volume).
o La Zone de Disponibilité doit être le même que l'EC2 de la machine.
o L'Instantané est déjà sélectionné, plus ou moins comme snap12345678 - mon description.
Cliquez sur Oui, le bouton Créer. Une nouvelle ligne apparaît dans la table des Volumes. ELASTIC BLOCK STORE | Volumes
Attacher le volume.
Cliquez sur relier bouton de Volume et de remplir les champs.
Le Volume valeur est déjà là.
Choisir le nom de votre machine i-12345678 (course à pied) de la liste déroulante des Instances.
Les Appareils de terrain montre que la première disponible nom de l'appareil, comme /dev/sdf. Personne ne dérange pas de modifier cette valeur?
Cliquez sur Oui, le bouton Créer. Un nouveau dispositif apparaît comme par magie sur l'EC2 machine.
Fermer la console AWS.
Copypasta à partir de techrepublic.com/blog/the-enterprise-cloud/... /dev/sdf "Personne ne dérange pas de modifier cette valeur?" - Oui, si je remplace la racine du volume, je l'ai mis à /dev/sda1 (ce qui était mon racine de réglage du volume)
Je ne sais pas d'une façon que vous pouvez 'restaurer' un joint de volume, mais la façon dont je voudrais faire est de créer un volume à partir de l'instantané, puis retirez l'original et de fixer la nouvelle.
OriginalL'auteur Jason Haley
Si vous utilisez une instance EC2, et vous voulez le restaurer à l'état capturés dans un instantané antérieur, alors vous devez arrêter de l'instance, de le détacher de son volume actuel, créer un nouveau volume de la capture d'écran, fixez le nouveau volume à votre exemple, et redémarrer votre instance. En outre, il y a quelques subtilités autour de la spécification de la zone de disponibilité du nouveau volume, et le nom de l'appareil lors du détachement/re-fixer le volume.
La logique pourrait plus facile de voir si vous le faites à partir de la ligne de commande, au lieu de partir de l'AWS d'une INTERFACE web.
Le script bash suivant est convient pas pour une utilisation en production, car elle est dépourvue de toute vérification des erreurs et il utilise juste
sleep
à la place de bureaux de vote pour s'assurer AWS commandes se sont terminées. Mais il n'effectuer toutes ces étapes avec succès:J'ai également découvert que je ne pouvais pas fixer les volumes d'instances qui ne sont pas dans la même zone de disponibilité, donc j'ai dû modifier le script pour utiliser la même zone de disponibilité de cette instance.
Merci pour ces commentaires. Je fixe ec2-{start,stop}-exemple, qui devrait avoir été ec2-{start,stop}-instances. Mais vous avez raison: cela devrait également interroger et vérifier la zone de disponibilité. En fin de compte, j'ai écrit un script python qui gère ça, et utilise d'interrogation à la place du sommeil. Bash devient assez lourd.
Comme je suis particulièrement frustré de ma tentative d'ajout d'un lien vers AWS CLI pour votre réponse, j'aimerais avoir votre avis sur cette méta-post dans le meta.stackoverflow.com/questions/319581/...
OriginalL'auteur algal
Pour remplacer un volume relié à une instance avec un nouveau volume créé à partir d'un instantané:
OriginalL'auteur OK1
J'ai touché le script fourni par @algues d'utiliser aws cli et d'interrogation à la place du sommeil. Il ira chercher le dernier instantané de volume donné.
Si vous souhaitez rester à jour avec ce script, ou de contribuer:
https://github.com/karimtabet/ebs_snapshot_recovery
OriginalL'auteur Karim Tabet
Faire un volume à partir de l'instantané de monter le volume sur un EC2 de la machine et de copier des fichiers à partir d'elle.
Vérifier l'EC2 machine.
Créer un volume.
o La Taille doit être plus grand que la taille des instantanés (gratuit micro-instances obtenir une 8 GO de volume).
o La Zone de Disponibilité doit être le même que l'EC2 de la machine.
o L'Instantané est déjà sélectionné, plus ou moins comme snap12345678 - mon description.
Attacher le volume.
/dev/sdf
"Personne ne dérange pas de modifier cette valeur?" - Oui, si je remplace la racine du volume, je l'ai mis à/dev/sda1
(ce qui était mon racine de réglage du volume)OriginalL'auteur Vinay Verma