

# Asignación de discos NVMe de una instancia de Windows de Amazon EC2 a volúmenes
<a name="windows-list-disks-nvme"></a>

Con las [instancias basadas en Nitro](instance-types.md#instance-hypervisor-type), los volúmenes de EBS se exponen como dispositivos NVMe. En este tema se explica cómo ver los **discos NVMe** que están disponibles para el sistema operativo Windows en la instancia. También muestra cómo asignar esos discos NVMe a los volúmenes subyacentes de Amazon EBS y los nombres de dispositivo especificados para las asignaciones de dispositivos de bloques utilizadas por Amazon EC2.

**Topics**
+ [Enumeración de discos NVMe](#windows-disks-nvme)
+ [Asignación de discos NVMe a volúmenes](#ebs-nvme-volume-map)

## Enumeración de discos NVMe
<a name="windows-disks-nvme"></a>

Puede encontrar los discos de la instancia de Windows que utilizan Disk Management o PowerShell.

------
#### [ Disk Management ]

**Para encontrar los discos en su instancia de Windows**

1. Inicie sesión en la instancia de Windows mediante el Escritorio remoto. Para obtener más información, consulte [Conexión a una instancia de Windows de mediante RDP](connecting_to_windows_instance.md).

1. Inicie la utilidad de Administración de discos.

1. Revise los discos. El volumen raíz es un volumen de EBS montado como `C:\`. Si no se muestran otros discos, no ha especificado volúmenes adicionales al crear la AMI o al iniciar la instancia.

   A continuación se muestra un ejemplo que muestra los discos que están disponibles si inicias una `r5d.4xlarge` instancia con dos volúmenes de EBS adicionales.  
![\[Disk Management con un volumen raíz, dos volúmenes de almacén de instancias y dos volúmenes EBS.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/disk_management_nvme.png)

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

El siguiente script de PowerShell enumera cada disco y el nombre y volumen de su dispositivo correspondiente. Está diseñado para su uso con [instancias basadas en Nitro](instance-types.md#instance-hypervisor-type), que utilizan volúmenes NVMe de EBS y volúmenes de almacén de instancias.

Conéctate a la instancia de Windows y ejecuta el siguiente comando para habilitar la ejecución de scripts de PowerShell.

```
Set-ExecutionPolicy RemoteSigned
```

Copia el siguiente script y guárdalo como `mapping.ps1` en la instancia de Windows.

```
# List the disks for NVMe volumes

function Get-EC2InstanceMetadata {
    param([string]$Path)
    (Invoke-WebRequest -Uri "http://169.254.169.254/latest/$Path").Content 
}

function GetEBSVolumeId {
    param($Path)
    $SerialNumber = (Get-Disk -Path $Path).SerialNumber
    if($SerialNumber -clike 'vol*'){
        $EbsVolumeId = $SerialNumber.Substring(0,20).Replace("vol","vol-")
    }
    else {
       $EbsVolumeId = $SerialNumber.Substring(0,20).Replace("AWS","AWS-")
    }
    return $EbsVolumeId
}

function GetDeviceName{
    param($EbsVolumeId)
    if($EbsVolumeId -clike 'vol*'){
    
        $Device  = ((Get-EC2Volume -VolumeId $EbsVolumeId ).Attachment).Device
        $VolumeName = ""
    }
     else {
        $Device = "Ephemeral"
        $VolumeName = "Temporary Storage"
    }
    Return $Device,$VolumeName
}

function GetDriveLetter{
    param($Path)
    $DiskNumber =  (Get-Disk -Path $Path).Number
    if($DiskNumber -eq 0){
        $VirtualDevice = "root"
        $DriveLetter = "C"
        $PartitionNumber = (Get-Partition -DriveLetter C).PartitionNumber
    }
    else
    {
        $VirtualDevice = "N/A"
        $DriveLetter = (Get-Partition -DiskNumber $DiskNumber).DriveLetter
        if(!$DriveLetter)
        {
            $DriveLetter = ((Get-Partition -DiskId $Path).AccessPaths).Split(",")[0]
        } 
        $PartitionNumber = (Get-Partition -DiskId $Path).PartitionNumber   
    }
    
    return $DriveLetter,$VirtualDevice,$PartitionNumber

}

$Report = @()
foreach($Path in (Get-Disk).Path)
{
    $Disk_ID = ( Get-Partition -DiskId $Path).DiskId
    $Disk = ( Get-Disk -Path $Path).Number
    $EbsVolumeId  = GetEBSVolumeId($Path)
    $Size =(Get-Disk -Path $Path).Size
    $DriveLetter,$VirtualDevice, $Partition = (GetDriveLetter($Path))
    $Device,$VolumeName = GetDeviceName($EbsVolumeId)
    $Disk = New-Object PSObject -Property @{
      Disk          = $Disk
      Partitions    = $Partition
      DriveLetter   = $DriveLetter
      EbsVolumeId   = $EbsVolumeId 
      Device        = $Device 
      VirtualDevice = $VirtualDevice 
      VolumeName= $VolumeName
    }
	$Report += $Disk
} 

$Report | Sort-Object Disk | Format-Table -AutoSize -Property Disk, Partitions, DriveLetter, EbsVolumeId, Device, VirtualDevice, VolumeName
```

Ejecuta el script de la siguiente manera:

```
PS C:\> .\mapping.ps1
```

A continuación se muestra un ejemplo de salida para una instancia con un volumen raíz, dos volúmenes EBS y dos volúmenes de almacén de instancias.

```
Disk Partitions DriveLetter EbsVolumeId           Device    VirtualDevice VolumeName
---- ---------- ----------- -----------           ------    ------------- ----------
   0          1 C           vol-03683f1d861744bc7 /dev/sda1 root
   1          1 D           vol-082b07051043174b9 xvdb      N/A
   2          1 E           vol-0a4064b39e5f534a2 xvdc      N/A
   3          1 F           AWS-6AAD8C2AEEE1193F0 Ephemeral N/A           Temporary Storage
   4          1 G           AWS-13E7299C2BD031A28 Ephemeral N/A           Temporary Storage
```

Si no configuró sus credenciales para Herramientas de Windows PowerShell en la instancia de Windows, el script no puede obtener el ID del volumen de EBS y utilizará N/A en la columna `EbsVolumeId`.

------

## Asignación de discos NVMe a volúmenes
<a name="ebs-nvme-volume-map"></a>

Utilice el comando [Get-Disk](https://learn.microsoft.com/en-us/powershell/module/storage/get-disk) para asignar números de discos de Windows a volúmenes de Amazon EBS y volúmenes del almacén de instancias de Amazon EC2.

```
PS C:\> Get-Disk
Number Friendly Name Serial Number                    HealthStatus         OperationalStatus      Total Size Partition
                                                                                                             Style
------ ------------- -------------                    ------------         -----------------      ---------- ----------
3      NVMe Amazo... AWS6AAD8C2AEEE1193F0_00000001.   Healthy              Online                   279.4 GB MBR
4      NVMe Amazo... AWS13E7299C2BD031A28_00000001.   Healthy              Online                   279.4 GB MBR
2      NVMe Amazo... vol0a4064b39e5f534a2_00000001.   Healthy              Online                       8 GB MBR
0      NVMe Amazo... vol03683f1d861744bc7_00000001.   Healthy              Online                      30 GB MBR
1      NVMe Amazo... vol082b07051043174b9_00000001.   Healthy              Online                       8 GB MBR
```

También puede ejecutar el comando **ebsnvme-id** para asignar números de disco NVMe a identificadores de volumen de EBS y nombres de dispositivos.

```
PS C:\> C:\PROGRAMDATA\Amazon\Tools\ebsnvme-id.exe
Disk Number: 0
Volume ID: vol-03683f1d861744bc7
Device Name: sda1

Disk Number: 1
Volume ID: vol-082b07051043174b9
Device Name: xvdb

Disk Number: 2
Volume ID: vol-0a4064b39e5f534a2
Device Name: xvdc
```