4 votes

Fichier Docker volumineux et comportement `tar'.

Quand j'ai fait une sauvegarde sur mon système Linux avec tar -czv J'ai remarqué que le processus est bloqué très longtemps à /var/lib/docker/devicemapper/devicemapper/data (bien plus long que ce que devrait prendre une copie de toutes mes images et conteneurs), alors que le fichier résultat ne grossit pas.

En vérifiant cette taille de fichier avec ls -lh il me sort un 100G taille sur un 20G partition. Quel genre de fichier est-ce et qu'est-ce que tar fait ici ?

4voto

Kamil Maciorowski Points 57004

On dirait que vous avez un fichier épars là.

Un fichier épars est un type de fichier informatique qui tente d'utiliser plus efficacement l'espace du système de fichiers lorsque le fichier lui-même est en grande partie vide. Pour ce faire, de brèves informations (métadonnées) représentant les blocs vides sont écrites sur le disque au lieu de l'espace "vide" réel qui constitue le bloc, ce qui permet d'utiliser moins d'espace disque. La taille complète du bloc n'est écrite sur le disque comme taille réelle que lorsque le bloc contient des données "réelles" (non vides).

Il y a cette réponse qui dit :

En /var/lib/docker/devicemapper/devicemapper Le répertoire contient les fichiers sparse loop qui contiennent toutes les autres données que docker monte.

Votre fichier se compose principalement de blocs vides (tous les zéros) et, en tant que fichier épars, il peut tenir dans votre petite partition. Apparemment, tar lit simplement tous les zéros et les traite. Ils se compressent très bien, de sorte que le fichier résultat ne s'agrandit que très peu lorsque le flux de zéros se termine.

Il existe une option de ligne de commande pour tar ce qui le rend conscient des fichiers épars. Il est décrit aquí .

-S
--sparse

Dans votre cas, ce qui suit est très important, je pense :

Lors de l'extraction ( ), de tels fichiers ont également été créés à l'endroit où les trous ont été trouvés. ( ) Envisagez d'utiliser --sparse lors des sauvegardes de systèmes de fichiers, afin d'éviter d'archiver les formes étendues des fichiers stockés de manière éparse dans le système.

Je suppose que vous n'avez pas utilisé le --sparse donc lorsqu'il s'agit d'extraire votre 100G sera créé en tant que non-sparse et il ne tiendra pas dans le fichier 20G partition.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X