Почему Proxmox неверно отображает расход памяти Windows 7, 10, 11 — решение проблемы

Знакомая картина? Вы установили Windows 10 или 11 в виртуальную машину на Proxmox VE, выделили 8 GB RAM, а в интерфейсе Proxmox видите, что гостевая система «жрет» все 100% памяти, даже когда внутри Windows диспетчер задач показывает всего 2-3 GB использования? Или наоборот — Proxmox показывает мизерное потребление, хотя в винде уже давно не хватает оперативки?

Эта проблема мучает системных администраторов и домашних энтузиастов виртуализации уже много лет. Спойлер: дело не в багах Proxmox и не в кривизне Windows — просто они «говорят на разных языках» о памяти, и без специальных драйверов хост не понимает, что реально происходит внутри гостевой ОС.

В этой статье вы получите:

  • Понимание, почему возникает эта проблема (техническая подоплека без занудства)
  • Пошаговую инструкцию по установке QEMU Guest Agent для Windows
  • Готовые команды и скрипты для автоматизации
  • Разбор типичных ошибок и способы их устранения
  • Бонусы: как включить балунинг памяти и оптимизировать производительность VM

Потратьте 15 минут сейчас — и забудьте о головной боли с мониторингом памяти навсегда.

Почему Proxmox «не видит» реальное потребление памяти Windows

Давайте разберемся в корне проблемы, чтобы понимать, что мы лечим.

Как Proxmox пытается узнать о памяти гостевой ОС

Proxmox VE (на базе KVM/QEMU) работает на уровне гипервизора. Когда вы выделяете виртуальной машине, скажем, 8 GB RAM, хост-система резервирует эту память целиком. С точки зрения Proxmox, VM потребляет все 8 GB — потому что он их выделил и не знает, что происходит внутри.

Проблема №1: Отсутствие обратной связи. Windows внутри VM может использовать только 2 GB из 8 GB, но гипервизор об этом не в курсе. Он видит только факт: «я дал 8 GB этой машине».

Проблема №2: Memory Ballooning не работает по умолчанию. В виртуализации есть технология Balloon Driver — специальный драйвер, который «забирает» неиспользуемую память у гостевой ОС и возвращает её хосту. Но для этого нужен агент внутри Windows, который умеет с этим работать.

Почему Linux-машины обычно показывают память правильно

Если вы поднимали виртуалки с Ubuntu, Debian или CentOS, то наверняка замечали: там всё отображается корректно. Почему?

Потому что в современных Linux-дистрибутивах QEMU Guest Agent уже предустановлен или легко ставится одной командой. Агент общается с хостом по специальному каналу (virtio-serial), передает информацию о реальном использовании памяти, процессоров, дисков.

Windows же — закрытая система, и Microsoft не включает сторонние драйверы в дистрибутив. Поэтому их нужно ставить вручную.

Что такое QEMU Guest Agent и зачем он нужен

QEMU Guest Agent (qemu-ga) — это специальная программа, которая работает внутри гостевой ОС и предоставляет хосту информацию о состоянии системы:

  • Реальное потребление RAM — не выделенное, а используемое
  • IP-адреса сетевых интерфейсов — вы увидите их прямо в веб-интерфейсе Proxmox
  • Список процессов и дисков
  • Возможность корректного shutdown/reboot из Proxmox (вместо жесткого «выдернуть шнур»)
  • Синхронизацию времени
  • Поддержку снимков (snapshots) на уровне файловой системы через VSS (Volume Shadow Copy Service)

Без агента Proxmox слепой. С агентом — видит всё как на ладони.

Подготовка: что нужно перед установкой

Прежде чем приступать, убедитесь, что у вас есть:

  1. Работающая виртуальная машина Windows (7, 10, 11, Server 2012-2022 — любая)
  2. Доступ к веб-интерфейсу Proxmox или SSH к хосту Proxmox
  3. Права администратора внутри Windows VM
  4. Активное сетевое подключение в VM для скачивания драйверов (или готовый ISO с драйверами)

Проверяем версию Proxmox VE

Зайдите по SSH на ваш Proxmox-хост и выполните:

pveversion

Вы увидите что-то вроде:

pve-manager/8.1.3/b46aac3b42da5d15 (running kernel: 6.5.11-7-pve)

Это важно, потому что пути к ISO с драйверами могут отличаться в зависимости от версии. В современных Proxmox 7.x и 8.x драйверы VirtIO обычно уже есть в системе.

Включаем QEMU Guest Agent в настройках VM

Даже если вы установите агент внутри Windows, он не заработает, пока не включите его в настройках виртуальной машины.

Шаг 1: В веб-интерфейсе Proxmox выберите вашу VM.

Шаг 2: Перейдите в раздел Options (Параметры).

Шаг 3: Найдите параметр QEMU Guest Agent и включите его (Enable).

Шаг 4: Перезагрузите VM, чтобы изменения вступили в силу.

Или через командную строку на хосте:

qm set <VMID> --agent enabled=1

Замените <VMID> на ID вашей виртуальной машины (например, 100, 101 и т.д.).

Пошаговая инструкция: установка QEMU Guest Agent в Windows

Теперь переходим к главному — установке агента внутри Windows. Есть два основных способа: через установщик VirtIO и вручную. Рассмотрим оба.

Способ 1: Установка через VirtIO-драйверы (рекомендуется)

Самый простой и правильный путь — использовать официальный ISO с драйверами VirtIO от проекта Fedora (да-да, они же используются в Proxmox).

Шаг 1: Скачиваем ISO с драйверами VirtIO

Зайдите на хост Proxmox по SSH и скачайте актуальную версию драйверов:

cd /var/lib/vz/template/iso
wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

Или вы можете скачать драйверы вручную с сайта github.com/virtio-win и загрузить на хост через веб-интерфейс.

Шаг 2: Подключаем ISO к виртуальной машине

В веб-интерфейсе Proxmox:

  1. Выберите вашу VM
  2. Перейдите в Hardware (Оборудование)
  3. Найдите CD/DVD Drive
  4. Выберите virtio-win.iso из списка
  5. Запустите VM

Или через CLI:

qm set &amp;lt;VMID&amp;gt; --ide2 local:iso/virtio-win.iso,media=cdrom

Шаг 3: Запускаем установку драйверов в Windows

Зайдите в Windows VM, откройте Этот компьютер (This PC), найдите подключенный CD-ROM с драйверами.

Запустите файл:

virtio-win-guest-tools.exe

Это установщик, который автоматически поставит:

  • VirtIO драйверы для сети, дисков, балунинга
  • QEMU Guest Agent
  • Spice Agent (опционально, для улучшенной работы с консолью)

Процесс установки стандартный: Next → Next → Install → Finish. Важно: После установки обязательно перезагрузите Windows.

Шаг 4: Проверяем, что сервис запущен

После перезагрузки откройте Диспетчер задач → Службы (Services) или нажмите Win + R, введите:

services.msc

Найдите службу QEMU Guest Agent. Она должна быть в статусе Running (Работает) и тип запуска Automatic (Автоматически).

Если служба не запущена, запустите её вручную:

net start qemu-ga

Способ 2: Установка вручную (для продвинутых)

Если по какой-то причине автоустановщик не сработал, можно поставить агент вручную.

Извлекаем MSI-пакет из ISO

Откройте ISO virtio-win.iso внутри Windows, перейдите в папку:

guest-agent\

Там вы найдете файлы:

  • qemu-ga-x86_64.msi — для 64-битной Windows
  • qemu-ga-x86.msi — для 32-битной

Скопируйте нужный файл на диск C:\ и запустите:

msiexec /i C:\qemu-ga-x86_64.msi /qn /l*v C:\qemu-ga-install.log

Параметры:

  • /i — установка
  • /qn — тихий режим (без GUI)
  • /l*v — лог установки (полезно для отладки)

Запускаем сервис

sc start QEMU-GA

Делаем автозапуск

sc config QEMU-GA start= auto

Обратите внимание на пробел после start= — это не опечатка, так требует синтаксис команды sc.

Проверяем результат: правильно ли Proxmox видит память

Теперь самое интересное — проверим, заработало ли всё как надо.

В веб-интерфейсе Proxmox

Зайдите в веб-интерфейс Proxmox, выберите вашу VM и посмотрите на график использования памяти на вкладке Summary.

До установки агента: вы видели, что VM «использует» 100% от выделенной памяти (например, 8.00 GB из 8.00 GB).

После установки агента: вы увидите реальное потребление, например, 2.34 GB из 8.00 GB.

Через командную строку

На хосте Proxmox выполните:

qm guest cmd &amp;lt;VMID&amp;gt; get-memory-stats

Вы должны увидеть JSON-вывод с детальной статистикой памяти:

{
   &amp;quot;actual&amp;quot; : 8589934592,
   &amp;quot;available&amp;quot; : 8371216384,
   &amp;quot;free&amp;quot; : 5234567890,
   &amp;quot;total&amp;quot; : 8589934592,
   &amp;quot;unused&amp;quot; : 6234567890,
   &amp;quot;usable&amp;quot; : 5987654321
}

Если видите такой вывод — поздравляю, агент работает!

Проверяем IP-адреса

Теперь Proxmox также видит IP-адреса VM:

qm guest cmd &amp;lt;VMID&amp;gt; network-get-interfaces

Вывод покажет все сетевые интерфейсы с их IP, MAC-адресами и статусами.

Типичные ошибки и как их устранить

Даже следуя инструкции, можно наткнуться на подводные камни. Разберем самые частые.

Ошибка: «QEMU Guest Agent is not running»

Симптомы: В Proxmox видите предупреждение «QEMU guest agent is not running» или «agent timeout».

Причины и решения:

  1. Служба не запущена внутри Windows. Зайдите в VM, откройте services.msc, найдите QEMU Guest Agent и запустите вручную.
  2. Не включен агент в настройках VM. В Proxmox: VM → Options → QEMU Guest Agent → Enable.
  3. Отсутствует канал связи (virtio-serial). Убедитесь, что VM использует VirtIO-устройства. Проверьте раздел Hardware — должен быть активен VirtIO Serial.

Добавить serial-устройство можно командой:

qm set &amp;lt;VMID&amp;gt; --serial0 socket

Ошибка: Агент установлен, но память все равно показывает 100%

Причина: Скорее всего, вы не перезагрузили VM после установки или не включили агент в настройках.

Решение:

  1. Выключите VM полностью (не reboot, а shutdown)
  2. В Proxmox убедитесь, что Options → QEMU Guest Agent = Enabled
  3. Запустите VM заново
  4. Подождите 1-2 минуты, пока агент не установит связь

Ошибка: После установки драйверов Windows не загружается / синий экран

Причина: Конфликт драйверов или неправильная настройка дискового контроллера.

Решение:

  1. Загрузитесь в Safe Mode (Безопасный режим)
  2. Удалите драйверы VirtIO через Device Manager
  3. Убедитесь, что в настройках VM диск использует правильный контроллер (VirtIO SCSI или SATA, а не IDE)
  4. Переустановите драйверы

Профилактика: Перед установкой VirtIO-драйверов сделайте snapshot VM в Proxmox, чтобы можно было откатиться.

qm snapshot &amp;lt;VMID&amp;gt; pre-virtio --description &amp;quot;Before VirtIO driver installation&amp;quot;

Ошибка: IP-адреса не отображаются в Proxmox

Причина: Агент работает, но не передает сетевую информацию (часто из-за firewall внутри Windows или отсутствия VirtIO-драйверов сети).

Решение:

  1. Убедитесь, что в Device Manager сетевой адаптер называется «Red Hat VirtIO Ethernet Adapter»
  2. Проверьте, что Windows Firewall не блокирует qemu-ga.exe
  3. Перезапустите службу агента: net stop qemu-ga && net start qemu-ga

Настройка Memory Ballooning для экономии RAM на хосте

Теперь, когда агент работает, можно включить балунинг памяти — технологию динамического управления RAM.

Что такое Ballooning простыми словами

Представьте: у вас на хосте 64 GB RAM, и вы подняли 10 виртуальных машин, каждой выделили по 8 GB. По-простому считаем: 10 × 8 = 80 GB — не хватает памяти!

Но на деле каждая VM использует, скажем, только 3 GB из 8 GB. Балунинг позволяет гипервизору «забрать» неиспользуемую память обратно и отдать другим VM.

Как это работает:

  1. Драйвер Balloon внутри Windows «надувает воздушный шар» — выделяет память, которую не использует
  2. Эта память возвращается хосту
  3. Если Windows нужно больше памяти, «шар сдувается», и хост возвращает RAM обратно

Включаем Ballooning в Proxmox

В веб-интерфейсе:

  1. VM → Hardware → Memory
  2. Установите Minimum memory (балунинг), например, 2048 MB (2 GB)
  3. Maximum — то, что вы изначально выделили, например, 8192 MB

Теперь VM может использовать от 2 до 8 GB в зависимости от нагрузки.

Через CLI:

qm set &amp;lt;VMID&amp;gt; --balloon 2048

Важно: Балунинг работает только при установленном QEMU Guest Agent и VirtIO Balloon Driver!

Проверяем балунинг

На хосте:

qm monitor &amp;lt;VMID&amp;gt;
info balloon

Вы увидите текущий размер «шара» и сколько памяти реально используется.

Бонус: Оптимизация производительности Windows VM в Proxmox

Раз уж мы здесь, давайте выжмем максимум из виртуалки.

Включаем CPU host-passthrough

По умолчанию Proxmox эмулирует универсальный процессор. Для лучшей производительности передайте гостю реальные возможности вашего CPU:

qm set &amp;lt;VMID&amp;gt; --cpu host

Прирост производительности: 10-20% в зависимости от задач.

Используем VirtIO SCSI вместо IDE

Если ваш диск на контроллере IDE или SATA — переключите на VirtIO SCSI. Это существенно ускорит дисковые операции.

Осторожно: Смена контроллера требует переустановки Windows или миграции через клонирование диска. Лучше делать это на этапе создания VM.

Отключаем ненужные устройства

Tablet, ненужные USB-контроллеры, дискета (серьезно, она там есть по умолчанию) — всё это жрет ресурсы.

qm set &amp;lt;VMID&amp;gt; --tablet 0

Настраиваем кэш дисков

Для SSD-хранилищ используйте:

qm set &amp;lt;VMID&amp;gt; --scsi0 local-lvm:vm-&amp;lt;VMID&amp;gt;-disk-0,cache=writeback,discard=on
  • cache=writeback — ускоряет запись
  • discard=on — поддержка TRIM для SSD

Автоматизация: скрипт для массовой установки агента

Если у вас десятки Windows VM, установка агента вручную — ад. Автоматизируем процесс.

PowerShell-скрипт для установки QEMU Guest Agent

Сохраните этот скрипт как install-qemu-agent.ps1 и запустите с правами администратора внутри каждой VM:

# PowerShell <a href="https://it-apteka.com/ustanovka-n8n-v-lxc-kontejner-proxmox-polnaja-instrukcija-ot-a-do-ja/"  data-wpil-monitor-id="352">скрипт для автоматической установки</a> QEMU Guest Agent
# Требует подключенного ISO virtio-win.iso

$driveLetter = (Get-Volume | Where-Object {$_.FileSystemLabel -eq &amp;quot;virtio-win&amp;quot;}).DriveLetter

if (-not $driveLetter) {
    Write-Host &amp;quot;Ошибка: ISO virtio-win.iso не подключен!&amp;quot; -ForegroundColor Red
    exit 1
}

$installerPath = &amp;quot;${driveLetter}:\guest-agent\qemu-ga-x86_64.msi&amp;quot;

if (Test-Path $installerPath) {
    Write-Host &amp;quot;Установка QEMU Guest Agent...&amp;quot; -ForegroundColor Green
    Start-Process msiexec.exe -ArgumentList &amp;quot;/i `&amp;quot;$installerPath`&amp;quot; /qn /l*v C:\qemu-ga-install.log&amp;quot; -Wait
    Write-Host &amp;quot;Установка завершена. Проверяем службу...&amp;quot; -ForegroundColor Green
    
    Start-Sleep -Seconds 5
    
    $service = Get-Service -Name &amp;quot;QEMU-GA&amp;quot; -ErrorAction SilentlyContinue
    
    if ($service -and $service.Status -eq &amp;quot;Running&amp;quot;) {
        Write-Host &amp;quot;Служба QEMU Guest Agent запущена успешно!&amp;quot; -ForegroundColor Green
    } else {
        Write-Host &amp;quot;Запускаем службу вручную...&amp;quot; -ForegroundColor Yellow
        Start-Service -Name &amp;quot;QEMU-GA&amp;quot;
        Write-Host &amp;quot;Служба запущена.&amp;quot; -ForegroundColor Green
    }
    
    Write-Host &amp;quot;Перезагрузите систему для применения всех изменений.&amp;quot; -ForegroundColor Cyan
} else {
    Write-Host &amp;quot;Ошибка: Установщик не найден по пути $installerPath&amp;quot; -ForegroundColor Red
    exit 1
}

Ansible-плейбук для массового развертывания

Для тех, кто управляет инфраструктурой через Ansible:

---
- name: Установка QEMU Guest Agent на Windows VM
  hosts: windows_vms
  tasks:
    - name: Копируем MSI-пакет на целевую машину
      win_copy:
        src: /path/to/qemu-ga-x86_64.msi
        dest: C:\temp\qemu-ga-x86_64.msi

    - name: Устанавливаем QEMU Guest Agent
      win_package:
        path: C:\temp\qemu-ga-x86_64.msi
        state: present
        arguments: /qn

    - name: Убеждаемся, что служба запущена
      win_service:
        name: QEMU-GA
        state: started
        start_mode: auto

    - name: Перезагружаем систему
      win_reboot:
        reboot_timeout: 600

Часто задаваемые вопросы (FAQ)

Работает ли агент на Windows Server?

Да. QEMU Guest Agent полностью совместим с Windows Server 2012, 2016, 2019, 2022. Процесс установки идентичен.

Можно ли использовать агент в других гипервизорах?

Частично. QEMU Guest Agent разработан для KVM/QEMU, но некоторые функции могут работать в oVirt, OpenStack. В VMware и Hyper-V используются собственные агенты (VMware Tools, Integration Services).

Влияет ли агент на производительность?

Нет. Потребление ресурсов минимально: около 10-20 MB RAM и практически нулевая нагрузка на CPU.

Нужно ли обновлять агент?

Рекомендуется. При обновлении Proxmox VE желательно обновлять и VirtIO-драйверы вместе с агентом. Обычно достаточно раз в год проверять актуальность версии.

Агент установлен, но snapshot не работает

Причина: Для работы snapshot с консистентностью данных (quiesce) нужен не только агент, но и корректная настройка VSS в Windows.

Решение: Убедитесь, что служба Volume Shadow Copy (VSS) запущена в Windows. Проверьте командой:

vssadmin list providers

Должны быть активны Microsoft Software Shadow Copy Provider и QEMU Guest Agent VSS Provider.

Профилактика и лучшие практики

Регулярно проверяйте статус агента

Добавьте в свой мониторинг (Zabbix, Prometheus, Nagios) проверку статуса QEMU Guest Agent на всех Windows VM.

Пример проверки через Zabbix:

qm agent &amp;lt;VMID&amp;gt; ping

Если возвращает OK — агент работает. Если timeout или ошибка — пора разбираться.

Делайте snapshot перед обновлением драйверов

Всегда создавайте точку восстановления перед апдейтом VirtIO-драйверов:

qm snapshot &amp;lt;VMID&amp;gt; before-driver-update --description &amp;quot;Before updating VirtIO drivers&amp;quot;

Ведите документацию

Записывайте, на каких VM установлен агент, какие версии драйверов используются. Это сэкономит часы при диагностике проблем.

Используйте шаблоны VM

Создайте шаблон Windows VM с уже установленным QEMU Guest Agent и VirtIO-драйверами. При создании новых виртуалок клонируйте этот шаблон — и агент будет работать из коробки.

qm template &amp;lt;VMID&amp;gt;

Заключение: Прогноз выздоровления

Поздравляю! Теперь ваш Proxmox VE видит реальное потребление памяти Windows-виртуалок, а не просто «выделенный объем». Вы получили:

  • Точный мониторинг памяти — никакого больше 100% использования на пустой системе
  • Возможность балунинга — экономия RAM на хосте и гибкое распределение ресурсов
  • IP-адреса в интерфейсе — не нужно логиниться в VM, чтобы узнать IP
  • Корректный shutdown/reboot — VM теперь завершается корректно, как физический сервер
  • Поддержку snapshot с quiesce — консистентные снимки без риска повреждения данных

Время на лечение: 15-30 минут на одну VM (включая скачивание драйверов и перезагрузку).

Побочные эффекты: Отсутствуют. Только позитив.

Профилактика: Регулярные обновления драйверов раз в 6-12 месяцев.

Что дальше?

Если эта статья была полезна:

  • Подпишитесь на наш Telegram-канал — там мы делимся свежими рецептами по Linux, виртуализации, DevOps и SRE
  • Пишите в комментариях, с какими еще проблемами в Proxmox вы сталкивались — возможно, следующая статья будет именно о вашей боли
  • Сохраните статью в закладки — эта инструкция пригодится вам не раз

P.S. Если вы только начинаете работу с Proxmox или ищете качественный хостинг для виртуализации, у нас есть отдельная статья с разбором лучших провайдеров под эти задачи. Ссылка будет в комментариях — не пропустите!

Здоровья вашим серверам и стабильности вашим VM! 🖥️⚡

over_dude
Author: over_dude

Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх