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


13

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

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

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

通过考虑以下因素,OS通过了解4K物理扇区大小可以获得什么好处:

  • 操作系统必须在512字节扇区中与驱动器对话

  • 所有现代OS均与4K保持一致,并利用4K或4K I / O的倍数,而无论

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

例如,Windows 7将分区对齐为1MB(4K的倍数),NTFS群集大小为4K或其倍数,并且所有I / O以4K或其倍数完成。Windows不会提供您所拥有的硬盘驱动器,它会在所有情况下应用上述行为。

无论如何...我的SSD具有此“物理扇区大小”设置,因此出于某些充分的理由而必须存在于此……这就是我要寻找的原因。

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

通过使用状态= 0,选项= 1的SCT命令0xD801,可以将ID字106从0x6003更改为0x4000(将4KB物理扇区大小更改为512B物理扇区大小支持)。


1
4096字节是高级格式高级格式硬盘驱动器可以执行两种操作,具体取决于操作系统,如果硬盘驱动器将模拟512K
Moab,

2
存储接口是传统决策的宝库...“ 4 KB物理扇区大小”也不正确。闪存的物理扇区大小通常超过256 kB。所有报告的扇区大小都是(不)逻辑的。
MSalters 2015年

Answers:


16

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

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

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

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

读-修改-写周期

在这种情况下,硬盘驱动器必须执行额外的机械步骤,形式为读取4K扇区,修改内容然后写入数据。此过程称为读-修改-写周期,这是不希望的,因为它会对硬盘驱动器性能产生负面影响。

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

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

  • 因为LBA 63不是8的倍数(8K 512字节的旧扇区适合4K扇区),所以以旧方式格式化的Advanced Format磁盘将具有群集(文件系统数据分配的最小单位,通常大小为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扇区,则在现代系统上将获得更好的性能。


具有讽刺意味的是,不知道如何正确对齐的OS也将无法向硬盘驱动器查询“物理扇区大小”。知道如何正确对齐的OS无需向硬盘驱动器查询“物理扇区大小”,因为默认情况下它们会正确对齐。例如Windows对齐到1MB。
misha256

1
我不得不说...我很沮丧。我从未见过可用来更改“物理扇区大小”报告设置的驱动器。考虑到唯一的选择是512b和4K,并且考虑到现代操作系统以4K方式完成所有操作,无论您使用哪种驱动器,我都不明白为什么需要设置这样的设置。
misha256

这可能是最好的答案,但我仍然认为是时候寻找一名英特尔工程师并获得权威的答案了。似乎是一件深奥的事。
misha256

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

1
@qasdfdsaq写入大小不一定与擦除大小相同。4K将是“使用中”块的跟踪粒度。同时我现在相信这个答案关于ZFS的最后一部分是正确的:utcc.utoronto.ca/~cks/space/blog/tech/...
pjc50

5

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

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

物理大小是传输数据的最佳大小,它反映了控制器/驱动器级别上实际读取写入操作的大小。

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

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

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

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

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

您对“无例外”的争辩是错误的。
IDE HDD引入的ATAPI命令集始终具有使用sector count参数执行读取和写入操作的功能。这只是现有磁盘和软盘控制器接口的扩展,它们也能够进行多扇区读/写操作(只要这些扇区位于同一磁道上)。


可能是正确的答案...但是我仍然不相信。现代OS的文件系统和I / O块大小为4K和4K的倍数。它们针对具有4K物理扇区的硬盘进行优化。此外,即使在512b物理硬盘驱动器上,使用的I / O块大小仍为 4K和4K的倍数。是什么赋予了?!
misha256

答对了!sector count您所说的参数...甚至是古老的Windows XP都以8扇区的I / O块大小或其倍数读取/写入。它已经完全优化!这就是为什么只要分区对齐,XP在SSD上的表现都非常出色的原因。这是非常4K友好的。因此问题仍然没有得到解答。什么可以在OS不知道物理扇区大小为4K。请记住,该操作系统已经针对4K I / O进行了优化。
misha256

1
“它们已经优化了……” -不一定。“开始”扇区必须始终与物理扇区对齐。当操作系统不了解物理和逻辑扇区,而只是尝试通过使用多扇区操作来提高效率时,就不能保证做到这一点。
锯末2015年

2
@ misha256不,不是那么简单。“ Windows XP,Windows Server 2003和Windows Server 2003 R2不支持512e或4Kn介质。虽然系统可能会启动并无法正常运行,但可能会出现未知的功能问题,数据丢失或次优情况因此,Microsoft强烈警告不要在Windows XP中使用512e媒体……” msdn.microsoft.com/en-us/library/windows/desktop/…–
Ross Ridge,

2
@ misha256-您正在挑选条件,然后宣布在所有情况下此信息都是无用的。并非所有人都会在Windows和NTFS以及> 4k群集上使用这样的SSD。“ NTFS甚至不支持少于4K的I / O” -不正确。我的(最新的)Win7 for NTFS副本中仍然可以选择512、1024和2048字节的群集大小。。。
2015年

3

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


啊,这是不对的。现代操作系统已进行了固有的优化。它们全部使用文件系统,其“块”大小(即群集)为2 ^ n字节,起始于2 ^ 12(即4K,认为是NTFS默认)。因此,所有I / O操作最终都是4K的倍数。磁盘物理上是512字节还是4K都无济于事。当然,您无法进一步优化吗?
misha256

如果操作系统无法正确对齐并且I / O操作跨两个物理扇区结束怎么办?您将获得性能下降。
bwDraco

1
@ misha256您所说的与我所说的之间没有不兼容之处。的确,除了正确对齐之外,大多数文件系统都无法从了解物理扇区大小中受益匪浅。一些数据库可以。
David Schwartz

@DavidSchwartz是的,好吧,这可能都是出于某些深奥的OS或数据中心等中使用的文件系统的好处吗?一些花哨的RAID阵列吗?
misha256

它似乎确实与非Windows(“神秘”)操作系统和RAID控制器有关。
pjc50 2015年

1

访问驱动器内位置的方法有两种,一种是CHS方案,另一种是LBA方案。

CHS代表气缸,磁头,扇区,是确定从驱动器读取或写入位置的最底层方法。您告诉它使用柱面x,头y和扇区z,并在内存(缓冲区)中的地址上读取或写入该位置的内容。它是从(传统的,旋转的铁锈)硬盘驱动器的实际物理组件派生而来的,您在其中具有物理圆柱体和读取头。该扇区是最小的可寻址单元,传统上固定为512字节。

LBA是逻辑字节寻址,其中驱动器通过其偏移量读取和写入扇区地址,例如,读取磁盘上的第123837个扇区或将其写入磁盘上的第123734个扇区(从零开始)。

问题?这些值均受范围限制。实际上,由于CHS限制的严重性,必须引入LBA。对于CHS,C(圆柱体)的可能值为1023,而H(缸头)的最大值为255,而S(扇区)最多只能达到63,这意味着您最多可以有1024个圆柱体255缸头x 64扇区x 512字节(以传统CHS格式映射),总共不到8 GiB!使用CHS,根本无法访问大于8 GiB的磁盘!

因此,LBA引入了32位限制,从而为您提供了2 ^ 32 x 512字节或2 TiB的磁盘大小限制-这就是MBR磁盘不能超过2TiB的原因,因为它使用CHS和LBA来指定分区大小,而两者都不能支持超过2TiB的任何内容。

引入了更新更好的选项,例如GPT分区方案,该方案将LBA扩展为64位,从而为您提供了比2 ^ 64 x 512字节所需的存储容量大得多的功能- 有一个陷阱:很多遗留问题硬件和旧版操作系统,旧版BIOS实现以及旧版驱动程序不支持UEFI或GPT,并且许多人希望可以轻松升级某些产品,使其超过2TiB限制,而不必重写整个堆栈从头开始。而且,最终,我们达到了4096个扇区大小。

看到上面讨论的所有限制,一件事是一个固定的假设:扇区大小。从第一天开始,它就是512字节,从那以后一直保持这种状态。但是最近,硬盘制造商意识到有机会发挥一些魔力:采用传统的CHS或32位LBA,只需将扇区大小替换为4096(4k)而不是512字节即可。当操作系统通过请求LBA 1(因为第一个是LBA 0)说“给我磁盘上的第二个扇区”时,我们不会给它提供512-1023字节,而是给它4096-8191字节。

突然,我们的2TiB限制已升级到2 ^ 32 x 4096字节,即16 TiB,而不必放弃MBR,切换到UEFI或GPT或任何其他东西!

唯一的问题是,如果操作系统不知道这是一个使用4096个扇区而不是512字节扇区的魔术磁盘,那么将会出现不匹配的情况。每次操作系统说“嘿,磁盘,请向我写入这512个字节以抵消xxx”时,磁盘将用4096个字节来存储这512个字节(其余的为零或垃圾数据,假设您不会以内存下溢),因为它们不以字节为单位进行通信,而是以扇区为单位进行通信。

因此,BIOS现在(有时)提供了一个选项,使您可以手动指定应使用512字节的扇区大小,而不是较新磁盘使用的本机4096字节的扇区大小,但请注意,您不能使用它来访问更多磁盘MBR系统上磁盘的2TiB,就像过去的“美好时光”一样。但是,支持4k的现代OS可以利用所有这些优势来利用这种魔力来读取和写入4096字节的数据块和数据!

(另一个优点是事情要快得多,因为如果您一次要读取和写入4096个字节,则读写4GiB数据的操作会更少。)


2
这确实无法回答问题。解释CHS和LBT无关紧要。这听起来像是您对“部门”了解的脑力激荡。 “从第一天开始,它已经达到了512字节...”-仅对于IBM PC才如此。
锯末2015年

1
@sawdust我不同意-即使忽略关于CHS和LBA的(最重要的)背景,您问题的简洁答案也位于第二段“但是,支持4k的现代OS可以利用所有这些优势来利用这种魔力读取和写入4096字节的数据块,实在太可惜了!” -即问题中的假设-操作系统必须以512字节的块进行交谈-是错误的。
davidgo

@davidgo在驱动程序级别,操作系统以n512字节块的形式与驱动器对话。的n是一个数字,其从Windows XP中,超过8千万不要少,始终8的倍数。这意味着从XP每个操作系统开始,我相信所有现代的Linux发行版也为4K驱动器已经过优化。最小的I / O是4K,所有其他I / O大小是该值的倍数。
misha256

我想我很清楚,即使将n个扇区分组为一个操作,您仍在告诉磁盘以512字节的块为单位进行搜索,这意味着您只能搜索多少字节。4096个扇区解决了寻道问题。我还澄清了操作系统必须了解块大小,否则将以4096个块存储512个字节!
Mahmoud Al-Qudsi 2015年

另外,我认为您对逻辑还是物理感到困惑。物理设备始终为512或4096。如果逻辑大小为4096,但操作系统却盲目地认为它是512,则会遇到我所描述的问题。他们必须匹配。
Mahmoud Al-Qudsi 2015年


0

只是想让您知道4K扇区是现代操作系统存在问题的情况。

Microsoft的VSS编写器(卷影复制)不适用于4K扇区。为了备份DFS复制共享文件夹,我们的备份软件“ Backup Exec”需要制作DFS复制文件夹的卷影副本。如果DFS复制文件夹位于具有4K扇区的驱动器上,则作业将失败,因为VSS无法正确地与4K扇区一起使用。

吉姆


3
我不能完全确定这是否回答了提出的问题,而是回答了一个问题,只是作者没有提出这个问题。
Ramhound

这是非常有趣的信息,但这似乎是对一个稍有不同的问题的回答。拥有足够的声誉后,您将可以在任何地方发表评论。有关我们网站的介绍,请参见游览
本N

-3

物理是指实际驱动器本身的逻辑,而逻辑是指其中定义的分区的逻辑。从PC Mag的逻辑与物理:

在Windows PC中,单个物理硬盘驱动器是驱动器0;驱动器0是驱动器0。但是,它可以分为几个逻辑驱动器,例如C:,D:和E:。

为了以一种易于消化的形式解释这一点,请想象一个像苹果一样大的手。那是苹果的实际物理尺寸。自然地,整个苹果都无法放入您的嘴里,因此您决定将其切成相等的切片,每个切片都是手指的宽度。这是逻辑大小,或您的计算机将使用的大小。

造成这种情况的几个原因是实值容量计算以及错误映射和更正,如Wikipedia所述:

典型的硬盘驱动器尝试将物理扇区中的数据“重新映射”到驱动器的“备用扇区池”(也称为“预留池”)提供的备用物理扇区,[41]同时依靠ECC当坏扇区中的错误数量仍然足够低时,可以恢复存储的数据。SMART(自我监视,分析和报告技术)功能会计算ECC修复的整个HDD中的错误总数(尽管并非所有硬盘驱动器上的错误总数,因为相关的SMART属性“已恢复硬件ECC”和“软ECC校正”是并始终执行的扇区重新映射的总数,因为许多此类错误的发生可能预示了HDD故障。

就像没有苹果本身就不能拥有苹果一样,没有物理实体就不能拥有逻辑。


1
但是,为什么OS必须知道物理扇区的大小,以及由于必须与逻辑扇区中的驱动器进行通信,所以它会有什么不同呢?对于操作系统而言,似乎绝对无用的信息。
misha256

“操作系统为什么需要知道...” -逻辑大小是传输数据的最小大小。物理大小是传输数据的最佳大小,它反映了驱动器级别上实际读/写操作的大小。““似乎绝对无用的信息...” -也许对您来说似乎“无用”,因为您没有开发或参与操作系统?
锯末2015年

1
@sawdust但是操作系统无法使用您正在谈论的最佳传输大小,因为驱动器硬连线到512字节逻辑扇区。本机4K驱动器有所不同,它们具有4K逻辑扇区,并且支持的操作系统(例如Win 8.1)被迫在4K逻辑扇区中进行读写。但是我的驱动器不是4K逻辑驱动器。这是一个512字节的逻辑驱动器。
misha256

@ misha256-我已经发布了自己的答案。
2015年

物理/逻辑驱动器与物理/逻辑扇区大小混淆。
MSalters 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.