BTRFS troppo spazio ocupato

Discussioni relative a Debian e Linux

BTRFS troppo spazio ocupato

Messaggioda sirio81 » 26/02/2018, 10:59

In passato ho avuto un problema con btrfs poiché, a distanza di tempo, occupava molto spazio per i metadati.
(Trovate qua il post).
Facendo la pulizia dei metadati, avevo risolto il problema.
La quantità di metadati utilizzata si vedeva tramite il comando 'btrfs filesystem df'.

Ebbene, ora ho un problema simile: non mi tornano i conti con lo spazio che dovrebbe essere occupato.
Questa volta però, non sono i metadati a portare via spazio.

Codice: Seleziona tutto
backup   180G
win2016_files   130G
stima snapshot 6G
archivio   40G
TOT   356G
occupta (df -h)   638G
[b]Differenza   282G[/b]


Secondo i miei calcoli, ho un'incongruenza di 282G circa.

La parte difficile è stimare la quantità di dati presente negli snapshot btrfs.
Per fare questa stima, mi sono basato sul log di rsync corrispondente:
(copio dati da un'altro server tramite rsync e poi faccio lo snapshot, ogni giorno).

Seguono i dettagli:

Codice: Seleziona tutto
root@cubo-ats:~# df -h /mnt/dati
File system            Dim. Usati Dispon. Uso% Montato su
/dev/mapper/vg00-dati  919G  638G    280G  70% /mnt/dati

root@host:~# btrfs filesystem df /mnt/dati
Data, single: total=916.32GiB, used=636.59GiB
System, single: total=32.00MiB, used=104.00KiB
Metadata, single: total=2.00GiB, used=980.65MiB
GlobalReserve, single: total=328.00MiB, used=0.00B

root@host:/mnt/dati# ls -lh
totale 0
drwxr-xr-x 1 root     root     314 gen 31 15:28 archivio
drwxr-xr-x 1 root     root      14 gen 11 11:32 backup
drwxr-xr-x 1 www-data www-data 422 set 26 10:29 cloud
drwx------ 1 root     root       0 feb 24  2014 lost+found
drwxr-xr-x 1 root     root      62 gen 31 16:27 win2016_files
drwxr-xr-x 1 root     root      62 gen 31 16:27 win2016_files.20180214221203
drwxr-xr-x 1 root     root      62 gen 31 16:27 win2016_files.20180215221214
drwxr-xr-x 1 root     root      62 gen 31 16:27 win2016_files.20180216221333
drwxr-xr-x 1 root     root      62 gen 31 16:27 win2016_files.20180217221313
drwxr-xr-x 1 root     root      62 gen 31 16:27 win2016_files.20180219221815
drwxr-xr-x 1 root     root      62 gen 31 16:27 win2016_files.20180220221141
drwxr-xr-x 1 root     root      62 gen 31 16:27 win2016_files.20180221221148
drwxr-xr-x 1 root     root      62 gen 31 16:27 win2016_files.20180222221223
drwxr-xr-x 1 root     root      62 gen 31 16:27 win2016_files.20180223221235
drwxr-xr-x 1 root     root      62 gen 31 16:27 win2016_files.20180224221245

root@host:/mnt/dati# du -sh archivio/ backup/ win2016_files | sort -rh
184G    backup/
130G    win2016_files
40G     archivio/

rsync log
Total bytes sent: 756.34M
Total bytes sent: 12.62M
Total bytes sent: 763.58M
Total bytes sent: 763.58M
Total bytes sent: 122.53M
Total bytes sent: 796.59M
Total bytes sent: 796.59M
Total bytes sent: 1.76M
Total bytes sent: 845.87M
Total bytes sent: 845.87M
TOT 6G approssimando per eccesso


Cosa ne pensate?

Debian 8.10
Kernel 3.16.0-5-amd64
btrfs-tools 3.17-1
sirio81
Hero Member
Hero Member
 
Messaggi: 1056
Iscritto il: 13/02/2006, 5:04

Re: BTRFS troppo spazio ocupato

Messaggioda sirio81 » 13/03/2018, 12:35

Riporto la situazione ad oggi:

656G usati (df -h)
450G usati (du -sh)
10G stimati snapshot
196G incongruenza

Provo ad aggiornare il kernel e btrfs-progs con i repository backports di jessie.
sirio81
Hero Member
Hero Member
 
Messaggi: 1056
Iscritto il: 13/02/2006, 5:04

Re: BTRFS troppo spazio ocupato

Messaggioda sirio81 » 14/03/2018, 22:16

Ho contatto la lista linux-btrfs@vger.kernel.org e ho ottenuto questi du link come rierimento.


https://www.spinics.net/lists/linux-btrfs/msg75176.html
https://www.spinics.net/lists/linux-btrfs/msg75101.html

In particolare ho trovato

* `df` calls `statvfs` to get it's data, which tries to count physical allocation accounting for replication profiles. In other words, data in chunks with the dup, raid1, and raid10 profiles gets counted twice, data in raid5 and raid6 chunks gets counted with a bit of extra space for the parity, etc.


* `btrfs fi df` looks directly at the filesystem itself and counts how much space is available to each chunk type in the `total` values and how much space is used in each chunk type in the `used` values, after replication. If you add together the data used value and twice the system and metadata used values, you get the used value reported by regular `df` (well, close to it that is, `df` rounds at a lower precision than `btrfs fi df` does).


* `du` scans the directory tree and looks at the file allocation values returned form `stat` calls (or just looks at file sizes if you pass the `--apparent-size` flag to it). Like `btrfs fi df`, it reports values after replication, it has a couple of nasty caveats on BTRFS, namely that it will report sizes for natively compressed files _before_ compression, and will count reflinked blocks once for each link.


Comunque quasi 200G di differenza mi sembrano tanti.
sirio81
Hero Member
Hero Member
 
Messaggi: 1056
Iscritto il: 13/02/2006, 5:04


Torna a Generale

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti