mptscsih: ioc0: görev iptali: SUCCESS (rv = 2002) 30 saniye donmasına neden oluyor


12

Yazılımıma G / Ç RAID6 genellikle yaklaşık 30 saniye donar, ardından her şey normale döner.

Donma bittikten sonra bu syslog içine konur:

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)

Hatayı googled ve birisi 3.0Gbps yerine 1.5Gbps kullanmayı denedi. Kullanılması lsiutilBen bağlantı hızını değiştirdi:

# 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

Bu yardımcı olmadı.

'Aygıt Eksik G / Ç Gecikmesi'ni 32 olarak değiştirmeyi denedim. Bu da yardımcı olmadı.

/ Sys / class / scsi_device / * / device / timeout'u 30'dan 100'e ve sonra 3'e değiştirmeyi denedim.

$ 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

Yalnızca okuma veya yazma işlemleri varsa sorun çok nadir görülür: Sorun olmadan 1 TB okuyabilir veya yazabilirim. Sorun hem okuma hem de yazma işlemleri olduğunda ortaya çıkmaktadır . Raid6'da, şerit boyutundan daha küçük bir dosya yazarsanız ve şeridi önceden önbelleğe almazsanız (bu durumda, yeni sağlama toplamını hesaplamak için şeridin okunması gerekir) gerçekleşir.

Sistem sanal bir makine değil.

Probleme sebep olan nedir? 30 saniye donmadan nasıl kurtulurum?

Düzenleme: ek test

Sorunu kışkırtan güzel bir test seti buldum. Şerit boyutundan daha küçük dosyalar içerir, böylece paritenin yeniden hesaplanmasını zorlar, böylece yazma ile birlikte çok sayıda okumayı zorlar.

Sıra zamanlayıcısının bu sorun üzerinde herhangi bir etkisi olacağını düşünmediğimi itiraf etmeliyim. Ben hatalıydım. deadlineDiğerlerinden çok daha kötü olduğu açıktır . Ancak hiçbiri sorunu çözmüyor.

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

Zamanlayıcıyı değiştirmek noop, sorunun 100-120 sn sonra ortaya çıkmasına neden olur.

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

Zamanlayıcıyı değiştirmek deadline, sorunun 20-30 saniye sonra ortaya çıkmasına neden olur.

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

Zamanlayıcının değiştirilmesi cfq, sorunun 120-300 sn sonra ortaya çıkmasına neden olur.

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

Edit2

Zamanlayıcının bir etkisi olduğundan, sorunun bir zaman çerçevesinde çok fazla istek nedeniyle oluşup oluşmadığını düşünüyorum. Saniyede gönderilen istek sayısını bir şekilde kısabilir miyim?

Yanıtlar:


5

LSI gelen MPTSCSIH-Sürücü Sürüm Notları bakmak ilginç.

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.

Sürücünüz hangi versiyon? ( modinfo mptscsih)

Barracuda 3 TB sürücünüz hakkında Seagate Firmware bilgileri için bu bağlantıyı kullanın . Ayrıntıları almak için seri numarasını girmeniz gerekir.

Güncelleme: smartctl -i /dev/sdaaSadece SCSI ve SATA üzerinde test ettim ve seri numarasını bu şekilde aldım.


Sürücü sürüm notlarının hangi bölümlerini bu sorunla ilgili buluyorsunuz? Üretimde olan disklerde GNU / Linux kullanarak seri numarasını nasıl bulabilirim? Ve bu konuda Seagate'ten ne bulmayı beklersiniz? Soruda mptscsih sürümü güncellenmiştir.
Ole Tange

@OleTange "İlginç" bölümünü ekledim. Sürücünüz bundan daha yeni gibi görünse de, burada yeniden ortaya çıkan eski bir sorun olabilir. Seri numarasına gelince ... Seagate sadece Windows araçları sunuyor. Linux'ta bir inqkomutu denerdim - belki de bazı EMC sürücülerinden (serbestçe indirilebilir olmalıdır) - ama bu sadece bir tahmindir.
Nils

2
@OleTange RE: "Üretimde olan disklerde GNU / Linux kullanarak seri numarasını nasıl bulabilirim?" çalıştırmak dmidecodebellekten donanım bileşenleri açıklamasını çeker bu. Genellikle tüketici düzeyindeki ürünlerde sabit disk SN'leri için girişleriniz olmaz, ancak kurumsal donanımda genellikle eklenir veya sürücüler daha fazla zekaya sahip olur. --typeMFR cihazlarını kullanılabilir hale getirmeleri durumunda özel kodlar vardır. Diziler sağlayan şirketler, geri çağrılan sürücülerin bulunabilmesi için genellikle bu bilgileri sağlar.
2bc

@LinuxlyChallenged dmidecode, ne dahili ne de harici hiçbir sürücü görmez. inqDebian'ı bulamadım .
Ole Tange

@OleTange kullanımı smartctlgüncellenmiş cevabımı gör ...
Nils

2

G / Ç zamanlayıcılarınızı değiştirmeyi denediniz mi?

   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 

Varsayılan değer çoğu durumda "şu anda" çoğu sistem için CFQ'dur.

G / Ç zamanlayıcılarını karşılaştırmak için aşağıdakileri yapın:

Testi okuyun:

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

Bu, diski test ettiğinizden ve RAM'in önbelleğe alınmamış sayfalarından emin olduğunuzdan, önbelleği temizleyecektir.

Yazma testi:

Dosyalarınızı aynı anda birden çok kez kopyalayın. Yazmalar tamamlandıktan sonra birsync

Hem test ediyorsanız , kopyalama tamamlandığında isteyebilirsiniz drop_cachesve arayın sync. Programlayıcıya ek olarak, her programlayıcı için ayarlanabilir ayarlar vardır. Ancak, hızlı bir test, zamanlayıcıyı değiştirmek ve tekrar denemek olacaktır. İyi bir denetleyiciniz varsa noop"G / Ç Zamanlaması" nı yükler ve işletim sistemi düzeyinde veri zamanlaması yapmaz.

Her neyse, denemeye değer ve sadece echogeri almak için bir alır .


Sonuçlar için güncellenmiş soruya bakın.
Ole Tange

2

Bir SAS2008 kartı satın alarak sorunu çözdüm. Günlükte hala biraz şikayet ediyor, ancak disk G / Ç'yi asla engellemiyor. Ayrıca 4 TB SATA sürücülerini desteklediğini test ederken, LSI-SAS1068E sadece 2 TB'yi desteklediğini test ettim.

LSI-SAS1068E'yi satıcıya iade edeceğim için, diğer önerileri deneyemeyeceğim. Bu yüzden soruyu burada kapatıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.