GNU/Linux >> Linux Esercitazione >  >> Linux

Contenitore con compressione incorporata, che regola automaticamente le sue dimensioni

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

  1. Crea file sparsi vuoti di qualsiasi dimensione. Lascia che sia 5 terabyte:

     [email protected]:~$ truncate -s 5T ext4.sparse btrfs.sparse
    
  2. 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
  1. Crea punti di montaggio:

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


Linux
  1. Puoi usare le ancore ^ $ con Ls?

  2. Come duplicare un file senza copiare i suoi dati con Btrfs?

  3. Gestione della memoria con struct epoll_event

  4. Avvia automaticamente i servizi nel contenitore Docker

  5. crea un img vuoto con dd in modo che i suoi settori siano di 4096byte anziché 512

Introduzione a btrfs per Linux

Come trovare applicazioni installate con dimensioni installate in Linux

Velocizzare le build di immagini del contenitore con Buildah

Scarica automaticamente i sottotitoli con VLC Media Player

Dimensione di una cartella con du

Quale sistema operativo è in esecuzione nel mio container Docker?