mptscsih: ioc0: завдання скасувати: УСПІХ (rv = 2002) спричиняє замерзання 30 секунд


12

Введення / виведення мого програмного забезпечення 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)

Я переглянув помилку, і хтось запропонував спробувати використовувати 1,5 Гбіт / с замість 3,0 Гбіт / с. Використовуючи, 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 ТБ без проблем. Проблема , здається, виникає , коли є обидва операцій читання і запису. На 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

Оскільки планувальник має ефект, я думаю, якщо проблема спричинена занадто великою кількістю запитів у часовій рамці. Чи можу я якось зменшити кількість запитів, що надсилаються за секунду?

Відповіді:


5

MPTSCSIH-Driver Release Notes від LSI дивитися цікаво.

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)

Використовуйте це посилання для інформації про мікропрограмне забезпечення Seagate про свій накопичувач Barracuda 3 TB. Вам потрібно ввести серійний номер, щоб отримати детальну інформацію.

Оновлення: Спробуйте. smartctl -i /dev/sdaaЯ щойно перевірив його на SCSI та SATA і отримав серійний номер таким чином.


Які частини приміток до випуску драйвера ви вважаєте актуальними для цієї проблеми? Як знайти серійний номер за допомогою GNU / Linux на дисках, які випускаються? І що б ви очікували від цього в Seagate? Версія mptscsih оновлена ​​у запитанні.
Оле Танге

@OleTange Я вставив "цікавий" розділ. Незважаючи на те, що ваш драйвер здається більш новим, ніж це, можливо, тут з’являється стара проблема. Щодо серійного номера ... Seagate пропонує лише Windows-інструменти. На Linux я спробував би inqкоманду - можливо, від деяких драйверів ЕМС (має бути вільно завантажуваною) - але це лише здогадка.
Нілс

2
@OleTange RE: "Як знайти серійний номер за допомогою GNU / Linux на дисках, які випускаються?" Виконати dmidecodeце витягне опис апаратних компонентів із пам'яті. Часто на елементах споживчого рівня у вас не буде записів на жорсткі диски SN, але, за допомогою корпоративних передач, зазвичай це додається, або накопичувачі матимуть більше інтелекту. Існують спеціальні --typeкоди, що посилаються на пристрої MFR, якщо вони зробили їх доступними. Компанії, які постачають масиви, зазвичай надають цю інформацію, щоб можна було знайти диски, що відкликаються.
2бр

@LinuxlyChallenged dmidecodeне бачить приводів - ні внутрішніх, ні зовнішніх. Мені не вдалося знайти inqDebian.
Оле Танге

@OleTange використання smartctlдивіться мою оновлену відповідь ...
Nils

2

Ви спробували змінити свої планувальники вводу-виводу?

   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, як правило, для більшості систем "наразі".

Для порівняння планувальників вводу / виводу виконайте наступне:

Прочитайте тестування:

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

Це забезпечить тестування диска та не кешованих сторінок оперативної пам’яті, це змиє кеш.

Написання тестування:

Скопіюйте свої файли кілька разів одночасно. Після закінчення запису async

Якщо ви тестуєте і те, і інше, ви можете захотіти drop_cachesі зателефонувати, syncколи буде зроблено копію. На додаток до планувальника є настроювання для кожного планувальника. Але швидким тестом було б змінити планувальник і спробувати ще раз. Якщо у вас хороший контролер, noopвін завантажить "Планування вводу / виводу" на нього і не виконає планування даних на рівні ОС.

У будь-якому випадку, варто спробувати, і це потрібно лише для того, echoщоб повернути його назад.


Дивіться оновлене запитання щодо результатів.
Оле Танге

2

Я вирішив проблему, купивши карту SAS2008. Він все ще трохи скаржиться в журналі, але ніколи не блокує введення / виведення диска. Також я протестував, що він підтримує 4 TB накопичувачі SATA, тоді як LSI-SAS1068E підтримує лише 2 ТБ.

Оскільки я повертаю LSI-SAS1068E продавцю, я не зможу випробувати інші пропозиції. Тому я закриваю тут питання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.