Определение переполненных дисков в CentOS 8

Определение переполненных дисков в CentOS 8

Краткая справка: у меня есть 10-гигабитный файловый сервер с шестью SSD-дисками данных под управлением CentOS 8, и я изо всех сил пытаюсь заполнить линию. Все в порядке, если я ограничиваю пропускную способность до 5 или 6 Гбит/с. Вот несколько диаграмм из Cockpit, показывающих, что все хорошо (~850 одновременных пользователей, ограничение 5 Гбит/с).

Текст

К сожалению, когда я повышаю, пропускная способность колеблется гигантскими волнами. Обычно это признак переполненного диска (или карты SATA), и на Windows-боксах я решил это так:

  1. Откройте «Монитор ресурсов».
  2. Выберите вкладку «Диск».
  3. Следите за графиками «Длина очереди». Любой диск/рейд с длиной очереди стабильно выше 1 является узким местом. Обновите его или уменьшите нагрузку.

Теперь я вижу эти симптомы на сервере CentOS 8, но как мне определить виновника? Мои SATA SSD разделены на три программных массива RAID0, вот так:

    # cat /proc/mdstat
    Personalities : [raid0]
    md2 : active raid0 sdg[1] sdf[0]
          7813772288 blocks super 1.2 512k chunks
    
    md0 : active raid0 sdb[0] sdc[1]
          3906764800 blocks super 1.2 512k chunks
    
    md1 : active raid0 sdd[0] sde[1]
          4000532480 blocks super 1.2 512k chunks`

iostatколеблется в широких пределах и обычно имеет высокий %iowait. Если я правильно понял, это указывает на то, что md0 (sdb+sdc) имеет наибольшую нагрузку. Но является ли это узким местом? В конце концов, %util далеко не 100.

# iostat -xm 5
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           7.85    0.00   35.18   50.02    0.00    6.96

Device            r/s     w/s     rMB/s     wMB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda            106.20   57.20      0.89      0.22     3.20     0.00   2.93   0.00  136.87  216.02  26.82     8.56     3.99   0.92  14.96
sde            551.20    0.00    153.80      0.00    65.80     0.00  10.66   0.00    6.75    0.00   3.44   285.73     0.00   0.64  35.52
sdd            571.60    0.00    153.77      0.00    45.80     0.00   7.42   0.00    6.45    0.00   3.40   275.48     0.00   0.63  35.98
sdc            486.60    0.00    208.93      0.00   305.40     0.00  38.56   0.00   20.60    0.00   9.78   439.67     0.00   1.01  49.10
sdb            518.60    0.00    214.49      0.00   291.60     0.00  35.99   0.00   81.25    0.00  41.88   423.52     0.00   0.92  47.88
sdf            567.40    0.00    178.34      0.00   133.60     0.00  19.06   0.00   17.55    0.00   9.68   321.86     0.00   0.28  16.08
sdg            572.00    0.00    178.55      0.00   133.20     0.00  18.89   0.00   17.63    0.00   9.81   319.64     0.00   0.28  16.00
dm-0             5.80    0.80      0.42      0.00     0.00     0.00   0.00   0.00  519.90  844.75   3.69    74.62     4.00   1.21   0.80
dm-1           103.20   61.40      0.40      0.24     0.00     0.00   0.00   0.00  112.66  359.15  33.68     4.00     4.00   0.96  15.86
md1           1235.20    0.00    438.93      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   363.88     0.00   0.00   0.00
md0           1652.60    0.00    603.88      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   374.18     0.00   0.00   0.00
md2           1422.60    0.00    530.31      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   381.72     0.00   0.00   0.00
dm-2             0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
loop0            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           5.14    0.00   22.00   72.86    0.00    0.00

Device            r/s     w/s     rMB/s     wMB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda             34.00   37.40      0.15      0.15     5.20     0.00  13.27   0.00  934.56  871.59  64.34     4.61     4.15   0.94   6.74
sde            130.80    0.00     36.14      0.00    15.00     0.00  10.29   0.00    5.31    0.00   0.63   282.97     0.00   0.66   8.64
sdd            132.20    0.00     36.35      0.00    14.40     0.00   9.82   0.00    5.15    0.00   0.61   281.57     0.00   0.65   8.62
sdc            271.00    0.00    118.27      0.00   176.80     0.00  39.48   0.00    9.52    0.00   2.44   446.91     0.00   1.01  27.44
sdb            321.20    0.00    116.97      0.00   143.80     0.00  30.92   0.00   12.91    0.00   3.99   372.90     0.00   0.91  29.18
sdf            340.20    0.00    103.83      0.00    71.80     0.00  17.43   0.00   12.17    0.00   3.97   312.54     0.00   0.29   9.90
sdg            349.20    0.00    104.06      0.00    66.60     0.00  16.02   0.00   11.77    0.00   3.94   305.14     0.00   0.29  10.04
dm-0             0.00    0.80      0.00      0.01     0.00     0.00   0.00   0.00    0.00 1661.50   1.71     0.00    12.00   1.25   0.10
dm-1            38.80   42.20      0.15      0.16     0.00     0.00   0.00   0.00  936.60 2801.86 154.58     4.00     4.00   1.10   8.88
md1            292.60    0.00    111.79      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   391.22     0.00   0.00   0.00
md0            951.80    0.00    382.39      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   411.40     0.00   0.00   0.00
md2            844.80    0.00    333.06      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00   403.71     0.00   0.00   0.00
dm-2             0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00
loop0            0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00

Между тем производительность сервера ужасна. Каждое нажатие клавиши через SSH регистрируется за секунды, рабочий стол GNOME практически не отвечает, а пользователи сообщают о разрывах соединений. Я бы показал диаграммы Cockpit, но время входа истекает. Ограничение пропускной способности работает прекрасно, но я хотел бы разблокировать остальное. Так как же мне определить узкое место(а)? Буду рад любым предложениям!

решение1

Виновником оказался sda, магнитный диск CentOS. Большинство улик указывали на него. Как кто-то прокомментировал (и, похоже, удалил), время ожидания на sda, dm-0 и dm-1 выглядит подозрительно. Конечно, dm-0 (корень) и dm-1 (подкачка) также находятся на sda. Наблюдая за работой iotop, узкое место, похоже, было вызвано быстрой вспышкой активности Gnome, за которой последовал kswapd (подкачка), засоряющий работу. Закрытие Gnome с помощью "init 3" дало определенное улучшение, но нет никакого способа, чтобы такая мощная машина была парализована бездействующим экраном входа в систему. SMART также сообщает о 8000+ поврежденных секторах на sda. Я предполагаю, что многие из них находятся в пространстве подкачки, из-за чего подкачки парализуют систему.

Одна мысль была переместить swap на другой диск, но замена sda показалась мне более практичной. Я начал клонирование диска с помощью CloneZilla, но он оценивал это в 3 часа, а новая установка была бы быстрее, поэтому я пошел на это. Теперь сервер работает отлично! Вот снимок экрана, показывающий более 1300 файлов, транслируемых одновременно на скорости 8 Гбит/с, хорошо и стабильно. Проблема решена!

введите описание изображения здесь

Связанный контент