Categories
General Guide

Gestionar discos en Amazon Web Services (AWS)


Si trabajamos con Amazon Web Services, uno de los servicios que usaremos sin duda es EC2. Con EC2 podremos crear instancias (máquinas virtuales) con gran facilidad, y estas, están directamente ligadas al uso de volúmenes EBS (discos virtuales).
Una de las dudas con las que me encuentro a menudo usando instancias EC2 con volúmenes EBS, es elegir bien la capacidad que asignar al disco basándome en el uso que le voy a dar a esa instancia. Si que es verdad que podemos mas a o menos calcularlo, pero a veces nos podemos quedar cortos, ya que nunca sabes si en un futuro vas a implementar algo que pueda requerir mucho espacio… como una base de datos que puede ir creciendo.
Para evitar esto, y no tener que asignar muchísimo espacio que no vamos a usar a corto plazo (ya que el coste esta directamente relacionado con la capacidad asignada a un disco EBS) la mejor solución es usar LVM (Logical Volume Manager).
A continuación voy a explicar los pasos a seguir, mas comunes, para gestionar volúmenes EBS sobre una instancia EC2 ya creada.

CREAR UN VOLUMEN EBS
1. Accedemos a la consola de AWS y vamos al apartado “ELASTIC BLOCK STORE” > “Volumes”
2. Pulsamos en “Create Volume”
3. Asignamos la capacidad del disco EBS, la zona de disponibilidad, no seleccionamos ninguna snapshot y dejamos el tipo de volumen en “Standard”
4. En pocos segundos ya tendremos nuestro disco creado y disponible para usarlo donde queramos
ADJUNTAR UN VOLUMEN EBS
1. Accedemos a la consola de AWS y vamos al apartado “ELASTIC BLOCK STORE” > “Volumes”
2. Seleccionamos el disco que queremos adjuntar, pulsamos en “More…” y seleccionamos “Attach Volume”
3. En la siguiente ventana, seleccionamos la instancia a la que queremos adjuntar el disco y pulsamos “Yes, Attach”
MONTAR UN VOLUMEN EBS QUE HEMOS ADJUNTADO (EBS CREADO DE CERO, SIN DATOS)
1. Accedemos mediante SSH a la instancia.
2. Buscamos el nombre del disco para el sistema (si es el primera, seguramente serà “xvdj”):

fidsk -l

3. Usamos la herramienta FDISK con el disco:

fdisk /dev/xvdj

4. Creamos una nueva partición usando toda la capacidad, para ello seguimos esos pasos en la aplicación:

[n --> p --> 1 --> ENTER --> ENTER --> w]

5. Formateamos el disco con el sistema de ficheros que queremos (en este caso, EXT4):

mkfs -t ext4 /dev/xvdj1

6. Creamos el directorio donde montaremos el disco (en este caso uno para backups):

mkdir /mnt/backups

7. Montamos el disco en el directorio (en este caso lo hacemos con la partición 1 que hemos creado en este disco, que es la unica que tiene):

mount /dev/xvdj1 /mnt/backups

8. Verificamos que se ha comentado correctamente:

mount -l

9. Añadimos el montaje del disco en el fichero FSTAB para que se monte al inicio del sistema:

echo "/dev/xvdj1 /mnt/backups auto defaults,nobootwait 0 0" >> /etc/fstab

MONTAR UN VOLUMEN EBS QUE HEMOS ADJUNTADO (EBS EXTRAIDO DE OTRA INSTANCIA, CON DATOS)
1. Accedemos mediante SSH a la instancia.
2. Buscamos el nombre del disco para el sistema (en este veremos que es “xvdj”):

fdisk -l

4. Creamos el directorio donde montaremos el disco (en este caso uno que ya contiene backups):

mkdir /mnt/backups

5. Montamos el disco en el directorio (en este caso lo hacemos con la partición 1, que es la unica que tiene):

mount /dev/xvdj1 /mnt/backups

6. Verificamos que se ha comentado correctamente:

mount -l

7. Añadimos el montaje del disco en el fichero FSTAB para que se monte al inicio del sistema:

echo "/dev/xvdj1 /mnt/backups auto defaults,nobootwait 0 0" >> /etc/fstab

QUITAR UN VOLUMEN EBS DE UNA INSTANCIA EC2
1. Buscamos donde esta montado el disco:

df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvde1 985G 552G 383G 60% /
tmpfs 17G 0 17G 0% /dev/shm
/dev/xvdj 1008G 437G 521G 46% /mnt/backups

2. Desmontamos el disco del directorio (nos aseguramos previamente que no se esta usando ni nos encontramos dentro del directorio):

umount /mnt/backups

3. Accedemos a la consola de AWS y vamos al apartado “ELASTIC BLOCK STORE” > “Volumes”
4. Seleccionamos el disco que queremos quitar, pulsamos en “More…” y seleccionamos “Dettach Volume”
EXPANDIR EL DISCO BASE DE UNA INSTANCIA
Si tenemos una instancia con x GB de disco, y queremos ampliar el disco base, simplemente creamos una AMI de la instancia, y creamos una nueva instancia con esa AMI. En el proceso de creación aumentaremos la capacidad del disco, pero una vez creada, si accedemos a la instancia veremos que seguimos teniendo la misma capacidad en el disco montado en la raíz, para poder acceder al resto de capacidad deberemos crear una sola partición y redimensionarla, siguiendo los pasos que dejo a continuación
1. Accedemos mediante SSH a la instancia.
2. Usamos la herramienta FDISK con el disco:

fdisk /dev/xvde

3. Eliminamos todas las particiones (si existen):

[d --> 1]

4. Creamos una nueva partición usando toda la capacidad, para ello seguimos esos pasos en la aplicación:

[n --> p --> 1 --> ENTER --> ENTER --> a --> 1 --> w]

5. Reiniciamos la instancia:

reboot

6. Accedemos mediante SSH a la instancia de nuevo, ya que se habrá cortado la conexión reiniciando.
7. Nos aseguramos de que la partición 1 del disco está montada en la raíz del sistema :

cat /etc/fstab
/dev/xvde1 / ext4 defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0

8. Finalmente redimensionamos la partición:

resize2fs /dev/xvde

AÑADIR UN DISCO NUEVO CON LVM
1. Seguimos los pasos de la guía “CREAR UN VOLUMEN EBS” y “ADJUNTAR UN VOLUMEN EBS”
2. Accedemos mediante SSH a la instancia.
3. Buscamos el nombre del disco para el sistema (en este veremos que es “xvdj”):

fdisk -l

4. Instalamos LVM (si no lo tenemos instalado):

yum -y install lvm2

5. Cremos una partición usando todo el disco:

fdisk /dev/xvdj
[n --> p --> 1 --> ENT --> ENT --> w]

6. Inicializamos el volúmen físico para usar LVM:

pvcreate /dev/xvdj1

7. Vemos las características del volúmen físico que hemos inicializado:

pvdisplay

8. Creamos un grupo de volúmen para el disco y le llamamos “vgdatabase”:

vgcreate vgdatabase /dev/xvdj1

9. Vemos las características del grupo de volúmen que hemos creado:

vgdisplay

10. Creamos un volumen lógico con el 100% del espacio del grupo de volúmen y le llamamos “lvdatabase”:

lvcreate -l 100%FREE -n lvdatabase vgdatabase

11. Formatemos el disco con el sistema de ficheros EXT4:

mkfs.ext4 /dev/mapper/vgdatabase-lvdatabase

12. Creamos el directorio donde montaremos el disco:

mkdir /mnt/mysql

13. Montamos el disco:

mount /dev/mapper/vgdatabase-lvdatabase /mnt/mysql

14. Añadimos el montaje del disco en el fichero FSTAB para que se monte al inicio del sistema:

echo "/dev/mapper/vgdatabase-lvdatabase /mnt/mysql ext4 defaults,noatime,nodiratime 0 0" >> /etc/fstab

EXPANDIR UN DISCO CON LVM CON OTRO DISCO
1. Seguimos los pasos de la guía “CREAR UN VOLUMEN EBS” y “ADJUNTAR UN VOLUMEN EBS”
2. Accedemos mediante SSH a la instancia.
3. Buscamos el nombre del disco para el sistema (en este veremos que es “xvdk”):

fidsk -l

4. Cremos una partición usando todo el disco:

fdisk /dev/xvdk
[n --> p --> 1 --> ENT --> ENT --> w]

5. Inicializamos el volúmen físico para usar LVM:

pvcreate /dev/xvdk1

6. Extendemos el grupo de volumen “vgdatabase” (que hemos creado en el primer disco) con la partición 1 del disco que acabamos de añadir:

vgextend vgdatabase /dev/sdk1

7. Extendemos el volúmen lógico:

lvextend -l +100%FREE /dev/vgdatabase/lvdatabase

8. Finalmente redimensionamos la partición:

resize2fs /dev/vgdatabase/lvdatabase

Leave a Reply

Your email address will not be published. Required fields are marked *