Тестирование сжатия btrfs выполняется без записи на диск.

Вопрос или проблема

Я подумываю о том, чтобы изменить файловую систему на моем диске данных с ext4 на btrfs, потому что btrfs поддерживает сжатие, а место для хранения в какой-то момент закончится.

Я видел, что btrfs может использовать сжатие с zlib, lzo и zstd.

https://btrfs.readthedocs.io/en/latest/Compression.html

Как я могу провести несколько тестов, чтобы увидеть, как сжатие может уменьшить размер?

Существует ли способ записать данные в /dev/null или что-то подобное и подсчитать байты, которые проходят через него?

Как я могу провести тесты с различными компрессорами (zlib, lzo и zstd), не записывая, а просто посмотрев, насколько можно сжать данные?

Ответ или решение

Для тестирования сжатия в файловой системе btrfs без записи данных на диск существует несколько способов, позволяющих оценить эффективность различных алгоритмов сжатия, таких как zlib, lzo и zstd.

Шаг 1: Установка btrfs

Перед тем как начать тестирование, необходимо убедиться, что у вас установлена файловая система btrfs. Это можно сделать, создав новую файловую систему на тестовом разделе или, если у вас уже есть btrfs, смонтировав его.

Шаг 2: Подготовка к тестированию

Для выполнения тестов будет полезно создать временную директорию, где вы будете помещать данные для тестирования. К примеру:

mkdir /mnt/test

Шаг 3: Использование травмы без записи на диск

Чтобы оценить возможность сжатия, можно использовать утилиту btrfs filesystem df, которая показывает характеристики хранилища, включающие статистику сжатия. Для бездискового тестирования используйте btrfs send в паре с btrfs receive, или создайте образ файловой системы в памяти с помощью tmpfs или ramdisk.

Пример монтирования tmpfs:

mount -t tmpfs -o size=100M tmpfs /mnt/test

Шаг 4: Генерация тестовых данных

Создайте несколько файлов для тестирования. Для этого можно использовать dd или fallocate:

fallocate -l 50M /mnt/test/testfile

Шаг 5: Проведение тестов на сжатие

  • Для сжатия с использованием zlib:
btrfs subvolume create /mnt/test/subvol1
btrfs subvolume snapshot /mnt/test/subvol1 /mnt/test/subvol1_snap
btrfs property set /mnt/test/subvol1 compress zlib
dd if=/mnt/test/testfile of=/mnt/test/subvol1/test.zlib bs=1M
  • Для сжатия с использованием lzo:
btrfs property set /mnt/test/subvol1 compress lzo
dd if=/mnt/test/testfile of=/mnt/test/subvol1/test.lzo bs=1M
  • Для сжатия с использованием zstd:
btrfs property set /mnt/test/subvol1 compress zstd
dd if=/mnt/test/testfile of=/mnt/test/subvol1/test.zstd bs=1M

Шаг 6: Анализ результатов

После выполнения операций можно использовать команду:

btrfs filesystem df /mnt/test/subvol1

Эта команда покажет, сколько места занимают ваши файлы с учетом сжатия.

Заключение

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

Не забудьте ознакомиться с документацией на официальном сайте для получения дополнительной информации и наиболее актуальных рекомендаций по использованию btrfs.

Оцените материал
Добавить комментарий

Капча загружается...