Улучшение производительности виртуальных машин в Proxmox на дешёвых жёстких дисках без использования RAID массива
В некоторых случаях после начала использования Proxmox на жёстком диске может возникнуть проблема, что уже при чтении или записи на скорости 1 МБ/С виртуальный диск улетает в 100% времени ожидания, соответственно производительность этой и других ВМ неплохо проседает.
В этой статье я поделюсь своим решением данной проблемы. Подробных инструкций что и как не будет, разве что если вы сами этого не захотите. Если захотите — дайте знать и напишу ещё одну статью об этом.
Отказ от использования LVM и QCOW2 для виртуальных дисков.
QCOW2 не особо то и любит некоторые виды операций чтения/записи, а создать виртуальный диск формата, отличного от QCOW2 на диске с LVM — нельзя, поэтому для виртуальных дисков на дешёвых HDD стоит использовать RAW или VMDK, благо Proxmox это позволяет.
UPD 17.07.23: насчёт qcow2 прочтите внизу страницы
Переходите в Disks -> Directory и выбираете диск, который будет отформатирован и использоваться как директория.
После чего на диске, который вы отформатировали можно создавать виртуальные диски в любых форматах.
Использование кэша виртуальных дисков.
По умолчанию кэш виртуальных дисков в Proxmox не используется, но можно его включить.
Ниже список режимов:
- Нет кеша — баланс производительности и безопасности (лучше записывает)
- Writethrough — баланс производительности и безопасности (лучше читает)
- Writeback — быстрый, но возможна потеря данных при внезапном отключении электропитания, в зависимости от оборудования.
- Directsync — максимально безопасный, но максимально медленный
- Небезопасный (так же известен как Writeback (unsafe)) — максимально быстрый, но и максимально небезопасный. Не рекомендуется использовать в продакшене.
Режим кэша стоит выбирать в зависимости от того, для чего используется ВМ. Не рекомендую использовать Writeback на тех виртуальных дисках, на которых важна целостность данных. Хотя за то время, как я его использую он мне данные не побил, но тем не менее, стоит приобрести себе ИБП, чтобы данные остались в целостности и сохранности.
Для ускорения работы терминального сервера на Windows server 2016 я использую режим Writeback и со своей работой он справляется очень хорошо, особенно когда ОС в виртуальной машине активно использует подкачку. Но стоит понимать, что за скорость оплата надёжностью, поэтому если вам нужен Writeback, то лучше купите ИБП, после чего со спокойной душой можете использовать данный режим.
Перенос ВМ на разные жёсткие диски.
Не стоит держать больше 2-4 виртуальных машин на одном жёстком диске. Лучше перенести их по разным дискам, чтобы вся нагрузка от виртуальных машин + подкачка Proxmox не шла на один жёсткий диск, а на несколько разных, пусть даже это будут ноутбучные 5200 об/мин. Практика показывает что даже на таком HDD виртуальная машина работает приемлемо, особенно с кэшем Writeback.
Надеюсь данной небольшой статьёй я решил чью-нибудь проблему, а поэтому если вам не сложно, можете мне задонатить, буду благодарен)
UPD 17.07.2023: Всё что я писал про qcow2 — бред и я был введён в заблуждение. Тесты показали что производительность qcow2 вполне хорошая и местами даже лучше. Хотя всё же рекомендую вам провести свои тесты и посмотреть что конкретно у вас будет работать лучше.
UPD 03.01.24: Оказывается, я не был введён в заблуждение, потому что не только некоторые люди об этом пишут, но и официальное вики Proxmox. см. https://pve.proxmox.com/wiki/Performance_Tweaks#Use_raw_disk_image_and_not_qcow2, так что отказ от qcow2 на дешевых дисках действительно улучшает производительность.
DA: https://www.donationalerts.com/r/cyanred