如何确定 Windows 中的扇区大小?
Posted
技术标签:
【中文标题】如何确定 Windows 中的扇区大小?【英文标题】:How can I determine the sector size in windows? 【发布时间】:2012-03-16 22:50:08 【问题描述】:如何确定 Windows 7 中的物理扇区大小(例如,如果我有一个具有 4,096 字节扇区的 Advanced Format 驱动器,而不是旧的 512 字节扇区)?
我知道通过单击文件并获取属性,我们可以找出 NTFS 集群大小,但这与硬盘驱动器的扇区大小不同。
注意:我们询问 Windows 7 是因为它(和 Windows Vista SP1)了解 4096 高级格式硬盘的存在。
【问题讨论】:
我将为 Windows 10 更新此内容,因为这是我搜索中出现的第一篇文章:使用 Powershell,“Get-Disk | Format-List”(但是,它没有t 显示我所有的磁盘...) Windows 10 的更好更新,“Get-PhysicalDisk | 选择物理扇区大小,友好名称”。正确显示我的所有物理磁盘及其扇区大小。 【参考方案1】:你想要 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
【讨论】:
当属性 Bytes Per Physical Sector:您可以在命令行中使用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
是驱动器的扇区大小。
【讨论】:
BlockSize
是逻辑 扇区大小,而不是fsutil fsinfo ntfsinfo c:
报告的物理大小。资料来源:我有一个 4,096 AF 驱动器,fsutil 报告为 4096,BlockSize
报告为 512。
第二个以上,这只报告逻辑扇区大小。 fsutil
报告正确。【参考方案3】:
我想扩展 Chris Gessler 的回答,并注意没有已知的方法可以使用 Windows Management Instrumentation (WMI) 获取驱动器的 物理 扇区,例如wmic
.
鉴于我有一个高级格式驱动器(即它使用每个扇区 4,096 字节而不是 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 了解驱动器可能是 4k,并努力将其 4k 集群与硬盘驱动器的底层 4k 扇区。
更新
wmic diskdrive
现在确实在 Bytes per Sector
中显示每个扇区的物理字节:
C:\Windows\system32>wmic
wmic:root\cli>diskdrive
Availability BytesPerSector Capabilities CapabilityDescriptions
4096 3, 4 "Random Access", "Supports Writing"
虽然wmic partition
仍然是错误的。
Windows 10.0.19041.804
【讨论】:
这个答案已经严重过时了。 这些实用程序现在显示逻辑(模拟,几乎总是 512)和物理(实际,几乎总是 4096)扇区大小。查看其他答案。【参考方案4】:如果你想以编程方式拥有它,你需要发送IOCTL_DISK_GET_DRIVE_GEOMETRY_EX
并使用DISK_GEOMETRY_EX
结构中的Geometry.BytesPerSector
【讨论】:
只报告逻辑扇区大小。从传递IOCTL_STORAGE_QUERY_PROPERTY
到DeviceIoControl
获取STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR
结构将获得逻辑和物理扇区大小。唯一的缺点是它不适用于外置硬盘 - DeviceIoControl
返回 ERROR_INVALID_FUNCTION
(至少,我还没有找到使它适用于外置硬盘的方法)。【参考方案5】:
-
在命令行中运行 msinfo32 会弹出一个名为
“系统信息”
在左侧窗格中选择“系统摘要->组件->存储->磁盘”。这应该会在右侧窗格中加载所有驱动器的信息
找到所需的驱动器并检查“字节/扇区”的值。它应该说“字节/扇区 4096”
【讨论】:
【参考方案6】: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
【讨论】:
适用于 2012 R2 不适用于 Windows 7 Ultimate。【参考方案7】: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 \\?\Volumeb042c778-cd66-4381-9312-3f4311321675\
PS C:\>
【讨论】:
解释这个... msinfo32 全部报告为 512,此报告全部为 4096,我知道我都有,因为我无法设置镜像,但我不知道哪个磁盘是哪个...另外,这仅显示驱动器号,而不是磁盘。【参考方案8】:如果您真的想以编程方式拥有它,您需要发送IOCTL_STORAGE_QUERY_PROPERTY
提供STORAGE_PROPERTY_QUERY
并将PropertyId
设置为StorageAccessAlignmentProperty
。这给出了物理和逻辑扇区大小。
注意:这仅适用于 Windows Vista 及更高版本。
【讨论】:
以上是关于如何确定 Windows 中的扇区大小?的主要内容,如果未能解决你的问题,请参考以下文章