¿Cómo puedo crear una partición de intercambio en Amazon EC2 con almacenamiento efímero?

8

Esta es la salida 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

Estoy usando la imagen de arranque Centos EBS.

He leído varias preguntas sobre esto, pero me dicen que monte la nueva unidad. Pero creo que esa unidad ya está montada en /dev/xvdb. ¿Estoy en lo correcto?

¿Puedo usar esto?

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

¿Funcionará?

Pandora
fuente

Respuestas:

8

/ dev / xvdb de hecho está montado, debe verificar si hay algo almacenado allí que desee conservar, aunque mantener cosas importantes en una unidad efímera es una REALMENTE mala idea.

Deberá desmontar / dev / xvdb antes de hacer algo con él.

Mientras puedas

mkswap /dev/xvdb 

creará un espacio de intercambio de toda la unidad efímera, que seguramente no necesitará. Además, si particiona su intercambio, puede usar el resto de la unidad efímera para cosas como la carpeta tmp o almacenar sesiones (si su host es un servidor web). Las unidades efímeras son muy rápidas, pero lamentablemente no son muy persistentes.

De todos modos, de vuelta para intercambiar particiones!

Es mejor usar sfdisk como menciona Abhishek, o crear manualmente una partición de intercambio usando 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

Ahora puede crear su espacio de intercambio con

mkswap /dev/xvdb1

Y luego habilitarlo con

swapon /dev/xvdb1

Sin embargo, una palabra de advertencia, y me disculpo si estoy "enseñando a la abuela a chupar huevos". Pero como su nombre lo indica, un impulso efímero es ... bueno, efímero. Si alguna vez cierra su instancia, tendrá que volver a crear su partición de intercambio y habilitarla. Por esta razón, no agregue su espacio de intercambio recién creado a su fstab.

Sin embargo, reiniciar debería estar bien.

GeoSword
fuente
1
He puesto ese código de creación de intercambio rc.local. Eso esta bien. para que ese intercambio se cree automáticamente cada vez que comienza
Pandora
1
Yo no Si el host se reinicia, el espacio de intercambio seguirá estando allí, por lo que no es necesario volver a crearlo. Si el host finaliza (se apaga) y luego se reinicia, la unidad efímera que tenía antes ya no estará disponible, por lo que, de cualquier manera, tendrá que crear el espacio de intercambio desde cero.
GeoSword
La ventaja de recrearse cada vez es que tiene un entorno estable que no requiere intervención manual para reiniciar. Solo un pensamiento; no estoy seguro si toma mucho tiempo recrear el intercambio o no (y si lo hace, tal vez podría usarse una partición más pequeña).
Brian C
3

He creado un script que puede ser útil para crear intercambios en dispositivos efímeros. Utiliza lvm para crear el volumen de intercambio y también crea un volumen que podría ser útil como / tmp. Podrías usar cloud-init para activarlo.

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
fuente
2

Primero desmonte su almacenamiento epermal y vuelva a montar como se muestra a continuación

  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
fuente
¿Cómo ingreso las líneas como 1024? , ;;. Quiero decir, ¿debo ingresar línea por línea de copiar todo y luego pegar? Además, ¿cuánto estás haciendo la unidad de intercambio? puedo hacerlo 10GB
Pandora
2
Lo que hace este código debe documentarse. Realiza un intercambio y una partición XFS de tamaños particulares, y no está claro cómo estos comandos persistirán durante los reinicios.
Mark Stosberg