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.
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:
e2fsck -E discard src_fs
pour le e2fsck -E discard src_fs
espace inutilisé (nécessite e2fsprogs 1.42.2 ou supérieur). 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). fssortingm /mnt/fs/
pour requestr au système de files de supprimer l'espace inutilisé. 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).
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'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.
sfill
from secure-delete peut le faire et plusieurs autres travaux connexes.
par exemple
sfill -l -l -z /mnt/X
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.