@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).
-
Crie arquivos esparsos vazios de qualquer tamanho. Que seja 5 terabytes:
me@wheezy:~$ truncate -s 5T ext4.sparse btrfs.sparse
-
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
-
Crie pontos de montagem:
me@wheezy:~$ mkdir ext4_mount btrfs_mount
-
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 serzlib
oulzo
)):me@wheezy:~$ sudo mount -o loop,compress=lzo -t btrfs btrfs.sparse btrfs_mount/
-
É 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
-
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
-
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
-
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.