將 Amazon EC2 Windows 執行個體上的 NVMe 磁碟映射至磁碟區
若使用 Nitro 型執行個體,EBS 磁碟區會公開為 NVMe 裝置。本主題會說明如何檢視執行個體上 Windows 作業系統可用的 NVMe 磁碟。其也會顯示如何將這些 NVMe 磁碟映射至基礎 Amazon EBS 磁碟區,以及為 Amazon EC2 使用的區塊型儲存設備映射指定的裝置名稱。
列出 NVMe 磁碟
您可以使用磁碟管理公用程式或 Powershell,來搜尋 Windows 執行個體上的磁碟。
- Disk Management
-
搜尋 Windows 執行個體上的磁碟
-
使用遠端桌面登入 Windows 執行個體。如需詳細資訊,請參閱 使用 RDP 連線至您的 Windows 執行個體。
-
啟動磁碟管理公用程式。
-
檢閱磁碟。根磁碟區是掛載為 C:\
的 EBS 磁碟區。如果沒有顯示其他的磁碟,表示當您建立 AMI 或啟動執行個體時,並未指定其他的磁碟區。
下列範例顯示當您啟動具有兩個額外 EBS 磁碟區的 r5d.4xlarge
執行個體時,可以使用的磁碟。
- PowerShell
-
下列的 PowerShell 指令碼,會列出每個磁碟及其對應的裝置名稱和磁碟區。此指令碼適用於與 Nitro 型執行個體一起使用,其會使用 NVMe EBS 和執行個體儲存體磁碟區。
連線到您的 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 執行個體上設定適用於 Windows PowerShell 的 工具,指令碼就無法取得 EBS 磁碟區 ID,且會在 EbsVolumeId
欄中使用 N/A。
將 NVMe 磁碟映射至磁碟區
您可以使用 Get-Disk 命令,將 Windows 磁碟編號映射到 EBS 磁碟區 ID。
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 磁碟區 ID 和裝置名稱。
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