Как я могу определить размер сектора в Windows - PullRequest
42 голосов
/ 27 февраля 2012

Как определить размер Физический сектор (например, если у меня есть диск Advanced Format с 4,096 байтовыми секторами, а не устаревшими 512-байтовыми секторами) в Windows 7?

Я знаю, что, кликнув по файлу и получив свойства, мы можем узнать NTFS Размер кластера , но это не то же самое, что сектор жесткого диска .

Примечание : мы спрашиваем о Windows 7, поскольку она (и Windows Vista SP1) понимают существование жестких дисков 4096 Advanced Format.

Ответы [ 8 ]

56 голосов
/ 27 февраля 2012

Вы хотите fsutil. Убедитесь, что вы запускаете командную строку от имени администратора.

C:\Windows\system32>fsutil fsinfo ntfsinfo c:
NTFS Volume Serial Number :       0xf4ca5d7cca5d3c54
Version :                         3.1
Number Sectors :                  0x00000000378fd7ff
Total Clusters :                  0x0000000006f1faff
Free Clusters  :                  0x00000000000e8821
Total Reserved :                  0x0000000000000910
Bytes Per Sector  :               512
Bytes Per Physical Sector :       512
Bytes Per Cluster :               4096
Bytes Per FileRecord Segment    : 1024
Clusters Per FileRecord Segment : 0
Mft Valid Data Length :           0x00000000196c0000
Mft Start Lcn  :                  0x00000000000c0000
Mft2 Start Lcn :                  0x000000000097ffff
Mft Zone Start :                  0x000000000051f920
Mft Zone End   :                  0x000000000051f9a0
RM Identifier:        0652C3D3-7AA9-11DA-ACAC-C80AA9F2FF32
28 голосов
/ 23 ноября 2012

Я хотел бы расширить ответ Криса Гесслера и отметить, что не существует известного способа получить сектор Физический диска с помощью Инструментария управления Windows (WMI), например wmic.

Учитывая, что у меня есть диск расширенного формата (т.е. он использует 4096 байт на сектор, а не 512):

C:\Windows\system32>fsutil fsinfo ntfsinfo d:
NTFS Volume Serial Number :       0xa016d8a616d87eaa
Version :                         3.1
Number Sectors :                  0x00000000747057ff
Total Clusters :                  0x000000000e8e0aff
Free Clusters  :                  0x000000000e7b2813
Total Reserved :                  0x0000000000000000
Bytes Per Sector  :               512
Bytes Per Physical Sector :       4096

Ни WMI DiskDrive:

wmic:root\cli>diskdrive
Availability  BytesPerSector  Capabilities  CapabilityDescriptions                                       Caption
              512             {3, 4, 10}    {"Random Access", "Supports Writing", "SMART Notification"}  ST1000DM003-9YN162 ATA Device

, ни Partition:

wmic:root\cli>partition get BlockSize, StartingOffset, Name, Index
BlockSize  Index  Name                   StartingOffset
512        0      Disk #0, Partition #0  1048576

может сообщить базовый размер физического сектора .Это имеет смысл, когда вы понимаете, что они оба сообщают размер сектора, что Windows составляет , используя .Это равно 512 байт на сектор - просто диск внутри другой.

Это потому, что только Windows 8 поддерживает использование секторов 4k.Windows 7 понимает, что диск может быть 4 КБ, и работает для выравнивания его 4 КБ Кластеров с базовыми дисками 4К Секторов .

26 голосов
/ 26 апреля 2016

Обновление Windows 10:

Теперь есть подкоманда sectorInfo, которая может предоставить более подробную информацию:

C:\>fsutil fsinfo sectorInfo C:

LogicalBytesPerSector :                                 512
PhysicalBytesPerSectorForAtomicity :                    4096
PhysicalBytesPerSectorForPerformance :                  4096
FileSystemEffectivePhysicalBytesPerSectorForAtomicity : 4096
Device Alignment :                                      Aligned (0x000)
Partition alignment on device :                         Aligned (0x000)
Performs Normal Seeks
Trim Not Supported
13 голосов
/ 14 января 2015
  1. Запустите msinfo32 в командной строке, которая должна открыть окно графического интерфейса с именем «Информация о системе»
  2. На левой панели выберите «Сводка системы-> Компоненты-> Хранение-> Диски».Это должно загрузить информацию обо всех дисках в правой панели
  3. Найдите нужный диск и проверьте значение «Байты / Сектор».он должен сказать "Байт / Сектор 4096"
9 голосов
/ 13 января 2014

Если вы хотите получить его программно, вам нужно отправить IOCTL_DISK_GET_DRIVE_GEOMETRY_EX и использовать Geometry.BytesPerSector из DISK_GEOMETRY_EX структуры

4 голосов
/ 27 февраля 2012

Вы можете использовать wmic из командной строки:

C:\Windows\System32\wmic partition get BlockSize, StartingOffset, Name, Index

BlockSize  Index  Name                   StartingOffset
512        0      Disk #0, Partition #0  32256
512        1      Disk #0, Partition #1  370195176960

BlockSize - это размер сектора накопителя.

3 голосов
/ 13 июля 2016

Powershell:

$wql = "SELECT Label, Blocksize, Name FROM Win32_Volume WHERE FileSystem='NTFS'"
Get-WmiObject -Query $wql -ComputerName '.' | Select-Object Label, Blocksize, Name

Пример вывода:

Label            Blocksize Name
-----            --------- ----
OSDisk                4096 C:\
Windows RE Tools      4096 \\?\Volume{b042c778-cd66-4381-9312-3f4311321675}\
PS C:\>
0 голосов
/ 30 апреля 2018

Если вы действительно хотите, чтобы это было программно, вам нужно отправить IOCTL_STORAGE_QUERY_PROPERTY, предоставив STORAGE_PROPERTY_QUERY с PropertyId, установленным на StorageAccessAlignmentProperty. Это дает как физические, так и логические размеры секторов.

Примечание: это работает только в Windows Vista и выше.

...