Não tenho muita certeza de como formular esta pergunta (daí o título ruim), então deixe-me dar um exemplo do que estou tentando fazer.
No meu antigo host Xen, posso apresentar sistemas de arquivos LVM diretamente a cada convidado. Na verdade, esses sistemas de arquivos são criados e formatados no host e transmitidos diretamente. Por exemplo, para um dos meus hosts usando partições tmp e swap separadas, defino o armazenamento da seguinte maneira:
O disco = [
'phy: / dev / vg1 / guest1-swap, sda1, w',
'phy: / dev / vg1 / guest1-disk, sda2, w',
'phy: / dev / vg1 / guest1-tmp, sda3 , w ',
]
Portanto, guest1-swap é formatado como uma partição swap, guest1-disk e guest1-tmp são formatados com ext4 e, da perspectiva do convidado, simplesmente os vê como três partições formatadas em / dev / sda.
(Isso pode parecer muito trabalhoso, mas existem scripts de provisionamento, como as incríveis ferramentas xen , que automatizaram praticamente tudo).
Isso fornece alguns recursos realmente úteis, dois dos quais estou especialmente interessado em descobrir para o KVM:
Monte os sistemas de arquivos convidados no sistema operacional host . Posso fazer uma montagem somente leitura de qualquer sistema de arquivos convidado a qualquer momento, mesmo enquanto o convidado estiver em execução. Isso tem a vantagem de permitir que eu crie instantâneos LVM de qualquer volume existente enquanto o convidado estiver em execução. Dessa forma, eu posso fazer backup centralizado de todos os meus convidados, durante a execução, do host.
Redimensionamento de volume online . Como os volumes contêm sistemas de arquivos Linux padrão, posso usar uma combinação de lvextend e resize2fs para aumentar meus sistemas de arquivos convidados, novamente enquanto estão online.
No momento, estou configurando um host KVM que substituirá o host Xen. Semelhante à configuração do Xen, estou utilizando o LVM para fornecer acesso direto ao sistema de arquivos, mas o KVM / qemu se comporta de maneira diferente, pois sempre cria um arquivo de imagem para os convidados, mesmo no volume do LVM. Da perspectiva do convidado, ele vê isso como um disco não particionado, e cabe ao convidado aplicar um rótulo de partição e criar as partições e os sistemas de arquivos.
Do ponto de vista do convidado, tudo bem, mas do servidor / gerenciamento, parece ser muito menos flexível do que a configuração do Xen que descrevi. Eu ainda sou novo na KVM, então talvez esteja perdendo alguma coisa.
Encontrei este problema ao tentar reimplementar minha solução de backup anterior no host KVM e o comando mount chocou quando tentei montar um dos sistemas de arquivos do convidado. Portanto, abordar essa é a minha preocupação atual, mas também me preocupou com o redimensionamento, porque tenho certeza de que esse problema também surgirá em algum momento.
Então, aqui estão as minhas questões:
Existe alguma maneira de o kvm / qemu usar os sistemas de arquivos de volume LVM diretamente, como descrevi para minha configuração do Xen? Eu uso libvirt para gerenciamento, se isso faz diferença.
Caso contrário, o que posso fazer para obter uma funcionalidade de montagem / backup semelhante no KVM? Eu já vi discussões sobre o uso de libguestfs w / FUSE para fazer isso, mas essa é realmente a melhor opção? Eu preferiria ficar com uma montagem de sistema de arquivos nativa, se possível.
Além disso, se não, é possível redimensionar um sistema de arquivos on-line no KVM? Eu encontrei várias discussões / instruções sobre isso, mas as respostas parecem estar em todo o lugar, sem soluções claras e definitivamente não diretas.
Desculpe pelo longo post, só queria ter certeza de que estava claro. Informe-me se posso fornecer outras informações que possam ser úteis. Ansioso para a discussão. :-)
fonte
Respostas:
virt-*
ferramentas) pode fornecer acesso aos sistemas de arquivos convidados de uma maneira mais limpa do que qualquer coisa que você remonte diretamente ao host, embora ambos sejam possíveis.resize2fs
funcionará tanto em uma VM quanto em hardware físico, o único problema é o convidado redetectar as alterações de tamanho. Tentevirt-resize
como a ferramenta padrão, maslvresize
eqemu-img
também pode ser facilmente utilizado (embora em modo offline, o que requer um reinício convidado geralmente).Eu acho que
lvresize
comresize2fs
realmente funcionará sem a reinicialização de um convidado, mas ainda não tenteifonte
virsh
mas fácil o suficientevirt-manager
. Os sistemas mais graves, como RHEV / oVirt realmente usar LVM todo o tempo para FC / iSCSI base de armazenamentoattach-disk
-lo para conectá-lo dinamicamente, mas isso não é permanente e não consigo fazê-lo funcionar para /. Você pode apontar para alguma documentação para isso ou fornecer dicas específicas? Obrigado!Eu uso o qemu-kvm + libvirt exatamente com a configuração que você está perguntando, pelos motivos listados, mas além disso, porque eu obtenho um desempenho muito melhor sem o escopo da camada do sistema de arquivos do host KVM. Se você adicionar o VG como um 'pool de armazenamento' no virt-manager, poderá criar essas VMs usando seu assistente fácil de usar. (Mas eu apenas escrevo o XML manualmente hoje em dia usando uma VM existente como modelo).
Aqui está a saída higienizada do 'virsh dumpxml' para um dos meus convidados:
Outro pensamento (não relevante para a sua pergunta, mas pode ajudar): se você puder, verifique se está usando os drivers de rede, paravirtualizados, de bloqueio, aleatórios, de relógio etc. - eles são significativamente mais rápidos que os totalmente virtualizados. Este é o material "model = virtio" acima. Você precisa carregar módulos de driver no kernel do host, como virtio_net.
Aqui está a saída do 'virsh pool-dumpxml vg1':
fonte
virsh pool-dumpxml mypool
Não sei como replicar exatamente o comportamento Xen que você descreve. No entanto, você pode usar
kpartx
para expor as partições em um LV que contém uma imagem de disco inteiro como dispositivos de bloco no host, que você pode montar etc.fonte
Veja minha resposta para minha própria pergunta sobre esse assunto no KVM, inicializando o kernel off-image e a partição existente . Em resumo, fazer com que o virt-install crie uma configuração para isso é bastante simples, dada uma pequena modificação do guest / etc / fstab.
fonte