Назад | Перейти на главную страницу

Как использовать Get-PhysicalExtent на Get-PhysicalDisk?

Независимо от того, на каком сервере я использую документы PowerShell для Get-PhysicalExtent, ничего не работает. Я задокументировал это как ошибку на GitHub: https://github.com/MicrosoftDocs/windows-powershell-docs/issues/514 (Я понятия не имею, почему это не работает, поскольку у меня нет опыта работы с этим API, Windows Storage Spaces или Storage Management 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

Слово «степень» в Windows перегружено. Одно значение представляет собой серию смежных кластеров, и, похоже, это значение, о котором вы думаете, хотя технически число, которое вы ищете, называется размер кластера или размер блока а не размер экстента.

В Другой значение, которое, как представляется, в значительной степени или полностью недокументировано, - это область пространства на объединенном диске, которая содержит один фрагмент данных для пространство для хранения. Степень в этом смысле также может называться «выделением» или «плитой».

В Get-PhysicalExtent Команда относится ко второму из этих двух значений.

Вкратце, команда не выполняет то, что вы думали, и выдает ошибку «не поддерживается», потому что запрос не имеет смысла для базовых дисков, только для дисков в пулах хранения. Я вижу из комментариев, что вы уже определились с правильной командой, скопированной здесь для будущих читателей:

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

Документация, безусловно, могла бы быть более ясной. Мне удалось найти упоминания об этом использовании слова «степень» только в сообщениях блога Microsoft, а не в официальной документации, хотя я полагаю, что читал его в официальной документации в какой-то момент в прошлом, хотя, вероятно, в контекст динамических дисков, а не дисковых пространств. Чтобы убедиться, что я правильно интерпретирую команду в отсутствие четкой документации по этому поводу, я протестировал ее; читайте дальше, если вам нужны более подробные сведения, хотя, поскольку вы не используете места для хранения, это может показаться вам неинтересным.


На моем компьютере с 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        :

Больше не поддерживается, но данных там немного: неудивительно, поскольку я создал только пул, не добавляя места для хранения. Существует один экстент размером 256 МБ (иногда называемый «плита», например, посмотреть здесь), который, как мне кажется, содержит базу данных для пула хранения.

После добавления места для хранения мы видим дополнительные экстенты:

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        :

Здесь мы видим исходную плиту, содержащую базу данных, плюс еще три плиты, все они связаны с новым виртуальным диском и имеют разные смещения физического и виртуального диска. Итак, команда работает, по крайней мере, на моей машине, она просто не выполняет то, что вам нужно.

(*) По какой-то причине добавление диска в пул хранения изменило понятное имя диска.


Для полноты картины следует отметить, что некоторые версии Windows предоставляют устаревшую технологию, известную как динамические диски. Динамические диски предлагали те же функции, что и дисковые пространства. Область пространства на динамическом диске, в которой хранился фрагмент данных, принадлежащих виртуальному диску, также иногда называлась «экстентом».

В настоящее время я не уверен, поддерживает ли команда Get-PhysicalExtent динамические диски в дополнение к дискам в пуле. Если у меня будет возможность позже, я попробую и обновлю сообщение соответствующим образом.