Comment puis-je créer une partition de swap sur Amazon EC2 avec un stockage éphémère?

8

C'est la sortie de df -k:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/xvda1            10317860   7059008   2734732  73% /
none                    847584         0    847584   0% /dev/shm
/dev/xvdb            153899044    192068 145889352   1% /mnt/ephemeral

J'utilise l'image de démarrage Centos EBS.

J'ai lu diverses questions à ce sujet mais elles disent de monter le nouveau lecteur. Mais je pense que ce lecteur est déjà monté à /dev/xvdb. Ai-je raison?

Puis-je simplement utiliser ceci:

mkswap -f /dev/xvdb
#add in /etc/fstab
/dev/xvdb       swap    swap    defaults        0       0
swapon /dev/xvdb

Est-ce que ça marchera?

Pandora
la source

Réponses:

8

/ dev / xvdb est en effet monté, vous devez vérifier si quelque chose y est stocké que vous souhaitez conserver, bien que conserver des éléments importants sur un lecteur éphémère soit vraiment une mauvaise idée.

Vous devrez démonter / dev / xvdb avant de faire quoi que ce soit avec.

Bien que vous puissiez

mkswap /dev/xvdb 

cela fera un espace d'échange de tout le lecteur éphémère, dont vous n'avez presque certainement pas besoin. De plus, si vous partitionnez votre swap, vous pouvez utiliser le reste du lecteur éphémère pour des choses comme le dossier tmp ou le stockage de sessions (si votre hôte est un serveur Web). Les pulsions éphémères sont très rapides, mais malheureusement pas très persistantes.

Quoi qu'il en soit, revenons à échanger des partitions!

Mieux vaut soit sfdisk comme Abhishek le mentionne, soit créer manuellement une partition de swap en utilisant fdisk:

fdisk /dev/xvdb
Press N to create a new partition
P for primary
1 for the first partition
Press Enter to accept the first location
Enter +xG where x is the size of the swapspace you want. I typically use twice the amount of RAM, but this is not a hard and fast rule
Enter T to change the type
Enter 82 for Linux Swap
Enter W to write the changes
Enter q to quit

Vous pouvez maintenant créer votre espace de swap avec

mkswap /dev/xvdb1

Et puis activez-le avec

swapon /dev/xvdb1

Un mot d'avertissement cependant, et je m'excuse si je suis "Enseigner à mamie à sucer des œufs" Mais comme son nom l'indique, une pulsion éphémère est ... eh bien, éphémère. Si vous arrêtez votre instance, vous devrez recréer votre partition de swap et l'activer. Pour cette raison, n'ajoutez pas votre espace de swap nouvellement créé à votre fstab.

Le redémarrage devrait cependant être correct.

GeoSword
la source
1
J'ai mis ce code de création de swap rc.local. est-ce que ça va. pour que le swap soit automatiquement créé à chaque démarrage
Pandora
1
Je ne voudrais pas. Si l'hôte redémarre, l'espace de swap sera toujours là, il n'est donc pas nécessaire de le recréer. Si l'hôte se termine (s'arrête) et est ensuite redémarré, le lecteur éphémère que vous aviez auparavant ne sera plus disponible, de toute façon, vous devrez créer l'espace de swap à partir de zéro.
GeoSword
L'avantage de recréer à chaque fois est que vous disposez d'un environnement stable qui ne nécessite pas d'intervention manuelle pour redémarrer. Juste une pensée; Je ne sais pas s'il faut du temps pour recréer le swap ou non (et si c'est le cas, peut-être qu'une partition plus petite pourrait être utilisée).
Brian C
3

J'ai créé un script qui peut être utile pour créer un échange sur des appareils éphémères. Il utilise lvm pour créer le volume d'échange et crée également un volume qui pourrait être utile en tant que / tmp. Vous pouvez utiliser cloud-init pour le déclencher.

bootcmd:
 - [ cloud-init-per, once, mk-eph, /usr/local/sbin/mk-eph.sh]

# Filesystem setup
fs_setup:
 - label: 'tmp'
   filesystem: 'xfs'
   device: '/dev/ephemeral/tmp'
   partition: 'auto'

mounts:
 - [ /dev/ephemeral/tmp, /tmp, auto, "defaults,nobootwait" ]
 - [ ephemeral0, null ]

runcmd:
 - [ chmod, 1777, /tmp ]
Taavi Tuisk
la source
2

Démontez d'abord votre stockage épermal et remontez comme ci-dessous

  umount /dev/xvdb # in case it is already mounted
  sfdisk /dev/xvdb << EOF
  ,1024,82
  ,
  ;
  ;
  EOF
  mkswap /dev/xvdb1 && swapon /dev/xvdb1
  mkfs.xfs -f /dev/xvdb2 && mount /dev/xvdb2 /mnt
Abhishek Anand Amralkar
la source
comment puis-je entrer les lignes comme 1024. , ;;. je veux dire dois-je entrer ligne par ligne de tout copier puis coller. Aussi combien faites-vous le lecteur de swap. puis-je faire 10 Go
Pandora
2
Ce que fait ce code doit être documenté. Il fait un échange et une partition XFS de tailles particulières, et on ne sait pas comment ces commandes persisteraient lors des redémarrages.
Mark Stosberg