物理块大小是2048字节,但Linux说它是512


0

我知道这个错误信息困扰着那么多试图格式化USB驱动器的人。但是当我搜索它时,我得到的只是“指令”。但我真的很想 了解 关于这个问题的技术背景。

我已经阅读了很多关于扇区,圆柱体,块等的内容......我已经理解了这一切,所以我认为我现在有了扎实的背景。

在我读过的所有教程中,没有人提到“物理块大小”。但根据我的理解,到目前为止我将把它翻译成“设备上的扇区大小”。正确?

我认为(我没有在任何地方找到确认)“USB设备描述符”由“控制器”存储在某处。它不是NAND闪存芯片的一部分。我想它的工作原理如下:我的操作系统向USB的控制器芯片发送某种GET请求。控制器芯片返回“设备描述符”。 “设备描述符”包含诸如供应商和扇区大小(=物理块大小??)之类的信息。

这就是我的操作系统对物理块大小的了解。但究竟怎么说“Linux声称它是512”?存储的信息在哪里,Linux如何得出这种说法?


512 x 32位字?

嗯,对不起?
user3182532

也许是2048字节簇中的4个512字节扇区(4个扇区簇)
jsotola

我不认为闪存固件以官方标准方式公开信息。一些制造商可能会提供非标准命令来实现目标。但它不可靠。 USB闪存驱动器进行耗损均衡,并且在512字节“块大小”上“收敛”,而不管它们的实际物理扇区。 (可能有些程序可能会尝试一些非标准的方法来获取这些信息。一个Linux驱动程序不会担心它。所以它会报告设备报告的内容。而且通常不会是它的物理部门。)
jonk

你能否显示结果? hdparm -I /dev/sdX | grep -i physical
Alex

Answers:


0

我认为你将闪存芯片的物理特性与操作系统和文件系统的设置混淆。

闪存芯片将具有一些块或扇区大小,这是可以电擦除和写入的最小存储器单元。块大小为2048字节并不罕见。同样,这是闪存电路的物理特性......类似于旋转磁性硬盘的扇区。

文件系统块大小是操作系统用于存储文件或文件的一部分的最小内存单元。这通常在首次格式化媒体(例如闪存驱动器)时指定,并且只有在重新格式化存储媒体时才能更改。如果选择较小的块大小(512字节是一个较小的块大小),那么在存储文件时会浪费更少的内存。另一方面,选择较大的块大小意味着存储大文件时碎片较少。通常,当卷具有更大容量时,使用更大的块大小(例如4096字节)。


谢谢,但我已经知道了所有这些,你能否回答我最近的两个问题?也许我必须改写一下:如果扇区大小为IS(物理事实!)2048字节,为什么Linux会说“不,不是,它是512”。哪个过程导致操作系统得出结论?它读取了哪个文件,从哪里检索了哪些信息,进行了插值,以获得该结果?为什么Linux会说一些不正确的事情?
user3182532

您需要提供更多信息。在 究竟 Linux“说”扇区大小为512字节的上下文是什么?你怎么 知道 实际扇区大小是2048字节?你需要比“操作系统这么说”更具体。

0

快速概述(如果您真的想了解所有细节,则必须阅读标准,这些标准均可在线获取):

存储设备的USB协议或多或少与用于的命令相同 SCSI 设备。所以你有读取和写入块的命令,以及一堆其他命令。其中有 READ CAPACITY(16) (16表示命令长度为16个字节,较早的变量长度仅为10个字节),在一些其他信息中,返回逻辑块的大小和每个物理块有多少个逻辑块。

这就是操作系统如何知道逻辑和物理块大小。响应信息存储在控制器的固件中,而不是存储在存储介质上。

现在,对于包含SATA驱动器和USB转SATA桥接芯片的USB硬盘,可能会发生这样的问题,即此桥接芯片存在问题,并且无法正确转发 READ CAPACITY 命令(我有一个带有这样一个芯片的驱动器,我确认通过SATA为同一个磁盘获得了不同的答案)。在这种情况下,即使硬盘声称物理块大小正确为2048,桥接芯片也会破坏这个答案,因此操作系统会获得相同的物理和逻辑块大小。因此,当报告的块大小错误时,通常会出现这种情况。

对于USB闪存棒,情况又是不同的:桥接器后面没有SATA驱动器,USB记忆棒的控制器和闪存ROM组成一个紧凑的单元,如果控制器位于物理块大小,那么它就在说谎关于它 - 没有人能做到。实际上,你现在甚至都不会说谎,因为虽然闪存ROM确实有擦除块可以证明“物理块大小”,但你不知道它们的大小。

如果您正在谈论USB硬盘或USB闪存ROM,那么您的问题并不是很清楚 - 对于现代硬盘,可以假设它们的物理块大小为2048,对于闪存ROM,人们不能假设任何东西,因此您的声明“物理块大小是2048”在这种情况下有点可疑,除非你能解释你是如何知道的。

最后:“USB设备描述符”是USB协议本身的一部分,完全不同。

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.