web-dev-qa-db-ja.com

BTRFSで「rm:xxxを削除できません:デバイスにスペースが残っていません」

OpenSuse 12.2の実行.

突然、ルートパーティションがいっぱい(99%)になりましたが、手動でファイルを削除できなくなりました。

dfによると、「rm:xxxを削除できません:デバイスに空き領域がありません」と450 mbはまだ空いています。ファイルシステムはBTRFSです。

FSをbtrfsckを使用して確認してみましたが、役に立ちませんでした。

何をすべきか?

17
Andreas Jung

ほとんどの場合、BTRFSがファイルを削除する前に少しのメタデータを割り当てる必要があるという問題に直面しています。 BTRFSの弱点の1つは、スペース不足状態の処理です。この分野での行動の改善は、プロジェクトの優先事項の1つです。

Btrfs wikiでの提案の1つは、ファイルを削除するのではなく、上書きすることです。

#instead of this
rm -f ./some_file

# do this
true >| ./some_file

これにより、ディレクトリエントリを変更せずにファイルの内容が削除されます。あなたが今いる場所の外に出たら、通常のようにファイルを削除できます。問題が発生する場合は、nodatacowオプションを使用して一時的に再マウントすると、コピーオンライト動作がオフになります。しかし...それが役立つかどうかは確かではありません。

ただし、一般的には、BTRFSファイルシステムをドライで実行しないでください。それはまだプリプロダクションソフトウェアであり、コーナーケースは少し荒いです。

20
tylerl

同じエラーメッセージが表示されましたが、私の場合、ファイルシステムがいっぱいであると報告されませんでした。

user@Host:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       2.8G  2.0G  618M  77% /

しかし、BTRFSに尋ねると、実際にいっぱいであることが明らかになりました。

user@Host:/# btrfs fi show
Label: none  uuid: {UUID redacted because reasons}
        Total devices 1 FS bytes used 1.92GiB
        devid    1 size 2.79GiB used 2.79GiB path /dev/sda3

(tylerlが示唆したように)ファイルを上書きすることさえ不可能でした。私の解決策は http://marc.merlins.org/perso/btrfs/post_2014-05-04_Fixing-Btrfs-Filesystem-Full-Problems.html にあります。これは、 btrfs balance start -dusage=55 /path/to/filesystemを使用したファイルシステム。

2
zovits

私の場合、LinuxのZFSファイルシステムでは、ファイルを切り捨てることさえできませんでした。古いスナップショットを破棄することでトリックがありました(存在する場合)。

zfs destroy /path/of/snapshot

0
John White

私にとって、ZFSを使用して、他のファイルを削除するとZFSパーティションの十分なスペースが解放され、問題のファイルを削除できることがわかりました。

0
user1429980