@Tetsujin m'a donné la bonne direction, OS X
est sparse
bundles/images ont analog sous Linux et ce sont des fichiers clairsemés.
Les fichiers épars grandissent à mesure que les données qu'ils contiennent augmentent. Ils peuvent contenir n'importe quel système de fichiers Linux, y compris toutes les variantes modernes avec compression intégrée, telles que btrfs.
Ce qui suit montre comment créer une image btrfs compressée clairsemée. btrfs le support dans Debian et ses dérivés (comme Ubuntu) peut être activé par l'installation de btrfs-tools forfaits (sudo apt-get install btrfs-tools
). J'ai ajouté un ext4 clairsemé image ainsi pour comparer la vitesse et la taille. Toutes les opérations ont été effectuées sur Debian 7.8 Wheezy (ancienne version au 30 avril 2015).
-
Créez des fichiers clairsemés vides de n'importe quelle taille. Soit 5 téraoctets :
[email protected]:~$ truncate -s 5T ext4.sparse btrfs.sparse
-
Formatez-les
vers 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
à 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
-
Créer des points de montage :
[email protected]:~$ mkdir ext4_mount btrfs_mount
-
Montez-les. N'oubliez pas
loop
choix :
ext4 :
[email protected]:~$ sudo mount -o loop -t ext4 ext4.sparse ext4_mount
btrfs (n'oubliez pas compress
option (peut être zlib
ou lzo
)):
[email protected]:~$ sudo mount -o loop,compress=lzo -t btrfs btrfs.sparse btrfs_mount
- C'est tout ! Les systèmes de fichiers sont créés et montés, apparaissent comme 5 To pour le système d'exploitation, mais occupent en réalité très peu d'espace :
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
- A des fins de test, j'ai créé un énorme fichier texte de 1,3 Go avec un motif répétitif. Ce sera
cp
'd aux deux systèmes de fichiers nouvellement créés :
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
-
Comme on l'a vu à l'étape précédente, btrfs s'est avéré beaucoup plus rapide lors d'un transfert de données hautement compressibles, par rapport au bon vieux ext4 . Vérifions ensuite la taille des systèmes de fichiers :
[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
-
btrfs s'est avéré beaucoup plus économe en espace. Enfin, vérifions également la taille des fichiers fragmentés :
[email protected]:~$ du -h *.sparse 50M btrfs.sparse 1.4G ext4.sparse
C'est ça. Si nécessaire, les fichiers épars peuvent être encore agrandis. btrfs peut également être redimensionné en ligne.
Solution cool pour rsync
ordinaire sauvegardes. Mais n'oubliez pas de sauvegarder ces fichiers de manière plus traditionnelle également, depuis btrfs
est toujours un système de fichiers expérimental .
Plus d'informations sur Arch Wiki :https://wiki.archlinux.org/index.php/Sparse_file et https://wiki.archlinux.org/index.php/Btrfs