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


17

OpenSuse 12.2の実行

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

「rm:xxxを削除できません:デバイスにスペースが残っていません」が、dfによれば450mbはまだ無料です。ファイルシステムはBTRFSです。

btrfsckを使用してFSをチェックしようとしましたが、役に立ちませんでした。

何をすべきか?


1
スナップショットが有効になっていますか?
MadHatter

ファイルを使用してまだ実行中のプロセスがあるかどうかを確認しましたか?(lsofで確認してください)、そうである場合は、プロセスを停止して、ファイルの削除を再試行してください。
chocripple

回答:


20

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

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

#instead of this
rm -f ./some_file

# do this
true >| ./some_file

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

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


2
このトリックは、cifsでマウントされたネットワークドライブでもうまく機能します、ありがとう!
markusN

2

私は同じエラーメッセージに直面しましたが、私の場合、ファイルシステムはフルとして報告されませんでした:

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


0

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


0

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

zfs destroy /path/of/snapshot

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.