btrfs e spazio libero mancante


8

Ho convertito la mia partizione ext4 in btrfs e dopo aver eliminato il volume secondario di salvataggio. Quindi ho abilitato la compressione (lzo) del filessystem nel file fstab e finora tutto è corretto.

Quindi ho forzato la compressione di tutti i file utilizzando il comando di deframmentazione con il parametro -c che la nuova compressione viene applicata a tutti i file.

Nel fare ciò, ho notato che il mio SSD si è riempito completamente, prima di avere 6 GB di spazio libero. No, non mi è rimasto niente.

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

e

easteregg@x201s:~$ df -ha
Filesystem        Size  Used Avail Use% Mounted on
/dev/sda1          75G   60G  852M  99% /

Così ora. Come posso recuperare il mio spazio libero. Mi aspettavo di guadagnare più spazio a causa della compressione lzo. E adesso!

La fs è montata correttamente.

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

Qualche idea su come risolvere questo problema?


Ora ho il punto: non è possibile eseguire il riequilibrio online. Questo spiega perché nulla ha funzionato per me. Quindi ho appena avviato il mio sistema di salvataggio e ho appena fatto un riequilibrio dell'intero disco e successivamente ho eseguito il comando di deframmentazione con la compressione abilitata. Ora ho circa 17 concerti di spazio libero! bello :)
easteregg,

1
Come best practice, mantieni solo un numero minimo di snapshot e rimuovi quelli non necessari per evitare di sprecare spazio sul volume, perché btrfs è un file system copia-su-scrittura, col passare del tempo, sempre più blocchi di dati verranno modificati, creando così istantanee che occupano sempre più spazio sul disco.
Terry Wang,

2
Vedi anche questa domanda , che ha una spiegazione approfondita e commenti utili.
ignis,

Risposte:


8

So che questa domanda è vecchia - ma ad oggi il comando balance risolve queste cose:

Durante la conversione molto spazio sarà rivestito per spostare roba su di esso. Una volta assegnato, non verrà più visualizzato come "libero" o "non allocato". Per risolvere questo problema è sufficiente avviare un equilibrio

btrfs balance start "path"

puoi anche dire al comando balance, di bilanciare solo blocchi, che sono usati per una certa percentuale, come lo 0%, il che significherebbe che i blocchi sono vuoti:

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

il parametro -d indica le opzioni per i dati. parametro -m indica le opzioni per i metadati.

gioca con il comando balance, dovrebbe aiutare.


5

Guarda l'output di btrfs fi df:

Data: total=50.00GB, used=49.17GB
System: total=32.00MB, used=4.00KB
Metadata: total=24.50GB, used=9.86GB

La totalparte è lo spazio allocato, mentre usedè effettivamente utilizzato da btrfs. La differenza tra totale used(circa 15 GB) è lo spazio mancante. Come puoi vedere, è già stato allocato per i blocchi di metadati.

Ho solo esperienza hobby con btrfs, ma non credo che una conversione ext4 sia il modo migliore per creare un filesystem btrfs ben strutturato. Fortunatamente, puoi riequilibrare l'intero filesystem per farlo rifare tutte le allocazioni.

Come sempre, utilizzare i backup.

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.