AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1043410
Accepted
Krackout
Krackout
Asked: 2020-11-22 02:27:28 +0800 CST2020-11-22 02:27:28 +0800 CST 2020-11-22 02:27:28 +0800 CST

Hipervisor KVM - VM Windows de 32 bits, RAM até 2 GB utilizável

  • 772

Eu tenho um hipervisor Debian 10 KVM, sem libvirt ou outra ferramenta para administrá-lo, usando scripts QEMU. Preciso de uma VM do Windows de 32 bits para um aplicativo herdado, mas em um sistema operacional compatível (não XP), Windows 8.1 ou 10 de 32 bits. Tanto o Windows 8.1 quanto o 10 apresentam uma mensagem «2 GB utilizáveis» nas propriedades do sistema quando 3 GB de RAM são atribuídos (o máximo capaz de lidar com uma máquina de 32 bits sem outras técnicas, suponho). Pelo contrário, o Win XP parece usar 3 GB de RAM, afirmando que o PAE está ativado.

Alguma idéia de como usar 3 GB de RAM no Win 8.1 ou 10, 32 bits?


Aqui está a captura de tela do Win 8.1 VM com 3 GB de RAM (algumas no Win 10): insira a descrição da imagem aqui


Aqui está o script QEMU para iniciar a VM (também tentei a CPU do host, sem diferença):

#!/bin/sh
SPICE_PORT=3010
MONITOR_PORT=2330
QEMU_AUDIO_DRV=alsa

kvm \
    -M q35 \
    -nodefaults \
    -cpu qemu64 \
`#  -cpu host` \
    -m 3G \
    -mem-path /dev/hugepages \
    -device virtio-balloon-pci \
    -rtc base=localtime \
    -vga qxl \
    -drive file=win8.qcow2,if=virtio,cache-size=16M,cache=writethrough \
    -device virtio-net-pci,netdev=diktyo0 \
    -netdev user,id=diktyo0 \
    -monitor telnet:localhost:${MONITOR_PORT},server,nowait \
    -device virtio-serial \
    -device virtserialport,chardev=vdagent,name=com.redhat.spice.0 \
    -chardev spicevmc,id=vdagent,debug=0,name=vdagent \
    -spice port=${SPICE_PORT},addr=127.0.0.1,disable-ticketing \
    -device virtserialport,chardev=charchannel1,id=channel1,name=org.spice-space.webdav.0 \
    -chardev spiceport,name=org.spice-space.webdav.0,id=charchannel1 \
    -soundhw ac97 \
    -name "Windows 8.1 x86" \
    -daemonize \

Seguindo o conselho de shodanshok, eu posto a saída do monitor de recursos (com 4 GB de RAM total): insira a descrição da imagem aqui

Metade da memória é reservada por hardware.

Eu também aumentei a RAM para 4 GB: insira a descrição da imagem aqui

Apenas no caso do driver de vídeo QXL reservar muita memória, também alterei a linha de configuração do vídeo para:

-device qxl-vga,vgamem_mb=64,ram_size_mb=64,vram_size_mb=64

Posso tentar mudar o Seabios, pelo menos a versão. Infelizmente na versão Debian Stable QEMU é 3.1.0; é bastante antigo, gostaria de saber se o mesmo comportamento aparece em versões mais recentes.

windows debian kvm-virtualization virtual-machines hypervisor
  • 2 2 respostas
  • 834 Views

2 respostas

  • Voted
  1. Best Answer
    shodanshok
    2020-11-22T11:46:11+08:002020-11-22T11:46:11+08:00

    RESPOSTA ATUALIZADA: conforme mostrado nos comentários e na pergunta atualizada, o problema específico estava relacionado a uma reserva de memória de hardware de 2 GB devido ao tipo de máquina específico. Mudar para um tipo de máquina i440fx resolveu o problema.

    RESPOSTA ORIGINAL (deixada aqui porque pode ajudar outras pessoas com problemas semelhantes no Windows de 32 bits):

    Tente aumentar a alocação de memória do espaço do usuário usando o seguinte comando (e reinicializando):

    bcdedit /set IncreaseUserVa 3072
    

    Certifique-se de fazer um instantâneo de sua VM antes de executar o comando acima (e certifique-se de ter um backup válido).

    • 4
  2. Michael Hampton
    2020-11-23T06:57:25+08:002020-11-23T06:57:25+08:00

    Suspeito que seu problema seja com as páginas enormes, que você pediu explicitamente ao KVM para usar.

        -mem-path /dev/hugepages \
    

    Você realmente tem páginas enormes suficientes para fornecer à VM todos os 4 GB de RAM? Eu acho que você provavelmente não. Verificar com:

    # grep Huge /proc/meminfo           
    AnonHugePages:   1325056 kB
    ShmemHugePages:        0 kB
    FileHugePages:         0 kB
    HugePages_Total:    1024
    HugePages_Free:     1024
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       2048 kB
    Hugetlb:         2097152 kB
    

    Quantas páginas enormes no total e quantas são gratuitas? Observe que cada página enorme tem 2 MB. Com 1024 deles, tudo o que você tem disponível é de 2 GB.

    Portanto, aumente o número de páginas enormes para contabilizar toda a memória que sua VM (ou VMs!) usará.

    # sysctl vm.nr_hugepages
    vm.nr_hugepages = 1024
    
    # sysctl vm.nr_hugepages=2048
    vm.nr_hugepages = 2048
    

    Agora você deve ter páginas enormes suficientes para fornecer à VM toda a memória.

    # grep Huge /proc/meminfo 
    AnonHugePages:   1327104 kB
    ShmemHugePages:        0 kB
    FileHugePages:         0 kB
    HugePages_Total:    2048
    HugePages_Free:     2048
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       2048 kB
    Hugetlb:         4194304 kB
    
    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve