Архивная файловая система или формат - PullRequest
5 голосов
/ 27 мая 2011

Я ищу тип файла для хранения архивов систем, которые были выведены из эксплуатации. В настоящее время мы в основном используем tar.gz, но поиск и извлечение всего нескольких файлов из архива tar.gz емкостью 200 ГБ неудобно, поскольку tar.gz не поддерживает какие-либо операции чтения с произвольным доступом. (И до того, как вы поймете, что монтирование tgz с помощью FUSE не улучшит его.)

Вот что мы нашли на данный момент - я хотел бы знать, какие есть другие варианты:

  • tar.gz - плохое чтение с произвольным доступом
  • zip - отсутствует поддержка некоторых расширенных функций файловой системы (например, жестких ссылок, xattrs)
  • squashfs - на создание большого архива (много часов) и плохих инструментов в пользовательском пространстве уходит очень много времени.

Я пытаюсь придумать простой способ создания полнофункционального образа файловой системы в как можно меньшем пространстве - ext2 в образе cloop, но это не кажется особенно удобным для пользователя решением.

Предположительно, эта проблема уже была решена ранее - есть ли какие-то варианты, которые я пропустил?

Ответы [ 4 ]

5 голосов
/ 28 мая 2011

Mksquashfs - это программа с высокой степенью параллелизации, которая использует все доступные ядра для максимизации производительности. Если вы видите очень большое время сборки, значит, у вас либо много дубликатов файлов, либо на машине недостаточно памяти и не работает.

Чтобы исследовать производительность, вы можете сначала

Использовать опцию -no-duplicates в Mkssquashfs i, e.

mksquashfs xxx xxx.sqsh -no-duplicates

Проверка дубликатов - это медленная операция, и она должна выполняться последовательно, а в наборах файлов с большим количеством дубликатов это становится узким местом в параллельной программе.

Проверка использования памяти / свободной памяти во время работы Mksquashfs. Если система перегружена, произойдет очень низкая производительность. Изучите параметры -read-queue, -write-queue и -fragment-queue, чтобы контролировать объем данных, кэшируемых Mksquashfs во время выполнения.

Tar и zip не распараллелены и используют только одно ядро, поэтому трудно поверить в вашу жалобу на производительность сжатия Mksquashfs.

Кроме того, я никогда не видел никаких других отчетов о том, что программы пользовательского пространства «плохие», Mksquashfs и Unsquashfs имеют расширенный набор параметров, которые позволяют очень точно контролировать процесс сжатия и позволяют пользователям выбирать, какие файлы сжимаются - и эти опции значительно опережают программы типа tar.

Если вы не можете привести конкретные примеры того, почему инструменты плохие, я объясню это обычным случаем, когда рабочий обвиняет инструменты, тогда как настоящая проблема в другом.

Как я сказал ранее, ваша система, вероятно, работает с перебоями и, следовательно, работает плохо. По умолчанию Mksquashfs использует все доступные ядра и не менее 600 МБ ОЗУ (увеличение до 2 ГБ или более в больших файловых системах). Это для производительности, поскольку кэширование данных в памяти уменьшает дисковый ввод-вывод. Такое поведение «из коробки» хорошо для обычных пользователей с большим объемом памяти и бездействующей системой. Это то, чего хочет большинство пользователей, Mksquashfs, который «максимально» использует систему для максимально быстрого создания файловой системы.

Это не хорошо для систем с небольшим объемом ОЗУ или для систем с активными процессами, использующими большой объем доступного ЦП и / или памяти. Вы просто получите конкуренцию за ресурсы, поскольку каждый процесс конкурирует за доступный процессор и оперативную память. Это не ошибка Mksquashfs, а пользователя.

Параметр Mksquashfs -processor предназначен для ограничения числа процессоров, используемых Mksquashfs, а параметры -read-queue, -write-queue и -fragment-queue позволяют контролировать объем оперативной памяти, используемый Mksquashfs.

2 голосов
/ 08 июля 2013

virt-sparsify может использоваться для разбора и (благодаря поддержке qcow2 gzip в qemu) сжатия практически любой файловой системы linux или образа диска. Полученные изображения могут быть смонтированы в виртуальной машине или на хосте через guestmount .

Существует новый плагин ndbkit xz , который можно использовать для более высокого сжатия, который по-прежнему сохраняет хорошую производительность при произвольном доступе (если вы спросите xz / pixz * От 1012 * до сбросить сжатие на границах блоков ).

1 голос
/ 28 мая 2011

ZFS имеет довольно приличное сжатие возможности , если память служит.Тем не менее, я никогда не использовал его.: -)

0 голосов
/ 27 мая 2011

Поскольку это переполнение стека, я предполагаю, что вы ищете библиотеку / код. Я думаю, что вы можете проверить нашу SolFS виртуальную файловую систему тогда. Он не поддерживает жесткие ссылки, но поддерживаются альтернативные потоки (для xattr) и теги (для атрибутов unix). Далее, символические ссылки поддерживаются, вы можете конвертировать жесткие ссылки в символические ссылки при выполнении архива.

...