

# Mapear discos NVMe em uma instância Amazon EC2 Windows para volumes
<a name="windows-list-disks-nvme"></a>

Com [instâncias baseadas em Nitro](instance-types.md#instance-hypervisor-type), os volumes do EBS são expostos como dispositivos NVMe. Este tópico explica como visualizar os **discos NVMe** que estão disponíveis para o sistema operacional Windows na sua instância. Também mostra como mapear esses discos NVMe para os volumes subjacentes do Amazon EBS e os nomes de dispositivos especificados para os mapeamentos de dispositivos de blocos usados pelo Amazon EC2.

**Topics**
+ [Listar discos NVMe](#windows-disks-nvme)
+ [Mapear discos NVMe para volumes](#ebs-nvme-volume-map)

## Listar discos NVMe
<a name="windows-disks-nvme"></a>

É possível encontrar os discos na instância do Windows usando Gerenciamento de disco ou Powershell.

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

**Para localizar os discos em sua instância do Windows**

1. Execute a sessão da sua instância do Windows usando o Desktop Remoto. Para obter mais informações, consulte [Conectar-se à instância do Windows no usando RDP](connecting_to_windows_instance.md).

1. Inicie o utilitário de Gerenciamento de Disco.

1. Revise os discos. O volume raiz é um volume do EBS montado como `C:\`. Se não houver nenhum outro disco mostrado, você não especificou volumes adicionais quando criou a AMI ou executou a instância.

   Veja a seguir um exemplo que mostra os discos disponíveis se você executar uma instância `r5d.4xlarge` com dois volumes adicionais do EBS.  
![\[Gerenciamento de disco com um volume raiz, dois volumes de armazenamento de instâncias e dois volumes do EBS.\]](http://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/images/disk_management_nvme.png)

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

O script do PowerShell a seguir lista cada disco e seu nome de dispositivo e volume correspondentes. Destina-se ao uso com [instâncias baseadas em Nitro](instance-types.md#instance-hypervisor-type), que usam volumes de armazenamento de instância e do EBS de NVMe.

Conecte-se à sua instância do Windows e execute o seguinte comando para habilitar a execução de script do PowerShell.

```
Set-ExecutionPolicy RemoteSigned
```

Copie o script a seguir e salve-o como `mapping.ps1` na instância do 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
```

Execute o script da seguinte forma:

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

Veja a seguir um exemplo de saída para uma instância com um volume raiz, dois volumes do EBS e dois volumes de armazenamento de instâncias.

```
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
```

Se você não tiver fornecido suas credenciais do Tools for Windows PowerShell na instância do Windows, o script não poderá obter o ID de volume do EBS e usará N/A na coluna `EbsVolumeId`.

------

## Mapear discos NVMe para volumes
<a name="ebs-nvme-volume-map"></a>

Você pode usar o comando [Get-Disk](https://learn.microsoft.com/en-us/powershell/module/storage/get-disk) para mapear os números de disco do Windows para volumes do Amazon EBS e volumes de armazenamento de instância do 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
```

Também é possível executar o comando **ebsnvme-id** para mapear números de disco do NVMe para IDs de volume do EBS e nomes 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
```