Effacer l'espace inutilisé avec des zéros (ext3, ext4)

Comment effacer l'espace inutilisé avec des zéros? (ext3, ext4)

Je cherche quelque chose de plus intelligent que

cat /dev/zero > /mnt/X/big_zero ; sync; rm /mnt/X/big_zero 

Comme FSArchiver cherche "l'espace utilisé" et ignore le site inutilisé, mais opposé.

But: Je voudrais compresser les images de partition, il est donc fortement recommandé de remplir l'espace inutilisé avec des zéros.

Btw. Pour btrfs: Effacez l'espace inutilisé avec des zéros (btrfs)

Un tel utilitaire est zerofree .

De sa description:

Zerofree trouve les blocs non alloués, non-zéro dans un système de files ext2 ou ext3 et les remplit de zéros. Ceci est utile si le périphérique sur lequel réside ce système de files est une image disque. Dans ce cas, en fonction du type d'image disque, un utilitaire secondaire peut réduire la taille de l'image disque après l'exécution de zerofree. Zerofree exige que le système de files soit démonté ou monté en lecture seule.

La méthode habituelle pour get le même résultat (mettre à zéro les blocs inutilisés) consiste à exécuter "dd" pour créer un file plein de zéros qui occupe tout l'espace libre sur le disque, puis supprimez ce file. Cela présente de nombreux inconvénients, ce qui atténue zerofree:

  • c'est lent
  • cela fait que l'image disque (temporairement) croît à son maximum
  • il utilise temporairement tout l'espace disponible sur le disque, de sorte que d'autres actions d'écriture simultanées peuvent échouer.

Zerofree a été écrit pour être exécuté à partir de systèmes GNU / Linux installés en tant que systèmes d'exploitation invités à l'intérieur d'une machine virtuelle. Si ce n'est pas votre cas, vous n'avez certainement pas besoin de ce package.

MISE À JOUR # 1

La description du packageage .deb contient le paragraphe suivant, ce qui impliquerait que cela fonctionnerait bien avec ext4 aussi.

Description: blocs libres de zéro à partir des filesystems ext2, ext3 et ext4 Zerofree trouve les blocs non alloués avec un contenu de valeur non nulle dans un système de files ext2, ext3 ou ext4 et les remplit de zéros …

Résumé des methods (comme mentionné dans cette question et ailleurs) pour effacer l'espace inutilisé sur ext2 / ext3 / ext4:

Réduction de l'espace inutilisé

Le système de files n'est pas monté

  • Si le «disque» sur lequel votre système de files est installé est léger (par exemple un SSD moderne prenant en charge TRIM, un file VM dont le format prend en charge la densité, etc.) et que votre kernel le comprend, vous pouvez utiliser e2fsck -E discard src_fs pour le e2fsck -E discard src_fs espace inutilisé (nécessite e2fsprogs 1.42.2 ou supérieur).
  • Utiliser zerofree pour écrire explicitement des zéros sur les blocs inutilisés.
  • Utiliser e2image -rap src_fs dest_fs pour ne copyr que les blocs en cours d'utilisation (le nouveau système de files devrait être sur un disque "zero'd", nécessite e2fsprogs 1.42.9 ou supérieur).

Le système de files est monté

  • Si le disque sur lequel votre système de files est installé est léger (par exemple un SSD moderne prenant en charge TRIM, un file VM dont le format prend en charge la densité etc.), votre kernel le comprend et enfin le pilote de système de files ext supporte fssortingm /mnt/fs/ pour requestr au système de files de supprimer l'espace inutilisé.
  • Utilisation de cat /dev/zero > /mnt/fs/zeros; sync; rm /mnt/fs/zeros cat /dev/zero > /mnt/fs/zeros; sync; rm /mnt/fs/zeros cat /dev/zero > /mnt/fs/zeros; sync; rm /mnt/fs/zeros ( sfill de secure-delete utilise cette technique). Cette méthode est inefficace, non recommandée par Ted Ts'o (auteur de ext4), peut ne pas mettre à zéro certaines choses et peut ralentir les futures fscks.

Avoir le système de files démonté donnera de meilleurs résultats que le faire monter. La mise au rebut a tendance à être la méthode la plus rapide lorsque beaucoup d'espace précédemment utilisé doit être mis à zéro, mais en utilisant zerofree après le process de rejet peut parfois être un peu plus petit (selon la mise en œuvre du disque).

Rendre le file image plus petit

L'image est dans un format VM dédié

Vous devrez utiliser un outil d'image disque approprié (tel que qemu-img convert src_image dst_image ) pour permettre à l'espace mis à zéro d'être récupéré et pour permettre au file représentant l'image de devenir plus petit.

L'image est un file brut

L'une des techniques suivantes peut être utilisée pour rendre le file clairsemé (de sorte que le passage à zéro prend de la place):

  • cp --sparse=always src_image dst_image .
  • fallocate -d src_image (nécessite util-linux v2.25 ou supérieur).

Ces jours-ci, il pourrait être plus facile d'utiliser un outil comme virt-sparsify pour faire ces étapes et plus d'un seul coup.

Sources

sfill from secure-delete peut le faire et plusieurs autres travaux connexes.

par exemple

 sfill -l -l -z /mnt/X 

MISE À JOUR # 1

Il existe un tree source qui semble être utilisé par le projet ArchLinux sur github qui contient la source de sfill qui est un outil inclus dans le package Secure-Delete.

Aussi, une copy de la page man de sfill est ici:

Si vous avez e2fsprogs 1.42.9, vous pouvez utiliser e2image pour créer l'image de la partition sans l'espace libre, afin que vous puissiez passer l'étape de réduction à zéro.

Vous pouvez utiliser sfill . C'est une meilleure solution pour les volumes minces.