web-dev-qa-db-ja.com

btrfsエラー:バランシング中のエラー-デバイスにスペースが残っていません

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

適切なソリューションは何ですか?

16
MountainX

この状況でbalanceを実行する方法はいくつかあります。

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

バランスコマンドが「完了、XXチャンクから0を再配置する必要があった」で終了する場合は、少なくとも1つのチャンクが再配置されるまで、「dusage」パーセンテージパラメータを増やす必要があります。

バランスコマンドが失敗した場合:

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

スペースを確保するために、デバイスからファイルを削除する必要がある場合があります。次に、バランスコマンドを再度実行します。

しかし、おかげで Marcのブログ:btrfs-Btrfsファイルシステムの完全な問題の修正 ここに別のオプションがあります:

これを回避する1つのトリックは、btrfsファイルシステムにデバイスを追加することです(USBキーでも可能です)。これによりバランスが開始され、バランスが完了したらbtrfs device deleteを使用してデバイスを削除できます。カーネル3.14は古いカーネルでは解決できないいくつかのバランスの問題を修正できることもリストに記載されているので、カーネルが古い場合は試してみてください。

15
MountainX

Sudo apt-btrfs-snapshot delete-older-than 3d 3日より古いスナップショットを削除します。データを移動すると、スナップショットデータが不正確になり、実際のデータをドライブの複数の場所に書き込む必要があります。これにより、古い場所にある古いデータに関連するスナップショットが削除され、それらのセクターが解放されて再び使用できるようになります。 bperfsファイルシステムのデータとエクステントを重複排除するために、duperemoveもお勧めします。

0
D337z

-dusageパラメータのインクリメントや別のブロックデバイスの追加など、受け入れられた回答とMarcのブログのすべてを試しましたが、すべて失敗しました。一部のファイルを削除してディスクの空き容量を増やした後でも、balanceは完了できませんでした。何らかの理由で、それは常にほぼフルのディスクにデータを移動しているように見えました。結局、私にとってうまくいったことは、デバイス全体にバランスを制限することでした:

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

dev_idは次のようにして見つけることができます:

btrfs fi show 
0
z7sg