LINUX.ORG.RU
ФорумAdmin

Валятся виртуалки при высоком io delay

 , ,


0

6

Всем доброго времени суток. Имеется сервер, на который установлен proxmox 7.4. Дисковая подсистема представляет из себя 4 жестких диска в zfs raid 10.

Сам сервер это:
Xeon E3-1220 v5 @ 3.00GHz
64GB RAM ECC REG
Диски:
1 ST4000VX007-2DT166 5900rpm 3.5" (да, сервер собирался из говна и палок)
3 HGST HUS726040ALE614 7200rpm 3.5"

Запущены 2 виртуалки с виндой, которым выделено 4 и 8 гб оперативной памяти.
Собственно проблема в следующем - при копировании файлов по самбе на одну из виртуалок (например 100 ГБ) io delay поднимается до 70-90%. От чего виртуалки начинают зависать наглухо, веб интерфейс и ssh на хосте тоже работают очень медленно. В итоге зависшие виртуалки показывают bsod и уходят в перезагрузку.

Пробовал играться с arc size, обновлять драйвера virtio, обновлять сам proxmox. Единственное что немного улучшило дело - это установка лимита пропускной способности виртуальных хардов виртуалок и отключение sync для томов ZFS. Проблема особо не гуглится на форумах проксмокса. Что я делаю не так?

★★★★★

Последнее исправление: bsdfun (всего исправлений: 1)
Ответ на: комментарий от Clockwork

Тут ничего интересного

~# zpool status
  pool: rpool
 state: ONLINE
  scan: scrub repaired 0B in 04:11:25 with 0 errors on Sun Jun 11 04:35:27 2023
config:

        NAME                                         STATE     READ WRITE CKSUM
        rpool                                        ONLINE       0     0     0
          mirror-0                                   ONLINE       0     0     0
            ata-ST4000VX007-2DT166_ZGY987MX-part3    ONLINE       0     0     0
            ata-HGST_HUS726040ALE614_K4HMZVWB-part3  ONLINE       0     0     0
          mirror-1                                   ONLINE       0     0     0
            ata-HGST_HUS726040ALE614_K4HKT3BB-part3  ONLINE       0     0     0
            ata-HGST_HUS726040ALE614_K4HMZV8B-part3  ONLINE       0     0     0

errors: No known data errors

bsdfun ★★★★★
() автор топика
Последнее исправление: bsdfun (всего исправлений: 1)

Тут ничего интересного

Тогда не знаю, я думал там дичь сделана.

Единственное что немного улучшило дело - это установка лимита

A cколько IOPS и мб/с выдаёт сам raid 10 в нагрузочном тесте и какие лимиты стоят?

например 100 ГБ

При копировании рандомом что-ли? Или это размер виртуалки?

Clockwork ★★★★★
()

Просто 100GB это типичный размер плотов…

io delay поднимается до 70-90%

Скорее всего винда воспринимает это как отказ диска и выдает BSOD.

Значит нужно сделать так, чтобы io delay не поднимался до 70-90%.

Если фс это сама не обеспечивает, то нужно принудительно ограничивать пропускную способность. Можно ограничить пропускную способность виртуальных дисков, можно – сетевого интерфейса. Я бы ограничил скорость сетевого интерфейса или протокола самбы.

Как промежуточный вариант, можешь еще попробовать поменять scheduler BFQ на Deadline в хосте.

soomrack ★★★★★
()

Единственное что немного улучшило дело - это установка лимита пропускной способности виртуальных хардов виртуалок

ИМХО, это и есть единственный способ. Если storage не тянет, нужно ограничивать потребителей

Та же vsphere при росте задержек начинает уменьшать глубину очереди диска

Если запросы на стороне гостя ждут, пока освободится место в (их) очереди, это одно. Подумаешь, диск сильно нагружен.

Если с точки зрения гостя запросы ушли, а на самом деле ждут в очереди хоста пока массив прочухается, это другое. С точки зрения гостя это диск отвалился наглухо

router ★★★★★
()
Ответ на: комментарий от Clockwork

При копировании рандомом что-ли? Или это размер виртуалки?

При копировании через smb на шару виртуалки.

A cколько IOPS и мб/с выдаёт сам raid 10 в нагрузочном тесте и какие лимиты стоят?

Под тестом имеете ввиду pveperf?

bsdfun ★★★★★
() автор топика
Ответ на: комментарий от pekmop1024

А если исключить экзотику (ZFS) и запилить все по классике на mdraid+lvm?

В настоящий момент такой возможности нет - некуда смигрировать VM. Но скорее всего будет работать нормально.

bsdfun ★★★★★
() автор топика
Ответ на: комментарий от bsdfun

При копировании через smb на шару виртуалки.

Имеется ввиду файл 100GB копируется или виртуалка такого объёма. Если файл, то это рандомная скорость и удивляться тут нечему.

Под тестом имеете ввиду pveperf?

Можно с помощью fio прогнать. И что там с лимитами?

И еще скажи какой размер на ARC выделен?

Clockwork ★★★★★
()
Ответ на: комментарий от Clockwork

И еще скажи какой размер на ARC выделен?

В данный момент 20GB

Имеется ввиду файл 100GB копируется или виртуалка такого объёма. Если файл, то это рандомная скорость и удивляться тут нечему.

Набор файлов примерно от 2 до 30 GB, в сумме на 100 гигов. На более мелких объемах io delay редко доходит до 90+

pveperf:

~# pveperf
CPU BOGOMIPS:      24000.00
REGEX/SECOND:      3447397
HD SIZE:           5243.19 GB (rpool/ROOT/pve-1)
FSYNCS/SECOND:     18704.23

bsdfun ★★★★★
() автор топика
Ответ на: комментарий от VKraft

sysstat/sar есть на хосте? глянь статистику для дисков по «await» колонке до и во время операций копирования.

В простое это выглядит так.
При копировании вот

диски целые?

Смарт нормальный. Более глубоко не ковырял их.

bsdfun ★★★★★
() автор топика
Ответ на: комментарий от bsdfun

ботлнек явно в ZFS, хотя один винт почти в 2 раза выше показывает лэйтенси чем остальные. я-бы не разбирался ни с проксмоксом ни с zfs а накатил-бы клон rhel, винты кинул-бы в пул LVM (тот что 5900rpm по-возможности заменил на такой как и остальные) и на них волум 10 рейд, поверх волума xfs. qemu-kvm, libvirt, virt-manager без извращений

VKraft ★★
()
Последнее исправление: VKraft (всего исправлений: 1)
Ответ на: комментарий от einhander

https://itslinuxfoss.com/ext4-vs-btrfs-which-filesystem-use/#:~:text=The%20major%20difference%20between%20ext4,greater%20file%20or%20partition%20sizes.

хотя например под субд можно затюнить ext4 и получить некоторый профит по сравнению с xfs


ОК. Оракл-линукс или ЦентОС_стрим. Оно стабильнее проксмокса. Последний вобще зашквар

VKraft ★★
()
Ответ на: комментарий от VKraft

Moreover, the ext4 is more beneficial when the I/O workload is greater and if the CPU resources are less

Это же как раз случай ТСа.

ЦентОС_стрим или Оракл-линукс. Последний вобще зашквар.

Извини, но я поправил. Стабильность стима ну такая. Совместимости с rhel там нет, софт который требует rhel или центось на это ругается.

einhander ★★★★★
()
Ответ на: комментарий от einhander

Это же как раз случай ТСа.

нет. там большие файлы и параллельная запись

насчёт совместимости стрима.. ну такое. он сам по себе довольно качественный, но лучше оракл тогда если надо чтоб совсем уж а-ля рхэл. но.. я непопулярно установил бы на это бесплатный Hyper-V сервер если на то пошло, из винтов сделал-бы на storagespaces аналог 10-го рейда.

VKraft ★★
()
Последнее исправление: VKraft (всего исправлений: 1)
Ответ на: комментарий от bsdfun

В данный момент 20GB

У тебя диски не успевают писать, всё залетает в ARC, ты ловишь 12309

Тебе нужно либо ограничивать i/o в виртуалках, что ты уже сделал, либо ограничивать скорость сети, чтобы файл не писался слишком быстро. ARC просто высвобождаться не успевает.

Ну и если данные хорошо сжимаются, можно включить сжатие.

Clockwork ★★★★★
()
Последнее исправление: Clockwork (всего исправлений: 1)
Ответ на: комментарий от bsdfun

А если исключить экзотику (ZFS) и запилить все по классике на mdraid+lvm?

В настоящий момент такой возможности нет - некуда смигрировать VM. Но скорее всего будет работать нормально.

Проксмокс позволяет ограничить максимальную скорость записи на диски в виртуалке. Вот лучше её ограничить до каких-нибудь 50-100 мегабайт в секунду (точнее скзаать не могу), тогда всё работать будет. И ZFS тут ну вообще не при делах. На mdadm будет то же самое, только, может быть, виртуалки с виндой будут не отваливаться, а адски тормозить.

Clockwork ★★★★★
()

Привет! Как пользователь proxmox с приличным стажем, в продуктиве, скажу так: может такое быть. И при бекапе тоже могут виснуть виртуалки. Ограничивай скорость, iops - прямо из gui в свойсвах виртуалки, и смотри что будет. Ещё, бывают реально большие проблемы с virtio драйверами. Так же, на 5версии проксмокс, в zfs был баг, когда подключены l2arc кеши, windows улетала в BSOD при большой нагрузке. - Отключение l2arc - вполне помогло. Живу до сих пор с такой конфигурацией.

P.S. инттересные вещи говорят в треде, подпишусь :)

DALDON ★★★★★
()