Existe-t-il un moyen de calculer la quantité d'espace que je libérerais si je supprimais un (ou plusieurs) sous-volumes sur un disque Btrfs (sans les supprimer réellement)? Je sais qu'il n'y a "actuellement aucun code qui fera le calcul pour vous" , mais comment le feriez-vous?
Je me demande aussi pourquoi ils disent que ce serait si lent? En fait, supprimer un sous-volume et poser des questions sur l'espace libre est très rapide dans mon expérience, pourquoi la même chose serait-elle beaucoup plus lente?
Réponses:
Vous devriez jeter un œil à
btrfs quota
etbtrfs qgroups
(groupes de quotas).Fondamentalement,
qgroups
faites exactement ce que vous avez demandé, ils suivent la quantité d'espace allouée par les sous-volumes. Pour activer laqgroup
fonctionnalité d'unbtrfs
système de fichiers, vous devezCependant, avant de faire cela, soyez averti que cela déclenche un recalcul complet des
qgroup
données, ce qui prendra un certain temps, en particulier pour les systèmes de fichiers volumineux avec de nombreux sous-volumes. Ce processus s'exécute de manière asynchrone en arrière-plan. Vous pouvez déjà vérifier le statut duqgroups
avecCela vous donnera une sortie comme celle-ci:
(L'avertissement de la première ligne est présent tant que la nouvelle analyse est toujours en cours.)
Btrfs crée automatiquement un
qgroup
pour chaque sous-volume. Dans ce cas, il y a trois sous-volumes avec les ID de sous-volume 4881, 7990 et 8400. La partie avant la barre oblique est le niveau duqgroup
. Chaque sousqgroup
- volume est au niveau 0. De plus, il y a une spécialeqgroup
au niveau 0 qui a toujours l'ID 5 et correspond à la racine du système de fichiers btrfs.Pour chacun,
qgroup
la sortie ci-dessus montre combien d'espace est référencé par elle. Cela signifie que le sous-volume correspondant contient des fichiers dont la taille totale est égale au nombre indiqué.Cependant, en raison des instantanés et de la nature de copie sur écriture des sous-volumes btrfs, il est possible que des fichiers soient partagés. Cela signifie que le contenu (ou en fait l'étendue) des fichiers peut être référencé par plusieurs sous-volumes. Ceci est exprimé par le deuxième chiffre qui montre combien d'espace est exclusivement alloué par chaque sous-volume et n'est partagé avec aucun autre sous-volume. Si vous supprimez un sous-volume, c'est l'espace qui sera réellement libéré.
Si vous souhaitez savoir combien d'espace serait libéré si vous supprimez plusieurs sous-volumes, vous pouvez utiliser les niveaux susmentionnés.
qgroups
sont organisés en une hiérarchie et des groupes aux niveaux supérieurs (supérieurs à 0) regroupent les informations des niveaux inférieurs.Ainsi, pour savoir combien d'espace serait libéré si les sous-volumes 4881 et 7990 (dans l'exemple ci-dessus) étaient supprimés, créez un nouveau
qgroup
(arbitrairement avec l'ID 0, mais vous pouvez choisir ce que vous voulez ici) au niveau 1 avecAttribuez ensuite le nouveau créé en
qgroup
tant que parent auqgroups
sous-volume que vous souhaitez supprimer avecCela déclenchera une nouvelle analyse des informations de quota qui peut prendre un certain temps. S'il est terminé et que vous émettez maintenant
vous obtenez une sortie comme celle-ci:
(J'ai ajouté le
-p
drapeau pour ajouter laparent
colonne à la sortie qui montre la relation parent / enfant duqgroups
.)Maintenant, la ligne avec
qgroup
1/0
vous indique combien d'espace est référencé par les deux sous-volumes que vous souhaitez supprimer et, plus important encore, elle vous indique combien d'espace est alloué par eux exclusivement . Il s'agit de la quantité d'espace qui sera libérée si vous supprimez les deux sous-volumes.Cela est dû à la nature de copie sur écriture des btrfs avec des instantanés. Si vous créez un instantané dans btrfs (normalement), toutes les données réelles du sous-volume nouvellement créé qui contient l'instantané sont partagées avec la source de l'instantané. Ce n'est que lorsqu'un fichier est modifié ou remplacé dans la source qu'il pointe vers un contenu différent (étendues). Il est donc très difficile d'évaluer la quantité d'espace qui serait réellement libérée si un sous-volume est supprimé car vous devez tenir compte de tout l'espace partagé avec d'autres sous-volumes.
la source