redimensionar disco on-line KVM?

11

Estamos avaliando o KVM para virtualização do Linux em alguns projetos. Tudo está indo bem até agora. Mas um dos nossos requisitos é a capacidade de adicionar espaço em disco a um convidado em execução sem reinicializá-lo ou colocá-lo off-line. Isso é possível com o KVM?

A única coisa que eu encontrei até agora (mas ainda não testei) é a capacidade de colocar discos hotplug na máquina. Se eu seguir essa rota, sempre poderei adicionar o novo disco a um grupo de volumes LVM no guest e estender o volume lógico escolhido. A maior desvantagem dessa abordagem é que, com o tempo, podemos acabar tendo os convidados com números variáveis de discos virtuais. O espaço em disco "real" seria fornecido ao host em uma SAN, para que sempre possamos adicionar mais espaço ao host sempre.

    
por Eil 12.03.2010 / 22:53

6 respostas

6

Eu acho que você está preso fazendo o que você mencionou, se você quiser fazer isso sem derrubar a máquina.

Por que não apenas fornecer as LUNs de máquinas virtuais diretamente da SAN e gerenciar o espaço lá? Isso funciona melhor se você quiser usar recursos como migração ao vivo de qualquer maneira.

O KVM é baseado no QEMU, então todo o suporte ao formato de imagem vem desse projeto. Aqui está um bom como redimensionar os vários formatos suportados pelo Qemu / KVM. Mas o fórum do Qemu seria um bom lugar para fazer esta pergunta se você não encontrar respostas sólidas aqui.

Outra opção que pode não ser a ideal é usar um formato qcow2 realmente grande ou outro formato esparso para as unidades. Então você poderia dar a cada máquina uma pequena unidade para o sistema operacional e uma grande imagem esparsa para dados sob o LVM. Isso manteria pelo menos o número de drives / imagens virtuais que você precisa gerenciar. Mas esse thin provisioning pode ser um problema, se você fizer isso para 1.000 máquinas e todos o aceitarem no espaço livre que eles vêem.

XEN Acredito que tenha as mesmas limitações atualmente.

    
por 12.03.2010 / 23:47
12

Eu sei que é uma pergunta antiga, mas descobri enquanto procurava a solução e espero que possa ajudar outra pessoa.

Hoje, é possível redimensionar o disco rígido da máquina. Eu encontrei uma maneira de trabalhar aqui:

link

As etapas a seguir devem ser executadas:

  1. Descubra um nome de arquivo e um nome de dispositivo KVM do disco rígido que você deseja redimensionar:

    root@vhstage02:/data# virsh dumpxml test | xpath -e /domain/devices/disk
    Found 2 nodes in stdin:
    -- NODE --
    <disk type="file" device="disk">
      <driver name="qemu" type="qcow2" />
      <source file="/data/test.img" />
      <backingStore />
      <target dev="vda" bus="virtio" />
      <alias name="virtio-disk0" />
      <address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0" />
    </disk>
    -- NODE --
    <disk type="file" device="cdrom">
      <driver name="qemu" type="raw" />
      <source file="/data/images/debian-8.2.0-amd64-netinst.iso" />
      <backingStore />
      <target dev="hda" bus="ide" />
      <readonly />
      <alias name="ide0-1-1" />
      <address type="drive" controller="0" bus="1" target="0" unit="1" />
    </disk>
    

O que é interessante para nós é o disco. Você deve procurar por source e alias blocks. Para mim, o nome do arquivo é test.img e o nome do alias é virtio-disk0

  1. Agora, na verdade, redimensionamos a unidade usando o monitor qemu:

    virsh qemu-monitor-command test block_resize  drive-virtio-disk0  100G --hmp
    

Observe que o nome do arquivo foi usado sem extensão .img e drive - foi adicionado ao alias de disco. O 100G é o tamanho resultante da unidade que queremos ter

  1. Faça login na máquina e verifique se o tamanho real foi alterado:

    root@test:~# fdisk -l
    
    Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x7e6e7f71
    
    Device     Boot  Start       End   Sectors  Size Id Type
    /dev/vda1  *      2048    499711    497664  243M 83 Linux
    /dev/vda2       501758 167770111 167268354 79.8G  5 Extended
    /dev/vda5       501760 167770111 167268352 79.8G 8e Linux LVM
    

É isso! Agora você pode criar novas partições ou redimensionar as existentes.

    
por 15.12.2015 / 11:21
3

AFAIK, isso não é possível - você pode adicionar novas imagens de disco e, como você aponta, também é possível adicionar novas imagens a um volume LVM, mas para redimensionar uma imagem de disco ativa e inicializável, é necessário desligá-lo e editar as partições.

Aqui está uma boa explicação para expandir uma imagem. Embora exija o desligamento, você provavelmente poderia se safar com apenas alguns minutos de inatividade, especialmente se você evitar a opção de imagem --nonsparse e colocar o disco gparted em um arquivo iso e montá-lo no seu convidado KVM com antecedência. Espero que isso ajude.

    
por 12.03.2010 / 23:43
3

É possível mover um sistema Linux entre discos enquanto ele está em execução. A limitação é que você não pode alterar partições em um disco que tenha partições em uso.

Para fazer isso, seu sistema de arquivos raiz deve estar em um LVM, isso geralmente significa que você tem que ter um sistema de arquivos de inicialização separado (isto não é, no entanto, essencial, apenas torna as coisas mais fáceis)

Depois de conectar o novo disco, adicione-o ao LVM com o vgextend, use o pvmove para mover o rootfs para o novo disco, use o lvextend e resize2fs para expandir o volume lógico e o sistema de arquivos, respectivamente, use vgreduce para remover o disco antigo do grupo de volume. Uma vez removido, o volume antigo pode ser desconectado.

Para o caso simples, você tem um pequeno disco para o sistema de arquivos de inicialização que você nunca precisa tocar. Mas se é por si só é fácil para desmontá-lo, conecte-o e reconstrua o disco de inicialização sem parar o sistema. (apenas não bata enquanto estiver fazendo)

Nota: o resize2fs também pode reduzir os sistemas de arquivos.

    
por 02.03.2012 / 18:14
0

Não é possível atm, mas afaik é um recurso em desenvolvimento. O que você pode fazer é se conectar a um destino iSCSI da VM e gerenciar o espaço nesse destino no lado da SAN.

    
por 23.04.2010 / 19:02
-1

Você pode querer dar uma olhada no glusterfs ( link ) que é um sistema de arquivos em cluster de código aberto.

    
por 24.03.2010 / 13:41