web-dev-qa-db-fra.com

Comment ajoutez-vous un échange à une instance EC2?

J'exécute actuellement une micro-instance ec2 et je constate que l'instance manque parfois de mémoire.

Outre l'utilisation d'une taille d'instance plus grande, que pouvez-vous faire d'autre?

278
ajtrichards

Un correctif à ce problème consiste à ajouter un espace swap (c'est-à-dire paging) à l'instance.

La pagination fonctionne en créant une zone sur votre disque dur et en l'utilisant comme mémoire supplémentaire. Cette mémoire est beaucoup plus lente que la mémoire normale, bien qu'elle soit encore plus disponible.

Pour ajouter cet espace supplémentaire à votre instance, vous tapez:

Sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
Sudo /sbin/mkswap /var/swap.1
Sudo chmod 600 /var/swap.1
Sudo /sbin/swapon /var/swap.1

Si vous avez besoin de plus de 1024, changez-le.

Pour l'activer par défaut après le redémarrage, ajoutez cette ligne à/etc/fstab:

/var/swap.1   swap    swap    defaults        0   0
549
ajtrichards

L'échange doit avoir lieu sur le disque (éphémère) de stockage d'instance et non sur un périphérique EBS. L’échange causera beaucoup de IO et augmentera les coûts sur EBS. EBS est également plus lent que le magasin d'instance et le magasin d'instance est gratuit avec certains types d'instances EC2 .

Il sera généralement monté sur/mnt mais s'il n'est pas exécuté

Sudo mount /dev/xvda2 /mnt

Pour créer ensuite un fichier d'échange sur ce périphérique, procédez comme suit pour un fichier d'échange de 4 Go.

Sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=4096

Assurez-vous qu'aucun autre utilisateur ne peut voir le fichier d'échange

Sudo chown root:root /mnt/swapfile
Sudo chmod 600 /mnt/swapfile

Marque et drapeau comme échange

Sudo mkswap /mnt/swapfile
Sudo swapon /mnt/swapfile

Ajoutez/assurez-vous que les éléments suivants sont dans votre/etc/fstab

/dev/xvda2      /mnt    auto    defaults,nobootwait,comment=cloudconfig 0   2
/mnt/swapfile swap swap defaults 0 0

enfin activer l'échange

Sudo swapon -a
211
David

Après avoir appliqué les étapes mentionnées par ajtrichards, vous pouvez vérifier si votre instance de niveau gratuit Amazon utilise swap à l'aide de cette commande.

cat /proc/meminfo

résultat:

ubuntu@ip-172-31-24-245:/$ cat /proc/meminfo
MemTotal:         604340 kB
MemFree:            8524 kB
Buffers:            3380 kB
Cached:           398316 kB
SwapCached:            0 kB
Active:           165476 kB
Inactive:         384556 kB
Active(anon):     141344 kB
Inactive(anon):     7248 kB
Active(file):      24132 kB
Inactive(file):   377308 kB
Unevictable:           0 kB
Mlocked:               0 kB

SwapTotal: 1048572 kB

SwapFree: 1048572 kB

Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        148368 kB
Mapped:            14304 kB
Shmem:               256 kB
Slab:              26392 kB
SReclaimable:      18648 kB
SUnreclaim:         7744 kB
KernelStack:         736 kB
PageTables:         5060 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1350740 kB
Committed_AS:     623908 kB
VmallocTotal:   34359738367 kB
VmallocUsed:        7420 kB
VmallocChunk:   34359728748 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      637952 kB
DirectMap2M:           0 kB
42
HimalayanCoder

Vous pouvez ajouter un swap de 1 Go à votre instance avec les commandes suivantes:

Sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
Sudo mkswap /swapfile
Sudo swapon /swapfile

Pour l'activer par défaut après le redémarrage, ajoutez cette ligne à /etc/fstab:

/swapfile swap swap defaults 0 0
38
David Levesque

Si vous êtes sur t2 instances (t2.micro, t2.medium, t2.small), vous ne disposez d'aucun stockage éphémère ou instance. Il vous suffit donc de créer votre échange dans EBS qui, selon votre cas d'utilisation, peut ne pas être une bonne idée. Sinon, suivez la réponse de @David et créez votre échange sur le stockage éphémère pour éviter de payer les coûts EBS.

Plus d'infos: http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html Il existe un tableau indiquant le volume de stockage éphémère que vous obtenez pour chaque type d'instance.

15
Ali

Vous pouvez créer un espace d'échange en procédant comme suit: Nous créons ici un échange à /home/

  1. dd if=/dev/zero of=/home/swapfile1 bs=1024 count=8388608
    Ici, le compte est le nombre de kilo-octets d'espace d'échange.

  2. mkswap /home/swapfile1

  3. vi /etc/fstab
    entrez:
    /home/swapfile1 swap swap defaults 0 0

  4. courir:
    swapon -a

8
minhas23

Nous pouvons ajouter de l'espace d'échange sur n'importe quel serveur

créer un fichier en utilisant la commande dd

 #dd if=/dev/zero of=/swapfile bs=1M count=2048
                    or
 #dd if=/dev/zero of=/swapfile bs=1024M count=2

bs est blocksize et nombre fait référence à taille en Mo ou Go

on peut utiliser l'inverse

Après la création, modifiez l'autorisation du fichier:

 #chmod 600 /swapfile 

Ensuite, fait le fichier:

 #mkswap /swapfile 

Activez ensuite le fichier d'échange avec la commande swapon:

 #swapon  /swapfile 

Vérifiez avec la commande libre si l'échange est activé ou non:

 #free -h
 #swapon -s
4
Javeed Shakeel

Essayez swapspace http://pqxx.org/development/swapspace/

La plupart des distributions l'ont emballé.

Sur EC2, vous voudrez peut-être remplacer "swappath" par un disque/mnt ou high iops.

1
rdoroshenko

Utiliser la solution de stockage d'instance de David a tout d'abord fonctionné pour moi (sur un m5d.2xlarge). Cependant, après avoir arrêté l'instance EC2 et l'avoir réactivée, je ne pouvais plus me connecter à l'instance.

Les journaux d'instance ont indiqué: "Vous êtes en mode d'urgence. Après vous être connecté, tapez" journalctl -xb "pour afficher les journaux système," reboot systemctl "pour redémarrer," systemctl par défaut "ou" exit "pour démarrer en mode par défaut. Appuyez sur Entrée. pour la maintenance"

Au lieu de cela, j'ai suivi les instructions AWS dans ce lien et tout fonctionnait parfaitement, même après avoir désactivé et réactivé l'instance.

https://aws.Amazon.com/premiumsupport/knowledge-center/ec2-memory-swap-file/

Sudo dd if=/dev/zero of=/swapfile bs=1G count=4

Sudo chmod 600 /swapfile

Sudo mkswap /swapfile

Sudo swapon /swapfile

Sudo swapon -s

Sudo vi /etc/fstab
/swapfile swap swap defaults 0 0
0
DaveJay