Marvell 88SE9128(9123?)SATA 卡奇怪的行为 - OpenSUSE

Marvell 88SE9128(9123?)SATA 卡奇怪的行为 - OpenSUSE

在 OpenSUSE 论坛上没有回复后(此处:https://forums.opensuse.org/showthread.php/511116-Sata-card-erratic-behaviour-amp-failure-Marvell-88SE9128-(9123-)-芯片组)我向 Unix Stackexchange 提出这个查询,希望能得到更广泛的影响。

所以:

我有一台 Dell T20,在 OpenSUSE 64 位上作为家庭服务器运行 - 1 个 500GB 驱动器用于操作系统,4 个 3TB 硬盘驱动器(带有 RAID6)用于存储。由于戴尔只有 4 个板载 SATA 端口,因此必须对其进行扩展 - 在我的例子中,使用使用 Marvell 88SE9128 芯片组的 StarTech (PEXSAT32) 2x SATA3 卡。 (奇怪的是 OpenSUSE 将其报告为 88SE9123)

我面临的问题是该卡行为不稳定,从阵列中删除了一个驱动器...(尽管它过去已正确添加它,但在好一年里它一直是一个断断续续的问题...)技术支持建议在阵列之外进行测试 - 零填充驱动器会在不同时间(从 1.5GB 到 10+GB)导致故障 - 但驱动器会被丢弃,对于原始 3TB 驱动器和 2TB 驱动器都是如此。 (两个驱动器都很好。)零填充将以大约 54MB/s 开始,然后开始下降,通常在 10-20MB/s 时消失,但我看到它低至 500KB/s。另一个建议是尝试另一台计算机 - 不幸的是,我的台式机只运行 Windows,但在顺序写入中使用 8/16GB CrystalDiskMark 测试 2 和 3TB 驱动器没有失败,读取速度约为 190MB/s,写入速度约为 150MB/s ,正如这些硬盘的预期(以及阵列在内部 Intel SATA 端口上重建期间获得的速度)。

不幸的是,技术支持无法提供任何进一步的建议,但 Windows 测试表明该卡本身没有问题。更换 Dell 上的 PCI 插槽也没有什么区别。虽然我已经测试过更换 SATA 电缆,但同一根电缆在我的台式机上运行良好,因此我怀疑这就是问题所在。

据我了解,该卡应该可以正常工作 - 因为控制器受 Linux 支持,因此应该可以正常工作,不幸的是它不能。有什么想法、有什么建议吗?如何对此进行进一步调查? (我想这是论坛会更好的地方......)

我知道很多人认为 Marvell 芯片很邪恶,但不幸的是我买不起几百磅的 RAID 卡(我也不需要它,因为我使用的是软件 RAID)。我的另一张带有 3123 SiI 芯片的 SATA 卡无法被戴尔或我的台式机识别...(可能是兼容性问题或死卡...)

根据 chanik 的建议进行更新:(2015 年 11 月 25 日)

我使用推荐的命令,echo 1 > /sys/block/sde/device/queue_depth将队列深度设置为 1,并使用cat /sys/block/sde/device/queue_depth我验证它已设置为 1(是否遵守该设置是另一个问题)。

无论哪种情况,使用 dd 将驱动器清零或实际上驱动器上的分区都会失败。在一些进一步的评论之后,我重新运行了测试 - 以防万一控制器与 dd 发生一些有趣的事情,我在驱动器上创建了一个新的 GPT 表,并使用跨越整个驱动器的全新 ext4 分区,然后将一个大目录复制到驱动器。 (两种情况都失败了,但奇怪的是,这次有 NCQ 的情况下可以使用 48GB,没有 NCQ 的情况下可以使用 180GB...)

为了进行故障排除,我在错误发生后复制/收集了 /var/log/messages 中的输出,并且对于 NCQ 设置为 1,我还在错误发生后将 dmesg 输出转储到日志文件中。

(Pastebin 上的文字)

-> 如果我正确读取 dmesg 日志,这可能表明 NCQ=1 未被遵守

重新启动后并手动将 ncq 设置为 1 后的 dmesg,看起来确实不受尊重......

编辑 2 - 2015 年 11 月 25 日:

决定通过内核参数使用 libata.force=noncq - 仍然失败... dmesg 输出http://pastebin.com/EQt5z5F3

2015 年 11 月 26 日编辑:

根据一些尝试旧内核和 Windows 的建议,我测试了全新安装和更新的 OpenSUSE 13.2 以及带有 Marvell 驱动程序的全新安装 Windows 7(这是 32 位,Linux 是 64 位)。

在 Linux 下复制或写入失败 - 无论是驱动器本身还是 Windows 中的 NTFS 分区,在 Windows 下驱动器基准测试良好。

OpenSUSE 13.2 新鲜:http://pastebin.com/ucmiVqKL OpenSUSE 13.2 更新:http://pastebin.com/uA1e1rc2 OpenSUSE 13.2 已更新,无 NCQ:http://pastebin.com/QFLeUC8r

复制到Leap 42.1 Kernel 4.1下的Windows NTFS分区:http://pastebin.com/4iZ​​tkBjZ

Windows 7 CrystalDiskMark 基准测试:http://pastebin.com/FJASyDpt

我也不明白为什么该芯片在 Windows 和 Linux 中都被视为 9123 - 该芯片清楚地写着 9128:

Marvell 芯片照片清楚地标明 9128

编辑 2 - 2015 年 11 月 26 日从 USB 驱动器使用内核 3.13(使用 ncq)运行 Ubuntu - 再次失败

2015 年 11 月 27 日编辑

再次使用内核 13.3 的 Ubuntu LiveUSB - 通过命令行设置 ncq,再次失败。

2015 年 12 月 2 日更新

很少添加注释 - 得到了一张带有 Asmedia 芯片的新卡,效果很好。

在换入新卡之前,我对我闲置的旧硬盘进行了更多测试,我可能会将其添加到我的服务器中以用于非 RAID 任务。旧驱动器是 SATA2、2.5 英寸硬盘,标称 120GB,好吧,没有变化... - 还搜索了一下并禁用了写入缓存...仍然失败...

像往常一样,我收集了 dmesg 输出,在失败之前运行时收集,以防有人感兴趣,否则在失败后收集。与往常一样,文件由 Pastebin 托管。

如果我在 Dell T20 上将 BIOS 切换为支持传统模式,我也可以进入该卡的菜单 - 如下图。它主动为您提供的唯一选项是在其中创建 RAID 0/1 阵列或保持原样。

PEXSAT32 BIOS 选项/屏幕

2017 年 5 月编辑:这个问题从未真正得到解决,内核邮件列表也没有提供任何真正的答案。结果,SATA卡换成了不同的型号,一切似乎都正常了。快进到 2016 年,有两个驱动器出现故障 - 显然两个驱动器都确实死了。我的家庭服务器中的所有驱动器都被切换,在此过程中我发现至少一根 SATA 电缆出现故障 - 在本例中是操作系统驱动器电缆。我还更换了该卡的 SATA 电缆,一切似乎都正常了。这让我想知道是否所有问题都是由于电缆故障和 Linux 下更差的纠错造成的……也许吧?我不知道,因为我真的没有一个好的方法来测试这是否能解决问题。

然而,作为一个可能:如果出现不合理的行为,也许尝试购买新的电缆,也许这会解决问题。

答案1

我有带有 88SE9123 板载控制器的 Asus P7P55D-E EVO 板,并且连接到该控制器的 HDD 出现不稳定的行为。

简单的解决方法是通过在文件中添加类似以下行的内容来禁用 88SE9123 端口上的 NCQ /etc/default/grub

GRUB_CMDLINE_LINUX="libata.force=7.00:noncq,8.00:noncq"

通过添加这个并执行以下命令,我可以grub.conf在 Ubuntu Linux 中修改内核参数。

$ sudo update-grub
$ sudo grub-install /dev/sda

我没有使用 OpenSuse 的经验,因此您必须弄清楚如何更改发行版中启动时间的内核参数。

作为立即解决方法,您可以按如下方式禁用特定 HDD 的 NCQ。

$ sudo -i
# echo 1 > /sys/block/sde/device/queue_depth
# echo 1 > /sys/block/sdf/device/queue_depth

该命令立即生效,但在重新启动后不会持久,因此您最终必须更改启动参数。

参考

我仍在寻找这个问题的真正解决方案,但尚未成功。我希望这个解决方法对您有用。

相关内容