BTRFS dentro de una KVM-VM en una image formateada qcow2

Tengo un dispositivo de aplicación Ubuntu 14.04 que hace un uso intensivo de instantáneas de BTRFS. La aplicación pretende ser independiente del hipervisor y las instantáneas deben almacenarse con la image de la máquina virtual en caso de que necesitemos solucionar un problema. Utilizar los hipervisores integrados en methods de captura de instantáneas en lugar de la captura de BTRFS sería más trabajo de lo que vale, ya que requeriría acceso API al hipervisor de la máquina virtual, lo que no queremos por razones de security. También puedo acceder de forma remota a los subvolúmenes del sistema de files de instantáneas BTRFS directamente desde la command-line de los dispositivos a través de ssh sin tener que apagar la máquina o acceder a una API de hipervisor.

En el pasado, solo tuve que lidiar con la implementación de esta aplicación para hipervisores basados ​​en vmware. Siempre utilicé thin provisioning en mis discos vmware y nunca noté ningún problema de performance. Uso thin provisioning porque hago una gran cantidad de testings en este dispositivo y tiendo a implementar muchos dispositivos a la vez para ejecutar diferentes testings en paralelo.

Tengo mucho cuidado con no sobrepasar el almacenamiento mediante el uso de scripts que aseguran que el crecimiento del disco no se salga de control. La caída de E / S que ocurre cuando el disco aprovisionado delgado necesita crecer tampoco es tan notable.

Ahora necesito apoyar KVM y me gustaría mantener el aprovisionamiento Thin / Sparse en mis discos, sin embargo, he leído algunas cosas que indican que mezclar un sistema de files CoW con otro sistema de files CoW es una mala idea debido a las escrituras y discos networkingundantes. fragmentación entre otras cosas. El ejemplo común que se daba era ejecutar una máquina virtual con un disco formateado qcow2 almacenado en un volumen formateado BTRFS. Mi situación sería lo opuesto. Quiero tener un sistema de files con formatting BTRFS en una máquina virtual que se ejecuta desde una image qcow2. No he encontrado mucho sobre los detalles del impacto en el performance de las instantáneas BTRFS sobre una image qcow2.

Pregunta: ¿Hay algún otro formatting de file disperso que crezca con el tamaño de disco que le gusta usar a KVM?

He explorado con el uso de escasos files sin procesar, pero parece que no puedo mantenerlos dispersos a través de un cp, descargue untar / gunzip, ect. Parece que si quieres usar un file en bruto escaso, no puedes moverlo para nada, lo que haría la distribución un dolor en el culo.

Mi experiencia personal es que puedes trabajar con files sin formatting en un sistema de files de host de poca capacidad.

Tengo files sin formatting en un sistema de files host ext4. Con el vm apagado, puedo usar "zerofree" en los files brutos (montados como un dispositivo de bucle) y al usar cp –sparse = siempre newfile newfile obtengo tamaños de file networkingucidos. No sé si los files se mantienen escasos durante el uso, ya que solo uso este método para "archivar" imágenes de sistemas de testing.

Por cierto, btrfs con snapshotting pesado parece ser una mala idea: https://btrfs.wiki.kernel.org/index.php/Gotchas#Having_many_subvolumes_can_be_very_slow

El caso es que KVM no admite imágenes de disco en absoluto. A diferencia de vmware, que es un tipo de solución todo en uno, KVM solo proporciona las capacidades de virtualización, sobre las cuales se puede build una solución de virtulización.

… Consiste en un module de kernel cargable, kvm.ko, que proporciona la infraestructura de virtualización principal y un module específico del procesador, kvm-intel.ko o kvm-amd.ko. – http://www.linux-kvm.org/page/Main%5FPage

Normalmente, una solución basada en KVM implica la combinación de:

  • KVM: para acceder a las capacidades de virtualización de la CPU
  • QEMU : que proporciona los bits de emulación, como BIOS / UEFI
  • bibliotecas y herramientas adicionales, como libvirt y Virtual Machine Manager

QEMU

QEMU admite dos formattings de disco nativos (también hay otros formattings, como VDI):

Crudo

Formato de image de disco sin procesar (pnetworkingeterminado). Este formatting tiene la ventaja de
siendo simple y fácilmente exportable a todos los demás emuladores. Si tu
el sistema de files admite huecos (por ejemplo, en ext2 o ext3 en Linux o NTFS en Windows), solo los sectores escritos reservarán espacio. – hombre qemu-img

Qcow / 2

Formato de image QEMU, el formatting más versátil. Úselo para tener
imágenes más pequeñas (útiles si su sistema de files no admite agujeros,
por ejemplo, en Windows), encryption AES opcional, basado en zlib
compression y soporte de múltiples instantáneas de VM. – hombre qemu-img

libvirt

libvirt proporciona una serie de forms de almacenar imágenes de disco:

  • Directorio back-end
  • Sistema de files local back-end
  • Sistema de files de networking back-end
  • Back-end lógico – LVM pero sin thin-provisioning 🙁
  • Backend de disco
  • backend iSCSI
  • SCSI backend
  • Backend multitrayecto
  • RBD (dispositivo de bloque RADOS) back-end
  • Backend de perro pastor
  • Gluster backend
  • Backend de ZFS
  • Backend de almacenamiento Virtuozzo

Eche un vistazo a esos y vea cuáles, si los hay, cumplen con sus requisitos. Consulte https://libvirt.org/storage.html , y mejor aún https://access.networkinghat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization_Administration_Guide/chap-Virtualization_Administration_Guide-Storage_Pools-Storage_Pools.html