Eu tenho vários arquivos raw do KVM que são somente leitura (cerca de 100gb).
Estou adicionando esses arquivos raw como dispositivos de loopback.
Eu, então, crio um arquivo de snap para permitir que a VM tenha acesso de leitura / gravação ao disco. Isso me permite inserir modificações, testar, limpar o snap e repetir.
Snippet do meu script perl:
$base_file = "/images/vmbase.raw";
$base_stats = stat($base_file);
$base_blocks = $base_stats->size / 512;
$base_size = floor($base_stats->size / 10**6);
system("dd if=/dev/zero of=/dev/shm/vmbase.snap count=1 bs=1M seek=$base_size");
$baseloop='losetup -f --show /images/vmbase.raw --read-only';
$snaploop='losetup -f --show /dev/shm/vmbase.snap';
system("dmsetup create vmdrive --table "0 snapshot $baseloop");'
Isso cria um dispositivo chamado /dev/mapper/vmdrive
que, em seguida, anexo à minha máquina virtual. Eu posso usar o parted /dev/mapper/vmdrive
para ver as partições disponíveis. Agora, seria ótimo mudar para o provisionamento thin para ver se obtenho um ganho de desempenho.
Aqui está o que eu tentei (usei o "livro de receitas" do link )
Primeiro, crio alguns dispositivos de bloco usando loops:
meta: 2 GB
snap: 24 GB
dd if=/dev/zero of=/dev/shm/vmbase.meta bs=4096 count=524288
dd if=/dev/zero of=/snaps/vmbase.snap bs=4096 count=5859385
losetup -f /images/vmbase.raw --read-only
losetup -f /dev/shm/vmbase.meta
losetup -f /snaps/vmbase.snap'
Em seguida, criei o dispositivo de pool: (suponho loop0
para raw
, loop1
para meta
e loop2
para snap
) Eu uso um tamanho de bloco de 1 MB e 2 GB como meu limite de espaço livre baixo
$ dmsetup create vmbase-pool \
--table "0 20971520 thin-pool /dev/loop1 /dev/loop0 2048 2048
Siga as instruções gerando o snap do dispositivo de bloco externo (meu arquivo bruto)
$ dmsetup message /dev/mapper/vmbase-pool 0 "create_thin 0"
$ dmsnap create vmsnap \
--table "0 20971520 thin /dev/mapper/vmbase-pool 0 /dev/loop0"
Em seguida, conecto o dispositivo /dev/mapper/vmsnap
à minha máquina virtual e ele não inicializa. Quando uso parted para imprimir a tabela de partições, recebo erros. Parte disso é que preciso ser capaz de iniciar várias cópias da máquina virtual de uma só vez.
Estou usando o RHEL 6.7 com o kernel 2.6.32-573.7.1
Onde estou indo errado?