Я планирую перейти с etx4 на файловую систему BTRFS на моем компьютере и сервере резервного копирования. Я очень заинтересован в функции моментального снимка BTRFS (я понял, что она использует функцию копирования при записи) и функции сжатия, но у меня есть сомнения / вопросы:

Как компрессия и корова взаимодействуют / работают вместе? Влияет ли сжатие файловой системы на эффективность коровы? Кто-нибудь здесь использовал обе функции, корову и сжатие, с BTRFS и может подтвердить, что они работают вместе?

Обновление: Я нашел это объяснение \ ответ в вики btrfs:

«Как сжатие взаимодействует с прямым вводом-выводом или COW? Сжатие не работает с DIO, работает с COW и не работает с файлами NOCOW. Если файл открывается в режиме DIO, он возвращается к буферизованному вводу-выводу. "Это похоже на сжатие и работу коровы вместе.

Кто-нибудь использовал сжатие cow+ в производственном процессе --ie: несколько снимков сжатых папок?

1 ответ1

2

Сжатие BTRFS разработано так, чтобы эффективно вписаться в весь дизайн CopyOnWrite. Я использую оба вместе, и я могу подтвердить, что они не вызвали у меня никаких проблем.

Как они работают вместе: данные файла в BTRFS хранятся в экстентах, которые представляют собой длинные секции последовательных блоков. Все блоки имеют одинаковый размер, обычно 4 КБ, а размеры варьируются в зависимости от файла и свободного места. Например, если у вас есть файл размером 1 МБ, это может быть один экстент из 256 блоков, или это может быть два экстента из 113 блоков и 143 блоков. Или десятки экстентов всех разных размеров, в любой комбинации. Если вы измените один байт в середине файла, он скопирует экстент, содержащий измененный байт. Он может создать совершенно новый экстент или разделить этот экстент на три: два с каждой стороны измененного байта, которые указывают на исходные неизмененные блоки, и один с новыми данными.

Согласно вики btrfs, подходящее сжатие заключается в том, что сжатие выполняется по блокам (размер 4K), в группах блоков размером до 128K. Таким образом, файл не хранится в одном длинном сжатом потоке; он хранится в виде разделов сжатых кусков. Когда вы меняете один байт в середине файла, большая часть файла в сжатых блоках остается неизменной. Сжатый блок и, возможно, несколько блоков вокруг него до 128 КБ копируются и повторно сжимаются, а список экстентов обновляется, как и любая другая запись COW. В современных системах сжатие 4K или 128K является тривиальным, поэтому нет снижения производительности.

Поскольку настройка карты экстентов файла является обычной частью функциональности COW, нет существенной разницы в том, являются ли некоторые из блоков 4K сжатыми или несжатыми. (На самом деле, в BTRFS файл может содержать любую комбинацию несжатых блоков, сжатых блоков ZLIB и сжатых блоков LZO, в зависимости от того, какая опция сжатия была активна в файловой системе при обновлении частей файла.)

Я не делал никаких исчерпывающих исследований или измерений; это "просто работает", как я и ожидал.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .