本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 Amazon EC2 Windows 執行個體上的NVMe磁碟對應至磁碟區
使用 Nitro 型執行個體 時,EBS磁碟區會公開為NVMe裝置。本主題說明如何檢視執行個體上 Windows 作業系統可用的NVMe磁碟。它還顯示如何將這些NVMe磁碟映射到基礎 Amazon EBS磁碟區,以及為 Amazon 所使用的區塊型裝置映射指定的裝置名稱EC2。
列出NVMe磁碟
您可以使用磁碟管理公用程式或 Powershell,來搜尋 Windows 執行個體上的磁碟。
- Disk Management
-
搜尋 Windows 執行個體上的磁碟
-
使用遠端桌面登入 Windows 執行個體。如需詳細資訊,請參閱 使用 連線至 Windows 執行個體 RDP。
-
啟動磁碟管理公用程式。
-
檢閱磁碟。根磁碟區是掛載為 的EBS磁碟區C:\
。如果沒有顯示其他磁碟,則當您建立AMI或啟動執行個體時,不會指定其他磁碟區。
以下是範例,顯示當您啟動具有兩個額外磁碟EBS區的r5d.4xlarge
執行個體時可用的磁碟。
- PowerShell
-
下列 PowerShell 指令碼會列出每個磁碟及其對應的裝置名稱和磁碟區。它適用於使用 NVMeEBS和 執行個體存放磁碟區的 Nitro 型執行個體 。
連線至 Windows 執行個體並執行下列命令以啟用 PowerShell 指令碼執行。
Set-ExecutionPolicy RemoteSigned
複製下列指令碼,並在您的 Windows 執行個體上將其儲存為 mapping.ps1
。
# 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
執行指令碼,如下所示:
PS C:\>
.\mapping.ps1
以下是具有根磁碟區、兩個EBS磁碟區和兩個執行個體存放磁碟區之執行個體的範例輸出。
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
如果您未在 Windows 執行個體 PowerShell 上為 Tools for Windows 設定憑證,則指令碼無法取得EBS磁碟區 ID,並在 EbsVolumeId
欄中使用 N/A。
將NVMe磁碟對應至磁碟區
您可以使用 Get-Disk 命令,將 Windows 磁碟編號映射至EBS磁碟區 IDs。
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
您也可以執行 ebsnvme-id命令,將NVMe磁碟編號對應至EBS磁碟區IDs和裝置名稱。
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