“Rm: tidak dapat menghapus xxx: Tidak ada ruang tersisa di perangkat” di BTRFS

17

Menjalankan OpenSuse 12.2.

Tiba-tiba partisi root tampak penuh (99%) tapi saya tidak bisa lagi menghapus file secara manual.

"rm: tidak dapat menghapus xxx: Tidak ada Spasi tersisa di perangkat" meskipun 450mb masih gratis menurut df. Sistem file adalah BTRFS.

Saya mencoba memeriksa FS menggunakan btrfsck tetapi tidak membantu.

Apa yang harus dilakukan?

Andreas Jung
sumber
1
Apakah Anda memiliki snapshot diaktifkan?
MadHatter
sudahkah Anda memeriksa apakah ada proses yang masih berjalan menggunakan file? (periksa dengan lsof), jika demikian, harap hentikan prosesnya dan coba hapus file itu lagi.
chocripple

Jawaban:

20

Kemungkinan besar, Anda mengalami masalah di mana BTRFS harus mengalokasikan sedikit metadata sebelum dapat menghapus file. Salah satu kelemahan BTRFS adalah penanganan kondisi di luar ruang; meningkatkan perilaku di bidang ini adalah salah satu prioritas proyek.

Salah satu saran pada wiki btrfs adalah untuk clobber file daripada menghapusnya.

#instead of this
rm -f ./some_file

# do this
true >| ./some_file

Itu akan menghapus konten file tanpa mengubah entri direktori. Setelah Anda berhasil keluar dari sudut tempat Anda berada, Anda dapat menghapus file seperti biasa. Jika itu membuat Anda kesulitan, Anda mungkin ingin melakukan remount sementara dengan nodatacowopsi, yang mematikan perilaku copy-on-write. Tapi ... tidak yakin pasti apakah itu akan membantu atau tidak.

Secara umum, meskipun: jangan menjalankan sistem file BTRFS kering. Ini masih perangkat lunak pra-produksi, dan kasingnya agak kasar.

tylerl
sumber
2
Triknya juga berfungsi dengan baik untuk drive jaringan yang terpasang cifs, terima kasih!
markusN
2

Saya telah menghadapi pesan kesalahan yang sama, tetapi dalam kasus saya sistem file tidak dilaporkan sebagai lengkap:

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

Tetapi menanyakan BTRFS mengungkapkan bahwa itu memang penuh:

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

Bahkan menimpa file apa pun (seperti yang disarankan tylerl) tidak mungkin. Solusi saya ditemukan di http://marc.merlins.org/perso/btrfs/post_2014-05-04_Fixing-Btrfs-Filesystem-Full-Problems.html yang menyarankan untuk menjalankan rebalancing manual dari sistem file menggunakan btrfs balance start -dusage=55 /path/to/filesystem.

zovits mendukung GoFundMonica
sumber
0

Bagi saya, menggunakan ZFS, saya menemukan bahwa menghapus file lain membebaskan cukup ruang pada partisi ZFS, dan kemudian saya bisa menghapus file yang dimaksud.

pengguna1429980
sumber
0

Dalam kasus saya, dengan sistem file ZFS di Linux, saya bahkan tidak bisa memotong file. Menghancurkan snapshot lama melakukan trik (jika ada).

zfs destroy /path/of/snapshot

John White
sumber