@Tetsujin mi ha dato la giusta direzione, OS X
sparse
di pacchetti/immagini ce l'hanno analog in Linux e si tratta di file sparsi.
I file sparsi crescono man mano che crescono i dati in essi contenuti. Possono contenere qualsiasi filesystem Linux, comprese eventuali varianti moderne con compressione integrata, come btrfs.
Quanto segue mostra come creare un'immagine btrfs compressa sparsa. btrfs il supporto in Debian e nelle sue derivate (come Ubuntu) può essere abilitato installando btrfs-tools pacchetti (sudo apt-get install btrfs-tools
). Ho aggiunto un ext4 sparso immagine anche per confrontare velocità e dimensioni. Tutte le operazioni sono state eseguite su Debian 7.8 Wheezy (oldstable al 30 aprile 2015).
-
Crea file sparsi vuoti di qualsiasi dimensione. Lascia che sia 5 terabyte:
[email protected]:~$ truncate -s 5T ext4.sparse btrfs.sparse
-
Formattali
a ext4 :
[email protected]:~$ mkfs.ext4 ext4.sparse
mke2fs 1.42.5 (29-Jul-2012)
<...>
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
a btrfs :
[email protected]:~$ mkfs.btrfs btrfs.sparse
WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL
WARNING! - see http://btrfs.wiki.kernel.org before using
fs created label (null) on btrfs.sparse
nodesize 4096 leafsize 4096 sectorsize 4096 size 5.00TB
Btrfs Btrfs v0.19
-
Crea punti di montaggio:
[email protected]:~$ mkdir ext4_mount btrfs_mount
-
Montali. Non dimenticare
loop
opzione:
ext4 :
[email protected]:~$ sudo mount -o loop -t ext4 ext4.sparse ext4_mount
btrfs (non dimenticare compress
opzione (può essere zlib
o lzo
)):
[email protected]:~$ sudo mount -o loop,compress=lzo -t btrfs btrfs.sparse btrfs_mount
- Ecco fatto! I file system vengono creati e montati, appaiono come 5 TB al sistema operativo, ma in realtà occupano pochissimo spazio:
df :
[email protected]:~$ df -h | grep _mount
/dev/loop0 5.0T 189M 4.8T 1% /home/a/ext4_mount
/dev/loop1 5.0T 120K 5.0T 1% /home/a/btrfs_mount
du :
[email protected]:~$ du -h *.sparse
4.3M btrfs.sparse
169M ext4.sparse
- A scopo di test ho creato un enorme file di testo da 1,3 GB con uno schema ripetitivo. Sarà
cp
'd a entrambi i file system appena creati:
ext4 :
[email protected]:~$ time sudo cp /store/share/bigtextfile ext4_mount/
real 0m12.344s
user 0m0.008s
sys 0m1.708s
btrfs :
[email protected]:~$ time sudo cp /store/share/bigtextfile btrfs_mount/
real 0m3.714s
user 0m0.016s
sys 0m1.204s
-
Come abbiamo visto nel passaggio precedente, btrfs si è rivelato molto più veloce durante il trasferimento di dati altamente comprimibili, rispetto al buon vecchio ext4 . Controlliamo in seguito le dimensioni dei filesystem:
[email protected]:~$ df -h | grep _mount /dev/loop0 5.0T 1.5G 4.8T 1% /home/a/ext4_mount /dev/loop1 5.0T 46M 5.0T 1% /home/a/btrfs_mount
-
btrfs si è rivelato molto più efficiente in termini di spazio. Infine, controlliamo anche le dimensioni dei file sparsi:
[email protected]:~$ du -h *.sparse 50M btrfs.sparse 1.4G ext4.sparse
Questo è tutto. Se necessario, i file sparsi possono essere ulteriormente ingranditi. btrfs può essere ridimensionato anche online.
Ottima soluzione per il normale rsync
backup. Ma non dimenticare di eseguire il backup di questi file anche in modo più tradizionale, dal momento che btrfs
è ancora un filesystem sperimentale .
Ulteriori informazioni su Arch Wiki:https://wiki.archlinux.org/index.php/Sparse_file e https://wiki.archlinux.org/index.php/Btrfs