Amazon Elastic Compute Cloud
Windows 实例用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

将磁盘映射到 Windows 实例上的卷

您的 Windows 实例附带一个作为根卷的 EBS 卷。如果您的 Windows 实例使用 AWS 半虚拟化或 Citrix 半虚拟化驱动程序,您可以选择最多添加 25 个卷,最终一共连接 26 个卷。有关更多信息,请参阅 实例卷限制

根据您的实例的实例类型,您将有 0 到 24 个可能的实例存储卷可用于实例。要使用可用于您的实例的任何实例存储卷,您必须在创建 AMI 或启动实例时指定这些卷。您还可以在创建 AMI 或启动实例时添加 EBS 卷,或在您的实例正在运行时连接这些卷。有关使卷可用的信息,请参阅使卷可在 Windows 上使用

将卷添加到实例时,您可以指定 Amazon EC2 使用的设备名称。有关更多信息,请参阅 Windows 实例上的设备命名。AWS Windows Amazon 系统映像 (AMI) 包含 Amazon EC2 所使用的一系列驱动程序,用于将实例存储和 EBS 卷映射到 Windows 磁盘和驱动器盘符。如果从使用 AWS PV 或 Citrix PV 驱动程序的 Windows AMI 启动实例,则可以使用本页介绍的关系,将 Windows 磁盘映射到实例存储和 EBS 卷。如果您的 Windows AMI 使用 Red Hat PV 驱动程序,那么您可以更新您的实例以使用 Citrix 驱动程序。有关更多信息,请参阅 在 Windows 实例上升级半虚拟化驱动程序

列出使用 Windows 磁盘管理的磁盘

您可以使用 Windows 磁盘管理工具,在您的 Windows 实例上查找磁盘。

查找 Windows 实例上的磁盘

  1. 使用远程桌面登录 Windows 实例。有关更多信息,请参阅连接到您的 Windows 实例

  2. 启动磁盘管理实用工具。

    在 Windows Server 2012 或 Windows Server 2016 中,在任务栏上右键单击 Windows 徽标,然后选择 Disk Management。在 Windows Server 2008 中,依次选择 StartAdministrative ToolsComputer ManagementDisk Management

  3. 检查磁盘。根卷是一个安装为 C:\ 的 EBS 卷。如果未显示其他磁盘,表示您在创建 AMI 或启动实例时没有指定其他卷。

    下面的示例介绍了在您启动一个包含实例存储卷 (磁盘 2) 和其他 EBS 卷 (磁盘 1) 的 m3.medium 实例时可用的磁盘。

     对一个根卷、一个实例存储卷和一个 EBS 卷的磁盘管理。
  4. 右键单击标记为“Disk 1 (磁盘 1)”的灰色窗格,然后选择 Properties (属性)。记下 Location (位置) 值,并在磁盘设备到设备名称的映射中的表中查找该值。例如,以下磁盘的位置值为 Bus Number 0, Target Id 9, LUN 0 (总线编号 0,目标 ID 9,LUN 0)。根据 EBS 卷的表,此位置的设备名称为 xvdj

     EBS 卷的位置。
  5. 要将 EBS 卷的设备名称映射到其卷 ID,请在计算机上打开 Amazon EC2 控制台。在“Navigation (导航)”窗格中,单击 Instances,然后选择您的实例。在 Block devices (块储存设备) 下,单击设备名称,然后查找 EBS ID。在本例中,卷 ID 为 vol-0a07f3e37b14708b9

     在 Amazon EC2 控制台中显示块储存设备映射。

    请注意,Amazon EC2 控制台只显示 EBS 卷。

使用 Windows PowerShell 列出磁盘

以下 PowerShell 脚本列出每个磁盘以及相应的设备名称和卷。

Copy
# List the Windows disks function Get-EC2InstanceMetadata { param([string]$Path) (Invoke-WebRequest -Uri "http://169.254.169.254/latest/$Path").Content } function Convert-SCSITargetIdToDeviceName { param([int]$SCSITargetId) If ($SCSITargetId -eq 0) { return "/dev/sda1" } $deviceName = "xvd" If ($SCSITargetId -gt 25) { $deviceName += [char](0x60 + [int]($SCSITargetId / 26)) } $deviceName += [char](0x61 + $SCSITargetId % 26) return $deviceName } Try { $InstanceId = Get-EC2InstanceMetadata "meta-data/instance-id" $AZ = Get-EC2InstanceMetadata "meta-data/placement/availability-zone" $Region = $AZ.Remove($AZ.Length - 1) $BlockDeviceMappings = (Get-EC2Instance -Region $Region -Instance $InstanceId).Instances.BlockDeviceMappings $VirtualDeviceMap = @{} (Get-EC2InstanceMetadata "meta-data/block-device-mapping").Split("`n") | ForEach-Object { $VirtualDevice = $_ $BlockDeviceName = Get-EC2InstanceMetadata "meta-data/block-device-mapping/$VirtualDevice" $VirtualDeviceMap[$BlockDeviceName] = $VirtualDevice $VirtualDeviceMap[$VirtualDevice] = $BlockDeviceName } } Catch { Write-Host "Could not access the AWS API, therefore, VolumeId is not available. Verify that you provided your access keys." -ForegroundColor Yellow } Get-WmiObject -Class Win32_DiskDrive | ForEach-Object { $DiskDrive = $_ $Volumes = Get-WmiObject -Query "ASSOCIATORS OF {Win32_DiskDrive.DeviceID='$($DiskDrive.DeviceID)'} WHERE AssocClass=Win32_DiskDriveToDiskPartition" | ForEach-Object { $DiskPartition = $_ Get-WmiObject -Query "ASSOCIATORS OF {Win32_DiskPartition.DeviceID='$($DiskPartition.DeviceID)'} WHERE AssocClass=Win32_LogicalDiskToPartition" } If ($DiskDrive.PNPDeviceID -like "*PROD_PVDISK*") { $BlockDeviceName = Convert-SCSITargetIdToDeviceName($DiskDrive.SCSITargetId) $BlockDevice = $BlockDeviceMappings | Where-Object { $_.DeviceName -eq $BlockDeviceName } $VirtualDevice = If ($VirtualDeviceMap.ContainsKey($BlockDeviceName)) { $VirtualDeviceMap[$BlockDeviceName] } Else { $null } } ElseIf ($DiskDrive.PNPDeviceID -like "*PROD_AMAZON_EC2_NVME*") { $BlockDeviceName = Get-EC2InstanceMetadata "meta-data/block-device-mapping/ephemeral$($DiskDrive.SCSIPort - 2)" $BlockDevice = $null $VirtualDevice = If ($VirtualDeviceMap.ContainsKey($BlockDeviceName)) { $VirtualDeviceMap[$BlockDeviceName] } Else { $null } } Else { $BlockDeviceName = $null $BlockDevice = $null $VirtualDevice = $null } New-Object PSObject -Property @{ Disk = $DiskDrive.Index; Partitions = $DiskDrive.Partitions; DriveLetter = If ($Volumes -eq $null) { "N/A" } Else { $Volumes.DeviceID }; EbsVolumeId = If ($BlockDevice -eq $null) { "N/A" } Else { $BlockDevice.Ebs.VolumeId }; Device = If ($BlockDeviceName -eq $null) { "N/A" } Else { $BlockDeviceName }; VirtualDevice = If ($VirtualDevice -eq $null) { "N/A" } Else { $VirtualDevice }; VolumeName = If ($Volumes -eq $null) { "N/A" } Else { $Volumes.VolumeName }; } } | Sort-Object Disk | Format-Table -AutoSize -Property Disk, Partitions, DriveLetter, EbsVolumeId, Device, VirtualDevice, VolumeName

注意

此脚本需要在适用于 PS 的 AWS 工具中配置的配置文件或附加到实例的 IAM 角色。

在您运行此脚本前,请确保运行以下命令以支持 PowerShell 脚本的执行。

Copy
Set-ExecutionPolicy RemoteSigned

复制脚本并将其作为 .ps1 文件存储在 Windows 实例上。如果您运行脚本而不设置访问密钥,您将看到类似如下的输出。

Disk Partitions DriveLetter EbsVolumeId           Device    VirtualDevice VolumeName
---- ---------- ----------- -----------           ------    ------------- ----------
   0          0 N/A         N/A                   xvdca     ephemeral0    N/A
   1          0 N/A         N/A                   xvdcb     ephemeral1    N/A
   2          1 C:          vol-0700f4fea74dd54c3 /dev/sda1 root          Windows
   3          0 N/A         vol-04969de6b6616d55c xvdf      ebs2          N/A

如果您指定 IAM 角色时使用的是允许启动实例时访问 Amazon EC2 的策略,或者您按照 适用于 Windows PowerShell 的 AWS 工具 用户指南 中的使用 AWS 凭证所述,在 Windows 实例上设置您的凭证,则您将在 VolumeId 列而不是 NA 中获得 EBS 卷的卷 ID。

磁盘设备到设备名称的映射

下表描述了 Citrix PV 和 AWS PV 驱动程序是如何将非 NVMe 实例存储卷映射到 Windows 卷的。可用的实例存储卷数量由实例类型决定。有关更多信息,请参阅 实例存储卷

地点 设备名称

总线编号 0,目标 ID 78,LUN 0

xvdca

总线编号 0,目标 ID 79,LUN 0

xvdcb

总线编号 0,目标 ID 80,LUN 0

xvdcc

总线编号 0,目标 ID 81,LUN 0

xvdcd

总线编号 0,目标 ID 82,LUN 0

xvdce

总线编号 0,目标 ID 83,LUN 0

xvdcf

总线编号 0,目标 ID 84,LUN 0

xvdcg

总线编号 0,目标 ID 85,LUN 0

xvdch

总线编号 0,目标 ID 86,LUN 0

xvdci

总线编号 0,目标 ID 87,LUN 0

xvdcj

总线编号 0,目标 ID 88,LUN 0

xvdck

总线编号 0,目标 ID 89,LUN 0

xvdcl

下表描述了 Citrix 半虚拟化和 AWS 半虚拟化驱动程序是如何将 EBS 卷映射到 Windows 卷的。有关更多信息,请参阅 Windows 实例上的设备命名

地点 设备名称

总线编号 0,目标 ID 0,LUN 0

/dev/sda1

总线编号 0,目标 ID 1,LUN 0

xvdb

总线编号 0,目标 ID 2,LUN 0

xvdc

总线编号 0,目标 ID 3,LUN 0

xvdd

总线编号 0,目标 ID 4,LUN 0

xvde

总线编号 0,目标 ID 5,LUN 0

xvdf

总线编号 0,目标 ID 6,LUN 0

xvdg

总线编号 0,目标 ID 7,LUN 0

xvdh

总线编号 0,目标 ID 8,LUN 0

xvdi

总线编号 0,目标 ID 9,LUN 0

xvdj

总线编号 0,目标 ID 10,LUN 0

xvdk

总线编号 0,目标 ID 11,LUN 0

xvdl

总线编号 0,目标 ID 12,LUN 0

xvdm

总线编号 0,目标 ID 13,LUN 0

xvdn

总线编号 0,目标 ID 14,LUN 0

xvdo

总线编号 0,目标 ID 15,LUN 0

xvdp

总线编号 0,目标 ID 16,LUN 0

xvdq

总线编号 0,目标 ID 17,LUN 0

xvdr

总线编号 0,目标 ID 18,LUN 0

xvds

总线编号 0,目标 ID 19,LUN 0

xvdt

总线编号 0,目标 ID 20,LUN 0

xvdu

总线编号 0,目标 ID 21,LUN 0

xvdv

总线编号 0,目标 ID 22,LUN 0

xvdw

总线编号 0,目标 ID 23,LUN 0

xvdx

总线编号 0,目标 ID 24,LUN 0

xvdy

总线编号 0,目标 ID 25,LUN 0

xvdz