Mappez des objets non NVMe disques sur une instance Amazon EC2 Windows à des volumes - 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.

Mappez des objets non NVMe disques sur une instance Amazon EC2 Windows à des volumes

Pour les instances lancées depuis un Windows AMI 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 EBS volumes. Cette rubrique explique comment afficher les NVMenon-disques disponibles pour le système d'exploitation Windows sur votre instance. Il explique également comment mapper ces objets non liés aux NVMe disques aux EBS volumes Amazon sous-jacents et aux noms d'appareils spécifiés pour les mappages de périphériques en mode bloc utilisés par AmazonEC2.

Note

Si vous lancez une instance Si votre Windows AMI utilise des pilotes PV Red Hat, vous pouvez mettre à jour votre instance pour utiliser les pilotes Citrix. Pour de plus amples informations, veuillez consulter Mettre à niveau les pilotes PV sur EC2 les instances Windows.

Répertorier les NVMe non-disques

Vous pouvez trouver les disques de votre instance Windows à l'aide de la gestion des disques ou PowerShell.

Disk Management
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 Connectez-vous à votre instance Windows à l'aide de RDP.

  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 EBS volume monté en tant queC:\. Si aucun autre disque n'est affiché, cela signifie que vous n'avez pas spécifié de volumes supplémentaires lors de la création AMI ou du lancement de l'instance.

    L'exemple suivant montre les disques disponibles si vous lancez une m3.medium instance avec un volume de stockage d'instance (disque 2) et un EBS volume supplémentaire (disque 1).

    Gestion des disques avec un volume racine, un volume de stockage d'instance et un EBS volume.
  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 Mappez des objets autres que NVMe des disques à des volumes. Par exemple, le disque suivant possède l'emplacement Bus numéro 0, ID cible 9, LUN 0. Selon le tableau des EBS volumes, le nom du périphérique pour cet emplacement estxvdj.

    Emplacement d'un EBS volume.
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 EBS du volume. Vous pouvez configurer un profil à l'aide des outils pour PowerShell l'instance ou y associer un IAM rôle.

  • Ne prend pas en charge NVMe les volumes.

  • 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 du EBS volume et utilise N/A dans la EbsVolumeId colonne.

Mappez des objets autres que NVMe des disques à des volumes

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 AWS PV Citrix mappent les volumes de stockage autres que les NVMe instances 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 Limites de volume de stockage d'instance pour les EC2 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

EBSvolumes

Le tableau suivant décrit comment les pilotes PV et AWS PV Citrix mappent les NVME EBS non-volumes 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