Оптимизация производительности. Часть 4. fcstat

Рассмотрим еще одну полезную команду для глубокой диагностики, позволяющую находить и анализировать проблемы канала передачи данных от диска к контроллерам на системах, использующих интерфейс FC к дискам. Это системы с полками DS14, которые постепенно заменяются на дисковые полки, работающие по SAS, в новых моделях FAS, но все еще широко распространенные в продакшне.

Как вы помните из первой серии этой темы, проблемы в канале передачи между дисками и контроллером системы хранения занимает в сформулированном там Top5 проблем, вызывающих падение производительности, второе место.


na_fcstat - Fibre Channel stats functions

Формат:
fcstat link_stats [ adapter number ]
fcstat fcal_stats [ adapter number ]
fcstat device_map [ adapter number ]

Описание:

??спользуйте команду fcstat чтобы отобразить:
(a) статистику соединений для дисков в петле Fibre Channel,
(b) внутреннюю статистику, собираемую драйвером Fibre Channel, и
(c) размещение и карту относительного расположения дисков в петле Fibre Channel.

Подкоманды:

link_stats

Все диски хранят ряд полезных метрик, связанных с событиями канала передачи даных. Наиболее интересные для нас это ошибки линка (link failures), потеря синхронизма (loss-of-sync), а также количество кадров, принятых с  ошибками CRC (CRC errors).

Счетчик ошибок линка (link failure)
Диск записывает число событий потери линка (link failure), это просходит, когда диск теряет синхронизацию с тактовым генератором интерфейса на время, большее чем R_T_TOV, обычно это порядка миллисекунд. Ошибка link failure приводит к презапуску процедуры инициализации петли.

Счетчик потерь синхронизма (loss of sync)
Диск отмечает событие loss of sync, если теряет синхронизацию с тактовым генератором на период меньше десятков микросекунд, и затем восстанавливает с ним синхронизацию. Число link failures включено в этот счетчик.

Счетчик неверного CRC кадра (frame CRC error)
Каждый кадр, который получает диск, содержит контрольную сумму, которая покрывает весь фрейм. Если после приема кадра контрольная сумма не совпадает, увеличивается счетчик invalid CRC, и кадр отбрасывается.

Каждое из трех событий может, при определенных условиях, рассматриваться как нарушение целостности петли FC. Ошибка link failure считается наиболее серьезной из трех, так как указывает на значительные, долгоживущие, в масштабах FC, проблемы передачи, на участке перед диском. Все три события обычно указывают на проблемы потерь кадров, и вызывают пропадания кадров в потоке передачи, таймауты команд и, как следствие, повторные отдачи команд SCSI контроллером. Все три события указывают на проблемы в FC-петле передачи данных.

Отметьте, что нарушение целостности FC-петли этого типа, даже вызывающее data underruns и/или таймауты команд SCSI, не приводит к повреждению данных как таковых. Адаптер хоста обнаруживает эти проблемы и перепосылает соответствующие команды. В наихудшем варианте развития событий вы можете столкнуться с падением производительности.

В общем случае, все счетчики сохраняют свои значения после перезагрузок и сигнала сброса (reset) для дисков, и обнуляются только при физическом отключении дисков от электропитания.

fcal_stats


Драйвер хост-адаптера Fibre Channel собирает статистику о различных обнаруженых ошибках, возникших exception, и предпринятых действиях. В общем случае, интерпретация обычно требует понимания деталей внутренней работы драйвера. Однако некоторые счетчики показывают статистику отдельно по дискам, (например device_underrun_cnt, device_overrun_cnt, device_timeout_cnt) и могут быть полезны при обнаружении потенциально проблемных дисков.
Счетчики обнуляются при перезагрузке контроллера.

device_map

Петля Fibre Channel, как указывает нам ее название, это, с точки зрения передачи фрейма, логическая замкнутая петля. Поэтому, проблема с компонентом "выше по течению", будет наблюдаться как проблема для устройств "ниже по течению".
Относительное физическое положение дисков в петле не всегда непосредственно соотносится с их loop IDs (которые, в свою очередь, определяются заданием shelf IDs). Подкоманда device_map нужна для того, чтобы определить относительное физическое место нужного устройства в петле.

Отображаемая информация делится на две части, (a) относительная физическая позиция устройства в петле, если бы петля была единым плоским линейным пространством и (b) размещение устройств по полкам, что помогает найти корреляцию между конкретным диском и его размещением в полке.

Пример использования:


Предположим, вы наблюдаете некие проблемы на системе хранения, выражающиеся в ошибках FC-канала.
Например вы видите в syslog системы, что SCSI-команда отменена(abort) и подана повторно (retried) по причине parity/CRC errors,
 
  Sun Apr 18 06:02:11 GMT [isp2100_main]: Disk 0a.43(0xfffffc0000dfba48): op
       0×2a:008cbf38:0010 sector 9223976 aborted command - Parity/CRC error (b 47, 0)

или команда SCSI отменена и передана заново по причине data underrun errors,

  Sun Feb 28 01:46:06 GMT [isp2100_main]: Disk 0a.62: Data underrun  (0xfffffc0000c16dd0,0×28,0)

Чтобы определить, в какой FC-петле находится сбойный компонент, мы начнем сбор данных с помощью link_stats. Мы подозреваем, основываясь на приведенных выше двух сообщениях, что причина находится где-то перед дисками 0a.62 и 0a.43.


  filer> fcstat link_stats 0a
  Device      Link   Loss of   Loss of   Invalid    Frame In   Frame Out
           Failure      Sync    Signal       CRC       count       count
             count     count     count     count
  0a.0          22       688         0         0       85700      105514
  0a.1           0       215         0         0       88467      108223
  0a.2           0        30         0         0       88229      107859
  0a.3           0        75         0         0       85981      105647
  0a.4           1        30         0         0       86958      105326
  0a.5           0        29         0         0       86635      107651
  0a.6           0        29         0         0      130159      156811
  0a.8           0        30         0         0      193487      189231
  0a.9           0        31         0         0      201382      191864
  0a.10          0        30         0         0          34          42
  0a.11          0        32         0         0      231161      218013
  0a.12          1        43         0         0       36513       19815
  0a.13          0        30         0         0      182970      183862
  0a.14          0        29         0         0      183365      185091
  0a.16          0        30         0         0       87770      107862
  0a.17          0        30         0         0       86321      105501
  0a.18          0        31         0         0       88892      108832
  0a.19          0        30         0         0       88183      107521
  0a.20          1        31         0         0       87375      109211
  0a.21          0        30         0         0       87136      106172
  0a.22          0        29         0         0      104973      125573
  0a.24          0        30         0         0      112242      137036
  0a.25          0        30         0         0      106090      130400
  0a.26          0        30         0         0      105671      129123
  0a.27          0        30         0         0      105690      126090
  0a.28          0        29         0         0      105613      126339
  0a.29          0        29         0         0      105125      127903
  0a.30          0        29         0         0      110796      132422
  0a.32          1     65387         0         0      103633      124969
  0a.33          0       414         0         0       88639      109109
  0a.34          0       142         0         0       88372      107148
  0a.35          0       129         0         0       85495      105253
  0a.36          2       934         0         0       96899      120639
  0a.37          0        29         0         0      351265      335597
  0a.38          0        29         0         0      351008      334888
  0a.40          0        30         0         0       87951      106965
  0a.41          0        31         0         0       86146      105930
  0a.42          0        30         0         0       88140      107450
  0a.43          0        30         0         0       96994      120934
  0a.44          1        30         0         0      394056      372306
  0a.45          0        29         0         0       87067      105831
  0a.46          0        30         0         0       89177      107585
  0a.48          0        30         0         0       87592      106658
  0a.49          0        30         0         0       91692      112696
  0a.50          0        30         0         0       85998      104912
  0a.51          0        32         0         0       86694      106126
  0a.52          1       186         0         0       85942      105626
  0a.53          0        29         0         0       87278      105760
  0a.54          0        30         0         0      103682      124354
  0a.56          0        30         0         0       30517       16449
  0a.57          0        31         0         0       29266       17378
  0a.58          0        29         0         0       28906       17334
  0a.59          0        30         0         0       29234       16880
  0a.60          0        29         0         0       41727       14465
  0a.61          0        29         0         0      360425      241067
  0a.62          0        30         0         0       32684       19860
  0a.ha          0         1         1         0     6839257     6339541

Мы видим, что счетчик loss of sync показывает довольно высокие значения у трех дисков, 0a.0 (count = 688), 0a.32 (count = 65387) и 0a.36 (count = 934).
Следующим шагом мы проверим их относительное физическое расположение при помощи подкоманды device_map.

  filer> fcstat device_map 0a
  Loop Map for adapter 0a:
  Raw LIRP Frame: Port Count 57
                   17  ef  e8  e4  e2  d9  d6  d5  d4  cd  cc  cb  ca  c3  bc  ba
                   b9  b2  b1  ae  ad  a7  a6  a5  a3  98  97  90  8f  80  7c  7a
                   79  76  75  74  88  84  82  9f  9e  9d  ac  ab  aa  b6  b5  b4
                   c9  c7  c6  d3  d2  d1  e1  e0  dc
  Translated Map: Port Count 57
                  119   0   1   2   3   8   9  10  11  16  17  18  19  24  25  26
                   27  32  33  34  35  40  41  42  43  48  49  50  51  56  57  58
                   59  60  61  62  52  53  54  44  45  46  36  37  38  28  29  30
                   20  21  22  12  13  14   4   5   6
  Eurologic shelf mapping:
                  Shelf 0: –  6  5  4  3  2  1  0
                  Shelf 1: — 14 13 12 11 10  9  8
                  Shelf 2: — 22 21 20 19 18 17 16
                  Shelf 3: — 30 29 28 27 26 25 24
                  Shelf 4: — 38 37 36 35 34 33 32
                  Shelf 5: — 46 45 44 43 42 41 40
                  Shelf 6: — 54 53 52 51 50 49 48
                  Shelf 7: — 62 61 60 59 58 57 56

Глядя на translated map, мы видим, что диск номер 0 это первый диск в петле, идущий сразу после хост-адаптера. Отметьте, что порт хост-адаптера (119) будет всегда показываться первым на position map. Так как каждая перезагрузка системы вызывает реинициализацию хост-адаптера, то первый диск в петле в этом случае будет видеть "обрыв" и переподключение. По этой причине мы можем проигнорировать высокий уровень loss of sync у этого драйва, так как он, скорее всего, вызван этой причиной.

Далее мы заметим , что диск 32 находится сразу за диском 27, и что он первый диск на полке 4. Мы видим, что статистика соединения для диска 27 довольно чистая. Поэтому можно с достаточно высокой вероятностью сделать вывод, что компонент перед диском 32 и после диска 27 является источником проблем, в нашем случае это кабель между полками 3 и 4, или, возможно, сам диск 32, или же сама эта полка.

Поэтому план действий будет: заменить кабель между полками 3 и 4, если это не поможет, то заменить диск 32, и, наконец, если это не привело к решению проблемы, заменить дисковую полку 4 целиком.

Комментарии (4)

  1. приветствую.
    Роман, данные команды выполнялись на 7 версии ONTAP?

  2. Mc.Sim:
    Дело давнее, уже плохо помню, но в документации на 7.3.7 такая команда есть.
    https://library.netapp.com/ecmdocs/ECMP1113837/html/man1/na_fcstat.1.html

  3. Сори, прошлый коммент можно удалить)
    Да и этот тоже )

  4. Команды актуальны как для 7 так и для 8 )
    Я просто сейчас на D7ADM учусь, скоро напишу обзор курса и некоторое мнение у себя на страничке.
    Вот делаю лабы, интенсивно читаю Ваши статьи )

Оставить комментарий