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 ai volumi nell'istanza Windows
Nota
Questo argomento si applica solo alle istanze Windows.
La tua istanza Windows include un volume EBS che funge da volume root. Se l'istanza Windows utilizza driver AWS PV o Citrix PV, è possibile aggiungere facoltativamente fino a 25 volumi, per un totale di 26 volumi. Per ulteriori informazioni, consulta Limiti dei volumi delle istanze.
A seconda del tipo di istanza della tua istanza, avrai da 0 a 24 volumi di instance store disponibili possibili per l'istanza. Per utilizzare qualsiasi dei volumi di instance store disponibili per l'istanza, è necessario specificarli alla creazione dell'AMI o all'avvio dell'istanza. Puoi inoltre aggiungere volumi EBS alla creazione dell'AMI o all'avvio dell'istanza o collegarli durante l'esecuzione dell'istanza.
Quando aggiungi un volume all'istanza, è necessario specificare il nome del dispositivo utilizzato da Amazon EC2. Per ulteriori informazioni, consulta Nomi dei dispositivi sulle istanze Amazon EC2. AWS Le Amazon Machine Image (AMI) di Windows contengono un set di driver utilizzati da Amazon EC2 per mappare volume di archivio istanza e EBS ai dischi Windows e alle lettere di unità. Se si avvia un'istanza da un'AMI Windows che utilizza driver AWS PV o Citrix PV, è possibile utilizzare le relazioni descritte in questa pagina per mappare i dischi Windows all'instance store e ai volumi EBS. Se la tua AMI Windows utilizza driver Red Hat PV, puoi aggiornare l'istanza per utilizzare i driver Citrix. Per ulteriori informazioni, consulta Aggiornamento dei driver PV sulle istanze Windows.
Elencare i volumi NVMe
Puoi individuare i dischi sull'istanza Windows tramite Disk Management (Gestione disco) o Powershell.
Elencare i dischi NVMe utilizzando Gestione disco
Puoi individuare i dischi sull'istanza Windows tramite Disk Management (Gestione disco).
Individuazione dei dischi sulla tua istanza Windows
-
Accedere all'istanza Windows tramite Remote Desktop. Per ulteriori informazioni, consulta Connettiti all'istanza Windows .
-
Avviare l'utilità Disk Management (Gestione disco).
-
Esamina i dischi. Il volume root è un volume EBS montato come
C:\
. Se non sono visualizzati altri dischi, significa che non hai specificato volumi aggiuntivi alla creazione dell'AMI o all'avvio dell'istanza.Di seguito è riportato un esempio che mostra i dischi disponibili se si avvia un'istanza
r5d.4xlarge
con due volumi EBS aggiuntivi.
Elenca i dischi NVMe utilizzando PowerShell
PowerShell Lo script seguente elenca ogni disco con il nome e il volume del dispositivo corrispondenti. È destinato all'uso con istanze basate sul sistema AWS Nitro, che utilizzano NVMe EBS e volumi di Instance Store.
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 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
Eseguire lo script come segue:
PS C:\>
.\mapping.ps1
Di seguito è riportato un output di esempio per un'istanza con un volume root, due volumi EBS e due volumi instance store.
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 non hai configurato le credenziali per Tools for Windows PowerShell sull'istanza Windows, lo script non può ottenere l'ID del volume EBS e utilizza N/A nella colonna. EbsVolumeId
Mappare i volumi EBS NVMe
Con le istanze basate sul sistema AWS Nitro, i volumi EBS vengono esposti come dispositivi NVMe. È possibile utilizzare il comando Get-Disk
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
È anche possibile eseguire il comando ebsnvme-id per eseguire la mappatura dei numeri del disco NVMe con gli ID volume EBS e i nomi dei dispositivi.
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
Elencare i volumi
Puoi individuare i dischi sull'istanza Windows tramite Disk Management (Gestione disco) o Powershell.
Elencare i dischi utilizzando Gestione disco
Puoi individuare i dischi sull'istanza Windows tramite Disk Management (Gestione disco).
Individuazione dei dischi sulla tua istanza Windows
-
Accedere all'istanza Windows tramite Remote Desktop. Per ulteriori informazioni, consulta Connettiti all'istanza Windows .
-
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.
-
Esamina i dischi. Il volume root è un volume EBS montato come
C:\
. Se non sono visualizzati altri dischi, significa che non hai specificato volumi aggiuntivi alla creazione dell'AMI o all'avvio dell'istanza.Nell'esempio riportato di seguito sono illustrati i dischi disponibili lanciando un'istanza
m3.medium
con un volume instance store (Disco 2) e un volume EBS aggiuntivo (Disco 1). -
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 Mappare i dispositivi disco ai nomi dei dispositivi. Ad esempio, il disco seguente presenta l'ubicazione Bus Number 0, Target Id 9, LUN 0. In base alla tabella dei volumi EBS, il nome del dispositivo di questa ubicazione è
xvdj
.
Mappare i dispositivi disco ai nomi dei dispositivi
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 istanze non NVMe ai volumi Windows. Il numero di volumi instance store disponibili è determinato dal tipo di istanza. Per ulteriori informazioni, consulta Volumi di archivio dell'istanza.
Ubicazione | Nome dispositivo |
---|---|
Bus Number 0, Target ID 78, LUN 0 |
xvdca |
Bus Number 0, Target ID 79, LUN 0 |
xvdcb |
Bus Number 0, Target ID 80, LUN 0 |
xvdcc |
Bus Number 0, Target ID 81, LUN 0 |
xvdcd |
Bus Number 0, Target ID 82, LUN 0 |
xvdce |
Bus Number 0, Target ID 83, LUN 0 |
xvdcf |
Bus Number 0, Target ID 84, LUN 0 |
xvdcg |
Bus Number 0, Target ID 85, LUN 0 |
xvdch |
Bus Number 0, Target ID 86, LUN 0 |
xvdci |
Bus Number 0, Target ID 87, LUN 0 |
xvdcj |
Bus Number 0, Target ID 88, LUN 0 |
xvdck |
Bus Number 0, Target ID 89, LUN 0 |
xvdcl |
Volumi EBS
La tabella seguente descrive come i driver Citrix PV e AWS PV mappano i volumi EBS non NVMe ai volumi Windows.
Ubicazione | Nome dispositivo |
---|---|
Bus Number 0, Target ID 0, LUN 0 |
/dev/sda1 |
Bus Number 0, Target ID 1, LUN 0 |
xvdb |
Bus Number 0, Target ID 2, LUN 0 |
xvdc |
Bus Number 0, Target ID 3, LUN 0 |
xvdd |
Bus Number 0, Target ID 4, LUN 0 |
xvde |
Bus Number 0, Target ID 5, LUN 0 |
xvdf |
Bus Number 0, Target ID 6, LUN 0 |
xvdg |
Bus Number 0, Target ID 7, LUN 0 |
xvdh |
Bus Number 0, Target ID 8, LUN 0 |
xvdi |
Bus Number 0, Target ID 9, LUN 0 |
xvdj |
Bus Number 0, Target ID 10, LUN 0 |
xvdk |
Bus Number 0, Target ID 11, LUN 0 |
xvdl |
Bus Number 0, Target ID 12, LUN 0 |
xvdm |
Bus Number 0, Target ID 13, LUN 0 |
xvdn |
Bus Number 0, Target ID 14, LUN 0 |
xvdo |
Bus Number 0, Target ID 15, LUN 0 |
xvdp |
Bus Number 0, Target ID 16, LUN 0 |
xvdq |
Bus Number 0, Target ID 17, LUN 0 |
xvdr |
Bus Number 0, Target ID 18, LUN 0 |
xvds |
Bus Number 0, Target ID 19, LUN 0 |
xvdt |
Bus Number 0, Target ID 20, LUN 0 |
xvdu |
Bus Number 0, Target ID 21, LUN 0 |
xvdv |
Bus Number 0, Target ID 22, LUN 0 |
xvdw |
Bus Number 0, Target ID 23, LUN 0 |
xvdx |
Bus Number 0, Target ID 24, LUN 0 |
xvdy |
Bus Number 0, Target ID 25, LUN 0 |
xvdz |
Elenca i dischi utilizzando 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 le credenziali per ottenere l'ID del volume EBS. Puoi configurare un profilo utilizzando gli strumenti per PowerShell o assegnare un ruolo IAM all'istanza.
-
Non supporta volumi NVMe.
-
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 sono state fornite le credenziali sull'istanza Windows, lo script non può ottenere l'ID del volume EBS e utilizza N/A nella colonna EbsVolumeId
.