硬盘驱动器报告其物理扇区大小有什么意义?

mis*_*256 18 ssd hard-drive partitioning advanced-format

我有一个 SSD,它可以配置为以两种不同的方式向操作系统报告其物理扇区大小:

选项 1:逻辑 = 512 字节,物理 = 512 字节

选项 2:逻辑 = 512 字节,物理 = 4096 字节 (4K)

考虑到 4K 物理扇区大小,操作系统可以获得什么好处:

  • 操作系统必须以 512 字节的扇区与驱动器通信,无论如何

  • 所有现代操作系统都与 4K 对齐并使用 4K 或 4K I/O 的倍数,无论如何

该设置似乎毫无意义,因为现代操作系统已经针对 4K 扇区驱动器进行了优化。现代操作系统不需要“询问”驱动器的扇区是 512b 还是 4K,因为默认情况下,操作系统以 4K 友好的方式执行所有操作。

例如,Windows 7 将分区对齐为 1MB(4K 的倍数),NTFS 簇大小为 4K 或其倍数,所有 I/O 均以 4K 或其倍数进行。Windows 不在乎你有什么硬盘,它会在所有情况下应用上述行为。

无论如何……我的 SSD 有这个“物理扇区大小”设置,所以它必须存在有一些很好的理由……这就是我正在寻找的原因。

顺便说一句,就其价值而言,该驱动器是Intel SSD DC S3510。驱动器的数据表说明了这一点(第 27 页):

通过使用 SCT 命令 0xD801,State=0,Option=1,ID Word 106 可以从 0x6003 更改为 0x4000(4KB 物理扇区大小到 512B 物理扇区大小支持更改)。

bwD*_*aco 16

512 字节仿真旨在与旧系统兼容。但是,仅涉及物理 4K 扇区的一部分的写入会导致性能降低,因为在实际写入扇区之前需要读取和修改扇区。

当旧操作系统尝试写入高级格式磁盘时,可能会出现性能问题,因为写入的逻辑扇区可能与物理扇区不匹配。

  • 当仅读取 4K 物理扇区的一部分时,只需从物理扇区读取数据,性能不会降低。但是,当系统尝试写入物理扇区的一部分(例如模拟的 512 字节扇区而不是整个物理扇区)时,硬盘驱动器需要读取整个物理扇区,修改硬盘驱动器内部的更改部分内存,并将其写回盘片。这称为读取-修改-写入( RMW ),该操作需要额外旋转磁盘,因此会降低性能。希捷对此解释如下

[...] 硬盘必须首先读取包含主机写入请求目标位置的整个 4K 扇区,将现有数据与新数据合并,然后重写整个 4K 扇区:

读-修改-写循环

在这种情况下,硬盘驱动器必须以读取 4K 扇区、修改内容然后写入数据的形式执行额外的机械步骤。这个过程称为读-修改-写循环,这是不可取的,因为它对硬盘性能有负面影响。

未与 4K 边界对齐的磁盘分区也会导致性能下降。

  • 传统上,硬盘上的第一个分区从扇区 63 开始。Windows XP 和较旧的操作系统以这种方式对磁盘进行分区。较新版本的 Windows 将在 1 MB 边界上创建分区,确保与物理扇区正确对齐。这称为对齐 0

  • 由于 LBA 63 不是 8 的倍数(8 个 512 字节的旧扇区适合一个 4K 扇区),以旧方式格式化的高级格式化磁盘将具有簇(文件系统数据分配的最小单位,通常大小为 4K ) 未与 4K 磁盘上的物理扇区对齐,这种情况称为Alignment 1。因此,原本涉及 4K 数据的 I/O 操作现在跨越两个扇区,从而导致读取-修改-写入操作,从而降低性能。

如果操作系统总是在 4K 边界上写入数据,则不需要有关物理扇区大小的信息,但执行低级 I/O 的应用程序可能仍需要此信息。

  • 当驱动器报告其物理扇区大小为 4K 时,操作系统或应用程序可以判断它是高级格式驱动器,因此必须避免执行不跨越完整物理扇区的 I/O 操作。报告 512 字节本机扇区的驱动器不会施加此限制。虽然较新的操作系统通常会尽可能以 4K 为单位尝试读取或写入数据(使此信息无关紧要),但执行低级 I/O 的应用程序可能需要知道物理扇区大小,以便它们可以进行相应调整并避免未对齐或导致慢 RMW 周期的部分扇区写入。

您的 SSD 能够更改报告的物理扇区大小,因为它是与某些存储阵列兼容所必需的。

  • 数据中心通常具有由传统 512n 驱动器组成的存储阵列。4K 驱动器,即使是模拟 512 字节扇区的驱动器,也可能与此类阵列不兼容,因此此功能是确保兼容性所必需的。请参阅此论坛主题

    我们不能只将 4K 驱动器插入格式化为 512b 磁盘的阵列中。许多阵列(最著名的是基于 ZFS 的存储,随着软件定义存储的兴起而越来越流行)不接受具有不同物理扇区格式的替换驱动器。

    请注意,如果将驱动器配置为使用 4K 扇区,则在现代系统上将获得更好的性能。

  • 虽然与硬盘驱动器相关,但此答案与 SSD 无关。SSD 写入/擦除块大小为几兆字节,因此即使是 4K“物理”也与实际物理扇区大小不接近。 (4认同)

Dav*_*rtz 5

如果操作系统知道底层物理扇区大小,它可以优化其查询以需要尽可能少的物理操作。特别是对于 SSD,物理操作限制(4KB IOPS 限制)通常是设备速度的最终限制,因此能够充分利用此容量非常重要。


saw*_*ust 5

无论如何,当操作系统必须与 512 字节扇区中的驱动器进行通信时,操作系统通过了解物理扇区大小可以获得什么好处。

逻辑大小是传输数据的最小大小。由于这是一个块设备,主机和驱动器之间的任何数据传输都将是该逻辑块大小的倍数。

物理尺寸是最佳尺寸传输数据,并且反映了实际的尺寸的读取写入操作中的控制器/驱动电平。

当主机请求读取逻辑扇区时,控制器/驱动器将执行包含逻辑扇区的物理扇区的读取操作。
当逻辑扇区大小等于物理扇区大小时,操作简单。当逻辑扇区大小小于物理扇区大小时,控制器必须从物理扇区中提取逻辑扇区以传输到主机。

当主机请求写入逻辑扇区时,物理扇区的大小很重要。
当逻辑扇区大小等于物理扇区大小时,写操作简单,可以直接进行。扇区先前内容的状态不会影响写操作。

当逻辑扇区大小小于物理扇区大小时,控制器必须先对包含逻辑扇区的物理扇区进行读操作。
如果读取成功,则将逻辑扇区插入到物理扇区中,并将物理扇区完全写入其中。
如果读取不成功(即使重试后),也无法完成写入操作。

如果操作系统使用物理扇区大小(通过利用 ATAPI 命令集中可用的多扇区操作)执行读取和写入操作,则将更有效地执行写入操作(并且没有不必要的不​​完成机会)。

LOGICAL 扇区大小完全定义了操作系统如何与驱动器通信。没有例外。当您只允许以逻辑扇区大小进行通信时,知道物理扇区大小有什么用?

您关于“无例外”的论点是不正确的。
随 IDE HDD 引入的 ATAPI 命令集始终具有使用sector count参数执行读写操作的能力。这仅仅是现有磁盘和软盘控制器接口的扩展,它们也能够进行多扇区读/写操作(只要扇区在同一轨道上)。

  • @misha256 不,事情没那么简单。“Windows XP、Windows Server 2003 和 Windows Server 2003 R2 不支持 512e 或 4Kn 媒体。虽然系统可能会启动并能够最低限度地运行,但可能存在功能问题、数据丢失或次优的未知情况性能。因此,微软强烈警告不要在 Windows XP 中使用 512e 媒体......” https://msdn.microsoft.com/en-us/library/windows/desktop/hh848035(v=vs.85).aspx (2认同)
  • @ misha256——你在挑选条件,然后宣布在所有情况下这些信息都是无用的。并不是每个人都会在 Windows 和 NTFS 以及 >4k 集群中使用这样的 SSD。*“NTFS 甚至不支持低于 4K 的 I/O”* -- 不正确。512、1024 和 2048 字节的簇大小仍然是我的(最新)Win7 for NTFS 副本中的选项。. . (2认同)