mptscsih:ioc0:タスクの中止:成功(rv = 2002)により30秒間フリーズする


12

ソフトウェアRAID6へのI / Oは、約30秒間フリーズすることが多く、その後すべてが正常に戻ります。

凍結が終わった後、これはsyslogに入れられます:

Mar 14 18:43:57 server kernel: [35649.816060] sd 5:0:23:0: [sdy] CDB: Read(10): 28 00 6c 52 68 58 00 04 00 00
Mar 14 18:43:58 server kernel: [35651.149020] mptbase: ioc0: LogInfo(0x31140000): Originator={PL}, Code={IO Executed}, SubCode(0x0000) cb_idx mptscsih_io_done
Mar 14 18:43:58 server kernel: [35651.151962] mptscsih: ioc0: task abort: SUCCESS (rv=2002) (sc=ffff8807b02dfe80)
Mar 14 18:43:58 server kernel: [35651.151967] mptscsih: ioc0: attempting task abort! (sc=ffff88002a7f30c0)
Mar 14 18:43:58 server kernel: [35651.151972] sd 5:0:23:0: [sdy] CDB: Read(10): 28 00 6c 52 6c 58 00 04 00 00
Mar 14 18:43:58 server kernel: [35651.151981] mptscsih: ioc0: task abort: SUCCESS (rv=2002) (sc=ffff88002a7f30c0)
Mar 14 18:43:58 server kernel: [35651.151984] mptscsih: ioc0: attempting task abort! (sc=ffff8804120e5ec0)
Mar 14 18:43:58 server kernel: [35651.151988] sd 5:0:23:0: [sdy] CDB: Read(10): 28 00 6c 52 70 58 00 04 00 00
Mar 14 18:43:58 server kernel: [35651.151996] mptscsih: ioc0: task abort: SUCCESS (rv=2002) (sc=ffff8804120e5ec0)
Mar 14 18:43:58 server kernel: [35651.151999] mptscsih: ioc0: attempting task abort! (sc=ffff880154afb280)
Mar 14 18:43:58 server kernel: [35651.152020] sd 5:0:23:0: [sdy] CDB: Read(10): 28 00 6c 52 74 58 00 04 00 00
Mar 14 18:43:58 server kernel: [35651.152029] mptscsih: ioc0: task abort: SUCCESS (rv=2002) (sc=ffff880154afb280)

私はエラーをグーグルで調べました、そして誰かが3.0Gbpsの代わりに1.5Gbpsを使うことを試みることを提案しました。使用してlsiutil、私はリンク速度を変更:

# lsiutil -p 1 -i 

Firmware Settings
-----------------
SAS WWID:                       500605b002c0f680
Multi-pathing:                  Disabled
SATA Native Command Queuing:    Enabled
SATA Write Caching:             Enabled
SATA Maximum Queue Depth:       32
Device Missing Report Delay:    0 seconds
Device Missing I/O Delay:       0 seconds
Phy Parameters for Phynum:      0    1    2    3    4    5    6    7
  Link Enabled:                 Yes  Yes  Yes  Yes  Yes  Yes  Yes  Yes
  Link Min Rate:                1.5  1.5  1.5  1.5  1.5  1.5  1.5  1.5
  Link Max Rate:                1.5  1.5  1.5  1.5  1.5  1.5  1.5  1.5
  SSP Initiator Enabled:        Yes  Yes  Yes  Yes  Yes  Yes  Yes  Yes
  SSP Target Enabled:           No   No   No   No   No   No   No   No
  Port Configuration:           Auto Auto Auto Auto Auto Auto Auto Auto
Target IDs per enclosure:       1
Persistent mapping:             Enabled
Physical mapping type:          None
Target ID 0 reserved for boot:  No
Starting slot (direct attach):  0
Target IDs (physical mapping):  8
Interrupt Coalescing:           Enabled, timeout is 16 us, depth is 4

それは助けにはならなかった。

「Device Missing I / O Delay」を32に変更してみましたが、それも役に立ちませんでした。

/ sys / class / scsi_device / * / device / timeoutを30から100に、次に3に変更してみました。すべて失敗しました。

$ uname -a
Linux server 3.2.0-0.bpo.1-amd64 #1 SMP Sat Feb 11 08:41:32 UTC 2012 x86_64 GNU/Linux
$ grep LSISAS1068E /var/log/messages
Mar 13 15:47:44 server kernel: [   21.082363] scsi5 : ioc0: LSISAS1068E B3, FwRev=01210000h, Ports=1, MaxQ=483, IRQ=45
$ modinfo mptscsih
filename:       /lib/modules/3.2.0-0.bpo.1-amd64/kernel/drivers/message/fusion/mptscsih.ko
version:        3.04.20
license:        GPL
description:    Fusion MPT SCSI Host driver
author:         LSI Corporation
srcversion:     85D42A00FEBA3C95555E3AF
depends:        scsi_mod,mptbase
intree:         Y
vermagic:       3.2.0-0.bpo.1-amd64 SMP mod_unload modversions 
$ cat /sys/block/sdae/device/model
ST3000DM001-9YN1
$ cat /sys/block/sdae/device/rev
CC4C

読み取りまたは書き込み操作のみがある場合、問題が発生することは非常にまれです。問題なく1 TBの読み取りまたは書き込みを実行できます。この問題は読み取り操作と書き込み操作の両方がある場合に発生するようです。ストライプサイズよりも小さいファイルを書き込み、まだストライプをキャッシュしていない場合に発生するraid6で(この場合、ストライプを読み取って新しいチェックサムを計算する必要があります)。

システムは仮想マシンではありません。

問題の原因は何ですか?30秒間のフリーズを解消するにはどうすればよいですか?

編集:追加のテスト

問題を引き起こしているように見える素晴らしいテストセットを見つけました。ストライプサイズよりも小さいファイルが含まれているため、パリティの再計算が強制され、書き込みと組み合わせて多くの読み取りが強制されます。

キュースケジューラがこの問題に影響を与えるとは思わなかったことを認めなければなりません。私は間違っていた。それがdeadline他よりもはるかに悪いことは明らかです。ただし、どれも問題を解決しません。

# cat /sys/block/sdaa/queue/scheduler
noop deadline [cfq]

スケジューラを変更するnoopと、100〜120秒後に問題が発生します。

parallel echo noop \> {} ::: /sys/block/sd*/queue/scheduler

スケジューラを変更するdeadlineと、20〜30秒後に問題が発生します。

parallel echo deadline \> {} ::: /sys/block/sd*/queue/scheduler

スケジューラを変更するcfqと、120〜300秒後に問題が発生します。

parallel echo cfq \> {} ::: /sys/block/sd*/queue/scheduler

編集2

スケジューラーは効果があるので、問題の原因が時間枠内の要求が多すぎるためかどうかを考えています。1秒あたりに送信される要求の数をどうにかして制限できますか?

回答:


5

LSIMPTSCSIH-Driverリリースノートは興味深いようです。

Major Changes For Version 2.06.75.00-1
Release Date:  12/10/2007

General Changes
Functionality
•   Task Aborts for commands to a Volume are returned as FAILED and not sent to FW.

ドライバーはどのバージョンですか?(modinfo mptscsih

このリンクを使用して、Barracuda 3 TBドライブに関するSeagateファームウェア情報を入手してください。詳細を取得するには、シリアル番号を入力する必要があります。

更新:試してみsmartctl -i /dev/sdaaたところ、SCSIとSATAでテストし、シリアル番号をそのように取得しました。


ドライバーのリリースノートのどの部分がこの問題に関連すると思いますか?稼働中のディスクでGNU / Linuxを使用してシリアル番号を確認するにはどうすればよいですか?そして、これについてシーゲイトから何を見つけると思いますか?mptscsihのバージョンが質問で更新されました。
Ole

@OleTange「面白い」セクションを挿入しました。お使いのドライバーはそれよりも新しいようですが、ここに古い問題が再発している可能性があります。シリアル番号については... SeagateはWindowsツールのみを提供しています。Linuxでは、inqおそらく一部のEMCドライバー(自由にダウンロードできるはず)からコマンドを試してみますが、これは単なる推測です。
ニルス

2
@OleTange RE:「GNU / Linuxを使用して、稼働中のディスクでシリアル番号を確認するにはどうすればよいですか?」dmidecodeこれを実行すると、ハードウェアコンポーネントの説明がメモリから取得されます。多くの場合、コンシューマレベルのアイテムではハードドライブSNのエントリはありませんが、エンタープライズギアでは通常、これが追加されるか、ドライブのインテリジェンスが増えます。--typeMFRデバイスを利用可能にした場合、それらを参照するための特別なコードがあります。アレイを提供する会社は通常、この情報を提供して、リコールされたドライブを見つけることができます。
2bc 2012年

@LinuxlyChallenged dmidecodeは、内部も外部もドライブを認識しません。inqDebian を見つけることができませんでした。
Ole

@OleTangeの使用smartctl私の最新の回答を参照してください...
Nils

2

I / Oスケジューラを変更してみましたか?

   mccoy:/sys/block/sdb/queue # cat scheduler 
   noop anticipatory deadline [cfq] 
   mccoy:/sys/block/sdb/queue # echo noop > scheduler 
   mccoy:/sys/block/sdb/queue # cat scheduler 
   [noop] anticipatory deadline cfq 

通常、ほとんどのシステムの「現在」のデフォルトはCFQです。

I / Oスケジューラを比較するには、次の手順を実行します。

テストを読む:

# echo 3 > /proc/sys/vm/drop_caches

これにより、RAMのキャッシュされたページではなくディスクをテストしていることを確認できます。これにより、キャッシュがフラッシュされます。

テストを書く:

ファイルを同時に複数回コピーします。書き込みが完了したら、sync

両方をテストしている場合は、コピーが完了したときにdrop_caches呼び出しsyncを行います。スケジューラーに加えて、各スケジューラーには調整可能パラメーターがあります。ただし、簡単なテストは、スケジューラを変更して再試行することです。良好なコントローラがある場合noop、「I / Oスケジューリング」の負荷が軽減され、OSレベルのデータスケジューリングは実行されません。

とにかく、それは試してみる価値があり、echoそれを元に戻すだけです。


結果については、更新された質問を参照してください。
Ole

2

SAS2008カードを購入して問題を解決しました。それでも、ログには少し不満がありますが、ディスクI / Oをブロックすることはありません。また、4 TBのSATAドライブをサポートすることをテストしましたが、LSI-SAS1068Eは2 TBのみをサポートします。

LSI-SAS1068Eを販売者に返却するため、他の提案を試すことはできません。したがって、ここで質問を閉じます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.