mptscsih : ioc0 : 작업 중단 : 성공 (rv = 2002)으로 인해 30 초 동안 정지


12

소프트웨어에 대한 I / O RAID6은 종종 약 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

읽기 또는 쓰기 작업 만있는 경우에는 거의 문제가 발생하지 않습니다. 문제없이 1TB를 읽거나 쓸 수 있습니다. 읽기 및 쓰기 작업 이 모두 있을 때 문제가 발생하는 것 같습니다 . 스트라이프 크기보다 작은 파일을 작성하고 스트라이프를 캐시하지 않은 경우 발생하는 raid6에서 (이 경우 새 체크섬을 계산하려면 스트라이프를 읽어야 함).

시스템이 가상 머신이 아닙니다.

문제의 원인은 무엇입니까? 30 초의 동결을 제거하려면 어떻게해야합니까?

편집 : 추가 테스트

문제를 일으키는 멋진 테스트 세트를 찾았습니다. 여기에는 스트라이프 크기보다 작은 파일이 포함되므로 패리티를 다시 계산해야하므로 쓰기와 함께 많은 읽기를 수행해야합니다.

큐 스케줄러가이 문제점에 영향을 줄 것이라고 생각하지 않았다는 것을 인정해야합니다. 내가 틀렸어. deadline다른 것보다 훨씬 나쁘다는 것이 분명합니다 . 그러나 어느 것도 문제를 해결하지 못합니다.

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

noop100-120 초 후에 문제점이 발생 하도록 스케줄러를 변경하십시오 .

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

deadline20-30 초 후에 문제점이 발생 하도록 스케줄러를 변경하십시오 .

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

cfq120-300 초 후에 문제점이 발생 하도록 스케줄러를 변경하십시오 .

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

편집 2

스케줄러가 효과가 있기 때문에 문제가 일정에 너무 많은 요청으로 인한 것인지 생각하고 있습니다. 어떻게 든 초당 전송 된 요청 수를 조절할 수 있습니까?

답변:


5

LSIMPTSCSIH- 드라이버 릴리즈 노트는 흥미로워 보입니다.

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/sdaaSCSI와 SATA에서 테스트했으며 일련 번호를 얻었습니다.


이 문제와 관련하여 드라이버 릴리스 정보의 어떤 부분이 있습니까? 프로덕션 환경의 디스크에서 GNU / Linux를 사용하여 일련 번호를 찾으려면 어떻게합니까? 그리고 Seagate에서 무엇을 기대하십니까? 질문에서 mptscsih의 버전이 업데이트되었습니다.
Ole Tange

@OleTange "흥미로운"섹션을 삽입했습니다. 드라이버가 최신 버전 인 것 같지만 여기에 다시 나타나는 오래된 문제 일 수 있습니다. 일련 번호는 ... Seagate는 Windows 도구 만 제공합니다. 리눅스 inq에서는 아마도 일부 EMC 드라이버 (무료로 다운로드 가능해야 함)에서 명령 을 시도 할 것입니다. 그러나 이것은 추측 일뿐입니다.
Nils

2
@OleTange RE : "제작중인 디스크에서 GNU / Linux를 사용하여 일련 번호를 찾으려면 어떻게합니까?" dmidecode이것을 실행 하면 메모리에서 하드웨어 구성 요소에 대한 설명이 표시됩니다. 소비자 수준의 항목에는 하드 드라이브 SN에 대한 항목이없는 경우가 많지만 엔터프라이즈 장비를 사용하면 일반적으로이 항목이 추가되거나 드라이브에 더 많은 인텔리전스가 있습니다. --typeMFR 장치를 사용 가능하게 한 경우 참조하는 특수 코드가 있습니다. 어레이를 제공하는 회사는 일반적으로 리콜 된 드라이브를 찾을 수 있도록이 정보를 제공합니다.
2bc

@LinuxlyChallenged dmidecode는 드라이브를 볼 수 없습니다 (내부 또는 외부 모두). inq데비안 을 찾지 못했습니다 .
Ole Tange

@OleTange use 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 Scheduling"을 오프로드하고 OS 레벨 데이터 스케줄링을 수행하지 않습니다.

어쨌든, 그것은 시도할만한 가치가 있으며 다시 echo설정하는 데만 필요합니다 .


결과는 업데이트 된 질문을 참조하십시오.
Ole Tange

2

SAS2008 카드를 구입하여 문제를 해결했습니다. 여전히 로그에 약간의 불만이 있지만 디스크 I / O를 차단하지는 않습니다. 또한 4TB SATA 드라이브를 지원하는 것으로 테스트했지만 LSI-SAS1068E는 2TB 만 지원합니다.

LSI-SAS1068E를 판매자에게 반품하면 다른 제안을 시도 할 수 없습니다. 따라서 나는 여기서 질문을 닫습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.