web-dev-qa-db-ja.com

btrfsと不足している空き領域

Ext4パーティションをbtrfsに変換し、保存後にサブボリュームを削除しました。次に、fstabファイルでファイルシステムの圧縮(lzo)を有効にしましたが、これまでのところすべてが正しいです。

次に、パラメーター-cを指定した最適化コマンドを使用してすべてのファイルの圧縮を強制し、新しい圧縮がすべてのファイルに適用されるようにしました。

そうするうちに、6ギガバイトの空き容量がある前に、ssdが完全にいっぱいになっていることに気付きました。いいえ、何も残っていません。

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圧縮により、より多くのスペースを確保できると期待していました。そしていま!

Fsは正しくマウントされています。

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

この問題を解決する方法はありますか?

8
easteregg

私はこの質問が古いことを知っています-しかし、今日現在、balanceコマンドはこのような問題を解決しています:

変換中は、多くのスペースがすべてコーティングされ、そこにデータが移動します。割り当てられると、「無料」または「未割り当て」として表示されなくなります。これを修正するには、単にバランスを開始します

btrfs balance start "path"

また、特定のパーセンテージに使用されるチャンクのみのバランスを取るようにbalanceコマンドに指示することもできます-0%のようにチャンクが空であることを意味します。

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

パラメーター-dは、データのオプションを意味します。パラメーター-mは、メタデータのオプションを意味します。

バランスコマンドを試してみてください。

7
wuppi

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によって使用されます。 totalused(約15 GB)の違いは、不足しているスペースです。ご覧のとおり、既にメタデータブロックに割り当てられています。

私はbtrfsの趣味経験しかありませんが、ext4変換がうまくレイアウトされたbtrfsファイルシステムを作成するための最良の方法だとは思いません。幸いなことに、ファイルシステム全体のバランスを取り直して、すべての割り当てをやり直すことができます。

いつものように、バックアップを使用してください。

5
ramslök