Dell Unity/VNX: Випадкова тимчасова втрата з'єднання та/або зниження продуктивності на хостів ESXi, починаючи з версії 5.5 u2 і пізніше (виправляється користувачем)
Summary: Сильно навантажені масиви або мережі або тканини можуть уповільнити команди ATS настільки, що масив повертає умову перевірки неправильного порівняння за командою ATS, яку ESXi не очікує. Через це неправильне порівняння ATS на слоті VMFS HeartBeat хост ESXi намагається відновити контроль над пристроєм. Для цього хост видає скидання пристрою SCSI на LUN, що утримує VMFS. Усі активні входи/виходи на цьому LUN перериваються, а пристрій SCSI скидається. Тимчасова втрата з'єднання відображається в журналах VMkernel. ...
Symptoms
СЦЕНАРІЙ:
- Оновлення хоста до ESXi 5.5 update 2 або ESXi 6.0
- Один або кілька хостів ESXi втрачають з'єднання зі сховищем даних VMFS на короткий проміжок часу. Будь-які віртуальні машини в сховищі даних можуть вийти з ладу або мати помилки введення-виведення.
- Через неправильне порівняння Atomic Test and Set (ATS) у слоті VMFS HeartBeat хост ESXi намагається відновити контроль над пристроєм, видаючи скидання пристрою SCSI на LUN, що утримує VMFS.
- Усі активні входи/виходи на цьому LUN будуть перервані, а пристрій SCSI буде скинуто.
- Тимчасова втрата з'єднання відображається в журналах VMkernel.
Неправильне порівняння ATS може статися як з NMP, так і з PowerPath.
Повідомлення про помилки, що вказують на неправильне порівняння АВР, подібні до цього, з'являються в /var/log/vmkernel.log:
2015-11-20T22:12:47.194Z cpu13:33467)ScsiDeviceIO: 2645: Cmd(0x439dd0d7c400) 0x89, CmdSN 0x2f3dd6 from world 3937473 to dev "naa.50002ac0049412fa" failed H:0x0 D:0x2 P:0x0 Valid sense data: 0xe 0x1d 0x0.
Інші проблеми, які можуть виникнути:
- Відключення хостів від vSphere vCenter
- Віртуальні машини, що висять на операціях введення-виведення
Cause
Ця проблема спостерігалася на масивах, мережах або тканинах, які перевантажені настільки, що хости скасовують запити на введення-виведення.
Кілька постачальників масивів (включаючи Dell) мають проблеми з функцією серцебиття ATS, яка була представлена в ESXi 5.5u2.
ПРИМІТКА. Згідно з KB 326437 Broadcom (VMware) (external link), ця проблема стосується версій ESXi VMware ESXi 5.5.x і VMware ESXi 6.0.x, не надаючи всіх конкретних версій, тому ця КБ припускає, що це стосується всіх хостів ESXi з версією 5.5u2 і всіх версій ESXi 6.0.
Хазяїн вказує на свою жвавість, періодично виконуючи введення-виведення до свого серцебиття на заданій гучності. Таким чином, якщо протягом певного періоду часу в слоті серцебиття хоста не спостерігається активності, то можна зробити висновок, що господар втратив зв'язок із гучністю.
Серцебиття вводу/виводу ATS має дуже низьке значення тайм-ауту, що може призвести до відключення хоста та відключення програм, що призводить до втрати з'єднання з дисками та/або зниження продуктивності на хості.
Потім хост реєструє неправильне порівняння в слоті серцебиття та перериває всі активні вводу-виводу на LUN, коли він видає скидання. Усі очікувані IO на цьому LUN зазнають невдачі з відчуттям хоста 8 (скидання H:0x8 SCSI).
Resolution
Якщо ця умова дотримується, рекомендованим тимчасовим обхідним шляхом є відключення механізму серцебиття VAAI ATS. Дивіться Broadcom (VMware) KB 326437 (external link) для отримання додаткової інформації. Вимкнення механізму серцебиття ATS поверне хост назад до застарілого режиму. Після того, як навантаження буде усунуто, знову увімкніть механізм серцебиття ATS.
Зверніться до VMware для підтвердження проблеми або надайте емграб ESXi з підтримкою vmsupport для підтвердження. Вимкнення функції VAAI ATS Heartbeat на сервері ESX рекомендується ЛИШЕ для постраждалих клієнтів, доки проблеми з навантаженням не будуть вирішені.
Additional Information
Журнали Unity можуть бути використані для ідентифікації цього конкретного типу переривання (Sense Key = 0e, ASC = 1d, ASCQ = 00)
Розташування журналу в витягнутих журналах:
Щоб перевірити журнали, розпакуйте всі журнали c4_safe_ktrace.log* у вказаному вище місці, а потім знайдіть "SK = 0x0e, ASC/Q = 0x1d00".
Приклад із системою Linux або подібною:
grep -i "SK = 0x0e, ASC/Q = 0x1d00" spa/EMC/C4Core/log/c4_safe_ktrace.* | wc -l 15744 <<<< count of aborts on SPA in this example.
Якщо журнали ktrace не екстраковані, просто скористайтеся zgrep:
zgrep -i "SK = 0x0e, ASC/Q = 0x1d00" spa/EMC/C4Core/log/c4_safe_ktrace.* | wc -l 15744 <<<< count of aborts on SPA in this example.