TigerZF
🌐Español

64.10. Zend_Service_Amazon_Ec2: Almacenamiento en bloques elástico (EBS)

Amazon Elastic Block Store (Amazon EBS) es un nuevo tipo de almacenamiento diseñado específicamente para instancias de Amazon EC2. Amazon EBS le permite crear volúmenes que pueden montarse como dispositivos por las instancias de Amazon EC2. Los volúmenes de Amazon EBS se comportan como dispositivos de bloque externos sin formatear. Tienen nombres de dispositivo asignados por el usuario y ofrecen una interfaz de dispositivo de bloque. Puede cargar un sistema de archivos sobre los volúmenes de Amazon EBS, o utilizarlos tal como usaría cualquier dispositivo de bloque.

Puede crear hasta veinte volúmenes de Amazon EBS de cualquier tamaño (desde un GiB hasta un TiB). Cada volumen de Amazon EBS puede adjuntarse a cualquier instancia de Amazon EC2 en la misma zona de disponibilidad o puede dejarse sin adjuntar.

Amazon EBS ofrece la posibilidad de crear instantáneas (snapshots) de sus volúmenes de Amazon EBS en Amazon S3. Puede utilizar estas instantáneas como punto de partida para nuevos volúmenes de Amazon EBS y proteger sus datos con una durabilidad a largo plazo.

64.10.1. Crear volúmenes e instantáneas de EBS

Ejemplo 64.36. Crear un nuevo volumen EBS

Crear un volumen EBS completamente nuevo requiere el tamaño y la zona en la que desea que se encuentre el volumen EBS.

createNewVolume devolverá un array con información sobre el nuevo volumen que incluye el volumeId, el tamaño, la zona, el estado y el createTime.

$ec2_ebs = new Zend_Service_Amazon_Ec2_Ebs('aws_key','aws_secret_key');
$return = $ec2_ebs->createNewVolume(40, 'us-east-1a');

Ejemplo 64.37. Crear un volumen EBS a partir de una instantánea

Crear un volumen EBS a partir de una instantánea requiere el snapshot_id y la zona en la que desea que se encuentre el volumen EBS.

createVolumeFromSnapshot devolverá un array con información sobre el nuevo volumen que incluye el volumeId, el tamaño, la zona, el estado, el createTime y el snapshotId.

$ec2_ebs = new Zend_Service_Amazon_Ec2_Ebs('aws_key','aws_secret_key');
$return = $ec2_ebs->createVolumeFromSnapshot('snap-78a54011', 'us-east-1a');

Ejemplo 64.38. Crear una instantánea de un volumen EBS

Crear una instantánea de un volumen EBS requiere el volumeId del volumen EBS.

createSnapshot devolverá un array con información sobre la nueva instantánea del volumen que incluye el snapshotId, el volumeId, el estado, el startTime y el progreso.

$ec2_ebs = new Zend_Service_Amazon_Ec2_Ebs('aws_key','aws_secret_key');
$return = $ec2_ebs->createSnapshot('volumeId');

64.10.2. Describir volúmenes e instantáneas de EBS

Ejemplo 64.39. Describir un volumen EBS

describeVolume le permite obtener información sobre un volumen EBS o un conjunto de volúmenes EBS. Si no se pasa nada, devolverá todos los volúmenes EBS. Si solo se necesita describir un volumen EBS, se puede pasar una cadena, mientras que se puede pasar un array de identificadores de volúmenes EBS para describirlos.

describeVolume devolverá un array con información sobre cada volumen, que incluye el volumeId, el tamaño, el estado y el createTime. Si el volumen está adjunto a una instancia, se devolverá un valor adicional attachmentSet. El conjunto de adjuntos contiene información sobre la instancia a la que está adjunto el volumen EBS, que incluye volumeId, instanceId, device, status y attachTime.

$ec2_ebs = new Zend_Service_Amazon_Ec2_Ebs('aws_key','aws_secret_key');
$return = $ec2_ebs->describeVolume('volumeId');

Ejemplo 64.40. Describir volúmenes adjuntos

Para devolver una lista de volúmenes EBS actualmente adjuntos a una instancia en ejecución, puede llamar a este método. Solo devolverá volúmenes EBS adjuntos a la instancia con el instanceId indicado.

describeAttachedVolumes devuelve la misma información que describeVolume, pero solo para los volúmenes EBS que están actualmente adjuntos al instanceId especificado.

$ec2_ebs = new Zend_Service_Amazon_Ec2_Ebs('aws_key','aws_secret_key');
$return = $ec2_ebs->describeAttachedVolumes('instanceId');

Ejemplo 64.41. Describir una instantánea de un volumen EBS

describeSnapshot le permite obtener información sobre una instantánea de un volumen EBS o un conjunto de instantáneas de volúmenes EBS. Si no se pasa nada, devolverá información sobre todas las instantáneas de volúmenes EBS. Si solo se necesita describir una instantánea de un volumen EBS, se puede pasar su snapshotId, mientras que se puede pasar un array de identificadores de instantáneas de volúmenes EBS para describirlas.

describeSnapshot devolverá un array con información sobre cada instantánea de volumen EBS que incluye el snapshotId, el volumeId, el estado, el startTime y el progreso.

$ec2_ebs = new Zend_Service_Amazon_Ec2_Ebs('aws_key','aws_secret_key');
$return = $ec2_ebs->describeSnapshot('volumeId');

64.10.3. Adjuntar y desadjuntar volúmenes de instancias

Ejemplo 64.42. Adjuntar un volumen EBS

attachVolume adjuntará un volumen EBS a una instancia en ejecución. Para adjuntar un volumen necesita especificar el volumeId, el instanceId y el device (ej.: /dev/sdh).

attachVolume devolverá un array con información sobre el estado del adjunto que contiene volumeId, instanceId, device, status y attachTime

$ec2_ebs = new Zend_Service_Amazon_Ec2_Ebs('aws_key','aws_secret_key');
$return = $ec2_ebs->attachVolume('volumeId', 'instanceid', '/dev/sdh');

Ejemplo 64.43. Desadjuntar un volumen EBS

detachVolume desadjuntará un volumen EBS de una instancia en ejecución. detachVolume requiere que especifique el volumeId, con el instanceId opcional y el nombre del device que se pasó al adjuntar el volumen. Si necesita forzar la desconexión, puede establecer el cuarto parámetro en TRUE y forzará el desadjunte del volumen.

detachVolume devuelve un array con información de estado sobre el volumen EBS que incluye volumeId, instanceId, device, status y attachTime.

$ec2_ebs = new Zend_Service_Amazon_Ec2_Ebs('aws_key','aws_secret_key');
$return = $ec2_ebs->detachVolume('volumeId');

[Note] Desadjunte forzado

Solo debería forzar un desadjunte si el intento de desadjunte anterior no se produjo de forma limpia (accediendo a una instancia, desmontando el volumen y desadjuntándolo normalmente). Esta opción puede provocar pérdida de datos o un sistema de archivos corrupto. Utilice esta opción únicamente como último recurso para desadjuntar un volumen de una instancia en fallo. La instancia no tendrá oportunidad de vaciar las cachés del sistema de archivos ni sus metadatos. Si utiliza esta opción, deberá realizar los procedimientos de comprobación y reparación del sistema de archivos.

64.10.4. Eliminar volúmenes e instantáneas de EBS

Ejemplo 64.44. Eliminar un volumen EBS

deleteVolume eliminará un volumen EBS no adjunto.

deleteVolume devolverá un booleano TRUE o FALSE.

$ec2_ebs = new Zend_Service_Amazon_Ec2_Ebs('aws_key','aws_secret_key');
$return = $ec2_ebs->deleteVolume('volumeId');

Ejemplo 64.45. Eliminar una instantánea de un volumen EBS

deleteSnapshot eliminará una instantánea de un volumen EBS.

deleteSnapshot devuelve un booleano TRUE o FALSE.

$ec2_ebs = new Zend_Service_Amazon_Ec2_Ebs('aws_key','aws_secret_key');
$return = $ec2_ebs->deleteSnapshot('snapshotId');