"Rm: impossibile rimuovere xxx: nessuno spazio lasciato sul dispositivo" su BTRFS


17

Esecuzione di OpenSuse 12.2.

Improvvisamente la partizione di root sembra essere piena (99%) ma non riesco più a rimuovere i file manualmente.

"rm: impossibile rimuovere xxx: nessuno spazio lasciato sul dispositivo" sebbene 450mb siano ancora liberi secondo df. Il filesystem è BTRFS.

Ho provato a controllare il FS usando btrfsck ma non mi è stato d'aiuto.

Cosa fare?


1
Hai le istantanee abilitate?
MadHatter,

hai controllato se c'è qualche processo ancora in esecuzione utilizzando il file? (verifica con lsof), in tal caso, interrompi il processo e prova a rimuovere nuovamente il file.
Chocripple,

Risposte:


20

Molto probabilmente, stai riscontrando un problema in cui BTRFS deve allocare un po 'di metadati prima di poter rimuovere il file. Uno dei punti deboli di BTRFS è la gestione della condizione di spazio esterno; migliorare il comportamento in questo settore è una delle priorità del progetto.

Un suggerimento sul wiki di btrfs è quello di bloccare il file invece di rimuoverlo.

#instead of this
rm -f ./some_file

# do this
true >| ./some_file

Ciò rimuoverà il contenuto del file senza modificare la voce della directory. Una volta usciti dall'angolo in cui ti trovi, puoi eliminare i file come di consueto. Se questo ti dà problemi, potresti voler rimontare temporaneamente con l' nodatacowopzione, che disattiva il comportamento di copia su scrittura. Ma ... non sono sicuro che ciò possa aiutare o no.

In generale, però: non eseguire un filesystem BTRFS a secco. È ancora un software di pre-produzione e le custodie angolari sono un po 'ruvide.


2
Il trucco funziona bene anche per un'unità di rete montata cifs, grazie!
markusN,

2

Ho riscontrato lo stesso messaggio di errore, ma nel mio caso il file system non è stato segnalato come completo:

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

Ma chiedere a BTRFS ha rivelato che era davvero pieno:

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

Anche sovrascrivere qualsiasi file (come ha suggerito Tylerl) era impossibile. La mia soluzione è stata trovata su http://marc.merlins.org/perso/btrfs/post_2014-05-04_Fixing-Btrfs-Filesystem-Full-Problems.html che consiglia di eseguire un ribilanciamento manuale del file system utilizzando btrfs balance start -dusage=55 /path/to/filesystem.


0

Per me, usando ZFS, ho scoperto che l'eliminazione di altri file ha liberato spazio sufficiente sulla partizione ZFS, e quindi sono stato in grado di eliminare i file in questione.


0

Nel mio caso, con un filesystem ZFS su Linux, non sono nemmeno riuscito a troncare il file. Distruggere vecchie istantanee ha funzionato (se presente).

zfs destroy /path/of/snapshot

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.