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 disques à des volumes attachés à une instance Amazon EC2 Windows
Note
Cette rubrique s'applique uniquement aux instances Windows.
Votre instance Windows est fournie avec un EBS volume qui fait office 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 EBS de volume Amazon pour les EC2 instances Amazon.
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 le spécifier lors de la création AMI ou du lancement de votre instance. Vous pouvez également ajouter des EBS volumes lorsque vous créez AMI ou lancez votre instance, ou les attacher pendant que votre instance est en cours d'exécution.
Lorsque vous ajoutez un volume à votre instance, vous spécifiez le nom de l'appareil EC2 utilisé par Amazon. Pour de plus amples informations, veuillez consulter Noms des appareils pour les volumes sur les EC2 instances Amazon. AWS Windows Amazon Machine Images (AMIs) contient un ensemble de pilotes utilisés par Amazon pour EC2 mapper le stockage et les EBS volumes des instances à des disques Windows et à des lettres de lecteur. Si vous lancez une instance à partir d'un système 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. Si votre Windows AMI utilise des pilotes PV Red Hat, vous pouvez mettre à jour votre instance pour utiliser les pilotes Citrix. Pour plus d’informations, consultez Mettre à niveau les pilotes PV sur EC2 les instances Windows.
Table des matières
Lister NVMe les volumes
Vous pouvez utiliser la gestion de disques ou Powershell pour rechercher les disques sur votre instance Windows.
NVMeRépertorier les disques à l'aide de la
Vous pouvez utiliser la gestion de disques Windows pour rechercher les disques sur votre instance Windows.
Pour rechercher les disques sur votre instance Windows
-
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.
-
Démarrez l’utilitaire Gestion des disques.
-
Examinez les disques. Le volume racine est un EBS volume monté en tant que
C:\
. 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
r5d.4xlarge
instance avec deux EBS volumes supplémentaires.
Lister NVMe 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. Il est destiné à être utilisé avec des instances basées sur le système AWS Nitro, qui utilisent NVMe EBS et stockent des volumes.
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 EBS volumes 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 EBS volume et utilise N/A dans la EbsVolumeId
colonne.
NVMeEBSVolumes cartographiques
Avec les instances créées sur le système AWS Nitro, les EBS volumes sont exposés en tant que NVMe périphériques. Vous pouvez utiliser la commande 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
Vous pouvez également exécuter la ebsnvme-id commande pour mapper les numéros de NVMe disque aux noms de EBS volumes IDs et 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
-
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.
-
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.
-
Examinez les disques. Le volume racine est un EBS volume monté en tant que
C:\
. 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). -
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 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 est
xvdj
.
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 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 Amazon.
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 |
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 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.