如何在 Get-PhysicalDisk 上使用 Get-PhysicalExtent?

如何在 Get-PhysicalDisk 上使用 Get-PhysicalExtent?

无论我在哪个服务器上尝试使用 PowerShell 文档中的 Get-PhysicalExtent,都不起作用。我已将此记录为 GitHub 上的错误:https://github.com/MicrosoftDocs/windows-powershell-docs/issues/514 (我不知道为什么它不起作用,因为我没有使用过这个 API 或 Windows 存储空间或存储管理 API)。

以下是我收到的错误:

PS C:\WINDOWS\system32> get-physicaldisk

FriendlyName            SerialNumber    MediaType CanPool OperationalStatus HealthStatus Usage            Size
------------            ------------    --------- ------- ----------------- ------------ -----            ----
Samsung SSD 860 EVO 4TB S3YNNB0KA01262B SSD       False   OK                Healthy      Auto-Select   3.64 TB
Crucial_CT1050MX300SSD1 1652152B887B    SSD       False   OK                Healthy      Auto-Select 978.09 GB


PS C:\WINDOWS\system32> get-physicaldisk -FriendlyName "Samsung SSD 860 EVO 4TB"

FriendlyName            SerialNumber    MediaType CanPool OperationalStatus HealthStatus Usage          Size
------------            ------------    --------- ------- ----------------- ------------ -----          ----
Samsung SSD 860 EVO 4TB S3YNNB0KA01262B SSD       False   OK                Healthy      Auto-Select 3.64 TB


PS C:\WINDOWS\system32> Get-PhysicalExtent -PhysicalDisk (get-physicaldisk -FriendlyName "Samsung SSD 860 EVO 4TB")
Get-PhysicalExtent : Not Supported
Activity ID: {7ba2cd2e-bd23-4b54-b4dc-c6a9ae118492}
At line:1 char:1
+ Get-PhysicalExtent -PhysicalDisk (get-physicaldisk -FriendlyName "Sam ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Get-PhysicalExtent], CimException
    + FullyQualifiedErrorId : StorageWMI 1,Microsoft.Management.Infrastructure.CimCmdlets.InvokeCimMethodCommand,Get-PhysicalExtent

答案1

“范围”一词在 Windows 中被重载。 一个意思是一连串连续的簇,这似乎就是你正在考虑的意思,尽管从技术上讲,你要找的数字被称为簇的大小或者块大小而不是范围大小。

其他其含义似乎大部分或完全没有记录,是指池磁盘上的一块空间,其中包含一个储存空间从这个意义上来说,范围也可称为“分配”或“板块”。

命令Get-PhysicalExtent指的是这两个含义中的第二个。

因此,简而言之,该命令没有按照您的想法执行,并且它给您一个“不支持”错误,因为该请求对基本磁盘没有意义,只对存储池中的磁盘有意义。我从评论中看到您已经找到了正确的命令,复制在这里以方便未来的读者:

 Get-WmiObject -Class Win32_volume -Filter "FileSystem='NTFS'" | Select-Object Name, Label, BlockSize | Format-Table -AutoSize

文档当然可以更清晰一些。我只能在 Microsoft 博客文章中找到对“extent”一词的引用,而无法在官方文档中找到,不过我相信我过去在官方文档中读到过它,不过可能是在动态磁盘而不是存储空间的上下文中。为了确保在没有明确文档的情况下正确解释了命令,我对其进行了测试;如果您想要更多详细信息,请继续阅读,但由于您不使用存储空间,您可能会觉得它无趣。


在我的 Windows 10 机器上,连接了一个备用 USB 磁盘并将其配置为基本磁盘,我收到了与您相同的错误消息:

PS C:\WINDOWS\system32> Get-PhysicalExtent -PhysicalDisk (Get-PhysicalDisk -FriendlyName "ATA TOSHIBA MQ01ABD1")
Get-PhysicalExtent : Not Supported
Activity ID: {45d91cf6-475f-4851-98be-6dd199e54c34}
At line:1 char:1
+ Get-PhysicalExtent -PhysicalDisk (Get-PhysicalDisk -FriendlyName "ATA ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Get-PhysicalExtent], CimException
    + FullyQualifiedErrorId : StorageWMI 1,Microsoft.Management.Infrastructure.CimCmdlets.InvokeCimMethodCommand,Get-P
   hysicalExtent

然后我删除了分区并使用磁盘创建新的存储空间池并重新运行命令(*):

PS C:\WINDOWS\system32> Get-PhysicalExtent -PhysicalDisk (Get-PhysicalDisk -FriendlyName "ATA TOSHIBA MQ01ABD1 SCSI Disk Device")


ColumnNumber          : 0
CopyNumber            : 0
Flags                 : 0x0000000000000000
OperationalDetails    :
OperationalStatus     :
PhysicalDiskOffset    : 0
PhysicalDiskUniqueId  : 5000000000000001
ReplacementCopyNumber :
Size                  : 268435456
StorageTierUniqueId   :
VirtualDiskOffset     : 0
VirtualDiskUniqueId   : CD6F8CC06A09E911907918DBF22A4387
PSComputerName        :

不再不受支持,但那里没有太多数据:这并不奇怪,因为我只创建了池而没有添加存储空间。有一个 256MB 的区段(有时称为“slab”,例如,看这里) 我相信它包含存储池的数据库。

添加存储空间后,我们可以看到额外的范围:

PS C:\WINDOWS\system32> Get-PhysicalExtent -PhysicalDisk (Get-PhysicalDisk -FriendlyName "ATA TOSHIBA MQ01ABD1 SCSI Disk Device")


ColumnNumber          : 0
CopyNumber            : 0
Flags                 : 0x0000000000000000
OperationalDetails    :
OperationalStatus     :
PhysicalDiskOffset    : 0
PhysicalDiskUniqueId  : 5000000000000001
ReplacementCopyNumber :
Size                  : 268435456
StorageTierUniqueId   :
VirtualDiskOffset     : 0
VirtualDiskUniqueId   : CD6F8CC06A09E911907918DBF22A4387
PSComputerName        :

ColumnNumber          : 0
CopyNumber            : 0
Flags                 : 0x0000000000000000
OperationalDetails    :
OperationalStatus     :
PhysicalDiskOffset    : 268435456
PhysicalDiskUniqueId  : 5000000000000001
ReplacementCopyNumber :
Size                  : 268435456
StorageTierUniqueId   :
VirtualDiskOffset     : 0
VirtualDiskUniqueId   : 9FA0BECD7ADBE943A073F4D303561F41
PSComputerName        :

ColumnNumber          : 0
CopyNumber            : 0
Flags                 : 0x0000000000000000
OperationalDetails    :
OperationalStatus     :
PhysicalDiskOffset    : 536870912
PhysicalDiskUniqueId  : 5000000000000001
ReplacementCopyNumber :
Size                  : 268435456
StorageTierUniqueId   :
VirtualDiskOffset     : 214479929344
VirtualDiskUniqueId   : 9FA0BECD7ADBE943A073F4D303561F41
PSComputerName        :

ColumnNumber          : 0
CopyNumber            : 0
Flags                 : 0x0000000000000000
OperationalDetails    :
OperationalStatus     :
PhysicalDiskOffset    : 805306368
PhysicalDiskUniqueId  : 5000000000000001
ReplacementCopyNumber :
Size                  : 268435456
StorageTierUniqueId   :
VirtualDiskOffset     : 3221225472
VirtualDiskUniqueId   : 9FA0BECD7ADBE943A073F4D303561F41
PSComputerName        :

这里我们看到了包含数据库的原始 slab 和另外三个 slab,它们都与新的虚拟磁盘相关联,并且每个 slab 都有不同的物理和虚拟磁盘偏移量。所以这个命令是有效的,至少在我的计算机上是如此,只是它没有按照你的要求执行。

(*) 由于某种原因,将磁盘添加到存储池会改变磁盘的友好名称。


为了完整起见,应该注意的是,某些版本的 Windows 提供了一种现已弃用的技术,称为動態磁碟。动态磁盘提供了一些与存储空间相同的功能。动态磁盘上存储属于虚拟磁盘的数据片段的空间区域有时也称为“范围”。

目前,我不确定 Get-PhysicalExtent 命令是否除了池磁盘之外还支持动态磁盘。如果以后有机会,我会尝试一下并相应地更新帖子。

相关内容