【问题标题】:How can I determine the sector size in windows?如何确定 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 | 选择物理扇区大小,友好名称”。正确显示我的所有物理磁盘及其扇区大小。

标签: windows-7 hard-drive sector


【解决方案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: 这意味着 512
  • @user2601995 你有那个来源吗?
  • 什么是“文件记录段”?它是文件元数据的额外存储空间吗?
【解决方案2】:

您可以在命令行中使用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_PROPERTYDeviceIoControl 获取STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR 结构将获得逻辑和物理扇区大小。唯一的缺点是它不适用于外置硬盘 - DeviceIoControl 返回 ERROR_INVALID_FUNCTION(至少,我还没有找到使它适用于外置硬盘的方法)。
【解决方案5】:
  1. 在命令行中运行 msinfo32 会弹出一个名为 “系统信息”
  2. 在左侧窗格中选择“系统摘要->组件->存储->磁盘”。这应该会在右侧窗格中加载所有驱动器的信息
  3. 找到所需的驱动器并检查“字节/扇区”的值。它应该说“字节/扇区 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 \\?\Volume{b042c778-cd66-4381-9312-3f4311321675}\
    PS C:\>
    

    【讨论】:

    • 解释这个... msinfo32 全部报告为 512,此报告全部为 4096,我知道我都有,因为我无法设置镜像,但我不知道哪个磁盘是哪个...另外,这仅显示驱动器号,而不是磁盘。
    【解决方案8】:

    如果您真的想以编程方式拥有它,您需要发送IOCTL_STORAGE_QUERY_PROPERTY 提供STORAGE_PROPERTY_QUERY 并将PropertyId 设置为StorageAccessAlignmentProperty。这给出了物理和逻辑扇区大小。

    注意:这仅适用于 Windows Vista 及更高版本。

    【讨论】:

      猜你喜欢
      • 2022-09-25
      • 2017-02-25
      • 1970-01-01
      • 2013-07-06
      • 2011-01-03
      • 2011-03-08
      • 1970-01-01
      • 1970-01-01
      • 2021-05-04
      相关资源
      最近更新 更多