Конвертация ext2/ext3/ext4 в btrfs
by Bozaro on Май.23, 2011, under Без рубрики
Решил я пощупать файловую систему btrfs, в основном, чтобы пощупать сжатие и дедубликацию данных.
Первое, что пришло в голову – сконвертировать существующий раздел из ext3 в btrfs. Для конвертации выполнил штатную утилиту:
btrfs-convert /dev/mapper/LVM-DISK1
По прошествии некоторого времени конвертация была успешно завершена, но результат меня сильно озадачил: при выполнении команды df разница «размер – (использовано + доступно)» была более 100Гб при размере раздела 400Гб. То есть, было «потеряно» более 25% дискового пространства. Я нашел две причины такого поведения…
Причина 1. Резервная копия для восстановления ext3
Причина оказалась достаточно проста: утилита btrfs-convert при изменении файловой системы, сохраняет метаданные ext3 для возможности отката. То есть, после конвертации в файловой системе уже будет один снимок – данные на момент конвертации.
В этом легко убедиться, если выполнить команду вида:
btrfs subvolume list /mnt/disk1/
Для удаления снимка можно воспользоваться командой:
btrfs subvolume delete /mnt/disk1/ext2_saved
После этого кол-во свободного места неторопливо поползло вверх.
Причина 2. Не оптимальная структура файловой системы
После выполнения команды:
btrfs fi df /mnt/disk1/
Я обратил внимание на безумный размер метаданных – их меньше чем данных всего раза в четыре.
После перестроения дерева командой:
btrfs fi balance /mnt/disk1/
Кол-во метаданных уменьшилось до 1Гб, а кол-во «потерянного» места – до 4Гб.