Cómo aumentar el tamaño de un disco en una instancia en ejecución en Amazon EC2

13

Tengo una instancia en ejecución de una configuración de servidor EC 2 con Ubunto. ¿Cuál es la mejor manera de aumentar el tamaño del disco sin ningún tiempo de inactividad y un riesgo mínimo?

Leyendo las guías, una forma sería crear un nuevo disco, migrar datos, apagar el disco de intercambio de instancias y volver a encenderlo. Este enfoque parece un poco arriesgado requerirá algún tiempo de inactividad. Me pregunto si hay un mejor enfoque?

googletorp
fuente

Respuestas:

14

Amazon AWS acaba de lanzar (el 13 de febrero de 2017) una nueva característica que permite cambiar el tamaño de un volumen EBS.

fuente: https://aws.amazon.com/blogs/aws/amazon-ebs-update-new-elastic-volumes-change-everything/

Esto permite aumentar el tamaño de un volumen EBS en una instancia existente, mientras se está ejecutando.

Es importante tener en cuenta que al cambiar el tamaño del volumen, no cambia el tamaño del sistema de archivos en el volumen (para la mayoría de los sistemas de archivos). Es posible que se requieran pasos adicionales (dependiendo del sistema de archivos) en el propio sistema operativo. Por ejemplo, un sistema resizefsde ext4archivos utilizado por la mayoría de los sistemas operativos Linux en la actualidad.

La documentación completa de AWS que describe el proceso se puede encontrar en http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html

En algunos casos, el dispositivo de bloque tiene particiones asignadas, y solo entonces una (o más) de las particiones incluye un sistema de archivos. En este caso, la partición deberá redimensionarse primero, y solo luego el sistema de archivos. Este proceso también se describe en la documentación .

La nueva función de cambio de tamaño "en línea" descrita en el blog solo se aplica a las instancias de generación actuales, y hay otras consideraciones y limitaciones que deben verificarse antes de intentar cambiar el tamaño del volumen.

Evgeny
fuente
Antes de cambiar el tamaño del sistema de archivos, también deberá cambiar el tamaño de la partición subyacente, que realmente bloquea las particiones físicas para un cambio de tamaño en caliente.
Tensibai
@Tensibai lo siento, no entiendo lo que significa "bloquear particiones físicas para un cambio de tamaño en caliente". ¿Quiere decir que modificar el tamaño del volumen utilizando las API de AWS bloqueará las escrituras / lecturas en el volumen?
Evgeny
No, quiero decir que el disco será más grande, pero la partición seguirá siendo la misma, debe usar fdiskpara cambiar su tamaño, con respecto a la partición raíz, generalmente no puede escribir la tabla de particiones del disco mientras está montada, y No puedes desmontarlo. Tendrás que reiniciar en un momento :)
Tensibai
Correcto, si usa varias particiones antes de agregar la capa del sistema de archivos, entonces las particiones deberán redimensionarse primero. Gracias, intentaré agregarlo a la respuesta citando alguna guía sobre cómo se hace.
Evgeny
La pregunta mencionada sin tiempo de inactividad. Sin embargo, para cambiar el tamaño de un volumen raíz, ¿parece que necesitaría eliminar la instancia para realizar este paso?
Chris Stryczynski
2

Lo que hago (y eso no responde exactamente a su pregunta) es como sigue:

  1. Cree un volumen EBS y adjúntelo al documento de instancia aquí
  2. Vuelva a escanear los buses scsi echo '- - -' > /sys/bus/scsi/devices/host1/scsi_host/host1/scan(puede que tenga que adaptar el número de host)
  3. Cree un volumen físico con pvcreateel nuevo disco encontrado ( fdisk -lpara enumerar todos los discos)
  4. Cree un grupo de volúmenes y luego un volumen lógico ( vgcreatey lvcreate)
  5. Formatee el volumen lógico con su sistema de archivos deseado
  6. tar el punto de montaje de destino para restaurarlo.
  7. Monta este volumen donde necesites un nuevo espacio.
  8. Restaura el alquitrán en este espacio recién montado.

Los pasos 6 y 8 son opcionales si usa un nuevo espacio antes de instalar algo. Si desea reemplazar un directorio existente, obviamente debe evitar que se escriba algo entre el final del archivo y la restauración.

Puede repetir los pasos del 4 al 8 para diferentes puntos de montaje, esto permite ampliar el espacio necesario y luego cambiar el tamaño de esos volúmenes en línea sin interrupción.

Tensibai
fuente
0

Escalado del almacenamiento del sistema de archivos de tiempo de inactividad cero ZFS en AWS (o en otro lugar)

upsize

  1. Instale ZFS en EC2.

    http://serverascode.com/2016/09/05/aws-zfs-user-data.html

  2. Cree un zpool para sus datos masivos con un volumen EBS.
  3. Agregue otro EBS para obtener más almacenamiento en bloque. (o configure el grupo autoexpand = true y solo aumente su EBS)
  4. Agregue el nuevo EBS a su zpool para que el espacio esté disponible. (a menos que haya utilizado autoexpand y haya aumentado el tamaño de EBS)

Reducir el tamaño

  1. Cree un nuevo zpool en un nuevo EBS lo suficientemente grande como para contener los datos reducidos. (no necesita ser montado todavía, o incluso en el mismo EC2)
  2. instantánea del viejo zpool demasiado grande
  3. zfs-envía la instantánea al nuevo zpool
  4. promover la instantánea recibida en el nuevo grupo y montarla
  5. destruir la vieja piscina
  6. destruir el EBS del viejo grupo
Jeremy
fuente
0

Después de cambiar el tamaño del volumen de EBS, esto es lo que acabo de ejecutar cuando necesitaba expandir un grupo de ZFS:

parted -l # Get the list of partitions 
parted /dev/xvdf rm 9 # Remove the buffer partition
parted /dev/xvdf resizepart 1 100% # Resize the partition
zpool online -e <zfs partition name> /dev/xvdf # Expand the zpool and the filesystem it holds
Michael Pereira
fuente