Mappare i dischi non NVMe dischi sull'istanza Amazon EC2 Windows ai volumi - Amazon Elastic Compute Cloud

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Mappare i dischi non NVMe dischi sull'istanza Amazon EC2 Windows ai volumi

Per le istanze avviate da un sistema Windows AMI che utilizza i driver AWS PV o Citrix PV, è possibile utilizzare le relazioni descritte in questa pagina per mappare i dischi di Windows all'archivio delle istanze e ai volumi. EBS Questo argomento spiega come visualizzare i non NVMe dischi disponibili per il sistema operativo Windows sull'istanza. Mostra anche come mappare questi non NVMe dischi ai EBS volumi Amazon sottostanti e ai nomi dei dispositivi specificati per le mappature dei dispositivi a blocchi utilizzate da Amazon. EC2

Nota

Se si avvia un'istanza Se Windows AMI utilizza i driver Red Hat PV, è possibile aggiornare l'istanza per utilizzare i driver Citrix. Per ulteriori informazioni, consulta Aggiorna i driver PV sulle istanze Windows EC2.

Elenca i dischi non dischi NVMe

Puoi trovare i dischi sulla tua istanza di Windows utilizzando Gestione disco o. PowerShell

Disk Management
Individuazione dei dischi sulla tua istanza Windows
  1. Accedere all'istanza Windows tramite Remote Desktop. Per ulteriori informazioni, consulta Connect alla propria istanza di Windows tramite RDP.

  2. Avviare l'utilità Disk Management (Gestione disco).

    Sulla barra delle applicazioni, fai clic con il pulsante destro del mouse sul logo di Windows, quindi scegli Gestione disco.

  3. Esamina i dischi. Il volume principale è un EBS volume montato come. C:\ Se non sono visualizzati altri dischi, significa che non hai specificato volumi aggiuntivi quando hai creato AMI o avviato l'istanza.

    Di seguito è riportato un esempio che mostra i dischi disponibili se si avvia un'm3.mediumistanza con un volume di Instance Store (Disco 2) e un EBS volume aggiuntivo (Disco 1).

    Gestione del disco con un volume root, un volume di Instance Store e un EBS volume.
  4. Fai clic con il pulsante destro del mouse sul riquadro grigio con l'etichetta Disco 1, quindi seleziona Properties (Proprietà). Prendi nota del valore di Location (Ubicazione) e cercalo nelle tabelle in Mappa i non dischi ai volumi NVMe. Ad esempio, il disco seguente ha la posizione Bus Number 0, Target Id 9, LUN 0. In base alla tabella EBS dei volumi, il nome del dispositivo per questa posizione èxvdj.

    La posizione di un EBS volume.
PowerShell

PowerShell Lo script seguente elenca ogni disco con il nome e il volume del dispositivo corrispondenti.

Requisiti e limitazioni
  • Richiede Windows Server 2012 o versione successiva.

  • Richiede credenziali per ottenere l'ID EBS del volume. È possibile configurare un profilo utilizzando gli strumenti per PowerShell l'istanza o assegnare un IAM ruolo all'istanza.

  • Non supporta NVMe i volumi.

  • Non supporta dischi dinamici.

Connect all'istanza di Windows ed esegui il comando seguente per abilitare l'esecuzione PowerShell dello script.

Set-ExecutionPolicy RemoteSigned

Copiare lo script seguente e salvarlo come mapping.ps1 nell'istanza 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

Eseguire lo script come segue:

PS C:\> .\mapping.ps1

Di seguito è riportato un output di esempio.

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

Se non hai fornito le tue credenziali sull'istanza di Windows, lo script non può ottenere l'ID del EBS volume e utilizza N/A nella colonna. EbsVolumeId

Mappa i non dischi ai volumi NVMe

Il driver del dispositivo a blocchi dell'istanza assegna i nomi del volume effettivi durante il montaggio dei volumi.

Volumi di archivio dell'istanza

La tabella seguente descrive come i driver Citrix PV e AWS PV mappano i volumi di archiviazione non NVMe istanza ai volumi Windows. Il numero di volumi instance store disponibili è determinato dal tipo di istanza. Per ulteriori informazioni, consulta Limiti di volume dell'Instance Store per le EC2 istanze.

Ubicazione Nome dispositivo

Bus numero 0, Target ID 78, 0 LUN

xvdca

Bus numero 0, ID di destinazione 79, LUN 0

xvdcb

Bus numero 0, ID di destinazione 80, LUN 0

xvdcc

Bus numero 0, ID di destinazione 81, LUN 0

xvdcd

Bus numero 0, ID di destinazione 82, LUN 0

xvdce

Bus numero 0, ID di destinazione 83, LUN 0

xvdcf

Bus numero 0, ID di destinazione 84, LUN 0

xvdcg

Bus numero 0, Target ID 85, LUN 0

xvdch

Bus numero 0, ID di destinazione 86, LUN 0

xvdci

Bus numero 0, ID di destinazione 87, LUN 0

xvdcj

Bus numero 0, Target ID 88, LUN 0

xvdck

Bus numero 0, ID di destinazione 89, LUN 0

xvdcl

EBSvolumi

La tabella seguente descrive come i driver Citrix PV e AWS PV mappano i non NVME EBS volumi ai volumi Windows.

Ubicazione Nome dispositivo

Bus numero 0, Target ID 0, 0 LUN

/dev/sda1

Bus numero 0, ID di destinazione 1, LUN 0

xvdb

Bus numero 0, ID di destinazione 2, LUN 0

xvdc

Bus numero 0, ID di destinazione 3, LUN 0

xvdd

Bus numero 0, ID di destinazione 4, LUN 0

xvde

Bus numero 0, ID di destinazione 5, LUN 0

xvdf

Bus numero 0, ID di destinazione 6, LUN 0

xvdg

Bus numero 0, ID di destinazione 7, LUN 0

xvdh

Bus numero 0, ID di destinazione 8, LUN 0

xvdi

Bus numero 0, ID di destinazione 9, LUN 0

xvdj

Bus numero 0, ID di destinazione 10, LUN 0

xvdk

Bus numero 0, ID di destinazione 11, LUN 0

xvdl

Bus numero 0, ID di destinazione 12, LUN 0

xvdm

Bus numero 0, ID di destinazione 13, LUN 0

xvdn

Bus numero 0, ID di destinazione 14, LUN 0

xvdo

Bus numero 0, ID di destinazione 15, LUN 0

xvdp

Bus numero 0, ID di destinazione 16, LUN 0

xvdq

Bus numero 0, ID di destinazione 17, LUN 0

xvdr

Bus numero 0, ID di destinazione 18, LUN 0

xvds

Bus numero 0, ID di destinazione 19, LUN 0

xvdt

Bus numero 0, ID di destinazione 20, LUN 0

xvdu

Bus numero 0, ID di destinazione 21, LUN 0

xvdv

Bus numero 0, ID di destinazione 22, LUN 0

xvdw

Bus numero 0, ID di destinazione 23, LUN 0

xvdx

Bus numero 0, Target ID 24, LUN 0

xvdy

Bus numero 0, ID di destinazione 25, LUN 0

xvdz