GNU/Linux >> Znalost Linux >  >> Linux

Kontejner s vestavěnou kompresí, která automaticky upraví jeho velikost

@Tetsujin mi dal správný směr, OS X 's sparse svazky/obrázky mají analog v Linuxu a toto jsou řídké soubory.

Řídké soubory rostou s tím, jak rostou data v nich. Mohou obsahovat jakýkoli souborový systém Linux, včetně všech moderních variant s vestavěnou kompresí, jako je btrfs.

Následující text ukazuje, jak vytvořit řídce komprimovaný obraz btrfs. btrfs podporu v Debianu a jeho derivátech (jako je Ubuntu) lze povolit instalací btrfs-tools balíčky (sudo apt-get install btrfs-tools ). Přidal jsem rozptýlený ext4 obrázek také pro porovnání rychlosti a velikosti. Všechny operace byly provedeny na Debianu 7.8 Wheezy (oldstable k 30. dubnu 2015).

  1. Vytvářejte prázdné řídké soubory libovolné velikosti. Nechť je to 5 terabajtů:

     [email protected]:~$ truncate -s 5T ext4.sparse btrfs.sparse
    
  2. Naformátujte je

na 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

na 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. Vytvořte přípojné body:

     [email protected]:~$ mkdir ext4_mount btrfs_mount
    
  2. Namontujte je. Nezapomeňte na loop možnost:

ext4 :

    [email protected]:~$ sudo mount -o loop -t ext4 ext4.sparse ext4_mount

btrfs (nezapomeňte compress možnost (může být zlib nebo lzo )):

    [email protected]:~$ sudo mount -o loop,compress=lzo -t btrfs btrfs.sparse btrfs_mount
  1. To je ono! Souborové systémy jsou vytvořeny a připojeny, operačnímu systému se jeví jako 5 TB, ale ve skutečnosti zabírají velmi málo místa:

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. Pro účely testování jsem vytvořil obrovský 1,3 GB textový soubor s opakujícím se vzorem. Bude to cp 'd na oba nově vytvořené systémy souborů:

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. Jak bylo vidět v předchozím kroku, btrfs ukázalo se, že je mnohem rychlejší při přenosu vysoce komprimovatelných dat ve srovnání se starým dobrým ext4 . Poté zkontrolujeme velikosti souborových systémů:

     [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 se ukázalo být mnohem efektivnější z hlediska prostoru. Nakonec zkontrolujme také velikosti řídkých souborů:

     [email protected]:~$ du -h *.sparse
     50M     btrfs.sparse
     1.4G    ext4.sparse
    

A je to. V případě potřeby lze řídké soubory dále zvětšit. Velikost btrfs lze měnit i online.

Skvělé řešení pro běžné rsync zálohy. Ale nezapomeňte zálohovat tyto soubory také tradičněji, protože btrfs je stále experimentální souborový systém .

Další informace o Arch Wiki:https://wiki.archlinux.org/index.php/Sparse_file a https://wiki.archlinux.org/index.php/Btrfs


Linux
  1. Jak duplikovat soubor bez kopírování jeho dat pomocí Btrfs?

  2. Kontrola velikosti adresáře pomocí příkazu du v systému Linux

  3. V noci automaticky upravte jas obrazovky

  1. dělení a subvol strategie s btrfs

  2. Komprimujte soubory zip s vyšší kompresí

  3. Velikost složky s du

  1. Urychlení vytváření obrazu kontejneru pomocí Buildah

  2. Můžete použít kotvy ^ $ s Ls?

  3. Který operační systém běží v mém kontejneru Docker?