Recipiente com compactação embutida, que ajusta automaticamente seu tamanho

3

Eu tento encontrar uma maneira eficiente de rsync ing conteúdo de um sistema de arquivos ext4 como parte de um backup regular, mas eu considero uma compressão decente e um espaço mínimo requerido.

Eu posso usar apenas rsync e, em seguida, tar / gzip o diretório resultante, mas a compactação em si será de ordens de magnitude mais lenta do que a rsyncing anterior.

Não consigo usar squashfs e seus gostos porque são somente leitura.

Eu posso fazer uma partição de um tipo especial para esse backup, com uma compactação embutida, como btrfs ou reiser4 , mas devo criá-lo com um tamanho específico e ele não será dimensionado.

Gostaria de saber se existe alguma tecnologia de um contêiner com uma compactação embutida, que ajusta de maneira transparente e automática seu tamanho de acordo com o volume de dados, de acordo com isso?

A propósito, eu uso o Debian GNU / Linux.

    
por TranslucentCloud 29.04.2015 / 23:06

2 respostas

1

@Tetsujin me deu uma direção certa, OS X ' sparse bundles / images tem analógico no Linux e isso é arquivos esparsos .

Os arquivos esparsos aumentam à medida que os dados crescem. Eles podem conter qualquer sistema de arquivos do Linux, incluindo quaisquer variantes modernas com uma compressão embutida, como btrfs .

Apresentamos a seguir como criar uma imagem btrfs compactada e esparsa. O suporte do btrfs no Debian e seus derivados (como o Ubuntu) podem ser ativados pela instalação de pacotes btrfs-tools ( sudo apt-get install btrfs-tools ). Eu adicionei uma imagem sparsed ext4 para comparar velocidade e tamanho. Todas as operações foram realizadas no Debian 7.8 Wheezy (oldstable em 30 de abril de 2015).

  1. Crie arquivos esparsos vazios de qualquer tamanho. Que seja 5 terabytes:

    me@wheezy:~$ truncate -s 5T ext4.sparse btrfs.sparse
    
  2. Formate-os

    para ext4 :

    me@wheezy:~$ 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
    

    para btrfs :

    me@wheezy:~$ 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
    
  3. Crie pontos de montagem:

    me@wheezy:~$ mkdir ext4_mount btrfs_mount
    
  4. Monte-os. Não se esqueça da opção loop :

    ext4 :

    me@wheezy:~$ sudo mount -o loop -t ext4 ext4.sparse ext4_mount/
    

    btrfs (não se esqueça da opção compress (pode ser zlib ou lzo )):

    me@wheezy:~$ sudo mount -o loop,compress=lzo -t btrfs btrfs.sparse btrfs_mount/
    
  5. É isso aí, os sistemas de arquivos são criados e montados, aparecendo como 5 TB no sistema operacional, mas na verdade ocupam muito pouco espaço:

    df :

    me@wheezy:~$ 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 :

    me@wheezy:~$ du -h *.sparse
    4.3M    btrfs.sparse
    169M    ext4.sparse
    
  6. Para uma finalidade de teste, criei um enorme arquivo de texto de 1,3 GB com um padrão repetitivo. Será cp para os dois sistemas de arquivos recém-criados:

    ext4 :

    me@wheezy:~$ time sudo cp /store/share/bigtextfile ext4_mount/
    
    real    0m12.344s
    user    0m0.008s
    sys     0m1.708s
    

    btrfs :

    me@wheezy:~$ time sudo cp /store/share/bigtextfile btrfs_mount/
    
    real    0m3.714s
    user    0m0.016s
    sys     0m1.204s
    
  7. Como visto na etapa anterior, btrfs provou ser muito mais rápido durante uma transferência de dados altamente compressíveis, do que o bom e velho ext4 . Vamos verificar o tamanho deles:

    me@wheezy:~$ 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
    
  8. btrfs provou ser muito mais eficiente em termos de espaço. Por fim, vamos verificar os tamanhos dos arquivos esparsos também:

    me@wheezy:~$ du -h *.sparse
    50M     btrfs.sparse
    1.4G    ext4.sparse
    

É isso. Se for necessário, arquivos esparsos podem ser ampliados ainda mais. O btrfs também pode ser redimensionado on-line.

Solução legal para backups regulares de rsync . Mas não se esqueça de fazer backup desses arquivos também, pois btrfs ainda é um sistema de arquivos experimental.

Mais informações sobre o Arch Wiki: link e link

    
por 30.04.2015 / 16:20
0

Um .sparsebundle ou .sparseimage é possivelmente o que você precisa ...

Sparse bundles defined

A sparse bundle is a disk image format introduced in Mac OS X 10.5 Leopard® (.sparsebundle). Like sparse images (.sparseimage), a sparse bundle is a Read/Write format where the disk image only occupies as much space as the data it contains, up to the limit defined when it was created. Sparse bundles compact more efficiently than sparse images, meaning that it is faster to reclaim the unused free space in a sparse bundle than in an equivalent sparse image.

While both sparse images and sparse bundles contain a file system, a sparse bundle is bundle-backed, meaning that it employs a specialized, hierarchical directory structure for grouping related resources. Within a sparse bundle, the bands subdirectory contains the actual data saved within the disk image.

Under Leopard, enabling FileVault® on a Home folder converts that Home folder into an encrypted sparse bundle. Under Mac OS X 10.4 Tiger® and earlier, FileVault employed encrypted sparse images.

Sparse bundles are also employed for network-based backup disks created by Time Machine®, such as on a Time Capsule®.

Veja O Linux pode montar um normal diretório de imagens de disco de pacote esparso Time Machine? para muito mais do que eu sei sobre nix, eu sou baseado em Mac, desculpe.

    
por 30.04.2015 / 10:29