btrfs и недостающее свободное место

8

Я преобразовал свой раздел ext4 в btrfs и после этого удалил подобъем сохранения. Затем я включил сжатие (lzo) файловой системы в файле fstab, и пока все правильно.

Затем я принудительно сжал все файлы с помощью команды дефрагментации с параметром -c, чтобы новое сжатие применялось ко всем файлам.

При этом я заметил, что мой ssd полностью заполнен - ​​до того, как у меня появилось 6 гигабайт свободного места. Нет, у меня ничего не осталось.

easteregg@x201s:~$ btrfs fi df /
Data: total=50.00GB, used=49.17GB
System: total=32.00MB, used=4.00KB
Metadata: total=24.50GB, used=9.86GB

а также

easteregg@x201s:~$ df -ha
Filesystem        Size  Used Avail Use% Mounted on
/dev/sda1          75G   60G  852M  99% /

А сейчас. Как я могу вернуть себе свободное место. Я ожидал получить больше места из-за сжатия lzo. И сейчас!

Фс правильно смонтирован.

easteregg@x201s:~$ mount
/dev/sda1 on / type btrfs (rw,noatime,ssd,compress=lzo)

Есть идеи, как решить эту проблему?

пасхальное яйцо
источник
Теперь у меня есть суть: вы не можете сделать онлайн-балансировку. Это объясняет, почему у меня ничего не получалось. Поэтому я просто загрузил свою спасательную систему и выполнил перебалансировку всего диска, а затем выполнил команду дефрагментации с включенным сжатием. Теперь у меня есть около 17 концертов свободного места! приятно :)
easteregg
1
Рекомендуется хранить только минимальный набор снимков и удалять ненужные, чтобы избежать потери места на томе, поскольку со временем btrfs является файловой системой копирования при записи, все больше и больше блоков данных будут изменены, делая снимки, занимающие все больше места на диске.
Терри Ван
2
Смотрите также этот вопрос , который имеет подробное объяснение и полезные комментарии.
Игнис

Ответы:

8

Я знаю, что этот вопрос старый, но на сегодняшний день команда balance решает эту проблему:

Во время конвертации много места будет покрыто, чтобы переместить вещи в него. Как только он выделен, он больше не будет отображаться как «свободный» или «нераспределенный». Чтобы это исправить, просто начните баланс

btrfs balance start "path"

Вы также можете указать команду balance, чтобы балансировать только порции, которые используются для определенного процента - например, 0%, что будет означать, что порции пусты:

btrfs balance start "path" -dusage=0 -musage=0

Параметр -d означает параметры для данных. Параметр -m означает параметры для метаданных.

играть с командой баланса, это должно помочь.

wuppi
источник
5

Посмотрите на вывод из btrfs fi df:

Data: total=50.00GB, used=49.17GB
System: total=32.00MB, used=4.00KB
Metadata: total=24.50GB, used=9.86GB

totalЧасть является выделенным пространством, в то время как usedэто фактически используется Btrfs. Разница между totalиused (около 15 ГБ) - это недостающее место. Как видите, он уже был выделен для блоков метаданных.

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

Как всегда, используйте резервные копии.

ramslök
источник