L'année dernière, j'avais fait un post sur les outils permmettant de récupérer l'espace disk libérée sur des lun en thin provisionnnig. Il fallait, pour cela, créer un "un gros" fichier ne contenant que des zéros, par la commande dd, par exemple.
Mais, cette procédure est un peu plus subtil sur un volume zfs compressé. En effet, lors que le volume est compressé, tous fichiers qui y sont crées sont compressés, de façon transparente, avant leur écriture sur le disk. Donc, le fichier, contenant les zéros, ne dépassera pas une certaine taille (en pratique la taille occuppée par le fichier évolue très très lentement).
Dans ce cas, l'astuce consiste à créer un sous volume, le passer en mode nom compressé, puis créer un fichier contenant des zéros et supprimer le sous volume. Suppons que le volume zfs compressé devant subir le zeroing est /testZeroing. La procédure à suivre est:
sudo zfs create testZeroing/4Zeroing : création du sub volume.
sudo udo zfs get compression testZeroing/4Zeroing : permet de vérifier que la comoression est bien active.
sudo zfs set compression=off testZeroing/4Zeroing : désactivation de la compression sur le nouveau sub volume uniquement.
dd if=/dev/zero of=- bs=1G | sudo tee /testZeroing/4Zeroing/zeroFile : création du fichier permettant de lancer thin reclaim.
Astuce : echo coucou | sudo tee FileOwnedByRoot permet d'écrire dans un fichier dont un utilisateur n'est pas propriétaire ou ne dispose de pas de droits permettant d'écrire dans ce fichier. Cette syntax est très pratique pour vider des fichiers logs sans àªtre obligé de passer un shell root.
sudo zfs destroy testZeroing/4Zeroing : supression du volume temporaire après la création du fichier et récupération de l'espace disk.