¿Cómo aumentar el tamaño del disco invitado KVM usando LVM VG como grupo de almacenamiento?

¿Cómo aumentar el tamaño del disco invitado KVM usando LVM VG como grupo de almacenamiento?

El servidor host KVM ejecuta CentOS 6.5 y se utiliza un grupo de volúmenes LVM "storage_pool" como grupo de almacenamiento principal para KVM.

Se instala un invitado de Ubuntu utilizando un sistema de archivos ext4 y monta todo el /dev/vda1 como /. Esta es la configuración del disco invitado:

<disk type='block' device='disk'>
  <driver name='qemu' type='raw' cache='none' io='native'/>
  <source dev='/dev/storage_pool/kvmguest.img'/>
  <target dev='vda' bus='virtio'/>
  <alias name='virtio-disk0'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>

¿Cuál sería el mejor enfoque para aumentar el tamaño del disco invitado? El VG tiene mucho espacio libre.

Encontré algunos ejemplos, pero la mayoría también usa LVM dentro de los invitados, o no eran completamente aplicables. Hasta donde tengo entendido, ¿el método común es crear un LV más grande en el mismo VG, apagar el invitado, transferir los datos, editar la configuración para usar el nuevo LV?

Gracias de antemano por cualquier sugerencia o sugerencia.

Respuesta1

No es necesario apagar al huésped (al menos no en 2019).

Simplemente

lvextend -L+<size>G /dev/<group>/<volume>

entonces

virsh blockresize <domain> /dev/<group>/<volume> --size <newsize>

y finalmente vaya a su invitado y haga lo que sea necesario para aprovechar el espacio adicional.

En un invitado de Windows puedes hacer

diskpart

list volume

select volume <n>

extend

Estos son los pasos exactos que seguí para expandir la unidad C: de un invitado de Windows 10 que se ejecuta como dominio KVM en Ubuntu 19.04 con qemu 3.1.0.

Respuesta2

Este es el procedimiento que seguí:

  1. Ampliar el volumen lógico del invitado kvm

    # lvextend -L+50G /dev/storage_pool/guest.img
    
  2. Apague el invitado kvm y desactive el volumen lógico

    # virsh shutdown guest
    # lvchange -a n /dev/storage_pool/guest.img
    
  3. Enumere y anote la información de partición del invitado kvm, lo más importante es el primer sector. Si no muestra sectores, es posible que deba agregar el interruptor '-u' o '-u sectores'

    # fdisk -l /dev/storage_pool/guest.img
    
  4. Elimine y vuelva a crear la partición para llenar todo el espacio extendido, asegúrese de usar sectores como unidades y para seleccionar el mismo primer sector (generalmente 2048 si la partición está alineada), puede usar el comando 'u' fdisk para alternar entre unidades.

    # fdisk /dev/storage_pool/guest.img
    Command (m for help): d
    Partition number (1-4): 1
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First sector (...): 2048
    Last sector...: hit enter and use the default last sector
    Command (m for help): a
    Partition number (1-4): 1
    Command (m for help): w
    
  5. Exponga el sistema de archivos ext3/4 y cambie su tamaño

    # kpartx -a -v /dev/storage_pool/guest.img
    # e2fsck -p -f /dev/mapper/storage_pool-guest.img1
    # resize2fs /dev/mapper/storage_pool-guest.img1
    # e2fsck -p -f /dev/mapper/storage_pool-guest.img1
    # kpartx -d -v /dev/storage_pool/guest.img
    
  6. Active el volumen lógico e inicie el invitado kvm

    # lvchange -a y /dev/storage_pool/guest.img
    # virsh start guest
    

Respuesta3

Buscando lo mismo, encontré tu pregunta sin respuestas aún. A mi me ha funcionado lo siguiente:

  1. apague el invitado (en mi caso, Debian 7.0) de la forma habitual.

  2. ampliar el LV "original" (en el VG del host, por supuesto), por ejemplo, mediante 5G. Para esto, tienes que ser root/sudo en el host:

    lvextend -L +5G /dev/YourStoragePoolVG/YourVirtualMachinesVGToExtend

  3. Abra el lv recién extendido (es decir, el "disco" de su VM) en gparted:

    gparted /dev/mapper/YourStoragePoolVG-YourVirtualMachinesVGToExtend

  • Nota: usteddebeutilice la ruta "/dev/mapper/...", no"/dev/dm-77" o "/dev/YourStoragePoolVG/..." u otro (esto parece ser un error/característica de LVM).
  1. Juguetee con las particiones en el volumen modificado (use la GUI como de costumbre)
  • Nota: ¡Considere las advertencias sobre pérdida de datos, tipos de fs, etc.!
  • Nota: tenga cuidado.
  • Enseparado, puede cambiar el tamaño de las particiones y moverlas en la tabla de particiones almacenada en el disco virtio dentro del LV.
  • En mi humilde opinión, ampliar una o más particiones no es un problema. Para reducir la partición/fs, utilice Google...
  • gparted también adapta los sistemas de archivos de las particiones (no sólo las particiones en sí).
  1. Reinicie su máquina virtual. Ahora ve las particiones modificadas.

Como dije, esto funcionó para mí (podría probar esto en alguna instalación de juguete sin correr riesgos). ¿Alguien podría revisar las instrucciones anteriores y comentar si esto funciona en general? Gracias.

Respuesta4

Es fácil: después de que LVEXTEND|LVRESIZE del host arranque en la VM desde un LiveCD ISO que tenga GPARTED a bordo. Una vez que se complete el arranque del CD, ejecute GPARTED con el nombre de la partición raíz usado DENTRO de la VM:

$ gparted /dev/vda1" # for VirtIO /dev/vda

o

$ gparted /dev/sda1" # for SATA emulated /dev/sda

y realice el cambio de tamaño de la partición de la forma habitual de GPARTED

información relacionada