USB硬盘盒将4K扇区磁盘呈现为具有512B扇区

USB硬盘盒将4K扇区磁盘呈现为具有512B扇区

当我的服务器 CPU 停止运行时,我将 SSD 插入笔记本电脑,然后急忙跑到 Fry's 去拿一些 USB 3.0 HDD 硬盘盒来启动我的 5 驱动器 LVM RAID 阵列。当我回来时,我把所有东西都连接起来,按下电源按钮,然后看着它启动到救援提示。经过一番调查,我发现了问题所在。

我的服务器主板芯片组正确地将驱动器显示为具有 4096 字节扇区,并fdisk愉快地将它们格式化。我创建了一些 PV,启动了 RAID5 阵列,然后就没有再多想了。我得到的 USB 3.0 硬盘盒似乎将这些 4096 字节扇区驱动器呈现为具有 512 字节扇区。分区表完全清晰,并且可以很好地检测 PV,但 LVM 无法正常工作没有任何它的。它注意到驱动器的扇区数比其缓存和预期的扇区数大八倍,因此拒绝组装 VG。

我的问题是这样的:有没有一种方法,或者通过对机箱本身做一些涉及固件的令人发指的事情,或者通过对内核做一些令人发指的事情来说服它模拟 4096 字节扇区(当它们实际上是 512 时),以说服 LVM 工作?

所有五个驱动器都是 4TB,奇怪的是,机箱如此报告它们 - 没有任何臭名昭著的超过 2TB 错误的迹象。它只是将 4096 字节扇区磁盘显示为具有 512 字节扇区,并通过显示 8 倍的扇区来弥补差异。

答案1

这是 USB 外壳中 USB 转 ATA 桥接器的错误。我受到同样的错误的影响,我的桥芯片是 JMicron 的(如果你用谷歌搜索那个制造商,你会发现其他人受到它的影响)。

当我第一次注意到它时,我对此进行了研究,IIRC,问题是 SCSI 协议在对查询它的命令的响应中的一些后续字段中包含有关物理大小与逻辑大小的信息,并且桥接固件可能对该响应有一些长度常数,但该长度太低并且不会传输该字段。

当时我也试图找到一种方法来直接告诉内核物理扇区大小并覆盖错误的信息,但找不到。也许与此同时情况已经改变了。

如果数据很重要,请购买一些带有桥接芯片且没有错误的外壳。

相关内容