मपस्कसिह: ioc0: टास्क एबॉर्ट: SUCCESS (rv = 2002) 30 सेकंड ठंड का कारण बनता है


12

मेरे सॉफ्टवेयर के लिए I / O RAID6 अक्सर लगभग 30 सेकंड के लिए जमा देता है जिसके बाद सब कुछ सामान्य हो जाता है।

फ्रीज खत्म होने के बाद इसे सिसलॉग में डाला जाता है:

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 में बदलने की कोशिश की। इससे कोई फायदा नहीं हुआ।

मैंने 30 से 100 तक और उसके बाद 3. sys / class / scsi_device / * / device / timeout बदलने की कोशिश की। सभी विफल रहे।

$ 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 टीबी पढ़ सकता हूं या लिख ​​सकता हूं। समस्या तब उत्पन्न होती है जब पढ़ने और लिखने दोनों का संचालन होता है। एक छापे 6 पर जो तब होता है जब आप किसी फाइल को स्ट्राइप साइज से छोटा लिखते हैं और आपके पास पहले से रखी गई स्ट्रिप नहीं होती है (जिस स्थिति में न्यू चेकसम की गणना करने के लिए स्ट्राइप को जरूर पढ़ना चाहिए)।

सिस्टम कोई वर्चुअल मशीन नहीं है।

क्या समस्या पैदा कर रहा है? मैं 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

EDIT2

चूँकि अनुसूचक का प्रभाव है, मैं सोच रहा हूँ कि क्या समस्या एक समय सीमा में बहुत अधिक अनुरोधों के कारण होती है। क्या मैं किसी भी तरह प्रति सेकंड भेजे गए अनुरोधों की संख्या को कम कर सकता हूं?

जवाबों:


5

LSI से MPTSCSIH-चालक रिलीज नोट्स नज़र दिलचस्प।

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)

अपने बाराकुडा 3 टीबी ड्राइव के बारे में सीगेट फ़र्मवेयर जानकारी के लिए इस लिंक का उपयोग करें । आपको विवरण प्राप्त करने के लिए सीरियल नंबर दर्ज करना होगा।

अपडेट: कोशिश करें smartctl -i /dev/sdaaकि मैंने इसे एससीएसआई और एसएटीए पर परीक्षण किया और इस तरह सीरियल नंबर मिला।


इस समस्या के लिए ड्राइवर के कौन से भाग नोट जारी करते हैं? मैं उत्पादन में हैं डिस्क पर GNU / Linux का उपयोग कर सीरियल नंबर कैसे पता करूँ? और आप इस पर सीगेट से क्या उम्मीद करेंगे? मप्सकिश का संस्करण प्रश्न में अपडेट किया गया है।
ओले तांगे

@OleTange मैंने "रोचक" अनुभाग डाला। यद्यपि आपका ड्राइवर नए से लगता है कि यह एक पुरानी समस्या हो सकती है। सीरियल-नंबर के लिए ... सीगेट केवल विंडोज-टूल्स की पेशकश करता है। लिनक्स पर मैं एक inqआदेश की कोशिश करूंगा - शायद कुछ ईएमसी-ड्राइवरों से (स्वतंत्र रूप से डाउनलोड करने योग्य होना चाहिए) - लेकिन यह सिर्फ एक अनुमान है।
निल्स

2
@OleTange RE: "मैं उत्पादन में होने वाले डिस्क पर GNU / Linux का उपयोग करके सीरियल नंबर कैसे खोजूं?" इसे चलाने dmidecodeसे हार्डवेयर घटकों का विवरण मेमोरी से खिंच जाएगा। अक्सर उपभोक्ता स्तर की वस्तुओं पर आपके पास हार्ड ड्राइव एसएन के लिए प्रविष्टियां नहीं होंगी, लेकिन एंटरप्राइज गियर के साथ इसमें आमतौर पर यह जोड़ा जाएगा या ड्राइव में अधिक बुद्धि होगी। --typeएमएफआर उपकरणों को संदर्भित करने के लिए विशेष कोड हैं जिन्हें उन्हें उपलब्ध कराना चाहिए था। एरे की आपूर्ति करने वाली कंपनियां आमतौर पर यह जानकारी प्रदान करती हैं ताकि रिकॉल ड्राइव को स्थित किया जा सके।
2bc

@LinuxlyChallenged dmidecodeकोई ड्राइव नहीं देखता है - न तो आंतरिक और न ही बाहरी। मैं inqडेबियन के लिए खोजने में असमर्थ था ।
ओले तांगे

@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 

सीएफक्यू आमतौर पर ज्यादातर "सिस्टम" के लिए होता है।

I / O शेड्यूलर्स की तुलना करने के लिए निम्न कार्य करें:

परीक्षण पढ़ें:

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

यह सुनिश्चित करेगा कि आप डिस्क का परीक्षण कर रहे हैं और रैम के कैश्ड पेज नहीं, इससे कैश फ्लश हो जाएगा।

परीक्षण लिखें:

अपनी फ़ाइलों को एक साथ कई बार कॉपी करें। एक बार लिखने के पूरा हो जाने के बाद अंकsync

यदि आप दोनों का परीक्षण कर रहे हैं, तो आप चाहते हैं कि जब कॉपी हो जाए तो drop_cachesकॉल करें sync। शेड्यूलर के अलावा प्रत्येक शेड्यूलर के लिए ट्यूनबल होते हैं। लेकिन, एक त्वरित परीक्षण अनुसूचक को बदलने और फिर से प्रयास करने के लिए होगा। यदि आपके पास एक अच्छा नियंत्रक है, तो noopवह "I / O शेड्यूलिंग" को बंद कर देगा और किसी भी OS स्तर के डेटा शेड्यूलिंग को निष्पादित नहीं करेगा।

वैसे भी, यह एक कोशिश के लायक है और यह केवल echoइसे वापस सेट करने के लिए लेता है ।


परिणामों के लिए अद्यतन प्रश्न देखें।
ओले तांगे

2

मैंने SAS2008 कार्ड खरीदकर समस्या का समाधान किया है। यह अभी भी लॉग में थोड़ी शिकायत करता है, लेकिन यह कभी भी डिस्क I / O को ब्लॉक नहीं करता है। इसके अलावा मैंने परीक्षण किया है कि यह 4 टीबी एसएटीए ड्राइव का समर्थन करता है, जबकि एलएसआई-एसएएस 1068 ईई केवल 2 टीबी का समर्थन करता है।

जैसा कि मैं विक्रेता को LSI-SAS1068E लौटाऊंगा, मैं अन्य सुझावों की कोशिश नहीं कर पाऊंगा। इसलिए मैं यहां सवाल बंद करता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.