

# Asignaciones de dispositivos de bloques para volúmenes en instancias de Amazon EC2
<a name="block-device-mapping-concepts"></a>

Cada instancia que inicie tiene un volumen raíz asociado, que puede ser un volumen de Amazon EBS o un volumen de almacén de instancias. Puede utilizar las asignaciones de dispositivos de bloques para especificar los volúmenes de EBS adicionales o volúmenes de almacén de instancias para adjuntar a una instancia a la hora de iniciarla. También se pueden asociar volúmenes de EBS adicionales a una instancia en ejecución. Sin embargo, la única forma de adjuntar volúmenes de almacén de instancias a una instancia es utilizar las asignaciones de dispositivos de bloques para adjuntarlos a los volúmenes al iniciar dicha instancia.

**Topics**
+ [Conceptos sobre la asignación de dispositivos de bloques](#block-device-mapping-def)
+ [Agregar asignaciones de dispositivos de bloques AMI](ami-block-device-mapping.md)
+ [Agregar asignaciones de dispositivos de bloques a la instancia de Amazon EC2](instance-block-device-mapping.md)

## Conceptos sobre la asignación de dispositivos de bloques
<a name="block-device-mapping-def"></a>

Un *dispositivo de bloques* es un dispositivo de almacenamiento que traslada los datos en secuencias bytes o bits (bloques). Estos dispositivos admiten el acceso aleatorio y, por lo general, usan E/S en búfer. Entre los ejemplos de este tipo de dispositivos se incluyen los discos duros, las unidades de CD-ROM y las memorias flash. Un dispositivo de bloques se puede conectar físicamente a un equipo o bien se puede obtener acceso a él de forma remota como si estuviera conectado físicamente al equipo.

Amazon EC2 admite dos tipos de dispositivo de bloques: 
+ Volúmenes de almacén de instancias (dispositivos virtuales cuyo hardware subyacente está conectado físicamente al equipo host de la instancia)
+ Volúmenes de EBS (dispositivos de almacenamiento remoto)

Una *asignación de dispositivos de bloques* define los dispositivos de bloques (volúmenes de almacén de instancias y volúmenes de EBS) que se deben asociar a la instancia. Puede especificar una asignación de dispositivos de bloques como parte la creación de una AMI para que el mapeo sea utilizado por todas las instancias que se lancen desde la AMI. También puede especificar una asignación de dispositivos de bloques cuando se inicia una instancia, de forma que este mapeo anula al especificado en la AMI desde la que se lanzó la instancia. Tenga en cuenta que todos los volúmenes de almacenes de instancias NVMe admitidos por un tipo de instancia se enumeran automáticamente y se les asigna un nombre de dispositivo al iniciar la instancia; su inclusión en la asignación de dispositivos de bloques no tiene ningún efecto.

**Topics**
+ [Entradas de asignación de dispositivos de bloques](#parts-of-a-block-device-mapping)
+ [Advertencias del almacén de instancias de la asignación de dispositivos de bloques](#instance_store_caveats)
+ [Ejemplos de asignación de dispositivos de bloques](#block-device-mapping-ex)
+ [Disponibilidad de los dispositivos en el sistema operativo](#bdm-to-os)

### Entradas de asignación de dispositivos de bloques
<a name="parts-of-a-block-device-mapping"></a>

Cuando crea una asignación de dispositivos de bloques, se especifica la siguiente información para cada dispositivo de bloques que necesita adjuntar a la instancia:
+ El nombre del dispositivo utilizado dentro de Amazon EC2. El controlador del dispositivo de bloques de la instancia asigna el nombre real del volumen al montarlo. El nombre asignado puede ser distinto al nombre recomendado por Amazon EC2. Para obtener más información, consulte [Nombres de dispositivos para los volúmenes en las instancias de Amazon EC2](device_naming.md).

Para volúmenes de almacén de instancias, también se especifica la siguiente información:
+ El dispositivo virtual: `ephemeral[0-23]`. Tenga en cuenta que el número y el tamaño de los volúmenes de almacén de instancias disponibles para la instancia varía según el tipo de instancia.

Para volúmenes de almacenamiento de instancias NVMe, también se aplica la siguiente información:
+ Estos volúmenes se enumeran automáticamente y se les asigna un nombre de dispositivo; su inclusión en la asignación de dispositivos de bloques no tiene ningún efecto.

Para los volúmenes de EBS, también debe especificar la siguiente información:
+ El ID de la instantánea que se utiliza para crear el dispositivo de bloques (snap-*xxxxxxxx*). Este valor es opcional siempre que especifique un tamaño de volumen. No se puede especificar el ID de una instantánea archivada.
+ El tamaño del volumen, en GiB. El tamaño especificado debe ser superior o igual al tamaño de la instantánea especificada.
+ Si se elimina el volumen de la terminación de instancias (`true` o `false`). El valor predeterminado es `true` para el volumen raíz y `false` para volúmenes adjuntos. Al crear una AMI, su asignación de dispositivos de bloques hereda esta configuración de la instancia. Al iniciar una instancia, hereda esta configuración de la AMI.
+ El tipo de volumen, que puede ser `gp2` y `gp3` para los SSD de uso general, `io1` e `io2` para los SSD de IOPS aprovisionadas, `st1` para los HDD con rendimiento optimizado, `sc1` para los HDD en frío o `standard` para los magnéticos.
+ El número de operaciones de entrada/salida por segundo (IOPS) que admite el volumen. (Se utiliza solo con volúmenes `io1` e `io2`).
+ Algunos tipos de instancias admiten más de una tarjeta EBS. Para seleccionar la tarjeta EBS para el volumen al que se va a conectar, especifique el índice de dicha tarjeta. Para obtener más información, consulte [Tarjetas EBS](ebs_cards.md#ebs_cards.title).

### Advertencias del almacén de instancias de la asignación de dispositivos de bloques
<a name="instance_store_caveats"></a>

Existen varias salvedades que se deben tener en cuenta a la hora de iniciar instancias con AMIs que tienen volúmenes de almacén de instancias en sus mapeos de dispositivos de bloques.
+ Algunos tipos de instancia incluyen más volúmenes de almacén de instancias que otros, mientras que algunos tipos de instancia no contienen ninguno. Si su tipo de instancia admite un volumen de almacén de instancias y la AMI tiene mapeos para dos volúmenes de almacén de instancias, la instancia se inicia con uno solo.
+ Los volúmenes de almacén de instancias solo se pueden mapear durante la inicialización. No puede parar una instancia sin volúmenes de almacén de instancias (como `t2.micro`), cambie la instancia a un tipo que admita volúmenes de almacén de instancias y, a continuación, reinicie la instancia con volúmenes de almacén de instancias. Sin embargo, puede crear una AMI desde la instancia y iniciarla en un tipo de instancia que admita volúmenes de almacén de instancias y, a continuación, mapear dichos volúmenes de almacén de instancias en la instancia.
+ Si inicia una instancia con volúmenes de almacén de instancias mapeados y, a continuación, para la instancia, la cambia por un tipo de instancia con menos volúmenes de almacén de instancias y, a continuación, la reinicia, los mapeos de los volúmenes de almacén de instancias de la inicialización inicial seguirán mostrándose en los metadatos de la instancia. Sin embargo, solo estará disponible para la instancia el número máximo de volúmenes de almacén de instancias admitido para ese tipo de instancia.
**nota**  
Cuando se para una instancia, se pierden todos los datos de los volúmenes de almacén de instancias.
+ Dependiendo de la capacidad del almacén de instancias en el momento de la inicialización, las instancias M3 podrían omitir los mapeos de dispositivos de bloques del almacén de instancias de la AMI durante la inicialización, salvo que se especifiquen en se momento. Debe especificar las asignaciones de dispositivos de bloques del almacén de instancias en el momento de la inicialización, incluso si la AMI que va a iniciar tiene los volúmenes de almacén de instancias mapeados en la AMI, para garantizar que los volúmenes de almacén de instancias estén disponibles cuando se lance la instancia. 

### Ejemplos de asignación de dispositivos de bloques
<a name="block-device-mapping-ex"></a>

Esta figura muestra un ejemplo de asignación de dispositivos de bloques para una instancia respaldada por EBS. Mapea `/dev/sdb` en `ephemeral0` y mapea dos volúmenes de EBS, un en `/dev/sdh` y el otro en `/dev/sdj`. También muestra el volumen de EBS que es el volumen raíz, `/dev/sda1`.

![\[Relación entre instancia, volúmenes de almacén de instancias y volúmenes de EBS.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/block_device_mapping_figure.png)


Tenga en cuenta que este ejemplo de asignación de dispositivos de bloques se utiliza en los comandos y API de muestra de este tema. Puede encontrar comandos y API de muestra que crean asignaciones de dispositivos de bloques en [Especificar una asignación de dispositivos de bloques para una AMI](ami-block-device-mapping.md#create-ami-bdm) y [Actualizar la asignación de dispositivos de bloques al iniciar una instancia](instance-block-device-mapping.md#Using_OverridingAMIBDM).

### Disponibilidad de los dispositivos en el sistema operativo
<a name="bdm-to-os"></a>

Amazon EC2 utiliza nombres como `/dev/sdh` y `xvdh` para describir dispositivos de bloques. Amazon EC2 utiliza la asignación de dispositivos de bloques para especificar los dispositivos de bloques que se deben adjuntar a una instancia de EC2. Cuando un dispositivo de bloques se adjunta a una instancia, debe ser montado por el sistema operativo antes de que se pueda obtener acceso al dispositivo de almacenamiento. Cuando un dispositivo de bloques se separa de una instancia, es desmontado por el sistema operativo y ya no se puede obtener acceso al dispositivo de almacenamiento.

**Instancias de Linux**: los nombres de dispositivo especificados en la asignación de dispositivos de bloques se mapean en sus dispositivos de bloques correspondientes al arrancar la instancia por primera vez. El tipo de instancia determina qué volúmenes de almacén de instancias se formatean y montan de forma predeterminada. Puede montar volúmenes de almacén de instancias adicionales durante la inicialización siempre que no se supere el número de volúmenes de almacén de instancias disponibles para el tipo de instancia. Para obtener más información, consulte [Almacenamiento de nivel de bloques temporal del almacén de instancias para las instancias de EC2](InstanceStorage.md). El controlador del dispositivo de bloques de la instancia determina qué dispositivos se utilizan al formatear y montar los volúmenes.

**Instancias de Windows**: los nombres de dispositivo especificados en la asignación de dispositivos de bloques se mapean en sus dispositivos de bloques correspondientes al arrancar la instancia por primera vez y, a continuación, el servicio Ec2Config inicializa y monta las unidades. El volumen raíz se monta como `C:\`. Los volúmenes de almacén de instancias se montan como `Z:\`, `Y:\` y así sucesivamente. El volumen de EBS se puede montar en cualquier letra de unidad. Sin embargo, puede configurar la asignación de letras de unidad para volúmenes de EBS. Si desea obtener más información, consulte [Agentes de inicialización en instancias de Windows de Amazon EC2](configure-launch-agents.md).

# Agregar asignaciones de dispositivos de bloques AMI
<a name="ami-block-device-mapping"></a>

Cada AMI tiene una asignación de dispositivos de bloques que especifica los dispositivos de bloques que se deben adjuntar a una instancia cuando se inicia desde la AMI. Para añadir más dispositivos de bloques a una AMI, debe crear su propia AMI.

**Topics**
+ [Especificar una asignación de dispositivos de bloques para una AMI](#create-ami-bdm)
+ [Visualizar los volúmenes de EBS en una asignación de dispositivos de bloques de una AMI](#view-ami-bdm)

## Especificar una asignación de dispositivos de bloques para una AMI
<a name="create-ami-bdm"></a>

Existen dos maneras de especificar volúmenes además del volumen raíz al crear una AMI. Si ya ha adjuntado volúmenes a una instancia en ejecución antes de crear la AMI desde la instancia, la asignación de dispositivos de bloques de la AMI incluye esos mismos volúmenes. Para volúmenes de EBS, los datos existentes se guardan en una nueva instantánea, y es esta instantánea la que se especifica en la asignación de dispositivos de bloques. Para los volúmenes de almacén de instancias, los datos no se conservan.

Para una AMI respaldada por EBS, puede añadir volúmenes de EBS y volúmenes de almacén de instancias mediante una asignación de dispositivos de bloques Para una AMI basada en Amazon S3, puede agregar volúmenes del almacén de instancias solo modificando las entradas de la asignación de dispositivos de bloques en el archivo de manifiesto de la imagen al registrar la imagen.

**nota**  
Para instancias M3, debe especificar volúmenes de almacén de instancias en la asignación de dispositivos de bloques para la instancia al iniciarla. Al iniciar una instancia M3, los volúmenes de almacén de instancias especificados en la asignación de dispositivos de bloques de la AMI podrían omitirse si no se han especificado como parte de la asignación de dispositivos de bloques de la instancia.

------
#### [ Console ]

**Para añadir volúmenes a una AMI**

1. Abra la consola de Amazon EC2.

1. En el panel de navegación, seleccione **Instances** (Instancia[s]).

1. Seleccione una instancia y elija **Acciones**, **Imagen y plantillas**, **Crear imagen**.

1. Introduzca un nombre y una descripción para la imagen.

1. Los volúmenes de instancia aparecen en **Volúmenes de instancia**. Para agregar otro volumen, elija **Agregar volumen**.

1. En **Tipo de volumen**, elija el tipo de volumen. Para **Dispositivo**, elija el nombre del dispositivo. Para un volumen de EBS, puede especificar detalles adicionales, como una instantánea, tamaño de volumen, tipo de volumen, IOPS y estado de cifrado.

1. Elija **Create image (Crear imagen)**.

------
#### [ AWS CLI ]

**Para añadir volúmenes a una AMI**

Utilice el comando [create-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image.html) para especificar una asignación de dispositivos de bloques para una AMI respaldada por EBS. Utilice el comando [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) para especificar una asignación de dispositivos de bloques para una AMI basada en Amazon S3.

Especifique la asignación de dispositivos de bloques utilizando el parámetro `--block-device-mappings`. Puede especificar argumentos codificados en JSON directamente en la línea de comandos o haciendo referencia a un archivo JSON, como se muestra aquí.

```
--block-device-mappings file://mapping.json
```

Para añadir un volumen de almacén de instancias, utilice el siguiente mapeo: Tenga en cuenta que los volúmenes de almacenamiento de instancia NVMe se agregan automáticamente.

```
{
    "DeviceName": "device_name",
    "VirtualName": "ephemeral0"
}
```

Para añadir un volumen de de 100 GiB vacío, utilice el siguiente mapeo:

```
{
    "DeviceName": "device_name",
    "Ebs": {
      "VolumeSize": 100
    }
}
```

Para añadir un volumen EBS basado en una instantánea, utilice el siguiente mapeo:

```
{
    "DeviceName": "device_name",
    "Ebs": {
      "SnapshotId": "snap-1234567890abcdef0"
    }
}
```

Para omitir un mapeo para un dispositivo, utilice el siguiente mapeo:

```
{
    "DeviceName": "device_name",
    "NoDevice": ""
}
```

------
#### [ PowerShell ]

Utilice el cmdlet [New-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Image.html) para especificar una asignación de dispositivos de bloques para una AMI respaldada por EBS. Utilice el cmdlet [Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) para especificar una asignación de dispositivos de bloques para una AMI basada en Amazon S3.

Añada la opción `-BlockDeviceMapping` y especifique las actualizaciones en `bdm`:

```
-BlockDeviceMapping $bdm
```

La siguiente asignación agrega un volumen basado en una instantánea.

```
$ebd = New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice
$ebd.SnapshotId = "snap-1234567890abcdef0"
$bdm = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$bdm.DeviceName = "device_name"
$bdm.Ebs = $ebd
```

La siguiente asignación agrega un volumen vacío de 100 GB.

```
$ebd = New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice
$ebd.VolumeSize = 100
$bdm = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$bdm.DeviceName = "device_name"
$bdm.Ebs = $ebd
```

------

## Visualizar los volúmenes de EBS en una asignación de dispositivos de bloques de una AMI
<a name="view-ami-bdm"></a>

Puede enumerar fácilmente los volúmenes de EBS en la asignación de dispositivos de bloques de una AMI.

------
#### [ Console ]

**Para ver los volúmenes de EBS de una AMI**

1. Abra la consola de Amazon EC2.

1. En el panel de navegación, elija **AMIs**.

1. Elija **Imágenes de EBS** en la lista **Filtro** para obtener una lista de AMI respaldadas por EBS. 

1. Seleccione la AMI deseada y compruebe la pestaña **Detalles**. Como mínimo, se muestra la siguiente información sobre el volumen raíz (donde el término **dispositivo raíz** es sinónimo de **volumen raíz**):
   + **Tipo de dispositivo raíz** (`ebs`)
   + **Tipo de dispositivo raíz** (por ejemplo, `/dev/sda1`)
   + **Dispositivo de bloques** (por ejemplo, `/dev/sda1=snap-1234567890abcdef0:8:true`)

   Si la AMI se creó con volúmenes de EBS adicionales utilizando una asignación de dispositivos de bloques, el campo **Dispositivos de bloques** muestra también el mapeo de dichos volúmenes adicionales. (Esta pantalla no muestra volúmenes de almacén de instancias).

------
#### [ AWS CLI ]

**Para ver los volúmenes de EBS de una AMI**  
Utilice el comando [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) .

```
aws ec2 describe-images \
    --image-ids ami-0abcdef1234567890 \
    --query Image[0].BlockDeviceMappings
```

------
#### [ PowerShell ]

**Para ver los volúmenes de EBS de una AMI**  
Utilice el cmdlet [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html).

```
(Get-EC2Image -ImageId ami-0abcdef1234567890).BlockDeviceMappings
```

------

# Agregar asignaciones de dispositivos de bloques a la instancia de Amazon EC2
<a name="instance-block-device-mapping"></a>

De forma predeterminada, una instancia que lance incluye cualquier dispositivo de almacenamiento especificado en la asignación de dispositivos de bloques de la AMI desde la que se lanzó la instancia. Puede especificar cambios en la asignación de dispositivos de bloques de una instancia al iniciarla, y estas actualizaciones sobrescriben o se combinan con la asignación de dispositivos de bloques de la AMI.

**Limitaciones**
+ Para el volumen raíz, solo se puede modificar lo siguiente: tamaño del volumen, tipo de volumen y la marca **Eliminar al terminar**.
+ Al modificar un volumen de EBS, no se puede reducir su tamaño. Por lo tanto, debe especificar una instantánea cuyo tamaño sea igual o superior al de la instantánea especificada en la asignación de dispositivos de bloques de la AMI.

**Topics**
+ [Actualizar la asignación de dispositivos de bloques al iniciar una instancia](#Using_OverridingAMIBDM)
+ [Actualizar la asignación de dispositivos de bloques de una instancia en ejecución](#update-instance-bdm)
+ [Visualizar los volúmenes de EBS en la asignación de dispositivos de bloques de una instancia](#view-instance-bdm)
+ [Visualizar la asignación de dispositivos de bloques de una instancia para volúmenes de almacén de instancias](#bdm-instance-metadata)

## Actualizar la asignación de dispositivos de bloques al iniciar una instancia
<a name="Using_OverridingAMIBDM"></a>

Puede añadir volúmenes de EBS y volúmenes de almacén de instancias a una instancia al iniciarla. Tenga en cuenta que la actualización de la asignación de dispositivos de bloques de una instancia no realiza cambios permanentes en la asignación de dispositivos de bloques de la AMI desde la que se lanzó.

------
#### [ Console ]

**Actualización de los volúmenes de una instancia durante el lanzamiento**

1. Siga el procedimiento para [iniciar una instancia](ec2-launch-instance-wizard.md), pero no la lance hasta que haya completado los siguientes pasos para actualizar los volúmenes.

1. (Opcional) Para agregar un volumen, elija **Configurar almacenamiento** y **Agregar nuevo volumen**. Seleccione el tamaño y el tipo de volumen.

1. (Opcional) Para suprimir un volumen que se especificó en la asignación de dispositivos de bloques de la AMI, elija **Configurar almacenamiento** y **Quitar**.

1. (Opcional) Para modificar la configuración de un volumen de EBS, en el panel **Configurar almacenamiento**, elija **Avanzado**. Amplíe la información del volumen y haga los cambios necesarios.

1. En el panel **Resumen**, revise la configuración de la instancia y, a continuación, elija **Iniciar instancia**. Para obtener más información, consulte [Inicialización de una instancia de EC2 mediante el asistente de inicialización de instancias de la consola](ec2-launch-instance-wizard.md).

------
#### [ AWS CLI ]

**Actualización de los volúmenes de una instancia durante el lanzamiento**  
Utilice el comando [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) con la opción `--block-device-mappings`.

```
--block-device-mappings file://mapping.json
```

Por ejemplo, supongamos que una asignación de dispositivos de bloques de la AMI especifica lo siguiente:
+ `/dev/xvda`: volumen raíz de EBS
+ `/dev/sdh`: volumen de EBS creado a partir de `snap-1234567890abcdef0`
+ `/dev/sdj`: volumen de EBS vacío con un tamaño de `100`
+ `/dev/sdb`: volumen de almacén de instancias `ephemeral0`

Supongamos que la siguiente es la asignación de dispositivos de bloques de la instancia en `mapping.json`.

```
[
    {
        "DeviceName": "/dev/xvda",
        "Ebs": {
            "VolumeSize": 100
        }
    },
    {
        "DeviceName": "/dev/sdj",
        "NoDevice": ""
    },
    {
        "DeviceName": "/dev/sdh",
        "Ebs": {
            "VolumeSize": 300
        }
    },
    {
        "DeviceName": "/dev/sdc",
        "VirtualName": "ephemeral1"
    }
]
```

La asignación de dispositivos de bloques de la instancia hace lo siguiente:
+ Anula el tamaño del volumen raíz, `/dev/xvda`, y lo aumenta a 100 GiB.
+ Impide que `/dev/sdj` se asocie a la instancia.
+ Anula el tamaño de `/dev/sdh` y lo aumenta a 300 GiB. Tenga en cuenta que no es necesario volver a especificar el ID de la instantánea.
+ Agrega un volumen efímero, `/dev/sdc`. Si el tipo de instancia no admite varios volúmenes de almacén de instancias, esto no tiene ningún efecto. Si el tipo de instancia admite volúmenes de almacén de instancias NVMe, se enumeran automáticamente y se incluyen en la asignación de dispositivos de bloques de la instancia y no se pueden anular.

------
#### [ PowerShell ]

**Actualización de los volúmenes de una instancia durante el lanzamiento**  
Utilice el parámetro `-BlockDeviceMapping` con el cmdlet [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) con el parámetro `-BlockDeviceMapping`.

```
-BlockDeviceMapping $bdm
```

Supongamos que la siguiente es la asignación de dispositivos de bloques de la instancia en `$bdm`.

```
$bdm = @()

$root = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$root.DeviceName = "/dev/xvda"
$ebs1 = New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice
$ebs1.VolumeSize = 100
$root.Ebs = $ebs1
$bdm += $root

$sdj = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$sdj.DeviceName = "/dev/sdj"
$sdj.NoDevice = ""
$bdm += $sdj

$sdh = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$sdh.DeviceName = "/dev/sdh"
$ebs2 = New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice
$ebs2.VolumeSize = 300
$sdh.Ebs = $ebs2
$bdm += $sdh

$sdc = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$sdc.DeviceName = "/dev/sdc"
$sdc.VirtualName = "ephemeral1"
$bdm += $sdc
```

La asignación de dispositivos de bloques de la instancia hace lo siguiente:
+ Anula el tamaño del volumen raíz, `/dev/xvda`, y lo aumenta a 100 GiB.
+ Impide que `/dev/sdj` se asocie a la instancia.
+ Anula el tamaño de `/dev/sdh` y lo aumenta a 300 GiB. Tenga en cuenta que no es necesario volver a especificar el ID de la instantánea.
+ Agrega un volumen efímero, `/dev/sdc`. Si el tipo de instancia no admite varios volúmenes de almacén de instancias, esto no tiene ningún efecto. Si el tipo de instancia admite volúmenes de almacén de instancias NVMe, se enumeran automáticamente y se incluyen en la asignación de dispositivos de bloques de la instancia y no se pueden anular.

------

## Actualizar la asignación de dispositivos de bloques de una instancia en ejecución
<a name="update-instance-bdm"></a>

No es necesario parar la instancia antes de cambiar este atributo.

------
#### [ AWS CLI ]

**Actualización de la asignación de dispositivos de bloques de una instancia en ejecución**  
Utilice el comando [modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html).

Añada la opción `--block-device-mappings`:

```
--block-device-mappings file://mapping.json
```

En `mapping.json`, especifique las actualizaciones. Por ejemplo, la siguiente actualización cambia el volumen raíz para que persista.

```
[
  {
    "DeviceName": "/dev/sda1",
    "Ebs": {
      "DeleteOnTermination": false
    }
  }
]
```

------
#### [ PowerShell ]

**Actualización de la asignación de dispositivos de bloques de una instancia en ejecución**  
Utilice el cmdlet [Edit-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html).

Añada la opción `-BlockDeviceMapping`:

```
-BlockDeviceMapping $bdm
```

En `bdm`, especifique las actualizaciones. Por ejemplo, la siguiente actualización cambia el volumen raíz para que persista.

```
$ebd = New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice
$ebd.DeleteOnTermination = false
$bdm = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$bdm.DeviceName = "/dev/sda1"
$bdm.Ebs = $ebd
```

------

## Visualizar los volúmenes de EBS en la asignación de dispositivos de bloques de una instancia
<a name="view-instance-bdm"></a>

Puede enumerar fácilmente los volúmenes de EBS mapeados en una instancia.

------
#### [ Console ]

**Para ver los volúmenes de EBS de una instancia**

1. Abra la consola de Amazon EC2.

1. En el panel de navegación, seleccione **Instances (Instancias)**.

1. Seleccione la instancia y compruebe los detalles que se muestran en la pestaña **Almacenamiento**. Como mínimo, se muestra la siguiente información sobre el volumen raíz (donde el término **dispositivo raíz** es sinónimo de **volumen raíz**):
   + **Tipo de dispositivo raíz** (por ejemplo, **EBS**)
   + **Nombre de dispositivo raíz** (por ejemplo, `/dev/xvda`)
   + **Dispositivos de bloques** (por ejemplo, `/dev/xvda`, `/dev/sdf` y `/dev/sdj`)

   Si la instancia se inició con volúmenes EBS adicionales mediante una asignación de dispositivos de bloques, aparecerán en **Dispositivos de bloques**. Los volúmenes de almacén de instancias no aparecen en esta pestaña.

1. Para mostrar información adicional sobre un volumen de EBS, elija su ID de volumen para ir a la página del volumen.

------
#### [ AWS CLI ]

**Para ver los volúmenes de EBS de una instancia**  
Utilice el comando [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html).

```
aws ec2 describe-instances \
    --instance-ids i-1234567890abcdef0 \
    --query Reservations[*].Instances[0].BlockDeviceMappings
```

------
#### [ PowerShell ]

**Para ver los volúmenes de EBS de una instancia**  
Utilice el cmdlet [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html).

```
(Get-EC2Instance -InstanceId i-0bac57d7472c89bac).Instances.BlockDeviceMappings
```

------

## Visualizar la asignación de dispositivos de bloques de una instancia para volúmenes de almacén de instancias
<a name="bdm-instance-metadata"></a>

El tipo de instancia determina el número y el tipo de volúmenes del almacén de instancias que están disponibles para la instancia. Si el número de volúmenes de almacén de instancias en una asignación de dispositivo de bloque excede el número de volúmenes de almacén de instancias disponible para una instancia, los volúmenes adicionales se ignoran. Para ver los volúmenes de almacén de instancias de su instancia, ejecute el comando **lsblk** (instancias de Linux) o abra la **administración de discos de Windows** (instancias de Windows). Para saber cuántos volúmenes de almacén de instancias admite cada tipo de instancia, consulte [Especificaciones de tipos de instancias de Amazon EC2](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-instance-type-specifications.html).

Cuando visualiza la asignación de dispositivos de bloques para la instancia, solo se ven los volúmenes de EBS, no los volúmenes de almacén de instancias. El método que se utiliza para ver los volúmenes de almacén de instancias de la instancia depende del tipo de volumen.



### Volúmenes de almacén de instancias de NVMe
<a name="nvme-instance-store"></a>

#### Instancias de Linux
<a name="nvme-instance-store-linux"></a>

Puede usar el paquete de línea de comandos de NVMe, [nvme-cli](https://github.com/linux-nvme/nvme-cli), para consultar los volúmenes de almacén de instancias de NVMe en la asignación de dispositivos de bloques. Descargue e instale el paquete en su instancia y, luego, ejecute el comando siguiente.

```
[ec2-user ~]$ sudo nvme list
```

El siguiente es un resultado de ejemplo para una instancia. El texto de la columna Modelo indica si el volumen es un volumen de EBS o un volumen de almacén de instancias. En este ejemplo, tanto `/dev/nvme1n1` como `/dev/nvme2n1` son volúmenes de almacén de instancias.

```
Node             SN                   Model                                    Namespace
---------------- -------------------- ---------------------------------------- ---------
/dev/nvme0n1     vol06afc3f8715b7a597 Amazon Elastic Block Store               1        
/dev/nvme1n1     AWS2C1436F5159EB6614 Amazon EC2 NVMe Instance Storage         1         
/dev/nvme2n1     AWSB1F4FF0C0A6C281EA Amazon EC2 NVMe Instance Storage         1         ...
```

#### instancias de Windows
<a name="nvme-instance-store-windows"></a>

Puede usar Administración de discos o PowerShell para enumerar volúmenes de almacén de instancias tanto de EBS como de NVMe. Para obtener más información, consulte [Asignación de discos NVMe de una instancia de Windows de Amazon EC2 a volúmenes](windows-list-disks-nvme.md).

### Volúmenes de almacén de instancias de HDD o SSD
<a name="hdd-ssd-instance-store"></a>

Puede usar metadatos de instancia para consultar los volúmenes de almacén de instancias de HDD o SSD en la asignación de dispositivos de bloques. Los volúmenes del almacén de instancias NVMe no se incluyen.

El URI base para todas las solicitudes de metadatos de instancias es `http://169.254.169.254/latest/`. Para obtener más información, consulte [Uso de los metadatos de la instancia para administrar su instancia de EC2](ec2-instance-metadata.md).

#### Instancias de Linux
<a name="hdd-ssd-instance-store-linux"></a>

En primer lugar, conéctese a la instancia en ejecución. En la instancia, utilice esta consulta para obtener su asignación de dispositivos de bloques.

------
#### [ IMDSv2 ]

```
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/block-device-mapping/
```

------
#### [ IMDSv1 ]

```
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/block-device-mapping/
```

------

La respuesta incluye los nombres de los dispositivo de bloques de la instancia. Por ejemplo, el resultado para una instancia `m1.small` con respaldo en el almacén de instancias tiene este aspecto.

```
ami
ephemeral0
root
swap
```

El dispositivo `ami` es el volumen raíz como indica la instancia. Los volúmenes de almacén de instancias se llaman `ephemeral[0-23]`. El dispositivo `swap` es para el archivo de la página. Si también ha mapeado volúmenes de EBS, estos aparecen como `ebs1` y `ebs2` así sucesivamente.

Para obtener detalles acerca de dispositivo de bloques individual en la asignación de dispositivos de bloques, anexe su nombre a la consulta anterior, tal y como se muestra aquí.

------
#### [ IMDSv2 ]

```
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0
```

------
#### [ IMDSv1 ]

```
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0
```

------

#### instancias de Windows
<a name="hdd-ssd-instance-store-windows"></a>

En primer lugar, conéctese a la instancia en ejecución. En la instancia, utilice esta consulta para obtener su asignación de dispositivos de bloques.

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/block-device-mapping/
```

La respuesta incluye los nombres de los dispositivo de bloques de la instancia. Por ejemplo, el resultado para una instancia `m1.small` con respaldo en el almacén de instancias tiene este aspecto.

```
ami
ephemeral0
root
swap
```

El dispositivo `ami` es el volumen raíz como indica la instancia. Los volúmenes de almacén de instancias se llaman `ephemeral[0-23]`. El dispositivo `swap` es para el archivo de la página. Si también ha mapeado volúmenes de EBS, estos aparecen como `ebs1` y `ebs2` así sucesivamente.

Para obtener detalles acerca de dispositivo de bloques individual en la asignación de dispositivos de bloques, anexe su nombre a la consulta anterior, tal y como se muestra aquí.

```
PS C:\> Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/block-device-mapping/ephemeral0
```