Максимальное быстродействие дисковой подсистемы на WIndows в Proxmox

Чаще всего «слабым звеном» в работе виртуальной машины Windows на Proxmox является дисковая подсистема. Ниже собран несколько советов, которые помогут приблизиться к максимально возможным скоростям.

Здесь собраны советы только по ускорению дисковой подсистемы программными методами. Использование SSD в single или raid — отдельная тема для обсуждения.

Рекомендуется использовать устройства virtio там, где это возможно. Это обеспечит лучшую производительность. К примеру, использование VirtIO Generic Disk Controller по сравнению с эмулируемым IDE-контроллером увеличит последовательную запись в 2 раза. Использование сетевого интерфейса VirtIO увеличит производительность сетевого интерфейса в 3 раза по сравнению с эмулируемой сетевой картой Intel E1000.

Формат образа жесткого диска

Используем образы машин только в формате raw. Есть мнение, что qcow2 только немного уступает в скорости raw, но нам важна максимальная скорость. Из минусов использования RAW — нет снапшотов для резервного копирования. Если это критично, то выбираем qcow2. Нужна скорость — выбираем RAW.

Дисковый контроллер

В качестве SCSI Controller выбираем VirtIO SCSI. Далее качаем ISO-образ vitio-win.iso с последними драйверами, добавляем CD/DVD драйвер для машины. Монтируем скаченный образ. Загружаем ОС и устанавливаем необходимые драйвера. После всех манипуляций должно получиться вот так:

Создание жесткого диска

При создании Hard Disk у виртуальной машины, выбираем SCSI (последний пункт), в не VirtIO Block. VirtIO blk — это предыдущий «этап» развития. Если сервер подключен к надежному источнику бесперебойного питания, то тип кэша ставим в — write back. Если ИБП нет, то покупаем ИБП и ставим Write Back.

Если образы виртуальных машин размещены на SSD, то обязательно ставим галки Discard и SSD emulation, чтобы правильно работала технология TRIM. Эмуляция SSD не поддерживается на дисках VirtIO Block.

Включаем IO thread. Опция IO Thread работает только если в качестве контроллера установлено значение VirtIO SCSI или VirtIO SCSI single. Если этот параметр включен, Proxmox будет создавать один поток ввода-вывода для каждого контроллера хранения, а не один поток для всех операций ввода-вывода. Это позволяет повысить производительность. Особенно виден прирост скорости при использовании нескольких дисков.

Настраиваем swap в Proxmox

Чтобы добиться максимального быстродействия дисковой подсистемы у сервера Proxmox стоит отключить swap или снизить процент его использования.

Часто на сервере Proxmox можно наблюдать картину:

Это все из-за того, что Debian по умолчанию при использовании более 40% ОЗУ, начинает пользоваться swap. Для рабочей станции с небольшим количеством ОЗУ – это нормально, но для сервера, где оперативной памяти в разы больше этот параметр не совсем подходит.

У нас 2 пути:

  1. отключить swap в Proxmox вообще;
  2. ограничить процент использования swap в Proxmox.

Отключение swap в Proxmox

Отключить swap достаточно просто. Узнаем название раздела swap:

sudo swapon --show
NAME           TYPE      SIZE USED PRIO
/dev/nvme0n1p2 partition 976M 970M   -2

В нашем примере это /dev/nvme0n1p3.

Далее отключаем swap:

sudo swapoff /dev/nvme0n1p3

Эта команда временно отключит swap. Чтобы отключить его навсегда, нужно в /etc/fstab закомментировать строку с его монтированием:

sudo nano /etc/fstab
UUID=7664df9b-07ea-4578-97e4-a06f8b731e0f    /               ext4    errors=remount-ro   0 1
UUID=DB81-629E                               /boot/efi       vfat    umask=0077          0 1
#UUID=9904f3aa-afd6-4900-b798-4726a96e8033   none            swap    sw                  0 0

Ограничиваем работу swap

Узнаем при каком проценте занятости ОЗУ, наш Proxmox начинает скидывать в swap:

sudo sysctl vm.swappiness
vm.swappiness = 60

Это стандартное значение. При такой настройке от 40% занятой ОЗУ, начинается заполнение свопа.

Для сервера нужно установить это значение близким к нулю. При нуле область подкачки использоваться вообще не будет. Можно установить это значение в 10, что позволит Proxmox’у использовать до 90% оперативной памяти без задействования механизма своппинга. При загрузке ОЗУ более 90% часть данных будет переносится в swap. Можно поставить это значение и в 5 и в 1.

Чтобы установить это значение, выполняем команду:

sudo sysctl -w vm.swappiness=10
vm.swappiness = 10

Если запустить эту команду без -w, то команда примениться до первой перезагрузки. Удобно для тестов.

Если знаете еще способы увеличения скорости дисковой подсистемы, то прошу оставлять их в комментариях.

Теги:

Комментарии




В качестве аватарки используется сервис - gravatar.com



IT-событие
Совершен первый видеозвонок
Совершен первый видеозвонок