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ı lsiutil
Ben 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. deadline
Diğ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?