@Tetsujin hat mir die richtige Richtung gegeben, OS X
ist sparse
Bundles/Images haben analog in Linux und das sind Dateien mit geringer Dichte.
Sparse-Dateien wachsen, wenn die Daten in ihnen wachsen. Sie können jedes Linux-Dateisystem enthalten, einschließlich aller modernen Varianten mit eingebauter Komprimierung, wie z. B. btrfs.
Im Folgenden wird gezeigt, wie Sie ein komprimiertes Btrfs-Image mit geringer Dichte erstellen. btrfs Unterstützung in Debian und seinen Derivaten (wie Ubuntu) kann durch die Installation von btrfs-tools aktiviert werden Pakete (sudo apt-get install btrfs-tools
). Ich habe ein Sparsed ext4 hinzugefügt Bild auch, um Geschwindigkeit und Größe zu vergleichen. Alle Operationen wurden auf Debian 7.8 Wheezy (oldstable vom 30. April 2015) durchgeführt.
-
Erstellen Sie leere Sparse-Dateien beliebiger Größe. Lassen Sie es 5 Terabyte sein:
[email protected]:~$ truncate -s 5T ext4.sparse btrfs.sparse
-
Formatieren Sie sie
zu 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
zu 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
-
Einhängepunkte erstellen:
[email protected]:~$ mkdir ext4_mount btrfs_mount
-
Montieren Sie sie.
loop
nicht vergessen Möglichkeit:
ext4 :
[email protected]:~$ sudo mount -o loop -t ext4 ext4.sparse ext4_mount
btrfs (compress
nicht vergessen Option (kann zlib
sein oder lzo
)):
[email protected]:~$ sudo mount -o loop,compress=lzo -t btrfs btrfs.sparse btrfs_mount
- Das ist es! Dateisysteme werden erstellt und gemountet, erscheinen dem Betriebssystem als 5 TB, nehmen aber tatsächlich sehr wenig Platz ein:
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
- Zum Testen habe ich eine riesige 1,3 GB große Textdatei mit einem sich wiederholenden Muster erstellt. Es wird
cp
sein 'd zu beiden neu erstellten Dateisystemen:
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
-
Wie im vorherigen Schritt zu sehen war, btrfs erwies sich bei der Übertragung stark komprimierbarer Daten im Vergleich zum guten alten ext4 als viel schneller . Lassen Sie uns danach die Größe der Dateisysteme überprüfen:
[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 erwies sich als viel platzsparender. Lassen Sie uns zum Schluss auch die Größe der Sparse-Dateien überprüfen:
[email protected]:~$ du -h *.sparse 50M btrfs.sparse 1.4G ext4.sparse
Das ist es. Bei Bedarf können Sparse-Dateien weiter vergrößert werden. btrfs kann auch online in der Größe verändert werden.
Coole Lösung für normale rsync
Sicherungen. Aber vergessen Sie nicht, diese Dateien auch traditioneller zu sichern, seit btrfs
ist immer noch ein experimentelles Dateisystem .
Weitere Informationen im Arch-Wiki:https://wiki.archlinux.org/index.php/Sparse_file und https://wiki.archlinux.org/index.php/Btrfs