onde os kvm-snapshots são armazenados?

2

Eu executei várias VMs no KVM / Ubuntu, todas iniciadas com o parâmetro -snapshot (as VMs só computam várias coisas que podem ser destruídas após a reinicialização).

Fora dos documentos que eu li, as alterações não são gravadas de volta na imagem, mas armazenadas em arquivos temporários e são apagadas após o desligamento.

Agora, gostaria de saber onde no sistema de arquivos esses "arquivos temporários" são armazenados?

    
por bmaeser 23.02.2011 / 01:30

5 respostas

2

Tente usar lsof para encontrar o armazenamento de snapshots:

# ps aux | grep kvm
$PID ?        Sl   5289:40 /usr/bin/kvm ...
# lsof -n -p $PID
COMMAND   PID USER   FD   TYPE   DEVICE        SIZE     NODE NAME

ou um comando:

# lsof -n -p $(ps ax | grep [k]vm | awk '{print $1}' | head -1)
    
por 23.02.2011 / 02:11
0

Desde que eu estava examinando o mesmo e não poderia encontrá-los em qualquer lugar no disco rígido, eu diria que eles permanecem na memória? Isso também explicaria por que eles não são persistentes.

Se você quiser gravá-los no disco, use os comandos salvar / restaurar. Aqui você pode fornecer um caminho.

    
por 06.03.2011 / 19:53
0

Os instantâneos são armazenados onde quer que você os configure. no meu F14 está em /var/lib/libvirt/images , mas você pode jogar com domínios de armazenamento em virt-manager ou virsh , como quiser.

    
por 23.02.2011 / 13:53
0

Aqui está uma versão um pouco mais concisa do comando lsof usado acima. Essa variante tem várias melhorias. Sendo um deles que listará TODAS as VMs do KVM.

$ lsof -n -p $(pgrep kvm | tr '2' ,)

Você poderia, então, usar a saída procurando .img e .qcow2 arquivos se soubesse que estava usando essas extensões para nomear suas imagens de VM.

$ sudo lsof -n -p $(pgrep kvm | tr '2' ,) |grep -E ".img|.qcow2"
qemu-kvm  3836 root   11u   REG              253,0 10737418240 19169281 /var/lib/libvirt/images/vm1.img
qemu-kvm  3895 root   11u   REG              253,0 48318382080 19890183 /kvm/vm2.img
qemu-kvm  3924 root   11u   REG              253,0 10737418240 19890185 /kvm/vm3.img
qemu-kvm 13594 root   11u   REG              253,0 43881005056 69173572 /var/lib/libvirt/images/vm4.qcow2

Você também pode fazer isso e consultar libvirtd para descobrir quais conjuntos de armazenamento estão disponíveis.

$ sudo virsh pool-list
Name                 State      Autostart 
-----------------------------------------
default              active     yes       

$ sudo virsh vol-list default
Name                 Path                                    
-----------------------------------------
vm1-d-disk0        /var/lib/libvirt/images/vm1-d-disk0   
vm2-d-disk0        /var/lib/libvirt/images/vm2-d-disk0   
vm3.img            /var/lib/libvirt/images/vm3.img         
...

Assim, o caminho padrão parece ser /var/lib/libvirt/images para as VMs que usam o default pool. Esse seria o mesmo diretório que os arquivos temporários relacionados à atividade -snapshot residiriam também.

    
por 21.02.2014 / 23:31
0

Eu apenas me perguntei onde "-snapshot" armazena suas alterações e, eventualmente, descobriu onde: Parece usar o mesmo algoritmo como "mktemp".

Ou seja, se você definir a variável de ambiente TMPDIR para o caminho de algum diretório, ela armazenará seus dados temporários lá.

Caso contrário, ele os armazena em / tmp.

Portanto, se você quiser salvar instantâneos temporários em / var / tmp / kvm em vez de em / tmp, execute o qemu da seguinte forma:

$ TMPDIR=/var/tmp/kvm qemu-system-x86_64 -enable_kvm ...

Como alternativa, você pode "exportar" a variável primeiro:

$ export TMPDIR=/var/tmp/kvm
$ qemu-system-x86_64 -enable_kvm ...

Isso pode ser melhor se você iniciar várias VMs, porque você não precisa especificar a variável para cada chamada.

Além disso, lembre-se de adicionar também "-no-shutdown" às opções do qemu se quiser manter as alterações em vez de perdê-las quando a VM for encerrada.

Com -no-shutdown, o vm entra em um estado parado após o desligamento, mas o processo vm permanece ativo.

Isso permite que você se conecte ao console do monitor KVM e emita o comando "commit", que grava todas as alterações do arquivo temporário no arquivo de imagem da VM. Depois disso, você emite o comando "quit" que realmente encerra o processo da VM.

Sem "-no-shutdown", você não tem a chance de emitir o comando "commit" e, sem isso, todas as alterações no arquivo temporário serão perdidas quando o processo da VM for encerrado.

E outra observação: não admira que nenhum arquivo seja exibido no diretório especificado por $ TMPDIR quando a VM tiver iniciado com "-snapshot".

O arquivo está lá, mas o qemu apaga o arquivo imediatamente após criá-lo e, portanto, ele não aparece em uma lista de diretórios.

Mas o processo do qemu ainda contém uma referência ao arquivo, e assim o arquivo é mantido ativo até que o processo do qemu termine. Só então o arquivo "deletado" será realmente deletado, e o espaço ocupado por ele será retornado como espaço livre para o sistema de arquivos.

    
por 14.01.2018 / 04:36