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に投稿しました。

だから:

OpenSUSE 64ビットでホームサーバーとして実行されるDell T20があります。 OS用の1x 500GBドライブとストレージ用の4x 3TBハードドライブ(RAID6を含む)。 DellにはオンボードSATAポートが4つしかないため、拡張する必要がありました。私の場合、Marvell 88SE9128チップセットを使用するStarTech(PEXSAT32)2x SATA3カードを使用しました。 (奇妙なことに、OpenSUSEはこれを88SE9123として報告します。)

私が直面している問題は、カードが異常に動作してアレイからドライブを取り外すことです...をゼロで埋めると、複数回(1.5 GBから10 GB以上)のエラーが発生しましたが、ドライブは廃棄され、これは元の3TBドライブと2TBドライブの両方に当てはまります。 (両方のドライブは大丈夫です。)ゼロフィルは約54 MB / sで始まり、その後減少し始め、通常10〜20 MB / sから消えますが、500 KB / sと同じくらい低い場合があります。もう一つの提案は、別のコンピュータを試してみることです。残念ながら、私のデスクトップはWindowsのみを実行していますが、順次書き込みで2TBおよび3TBドライブを使用する8/16GB CrystalDiskMarkテストでは失敗しませんでしたが、読み取り速度は約190MB/s、書き込み速度は約150MB/sでした。 、これらのドライブで予想どおり(および内部Intel SATAポートから再構築中にアレイが取得する速度)

残念ながら、テクニカルサポートではそれ以上のアドバイスを提供することはできませんでしたが、Windowsテストではカード自体には問題がないことがわかりました。 DellのPCIスロットを交換しても違いはありませんでした。 SATAケーブルの交換をテストしましたが、同じケーブルが私のデスクトップでうまく機能するため、これが問題ではないかと疑われます。

私が理解したのは、カードが正しく機能することです。コントローラはLinuxをサポートしているので、うまく動作するはずですが、残念ながらそうではありません。どんな考えや提案がありますか?この問題をどのように詳細に調査できますか? (ここはフォーラムが良いと思います...)

多くの人がMarvellチップが悪いと思うことを知っていますが、残念ながら私は数百ポンドの高価なRAIDカードを購入する余裕はありません(ソフトウェアRAIDを使用しているため必要ありません)。 3123 SiIチップを搭載した他のSATAカードは、Dellまたはデスクトップで認識されません...(互換性の問題または死んだカードかもしれません...)

chanikの提案に従って更新されました:(2015年11月25日)

推奨コマンドを使用してecho 1 > /sys/block/sde/device/queue_depthキューの深さを1に設定し、それを使用して1に設定されていることをcat /sys/block/sde/device/queue_depth確認しました(該当する設定に準拠しているかどうかは別の質問です)。

どちらの場合も、ddを使用してドライブをゼロにするか、実際にドライブのパーティションが失敗します。追加のコメントを出した後、テストを再実行しました。 ddを使用しているコントローラに奇妙なことが発生した場合に備えて、ドライブ全体にわたる新しいext4パーティションを使用してドライブに新しいGPTテーブルを作成し、大きなディレクトリをドライブにコピーしました。 (どちらの場合も失敗しましたが、奇妙に今回は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ドライバ(32ビット、Linuxは64ビット)を含むWindows 7を新しくインストールしました。

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とマークされています。

9128というラベルがはっきりと表示されたMarvellチップの写真

編集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" HDD、名目上120GB、まあ、変更はありません... - また、少し検索し、書き込みキャッシュを無効にしました...まだ失敗しました...

いつものように失敗する前に、興味のある人がいる場合に備えて実行中に、そうでなければ失敗後にdmesg出力を収集しました。いつものように、ファイルはPastebinでホストされています。

レガシーモードをサポートするためにDell T20でBIOSを切り替えると、以下のようにカードメニューに入ることもできます。積極的に提供する唯一のオプションは、その中にRAID 0/1アレイを作成またはそのままにすることです。

PEXSAT32 BIOSオプション/画面

2017年5月編集:この問題は実際には解決されておらず、カーネルメーリングリストは実際の答えを提供していません。その結果、SATAカードは他のモデルと交換され、すべてがうまく機能しているようです。 2016年に戻り、2台のドライブが故障しました。明らかに、両方のドライブは実際には機能しませんでした。私のホームサーバー上のすべてのドライブが切り替えられ、その過程で1つ以上のSATAケーブル(この場合はOSドライブケーブル)に障害があることがわかりました。また、カードの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.confUbuntu 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

コマンドはすぐに適用されますが、再起動後も持続しないため、最終的に起動パラメータを変更する必要があります。

引用する

私はまだこの問題に対する実用的な解決策を探していますが、まだ成功していません。このソリューションがあなたに役立つことを願っています。

関連情報