【问题标题】:Do partition tables use logical block size or 512 bytes as the unit?分区表是以逻辑块大小还是512字节为单位?
【发布时间】:2016-09-20 03:12:18
【问题描述】:

当我从设备读取分区表(MBR 或 GPT)时,数字是以逻辑块大小为单位还是以标称 512 字节扇区为单位?令人惊讶的是,我无法通过谷歌搜索找到规范的答案。

【问题讨论】:

    标签: partition


    【解决方案1】:

    根据进一步调查,结论已被推翻

    虽然几乎所有驱动器都使用 512 字节的逻辑扇区,但现代分区表使用 LBA 地址,而 LBA 单元大小是设备的逻辑扇区大小,今天可能高达 4096 字节。

    最后,我将有关单元大小的问题发布到主要的 GNU parted(分区编辑器)邮件列表,并收到了this response。具体来说:

    "LBA 总是指驱动器的块大小。所以它可能是 512 或 4096 或其他值,具体取决于驱动器报告的内容。”

    不正确的先前答案版本:[[分区表(在 MBR 和其他地方)指的是 512 字节块/逻辑扇区。参见例如https://en.wikipedia.org/wiki/Master_boot_record#PTE.]]

    背景信息

    磁盘物理磁盘扇区大小的报告似乎基本上是通过 ATA-8 规范中的命令完成的,特别是“IDENTIFY DEVICE”命令。兼容性问题(最常讨论的)是 I/O 操作的对齐。显然,大多数驱动器处理 512 字节对齐,但会降低性能,尽管有些驱动器标榜为“4k 本机”或“4kn”,它们根本不支持 512 字节对齐 I/O。通常,具有物理 4k 扇区的驱动器使用所谓的“高级格式”,如果您需要更多信息,这可能会帮助您进行搜索。

    这篇文章https://linuxconfig.org/linux-wd-ears-advanced-format有一些比较清晰的讨论,特别是如果你是Linux用户。值得一提的是,在 Linux 上,“parted -l”命令会报告物理和逻辑扇区大小,并且 parted 还知道如何为高级格式设备适当地对齐分区。

    此外,您可能会发现这篇文章 http://www.seagate.com/tech-insights/advanced-format-4k-sector-hard-drives-master-ti/ 提供了有关该问题的信息和令人放心的信息。

    【讨论】:

    • 您链接的维基百科文章似乎与您的答案相冲突:“地址是扇区值 ....扇区大小过去被认为是固定在512" [强调我的]。并且“对于扇区大小不是 512 字节的磁盘,例如 USB 外部驱动器,...... 4,096 的扇区大小会导致可以使用 MBR 定义的分区大小增加八倍,”
    • 是的,我发现的大多数文档都在讨论如何在考虑物理块大小的情况下编写分区表,但从未说明如何处理具有逻辑的驱动器除 512 以外的块大小。现在,诚然,我从未在该领域遇到过这样的野兽,而且我怀疑存储设备将在很长一段时间内呈现 512 字节的逻辑块大小,但我想未来-通过尽早解决这个问题来证明我的代码。
    • 没错,这一切都很令人困惑,你的观点是有道理的。在我看来,分区表仍然使用 512 字节作为单位,基于 LBA 寻址的使用。文章en.wikipedia.org/wiki/Logical_block_addressing 指出“当前的 48 位 LBA 方案,于 2003 年推出,采用 ATA-6 标准,允许寻址高达 128 PiB。” t13.org/Documents/UploadedDocuments/project/… 的标准文档认为 48 位寻址允许“大约 144 peta 字节”。所以我再次相信 512 字节是单位。
    • 我怀疑真正的收获是,至少目前,预计很多软件在与新驱动器一起使用时会崩溃。 (为了记录,几年前,我写了一个分区表编辑器,它做了一些技巧来适应手机 emmc 内存中的特殊分区对齐要求。当我遇到这个问题时,我正在更新它——我不想要 我的工具是其中之一。)
    猜你喜欢
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多