Быстродействие дисковой подсистемы на 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 или снизить процент его использования.
Это все из-за того, что Debian по умолчанию при использовании более 40% ОЗУ, начинает пользоваться swap. Для рабочей станции с небольшим количеством ОЗУ – это нормально, но для сервера, где оперативной памяти в разы больше этот параметр не совсем подходит.
У нас 2 пути:
- отключить swap в Proxmox вообще;
- ограничить процент использования 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
, то команда примениться до первой перезагрузки. Удобно для тестов.
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.