btrfs ПОМИЛКА: помилка під час балансування - на пристрої не залишається місця


15

У моїй системі Kubuntu 12.04 не вистачало місця на кореневому розділі і не завантажуватиметься. Команда df -hпоказує багато доступного місця (використовується лише 37%):

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

На наступній сторінці вказується, що я повинен запустити команду балансу:

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

Яке правильне рішення?


Якщо у вас багато оперативної пам’яті та стабільне джерело живлення, ви можете використовувати тимчасовий рамбіск для додаткового місця. У нижній частині цієї статті є приклад сесії . Однак прийнята відповідь нижче - набагато простіший підхід.
joeytwiddle

Відповіді:


15

Є способи balanceзапуститись у цій ситуації.

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

Якщо команда балансу закінчується на "Готово, довелося перенести 0 з XX шматочків", тоді потрібно збільшити відсотковий параметр "dusage", поки щонайменше один шматок не буде переміщений.

якщо команда балансу не відповідає:

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

Можливо, вам потрібно буде видалити файли з пристрою, щоб звільнити місце. Потім знову запустіть команду балансу.

Однак завдяки Блогу Марка: btrfs - Виправлення повних проблем файлової системи Btrfs тут є ще один варіант:

Одним із фокусів, щоб обійти це, є додавання пристрою (навіть USB-клавіша) до вашої файлової системи btrfs. Це повинно дозволити запуск балансу, і тоді ви можете видалити пристрій із видаленням пристрою btrfs, коли баланс закінчиться. У списку також було сказано, що ядро ​​3.14 може виправити деякі проблеми з балансуванням, які старіші ядра не можуть, тому дайте знімок, якщо ваше ядро ​​старе.


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 

Жодне з них не спрацювало
Зустрів

Це розбило мою систему, і обсяг став недоступним, навіть я перезавантажив систему. Я встановив об'єм з EXT4, і тепер я сподіваюся, що зможу позбутися дуже чутливої ​​системи BTRFS, яку я вважаю провалом із великою кількістю проблем із дизайном.
Al Bundy

Я також один раз порушив обсяг свого btrfs, тому що перервав btrfs balanceпроцес. Щоб цього уникнути, я рекомендую завжди використовувати, -dusage=XXщоб забезпечити закінчення процесу протягом розумного часу. Почніть спочатку з невеликих чисел, потім з приросту (5, 10, 20, ...). Ви також можете контролювати хід існуючого довгострокового балансу, btrfs balance statusяк показано тут . (Після розбиття гучності я зміг принаймні витягнути файли btrfs restore.)
joeytwiddle

0

sudo apt-btrfs-знімок видалити-старше, ніж 3d Видаляє знімки старше 3 днів. Коли ви переміщуєте дані, дані знімків не стають на місці, а фактичні дані потрібно записувати в декількох місцях на диску. Це видаляє знімки, що стосуються старих даних у старих місцях, і звільняє ці сектори для використання знову. Я також рекомендую duperemove для видалення даних і розширень у файловій системі btrfs.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.