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 recherche "l'espace utilisé" et ignore le site inutilisé mais opposé.
Objectif: J'aimerais compresser les images de partition. Il est donc vivement recommandé de remplir de zéros les espaces inutilisés.
Btw. Pour btrfs: effacez l' espace inutilisé avec des zéros (btrfs)
filesystems
partition
backup
storage
compression
Grzegorz Wierzowiecki
la source
la source
Réponses:
Un tel utilitaire est
zerofree
.De sa description:
MISE À JOUR # 1
La description du paquet .deb contient maintenant le paragraphe suivant, ce qui implique que cela fonctionnera également avec ext4.
Autres utilisations
Une autre application de cet utilitaire consiste à compresser des images de disque qui sont une sauvegarde d’un disque réel. Un exemple typique de ceci est le vidage de la carte SD dans un BeagleBone ou un Raspberry Pi. Une fois que les espaces vides ont été mis à zéro, les images de sauvegarde peuvent être compressées plus efficacement.
la source
dd
méthode brute de la question d'origine, car cela ne fonctionne pas sur les systèmes de fichiers montés.zerofree
Astralinux (basé sur Debian)…Résumé des méthodes (mentionnées dans cette question et ailleurs) pour effacer l'espace inutilisé sur ext2 / ext3 / ext4:
Réduction de l'espace inutilisé
Le système de fichiers n'est pas monté
e2fsck -E discard src_fs
pour supprimer l'espace inutilisé (requiert e2fsprogs 1.42.2 ou supérieur).zerofree src_fs
) pour écrire explicitement des zéros sur des blocs inutilisés.e2image -rap src_fs dest_fs
pour ne copier que les blocs en cours d'utilisation (le nouveau système de fichiers doit se trouver sur un "disque" sinon mis à zéro, nécessite e2fsprogs 1.42.9 ou supérieur).Le système de fichiers est monté
fstrim /mnt/fs/
demander au système de fichiers de supprimer l'espace inutilisé.cat /dev/zero > /mnt/fs/zeros; sync; rm /mnt/fs/zeros
(sfill
from secure-delete utilise cette technique). Cette méthode est inefficace, elle n'est pas recommandée par Ted Ts'o (auteur d'ext4), peut ne pas mettre à zéro certaines choses et peut ralentir les futursfsck
s.Avoir le système de fichiers démonté donnera de meilleurs résultats que de l'avoir monté. L'élimination a tendance à être la méthode la plus rapide lorsqu'un grand nombre d'espace précédemment utilisé doit être mis à zéro, mais l'utilisation
zerofree
après le processus d'élimination peut parfois être légèrement supérieure à zéro (en fonction de la manière dont l'élimination est mise en œuvre sur le "disque").Rendre le fichier image plus petit
L'image est dans un format de VM dédié
Vous devrez utiliser un outil d'image disque approprié (tel que
qemu-img convert src_image dst_image
) pour permettre de récupérer l'espace mis à zéro et pour permettre au fichier représentant l'image de devenir plus petit.L'image est un fichier brut
Une des techniques suivantes peut être utilisée pour rendre le fichier fragmenté (les exécutions de zéro cessent donc de prendre de la place):
cp --sparse=always src_image dst_image
.fallocate -d src_image
(nécessite util-linux v2.25 ou supérieur).De nos jours, il pourrait être plus facile d'utiliser un outil tel que virt-sparsify pour effectuer ces étapes et plus encore en une fois.
Sources
zerofree
la source
sfill
de -suppression sécurisée peut faire et plusieurs autres emplois connexes.par exemple
MISE À JOUR # 1
Il existe une arborescence source qui semble être utilisée par le projet ArchLinux sur github qui contient la source pour
sfill
laquelle un outil est inclus dans le package Secure-Delete.Vous trouverez également une copie de
sfill
la page de manuel de:la source
Si vous avez la version 1.42.9 de e2fsprogs, vous pouvez utiliser
e2image
pour créer l’image de partition sans l’espace libre, afin de pouvoir ignorer l’étape de mise à zéro.la source
e2image -ar /dev/foo1 | gzip > fs.img.gz
, ou une de leurs variations. Inclure-f
à utiliser sur un fs monté.Vous pouvez utiliser
sfill
. C'est une meilleure solution pour les volumes minces.la source
si vous ne souhaitez pas recourir à des outils supplémentaires, cette méthode devrait être plus rapide que
cat /dev/zero > /mnt/fs/zeros
:la source
cat
? (Non, l'argument de taille de bloc dedd
n'aide pas)dd
plus vite. En fait, ça va probablementcat
plus vite. La taille des blocs est importante uniquement pour réduire la surcharge des appels système et pour optimiser l'utilisation du cache du processeur. Avec la surcharge système, vous entrez dans la zone des rendements décroissants. La mémoire cache commence à faire mal au-dessus, disons, 1 Mo. Et quand vous travaillez sur de vrais disques, vous êtes quand même lié aux entrées / sorties et le problème est essentiellement théorique. Essayez de le comparer vous-même.