У меня есть сервер, который используется для научных вычислений, у каждого пользователя есть виртуальная машина (Linux или Windows) для их использования. проблема в том, что отчеты, генерируемые этими вычислениями, занимают огромный объем хранилища, когда многие пользователи используют этот сервер.
Я хочу знать, есть ли способ сжать выходные данные не после завершения отчета, а когда он должен быть записан на диск
update1: Мы используем Vsphere в качестве гипервизора и H.D.D для хранения
Вы можете встроить сжатие и / или дедупликацию хранилища. Есть несколько способов добиться этого - некоторые проще, а некоторые более эффективны.
Для начала, системы Linux и UNIX могут использовать ZFS - файловую систему и менеджер томов, который поддерживает сжатие и дедупликацию на уровне блоков. Любая общая или локальная система хранения, созданная на основе этого, может использовать эти функции, поэтому такая простая вещь, как NFS поверх ZFS, может делать все, что вы хотите, с общим пулом для всех виртуальных машин.
Linux может использовать btrfs, файловую систему на нескольких устройствах, поддерживающую встроенную дедупликацию и сжатие. Те же идеи, что и выше. Btrfs имеет меньше требований к оборудованию, чем ZFS, но встроенная дедупликация по-прежнему довольно интенсивна (так как вам лучше всего будет выполнять ее в большом общем наборе данных с использованием любой файловой системы). При использовании btrfs следует помнить, что это, прежде всего, файловая система, а затем - диспетчер томов. Он также не предлагает абстракций на основе блоков, как ZFS, поэтому это чисто файловая система.
Есть несколько предложений NAS / SAN, которые включают эту функцию. Использование одного для общего хранилища позволит эффективно использовать дедупликацию и сжатие, будучи готовым и поддерживаемым продуктом. FreeNAS - это пример одной из таких систем, которая может использовать ZFS. Устройства Synology NAS также могут и часто используют btrfs.
Я согласен с @ SmallLoanOf1M, но еще одна идея, которую вы могли бы сделать, - это фактически сжать отчеты внутри виртуальной машины - таким образом вы не загружаете базовый гипервизор (например, Xen Dom0) и не помещаете его в пределы ЦП виртуальной машины. .
Если вы можете передать данные по конвейеру, вы всегда можете сделать что-то вроде:
report-generator-program | lz4 > report-file.lz4
Или используйте gzip
если вы хотите более медленное, но лучшее сжатие, или xz
если вы хотите растопить свой процессор.