Вопрос или проблема
Я подумываю о том, чтобы изменить файловую систему на моем диске данных с 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.