ОШИБКА btrfs: ошибка во время балансировки - на устройстве не осталось места

15

В моей системе Kubuntu 12.04 не хватило места на корневом разделе, и она не загружается. Команда df -hпоказывает много свободного места (используется только 37%):

/dev/sda2        45G   17G   29G  37%

На следующей странице указано, что я должен выполнить команду balance:

https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_get_.22No_space_left_on_device.22_errors.2C_but_df_says_I.27ve_got_lots_of_space

$ sudo btrfs fi balance start -dusage=5 /mount/point

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

ERROR: error during balancing '/blah/blah/blah' - No space left on device

Я получаю ту же ошибку с:

$ sudo btrfs fi balance start -dusage=1 /mount/point

Каково правильное решение?

MountainX-для-Моника
источник

Ответы:

15

Есть способы, чтобы balanceзапустить в этой ситуации.

sudo btrfs fi show
sudo btrfs fi df /mount/point
sudo btrfs fi balance start -dusage=10 /mount/point

Если команда баланса заканчивается на «Готово, пришлось переместить 0 из XX чанков», то вам нужно увеличивать процентный параметр «dusage», пока не будет перемещен хотя бы один чанк.

если команда balance не работает с:

ERROR: error during balancing '/blah/blah/blah' - No space left on device

Вам может понадобиться удалить файлы с устройства, чтобы освободить место. Затем снова запустите команду баланса.

Однако, благодаря блогу Марка: btrfs - исправление полных проблем с файловой системой Btrfs, здесь есть еще один вариант:

Один из способов обойти это - добавить устройство (даже USB-ключ) в вашу файловую систему btrfs. Это должно позволить запустить баланс, а затем вы можете удалить устройство с помощью устройства удаления btrfs, когда баланс будет завершен. В списке также сказано, что ядро ​​3.14 может исправить некоторые проблемы с балансировкой, которые не могут делать старые ядра, поэтому сделайте это, если ваше ядро ​​старое.

MountainX-для-Моника
источник
7
Я обнаружил, что иногда мне также нужно mount -oremount,clear_cache /mountpointбыло исправить расчеты свободного пространства. (Они становятся испорченными ...)
rrauenza
1
@rrauenza, спасибо! Вы должны добавить это в качестве ответа :)
mwfearnley
0

Я попробовал все в принятом ответе и блоге Марка, включая увеличение -dusageпараметра и добавление еще одного блочного устройства, но все безрезультатно. Даже после удаления некоторых файлов и освобождения небольшого места на диске, который был заполнен, balanceне удалось завершить. Почему-то всегда казалось, что данные перемещаются на почти полный диск. В конце концов, у меня получилось ограничить балансировку до полного устройства:

btrfs balance start -ddevid=<dev_id> <path>

где dev_idможно найти с помощью:

btrfs fi show 
z7sg
источник
Ни один из них не работал
встретился
Это сломало мою систему, и том стал недоступен даже после перезагрузки системы. Я установил том с EXT4, и теперь я надеюсь, что смогу избавиться от очень чувствительной системы BTRFS, которую я считаю неудачной с большим количеством проблем проектирования.
Аль Банди
0

sudo apt-btrfs-snapshot delete-old-than-3d Удаляет снимки старше 3 дней. По мере перемещения данных моментальные снимки становятся неуместными, а фактические данные необходимо записывать в несколько мест на диске. Это удаляет снимки, относящиеся к старым данным в старых местоположениях, и освобождает эти сектора для использования снова. Я также рекомендую duperemove для дедупликации данных и экстентов в файловой системе btrfs.

D337z
источник