Os arquivos Qcow 2 são um formato de arquivo de código aberto para máquinas virtuais. Na minha opinião, diferentemente dos arquivos .vmdk, eles não oferecem a opção de especificar um tamanho máximo de arquivo. Isso significa que eles podem crescer constantemente de tamanho por vários motivos.
Que maneiras existem para limitar o crescimento do tamanho do arquivo .qcow2 quando usados em derivados do Debian 12, como LMDE6, para um determinado valor ou para conseguir atingir um tamanho de arquivo fixo?
Talvez sejam ideias melhores do que usar uma partição própria para cada arquivo .qcow. Uma ideia alternativa pode ser possível, usar um sistema de arquivos para armazenar o arquivo .qcow, que oferece definir uma cota por pasta ou por arquivo para o sistema de arquivos, que é usado para armazenar os arquivos .qcow. Mas isso são apenas ideias neste momento.
O formato de imagem de disco qcow2, como outros formatos de imagem alocados dinamicamente, como VDI (usado pelo Virtualbox), não cresce indefinidamente com o uso. Ao criar essa imagem de disco, você deve especificar seu tamanho máximo. O(s) sistema(s) de arquivos dentro da imagem podem crescer até ocupar esse tamanho.
Para criar um arquivo de imagem qcow2 pré-alocado, use a
-o preallocation=full
opção adicional comqemu-img create
.O vmdk se comporta exatamente da mesma forma que o qcow2 neste aspecto: ele crescerá até o tamanho do disco virtual definido e nada mais, mas se você fizer snapshots, ele poderá crescer indefinidamente (até o tamanho total do disco virtual adicional com cada snapshot adicional). Não há possibilidade intrínseca de limitar isso no qcow2 nem no vmdk.
Como você espera que isso seja implementado: digamos que um sistema precise gravar um bloco na imagem qcow2 e isso exija extensão do arquivo além do limite; o que fazer? Return
ENOSPC
ouEIO
qualquer código de erro apropriado? Em seguida, defina o limite de tamanho no sistema de arquivos que hospeda o arquivo.Isto é muito perigoso. Um erro tão grave acabará por atingir o processo que queria escrever um bloco, seja ele qual for; se fosse um driver de sistema de arquivos (do sistema de arquivos que reside no arquivo qcow2) e fosse gravar algum bloco de metadados importante, esse sistema de arquivos seria corrompido e ninguém sabe o quão difícil seria recuperá-lo.
Muito melhor e mais seguro é implementar o monitoramento e notificações sobre aproximação e ultrapassagem do tamanho “máximo permitido” decidido.
Este é o típico “medo do armazenamento superprovisionado”; qualquer armazenamento que relate um espaço livre maior do que o fisicamente disponível tem o mesmo problema e, geralmente, espera-se que seja resolvido da mesma forma, com monitoramento adequado e extensão oportuna.
Observe também que o tamanho "aparente" do arquivo qcow2 não é a mesma coisa que o espaço que ele ocupa no sistema de arquivos de hospedagem. Pode ser escasso ; uma maneira de criar um qcow2 esparso é pré-alocá-lo, mas não escrevê-lo completamente; outra forma é liberar partes dele, por exemplo, habilitar descartes no processo qemu que está usando o arquivo e emitir o comando de descarte (SCSI UNMAP, ATA TRIM, usando
fstrim
,blkdiscard
, etc.) na VM; o arquivo irá liberar algum espaço (e será visto como um aumento do espaço livre no sistema de arquivos de hospedagem), masls
provavelmente mostrará o mesmo. Para ver o uso "real" do disco, usels -s
; o número é o uso do disco em kibibytes.