GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Container mit eingebauter Komprimierung, die seine Größe automatisch anpasst

@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.

  1. Erstellen Sie leere Sparse-Dateien beliebiger Größe. Lassen Sie es 5 Terabyte sein:

     [email protected]:~$ truncate -s 5T ext4.sparse btrfs.sparse
    
  2. 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
  1. Einhängepunkte erstellen:

     [email protected]:~$ mkdir ext4_mount btrfs_mount
    
  2. 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
  1. 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
  1. 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
  1. 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
    
  2. 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


Linux
  1. Können Sie Anker ^ $ mit Ls verwenden?

  2. Welche Dateikomprimierungssoftware für Linux bietet die höchste Größenreduzierung?

  3. Wie verwendet man Btrfs mit Komprimierung auf einer externen USB-Festplatte?

  4. Welcher Befehl in Linux [Erklärt mit Beispielen]

  5. Speicherverwaltung mit struct epoll_event

Erste Schritte mit btrfs für Linux

So finden Sie installierte Anwendungen mit installierter Größe in Linux

Container-Image-Builds mit Buildah beschleunigen

Laden Sie Untertitel automatisch mit dem VLC Media Player herunter

Größe eines Ordners mit du

Welches Betriebssystem läuft in meinem Docker-Container?