Tengo un servidor que se utiliza para cálculo científico, cada usuario tiene una máquina virtual (Linux o Windows) para su uso. El problema es que los informes generados por estos cálculos ocupan una gran cantidad de almacenamiento cuando muchos usuarios utilizan este servidor.
Quiero saber si hay alguna forma de comprimir los resultados, no después de que se complete el informe sino cuando se escribirá en el disco.
actualización1:Usamos Vsphere como hipervisor y HDD para almacenamiento.
Respuesta1
Puede comprimir y/o deduplicar su almacenamiento en línea. Hay varias formas de lograrlo, algunas más fáciles y otras más efectivas.
Para empezar, los sistemas Linux y UNIX pueden usar ZFS, un sistema de archivos y administrador de volúmenes que admite tanto la compresión como la deduplicación a nivel de bloque. Cualquier sistema de almacenamiento local o compartido creado sobre esto puede usar estas funciones, por lo que algo tan simple como NFS sobre ZFS puede hacer lo que quiera con un grupo compartido entre todas las máquinas virtuales.
Linux puede usar btrfs, que es un sistema de archivos multidispositivo que admite compresión y deduplicación en línea. Mismas ideas que las anteriores. Btrfs tiene menos requisitos de hardware que ZFS, pero la deduplicación en línea sigue siendo bastante intensiva (ya que sería mejor hacerlo en un conjunto de datos compartido más grande utilizando cualquiera de los sistemas de archivos). Algo a tener en cuenta sobre btrfs es que primero es un sistema de archivos y luego un administrador de volúmenes. Tampoco ofrece abstracciones basadas en bloques como lo hace ZFS, por lo que es un sistema puramente basado en archivos.
Hay varias ofertas de NAS/SAN que incluyen esta funcionalidad. Usar uno para almacenamiento compartido haría un buen uso de la deduplicación y la compresión y al mismo tiempo sería un producto enlatado y compatible. FreeNAS es un ejemplo de uno de esos sistemas, que puede utilizar ZFS. Los dispositivos Synology NAS también pueden utilizar, y a menudo utilizan, btrfs.
Respuesta2
Estoy de acuerdo con @SmallLoanOf1M, pero otra idea que podría hacer es comprimir los informes dentro de la VM; de esta manera no cargará el hipervisor subyacente (es decir, Xen Dom0) y lo colocará dentro de los límites de la CPU de la VM. .
Si puedes canalizar los datos, siempre puedes hacer algo como:
report-generator-program | lz4 > report-file.lz4
O utilícelo gzip
si desea una compresión más lenta pero mejor, o xz
si desea derretir su CPU.