GNU/Linux >> Tutoriales Linux >  >> Linux

¿Es posible cambiar el tamaño del disco en línea con KVM?

Solución 1:

Sé que es una vieja pregunta, pero la encontré mientras buscaba la solución en Google y espero que pueda ayudar a alguien más.

En cuanto a hoy es es posible cambiar el tamaño del disco duro en la máquina. He encontrado una forma de trabajo aquí:

https://bugzilla.redhat.com/show_bug.cgi?id=648594

Se deben realizar los siguientes pasos:

  1. Busque un nombre de archivo y un nombre de dispositivo KVM del disco duro que desea cambiar de tamaño:

    [email protected]:/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>
    

El que nos interesa es disk. Debes buscar source y alias bloques Para mí, el nombre del archivo es test.img y el alias es virtio-disk0 . A este nombre, debe anteponer drive- para obtener el nombre de la unidad qemu.

  1. Ahora cambiamos el tamaño de la unidad utilizando qemu monitor:

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

Tenga en cuenta que el nombre de archivo se usó sin la extensión .img y la unidad se agregó al alias del disco. El 100G es el tamaño resultante del disco que queremos tener

  1. Inicie sesión en la máquina y verifique que se haya cambiado el tamaño real:

    [email protected]:~# 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
    

¡Eso es todo! Ahora puede crear nuevas particiones o cambiar el tamaño de las existentes.

Solución 2:

AFAIK, esto no es posible:puede agregar nuevas imágenes de disco y, como señala, también puede agregar nuevas imágenes a un volumen LVM, pero para cambiar el tamaño de una imagen de disco activa y de arranque, debe poder cerrarlo abajo y editar las particiones.

Aquí hay una buena explicación para expandir una imagen. Aunque requiere el apagado, probablemente podría salirse con la suya con solo un par de minutos de tiempo de inactividad, especialmente si evita la opción --nonsparse image y agrega el disco gparted a un archivo iso y lo monta en su invitado KVM con anticipación. Espero que esto ayude.

Solución 3:

Creo que está atascado haciendo lo que ha mencionado si quiere hacerlo sin apagar la máquina.

¿Por qué no proporcionar los LUN de las máquinas virtuales directamente desde la SAN y administrar el espacio allí? Esto funciona mejor si desea utilizar funciones como la migración en vivo de todos modos.

KVM se basa en QEMU, por lo que todo su soporte de formato de imagen proviene de ese proyecto. Aquí hay una buena forma de cambiar el tamaño de los diversos formatos compatibles con Qemu/KVM. Pero el foro de Qemu sería un buen lugar para hacer esta pregunta si no obtiene respuestas sólidas aquí.

Otra opción que puede no ser ideal es usar qcow2 realmente grande u otro formato de imagen dispersa para las unidades. Por lo tanto, podría darle a cada máquina una pequeña unidad para el sistema operativo y una gran imagen dispersa para los datos bajo LVM. Esto al menos mantendría la cantidad de unidades/imágenes virtuales que tiene que administrar. Sin embargo, este aprovisionamiento delgado podría ser un problema si haces esto en 1000 máquinas y todos usan el espacio libre que ven.

XEN creo que tiene las mismas limitaciones actualmente.

Solución 4:

Es posible mover un sistema Linux entre discos mientras se está ejecutando. La limitación es que no puede alterar particiones en un disco que tiene particiones en uso.

Para hacer esto, su sistema de archivos raíz debe estar en un LVM, esto a menudo significa que debe tener un sistema de archivos de arranque separado (sin embargo, esto no es esencial, solo facilita las cosas)

Después de conectar el nuevo disco, lo agrega al LVM con vgextend, usa pvmove para mover rootfs al nuevo disco, usa lvextend y resize2fs para expandir el volumen lógico y el sistema de archivos respectivamente, luego usa vgreduce para eliminar el disco antiguo del volumen. grupo. Una vez eliminado, el volumen antiguo se puede desconectar.

Para el caso simple, tiene un disco pequeño para el sistema de archivos de arranque que nunca tiene que tocar. Pero si es solo, es fácil para desmontarlo, desconéctelo, conecte uno nuevo y reconstruya el disco de arranque sin detener el sistema. (simplemente no te bloquees mientras lo haces)

Nota:resize2fs también puede reducir los sistemas de archivos.


Linux
  1. Verifique el espacio en disco usado en Linux con du

  2. Comando DD de Linux:15 ejemplos con todas las opciones

  3. Emulación de discos grandes en Linux con VDO

  4. ¿Errores al clonar disco con Cat?

  5. Linux:¿hace que la copia de disco/disco sea más lenta?

Compruebe el espacio libre en disco en Linux con ncdu

Cómo instalar vyOS RouterOS con KVM

Cómo clonar una imagen de disco cifrada con Clonezilla

Cómo administrar máquinas virtuales KVM con Virt-Manager

¿Es posible ejecutar LINQPad con Mono (Mac)?

¿Es posible editar un enlace simbólico con un editor de texto?