Mapper des disques sur des volumes sur votre instance Windows - Amazon Elastic Compute Cloud

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Mapper des disques sur des volumes sur votre instance Windows

Votre instance Windows est fournie avec un volume EBS qui sert de volume racine. Si votre instance Windows utilise des pilotes AWS PV ou Citrix PV, vous pouvez éventuellement ajouter jusqu'à 25 volumes, soit un total de 26 volumes. Pour plus d’informations, consultez Limites de volume d’instance.

En fonction du type de votre instance, vous disposerez de 0 à 24 volumes de stockage d’instance possibles disponibles pour l’instance. Pour utiliser l’un des volumes de stockage d’instance disponibles pour votre instance, vous devez spécifier ceux-ci lors de la création de votre AMI ou du lancement de votre instance. Vous pouvez également ajouter des volumes EBS lors de la création de votre AMI ou du lancement de votre instance, ou les attacher pendant l’exécution de celle-ci.

Lorsque vous ajoutez un volume à votre instance, vous spécifiez le nom de l’appareil utilisé par Amazon EC2. Pour de plus amples informations, veuillez consulter Noms de périphérique sur les instances Windows. AWS Les Amazon Machine Images (AMI) Windows contiennent un ensemble de pilotes utilisés par Amazon EC2 pour mapper les volumes de stockage d’instances et EBS aux disques et aux lettres de lecteurs Windows. Si vous lancez une instance à partir d'une AMI Windows qui utilise des pilotes AWS PV ou Citrix PV, vous pouvez utiliser les relations décrites sur cette page pour mapper vos disques Windows à votre magasin d'instances et à vos volumes EBS. Si votre AMI Windows utilise des pilotes PV RedHat, vous pouvez mettre à jour votre instance pour utiliser les pilotes Citrix. Pour plus d’informations, consultez Mise à niveau des pilotes PV sur les instances Windows.

Référencer les volumes NVMe

Vous pouvez utiliser la gestion de disques ou Powershell pour rechercher les disques sur votre instance Windows.

Référencer les disques NVMe à l’aide de la gestion des disques

Vous pouvez utiliser la gestion de disques Windows pour rechercher les disques sur votre instance Windows.

Pour rechercher les disques sur votre instance Windows
  1. Connectez-vous à votre instance Windows en utilisant les services Bureau à distance. Pour plus d’informations, consultez Connexion à votre instance Windows .

  2. Démarrez l’utilitaire Gestion des disques.

  3. Examinez les disques. Le volume racine est un volume EBS monté comme C:\. Si aucun autre disque n’est affiché, vous n’avez pas spécifié de volume additionnel lors de la création de l’AMI ou du lancement de l’instance.

    L’exemple suivant illustre les disques disponibles si vous lancez une instance r5d.4xlarge avec deux volumes EBS supplémentaires.

    
                            Gestion des disques avec un volume racine, deux volumes de stockage d’instance et deux volumes EBS.

Répertoriez les disques NVMe en utilisant PowerShell

Le PowerShell script suivant répertorie chaque disque ainsi que le nom de périphérique et le volume correspondants. Il est destiné à être utilisé avec des instances basées sur le système AWS Nitro, qui utilisent NVMe EBS et des volumes de stockage d'instance.

Connectez-vous à votre instance Windows et exécutez la commande suivante pour activer l'exécution du PowerShell script.

Set-ExecutionPolicy RemoteSigned

Copiez le script suivant et enregistrez-le en tant que mapping.ps1 sur votre instance 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

Exécutez le script comme suit :

PS C:\> .\mapping.ps1

Voici un exemple de sortie pour une instance avec un volume racine, deux volumes EBS et deux volumes de stockage d’instance.

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 vous n'avez pas configuré vos informations d'identification pour Tools for Windows PowerShell sur l'instance Windows, le script ne peut pas obtenir l'ID du volume EBS et utilise N/A dans la EbsVolumeId colonne.

Mapper les volumes EBS NVMe

Avec les instances basées sur le système AWS Nitro, les volumes EBS sont exposés en tant que périphériques NVMe. Vous pouvez utiliser la commande Get-Disk pour mapper des numéros de disques Windows à des ID de volume EBS.

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

Vous pouvez également exécuter la commande ebsnvme-id pour mapper les numéros de disque NVMe aux ID de volume EBS et aux noms de périphériques.

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

Référencer les volumes

Vous pouvez utiliser la gestion de disques ou Powershell pour rechercher les disques sur votre instance Windows.

Référencer les disques à l’aide de la gestion des disques

Vous pouvez utiliser la gestion de disques Windows pour rechercher les disques sur votre instance Windows.

Pour rechercher les disques sur votre instance Windows
  1. Connectez-vous à votre instance Windows en utilisant les services Bureau à distance. Pour plus d’informations, consultez Connexion à votre instance Windows .

  2. Démarrez l’utilitaire Gestion des disques.

    Dans la barre des tâches, cliquez avec le bouton droit sur le logo Windows, puis sélectionnez Gestion des disques.

  3. Examinez les disques. Le volume racine est un volume EBS monté comme C:\. Si aucun autre disque n’est affiché, vous n’avez pas spécifié de volume additionnel lors de la création de l’AMI ou du lancement de l’instance.

    L’exemple suivant affiche les disques qui sont disponibles si vous lancez une instance m3.medium avec un volume basé sur le stockage d’instance (Disk 2) et un volume EBS supplémentaire (Disk 1).

    
                            Gestion des disques avec un volume racine, un volume de stockage d’instance et un volume EBS.
  4. Cliquez avec le bouton droit sur le disque 1 étiqueté dans le volet grisé, puis cliquez sur Propriétés. Prenez note de la valeur de l’Emplacement et recherchez-le dans les tables de Mapper des périphériques de disque aux noms de périphériques. Par exemple, le disque suivant a pour emplacement Bus numéro 0, ID cible 9, LUN 0. D’après la table des volumes EBS, le nom de périphérique de cet emplacement est : xvdj.

    
                            Emplacement d’un volume EBS.

Mapper des périphériques de disque aux noms de périphériques

Le pilote du périphérique de stockage en mode bloc de l’instance attribue les noms de volume réels lors du montage des volumes.

Volumes de stockage d’instance

Le tableau suivant décrit comment les pilotes PV et PV Citrix AWS mappent les volumes de stockage d'instances non NVME aux volumes Windows. Le nombre de volumes de stockage d’instance disponibles est déterminé par le type d’instance. Pour plus d’informations, consultez Volumes de stockage d’instances.

Emplacement Nom d’appareil

Bus numéro 0, ID cible 78, LUN 0

xvdca

Bus numéro 0, ID cible 79, LUN 0

xvdcb

Bus numéro 0, ID cible 80, LUN 0

xvdcc

Bus numéro 0, ID cible 81, LUN 0

xvdcd

Bus numéro 0, ID cible 82, LUN 0

xvdce

Bus numéro 0, ID cible 83, LUN 0

xvdcf

Bus numéro 0, ID cible 84, LUN 0

xvdcg

Bus numéro 0, ID cible 85, LUN 0

xvdch

Bus numéro 0, ID cible 86, LUN 0

xvdci

Bus numéro 0, ID cible 87, LUN 0

xvdcj

Bus numéro 0, ID cible 88, LUN 0

xvdck

Bus numéro 0, ID cible 89, LUN 0

xvdcl

Volumes EBS

Le tableau suivant décrit comment les pilotes PV et PV Citrix AWS mappent les volumes EBS non NVME aux volumes Windows.

Emplacement Nom d’appareil

Bus numéro 0, ID cible 0, LUN 0

/dev/sda1

Bus numéro 0, ID cible 1, LUN 0

xvdb

Bus numéro 0, ID cible 2, LUN 0

xvdc

Bus numéro 0, ID cible 3, LUN 0

xvdd

Bus numéro 0, ID cible 4, LUN 0

xvde

Bus numéro 0, ID cible 5, LUN 0

xvdf

Bus numéro 0, ID cible 6, LUN 0

xvdg

Bus numéro 0, ID cible 7, LUN 0

xvdh

Bus numéro 0, ID cible 8, LUN 0

xvdi

Bus numéro 0, ID cible 9, LUN 0

xvdj

Bus numéro 0, ID cible 10, LUN 0

xvdk

Bus numéro 0, ID cible 11, LUN 0

xvdl

Bus numéro 0, ID cible 12, LUN 0

xvdm

Bus numéro 0, ID cible 13, LUN 0

xvdn

Bus numéro 0, ID cible 14, LUN 0

xvdo

Bus numéro 0, ID cible 15, LUN 0

xvdp

Bus numéro 0, ID cible 16, LUN 0

xvdq

Bus numéro 0, ID cible 17, LUN 0

xvdr

Bus numéro 0, ID cible 18, LUN 0

xvds

Bus numéro 0, ID cible 19, LUN 0

xvdt

Bus numéro 0, ID cible 20, LUN 0

xvdu

Bus numéro 0, ID cible 21, LUN 0

xvdv

Bus numéro 0, ID cible 22, LUN 0

xvdw

Bus numéro 0, ID cible 23, LUN 0

xvdx

Bus numéro 0, ID cible 24, LUN 0

xvdy

Bus numéro 0, ID cible 25, LUN 0

xvdz

Lister les disques à l'aide PowerShell

Le PowerShell script suivant répertorie chaque disque ainsi que le nom de périphérique et le volume correspondants.

Exigences et limitations
  • Nécessite Windows Server 2012 ou une version ultérieure.

  • Nécessite des informations d’identification pour obtenir l’ID de volume EBS. Vous pouvez configurer un profil à l'aide des outils pour PowerShell l'instance ou y associer un rôle IAM.

  • Ne prend pas en charge les volumes NVMe.

  • Ne prend pas en charge les disques dynamiques.

Connectez-vous à votre instance Windows et exécutez la commande suivante pour activer l'exécution du PowerShell script.

Set-ExecutionPolicy RemoteSigned

Copiez le script suivant et enregistrez-le en tant que mapping.ps1 sur votre instance Windows.

# List the disks function Convert-SCSITargetIdToDeviceName { param([int]$SCSITargetId) If ($SCSITargetId -eq 0) { return "sda1" } $deviceName = "xvd" If ($SCSITargetId -gt 25) { $deviceName += [char](0x60 + [int]($SCSITargetId / 26)) } $deviceName += [char](0x61 + $SCSITargetId % 26) return $deviceName } [string[]]$array1 = @() [string[]]$array2 = @() [string[]]$array3 = @() [string[]]$array4 = @() Get-WmiObject Win32_Volume | Select-Object Name, DeviceID | ForEach-Object { $array1 += $_.Name $array2 += $_.DeviceID } $i = 0 While ($i -ne ($array2.Count)) { $array3 += ((Get-Volume -Path $array2[$i] | Get-Partition | Get-Disk).SerialNumber) -replace "_[^ ]*$" -replace "vol", "vol-" $array4 += ((Get-Volume -Path $array2[$i] | Get-Partition | Get-Disk).FriendlyName) $i ++ } [array[]]$array = $array1, $array2, $array3, $array4 Try { $InstanceId = Get-EC2InstanceMetadata -Category "InstanceId" $Region = Get-EC2InstanceMetadata -Category "Region" | Select-Object -ExpandProperty SystemName } Catch { Write-Host "Could not access the instance Metadata using AWS Get-EC2InstanceMetadata CMDLet. Verify you have AWSPowershell SDK version '3.1.73.0' or greater installed and Metadata is enabled for this instance." -ForegroundColor Yellow } Try { $BlockDeviceMappings = (Get-EC2Instance -Region $Region -Instance $InstanceId).Instances.BlockDeviceMappings $VirtualDeviceMap = (Get-EC2InstanceMetadata -Category "BlockDeviceMapping").GetEnumerator() | Where-Object { $_.Key -ne "ami" } } Catch { Write-Host "Could not access the AWS API, therefore, VolumeId is not available. Verify that you provided your access keys or assigned an IAM role with adequate permissions." -ForegroundColor Yellow } Get-disk | ForEach-Object { $DriveLetter = $null $VolumeName = $null $VirtualDevice = $null $DeviceName = $_.FriendlyName $DiskDrive = $_ $Disk = $_.Number $Partitions = $_.NumberOfPartitions $EbsVolumeID = $_.SerialNumber -replace "_[^ ]*$" -replace "vol", "vol-" if ($Partitions -ge 1) { $PartitionsData = Get-Partition -DiskId $_.Path $DriveLetter = $PartitionsData.DriveLetter | Where-object { $_ -notin @("", $null) } $VolumeName = (Get-PSDrive | Where-Object { $_.Name -in @($DriveLetter) }).Description | Where-object { $_ -notin @("", $null) } } If ($DiskDrive.path -like "*PROD_PVDISK*") { $BlockDeviceName = Convert-SCSITargetIdToDeviceName((Get-WmiObject -Class Win32_Diskdrive | Where-Object { $_.DeviceID -eq ("\\.\PHYSICALDRIVE" + $DiskDrive.Number) }).SCSITargetId) $BlockDeviceName = "/dev/" + $BlockDeviceName $BlockDevice = $BlockDeviceMappings | Where-Object { $BlockDeviceName -like "*" + $_.DeviceName + "*" } $EbsVolumeID = $BlockDevice.Ebs.VolumeId $VirtualDevice = ($VirtualDeviceMap.GetEnumerator() | Where-Object { $_.Value -eq $BlockDeviceName }).Key | Select-Object -First 1 } ElseIf ($DiskDrive.path -like "*PROD_AMAZON_EC2_NVME*") { $BlockDeviceName = (Get-EC2InstanceMetadata -Category "BlockDeviceMapping").ephemeral((Get-WmiObject -Class Win32_Diskdrive | Where-Object { $_.DeviceID -eq ("\\.\PHYSICALDRIVE" + $DiskDrive.Number) }).SCSIPort - 2) $BlockDevice = $null $VirtualDevice = ($VirtualDeviceMap.GetEnumerator() | Where-Object { $_.Value -eq $BlockDeviceName }).Key | Select-Object -First 1 } ElseIf ($DiskDrive.path -like "*PROD_AMAZON*") { if ($DriveLetter -match '[^a-zA-Z0-9]') { $i = 0 While ($i -ne ($array3.Count)) { if ($array[2][$i] -eq $EbsVolumeID) { $DriveLetter = $array[0][$i] $DeviceName = $array[3][$i] } $i ++ } } $BlockDevice = "" $BlockDeviceName = ($BlockDeviceMappings | Where-Object { $_.ebs.VolumeId -eq $EbsVolumeID }).DeviceName } ElseIf ($DiskDrive.path -like "*NETAPP*") { if ($DriveLetter -match '[^a-zA-Z0-9]') { $i = 0 While ($i -ne ($array3.Count)) { if ($array[2][$i] -eq $EbsVolumeID) { $DriveLetter = $array[0][$i] $DeviceName = $array[3][$i] } $i ++ } } $EbsVolumeID = "FSxN Volume" $BlockDevice = "" $BlockDeviceName = ($BlockDeviceMappings | Where-Object { $_.ebs.VolumeId -eq $EbsVolumeID }).DeviceName } Else { $BlockDeviceName = $null $BlockDevice = $null } New-Object PSObject -Property @{ Disk = $Disk; Partitions = $Partitions; DriveLetter = If ($DriveLetter -eq $null) { "N/A" } Else { $DriveLetter }; EbsVolumeId = If ($EbsVolumeID -eq $null) { "N/A" } Else { $EbsVolumeID }; Device = If ($BlockDeviceName -eq $null) { "N/A" } Else { $BlockDeviceName }; VirtualDevice = If ($VirtualDevice -eq $null) { "N/A" } Else { $VirtualDevice }; VolumeName = If ($VolumeName -eq $null) { "N/A" } Else { $VolumeName }; DeviceName = If ($DeviceName -eq $null) { "N/A" } Else { $DeviceName }; } } | Sort-Object Disk | Format-Table -AutoSize -Property Disk, Partitions, DriveLetter, EbsVolumeId, Device, VirtualDevice, DeviceName, VolumeName

Exécutez le script comme suit :

PS C:\> .\mapping.ps1

Voici un exemple de sortie.

Disk Partitions DriveLetter EbsVolumeId Device VirtualDevice DeviceName VolumeName ---- ---------- ----------- ----------- ------ ------------- ---------- ---------- 0 1 C vol-0561f1783298efedd /dev/sda1 N/A NVMe Amazon Elastic B N/A 1 1 D vol-002a9488504c5e35a xvdb N/A NVMe Amazon Elastic B N/A 2 1 E vol-0de9d46fcc907925d xvdc N/A NVMe Amazon Elastic B N/A

Si vous n’avez pas fourni vos informations d’identification sur l’instance Windows, le script ne peut pas obtenir l’ID de volume EBS et indique N/A dans la colonne EbsVolumeId.