Saltar al contenido

¿Cómo se aumenta el espacio en disco de un invitado KVM?

Solución:

Solución 1:

  1. detener la máquina virtual
  2. correr qemu-img resize vmdisk.img +10G para aumentar el tamaño de la imagen en 10 Gb
  3. Inicie la VM, cambie el tamaño de las particiones y la estructura LVM dentro de ella normalmente

Solucion 2:

Método en línea (usando qemu, libvirt y virtio-block)

Para bien o para mal, los siguientes comandos se ejecutarán incluso si el disco virtual de destino está montado. Esto puede ser útil en entornos donde el disco no se puede desmontar (como una partición raíz), la VM debe permanecer encendida y el propietario del sistema está dispuesto a asumir el riesgo de corrupción de datos. Para eliminar ese riesgo, primero deberá iniciar sesión en la máquina virtual y desmontar el disco de destino, algo que no siempre es posible.

Realice lo siguiente desde el hipervisor KVM.

  1. Aumente el tamaño del archivo de imagen de disco en sí (especifique la cantidad a aumentar):

    qemu-img resize <my_vm>.img +10G
    
  2. Obtenga el nombre del dispositivo virtio, a través del shell libvirt (drive-virtio-disk0 en este ejemplo):

    virsh qemu-monitor-command <my_vm> info block --hmp
      drive-virtio-disk0: removable=0 io-status=ok file=/var/lib/libvirt/images/<my_vm>.img ro=0 drv=raw encrypted=0
      drive-ide0-1-0: removable=1 locked=0 tray-open=0 io-status=ok [not inserted]
    
  3. Indique al controlador virtio que detecte el nuevo tamaño (especifique la nueva capacidad total):

    virsh qemu-monitor-command <my_vm> block_resize drive-virtio-disk0 20G --hmp
    

Luego inicie sesión en la VM. Corriendo dmesg debe informar que el disco virtio detectó un cambio de capacidad. En este punto, continúe y cambie el tamaño de sus particiones y estructura LVM según sea necesario.


Solución 3:

Estas preguntas de error del servidor son similares pero más específicas, ¿cambio de tamaño de disco KVM en línea? & Centos Xen redimensionando la partición DomU y el grupo de volumen. El primero hace la pregunta de cómo aumentar un invitado KVM mientras está en línea, mientras que el segundo es específico de XEN usando LVM. Estoy preguntando cómo lograr esto mientras el KVM está fuera de línea.

NOTA: Este enlace fue útil para el MÉTODO # 1, y muestra cómo lograr aumentar el espacio en disco de un KVM (basado en ext3), CÓMO: Cambiar el tamaño de una imagen de máquina virtual KVM.

Una cosa que debe tener en cuenta con los invitados de KVM es que las particiones que están usando en su interior pueden afectar el método que puede usar para aumentar su espacio en disco.

MÉTODO 1: Las particiones están basadas en ext2 / ext3 / ext4

Las nueces de este método son las siguientes:

# 1. stop the VM
# 2. move the current image
mv mykvm.img mykvm.img.bak

# 3. create a new image
qemu-img create -f raw addon.raw 30G

# 4. concatenate the 2 images
cat mykvm.img.bak addon.raw >> mykvm.img

Ahora, con el archivo mykvm.img más grande en la mano, inicie gparted y extienda la partición existente al espacio en disco recién agregado. Este último paso básicamente extiende la partición del sistema operativo para que pueda hacer uso del espacio adicional.

MÉTODO # 2: Las particiones están basadas en LVM

Estos son los pasos que seguí aproximadamente para cambiar el tamaño de un invitado KVM que usaba LVM internamente.

  1. Apaga la VM
  2. agregue más espacio al “archivo de imagen” del invitado (algo así como: cat old.img 10G_addon.raw >> new.img
  3. inicie la máquina virtual (usando el new.img recién creado)
  4. ejecute fdisk dentro de la VM y elimine y vuelva a crear la partición LVM

    % fdisk /dev/vda
    ...
    Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *           1          13      104391   83  Linux
    /dev/vda2              14        3263    26105625   8e  Linux LVM
    
    Command (m for help): d
    Partition number (1-4): 2
    
    Command (m for help): p
    
    Disk /dev/vda: 48.3 GB, 48318382080 bytes
    255 heads, 63 sectors/track, 5874 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *           1          13      104391   83  Linux
    
    Command (m for help): n 
    Command action
      e   extended
      p   primary partition (1-4)
    p
    Partition number (1-4): 2
    First cylinder (14-5874, default 14): 14
    Last cylinder or +size or +sizeM or +sizeK (14-5874, default 5874): 
    Using default value 5874
    
    Command (m for help): p
    
    Disk /dev/vda: 48.3 GB, 48318382080 bytes
    255 heads, 63 sectors/track, 5874 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *           1          13      104391   83  Linux
    /dev/vda2              14        5874    47078482+  83  Linux
    
    Command (m for help): t
    Partition number (1-4): 2
    Hex code (type L to list codes): 8e
    Changed system type of partition 2 to 8e (Linux LVM)
    
    Command (m for help): p
    
    Disk /dev/vda: 48.3 GB, 48318382080 bytes
    255 heads, 63 sectors/track, 5874 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    
    Device Boot      Start         End      Blocks   Id  System
    /dev/vda1   *           1          13      104391   83  Linux
    /dev/vda2              14        5874    47078482+  8e  Linux LVM
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    
    WARNING: Re-reading the partition table failed with error 16: Device or 
    resource busy.
    The kernel still uses the old table.
    The new table will be used at the next reboot.
    Syncing disks.
    %
    
  5. Reiniciar la VM

  6. Cambiar el tamaño del volumen físico de LVM

    % pvdisplay 
      --- Physical volume ---
      PV Name               /dev/vda2
      VG Name               VolGroup00
      PV Size               24.90 GB / not usable 21.59 MB
      Allocatable           yes (but full)
      PE Size (KByte)       32768
      Total PE              796
      Free PE               0
      ...
    
    % pvresize /dev/vda2
    
    % pvdisplay
      --- Physical volume ---
      PV Name               /dev/vda2
      VG Name               VolGroup00
      PV Size               44.90 GB / not usable 22.89 MB
      Allocatable           yes 
      PE Size (KByte)       32768
      Total PE              1436
      Free PE               640
      ...
    
  7. Cambiar el tamaño del volumen lógico LVM

      % lvresize /dev/VolGroup00/LogVol00 -l +640
      Extending logical volume LogVol00 to 43.88 GB
      Logical volume LogVol00 successfully resized
    
  8. Haga crecer el sistema de archivos

      % resize2fs /dev/VolGroup00/LogVol00 
      resize2fs 1.39 (29-May-2006)
      Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
      Performing an on-line resize of /dev/VolGroup00/LogVol00 to 11501568 (4k) blocks.
      The filesystem on /dev/VolGroup00/LogVol00 is now 11501568 blocks long.
    

El anterior es mi ejemplo, pero seguí los pasos de este sitio web.


Solución 4:

Cambiar el tamaño y expandir las particiones internas en un solo paso

Tenía un host Ubuntu con una imagen de archivo invitado qcow2 y quería cambiar el tamaño del disco y expandir las particiones apropiadas, todo en un solo paso. Requiere que configure las utilidades del sistema de archivos de invitado libvirt, pero es útil tenerlas de todos modos.

Inspiración desde aquí: http://libguestfs.org/virt-resize.1.html

El comando de teclado aquí es: virt-resize

  • esta es una utilidad libvirt
  • puede expandir un disco invitado Y expandir las particiones internas en un solo paso
  • copia el disco, no lo expande en su lugar
    • esto es bueno porque tiene el original intacto como copia de seguridad

Preparación:

* Install libvirt file system utilities package 
    * sudo apt-get install libguestfs-tools

* Test to see if it works (it won't) -- you need to see "===== TEST FINISHED OK =====" at the bottom:
    * sudo libguestfs-test-tool

* If you don't see "===== TEST FINISHED OK =====" at the bottom then repair it:
    * sudo update-guestfs-appliance

* Run the test again and verify it works
    * sudo libguestfs-test-tool

Ahora haz lo siguiente:

1) apagar el invitado:

2) Verifique el tamaño actual y vea el nombre de la partición que desea expandir usando la utilidad libvirt:

sudo virt-filesystems --long --parts --blkdevs -h -a name-of-guest-disk-file

3) Cree el nuevo disco de salida (40G):

qcow: sudo qemu-img create -f qcow2 -o preallocation=metadata outdisk 40G
img:  sudo truncate -s 40G outdisk

4) Copie lo antiguo a lo nuevo mientras expande la partición apropiada (asumiendo que su partición de disco del paso 2 era / dev / sda1):

sudo virt-resize --expand /dev/sda1 indisk outdisk

5) Cambie el nombre del archivo indisk como una copia de seguridad, cambie el nombre del outdisk como indisk (o modifique el XML invitado)

6) Reinicie el invitado y pruebe el nuevo archivo de disco cuidadosamente antes de eliminar el archivo original

7) ¡Beneficio!


Solución 5:

Es posible cambiar el tamaño en línea. libvirtd admite esto de forma nativa:

Busque el nombre del dispositivo de bloqueo. Debería ser algo como “vda”

$ virsh domblklist <libvirtd_vm_name>

Cambiar el tamaño del dispositivo virtual:

$ virsh blockresize --domain <libvirtd_vm_name> --path <block_device_name> --size <new_size>

Aquí hay un ejemplo en el que amplié el vda disco de 50GB para 51GB por undercloud VM.

[[email protected] ~]# virsh domblklist undercloud
Target     Source
------------------------------------------------
vda        /home/images/undercloud.qcow2

Ahora eche un vistazo a los detalles del archivo de imagen .qcow2:

[[email protected] ~]# qemu-img info /home/images/undercloud.qcow2
image: /home/images/undercloud.qcow2
file format: qcow2
virtual size: 50G (53687091200 bytes)
disk size: 38G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

Ahora cambiemos el tamaño del dispositivo de bloque vda:

[[email protected] ~]# virsh blockresize undercloud vda 51G
Block device 'vda' is resized

Y confirma:

[[email protected] ~]# qemu-img info /home/images/undercloud.qcow2
image: /home/images/undercloud.qcow2
file format: qcow2
virtual size: 51G (54760833024 bytes)
disk size: 38G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
[[email protected] ~]#

Luego, puede usar este script dentro de la VM para mostrar los comandos para cambiar el tamaño de los dispositivos de bloque y fs: https://github.com/mircea-vutcovici/scripts/blob/master/vol_resize.sh.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *