web-dev-qa-db-fra.com

BTRFS - est-il dangereux de défragmenter la sous-volume qui a des instantanés à l'échographie?

Si vous ouvrez la section defragment de btrfs-filesystem(8) , vous verrez l'inscription inquiétante suivante laissée par les développeurs:

Avertissement: Défragmentation de versions de noyau Linux <3.9 ou ≥ 3.14-RC2 ainsi que de versions de noyau stable Linux ≥ 3.10.31, ≥ 3.12.12 ou ≥ 3.13.4 rompre la réforme -Liens de données de vache (par exemple les fichiers copiés avec cp --reflink, instantanés ou données de duplication). Cela peut entraîner une augmentation considérable de l'utilisation de l'espace en fonction des liens refusés de Ref.

Cela semble horrible. Un point de vente de btrfs est sa capacité à créer des instantanés sans tout copier. Je crée principalement des instantanés lisonnamment.

Les fichiers d'instantanés à réadonner comptent-ils également comme des "données de vache" ou seront la déduplication de sous-volée parent survivant sans faire de l'espace disque?

8
firegurafiku

Oui, les fichiers dans un instantané de lecture réaménée comme des données de vache et contribueront à un gonflement de l'espace disque causé par la défragmentation.

Lorsque la défragmentation se produit, les données sont copiées des anciennes étendues en moins de nouvelles étendues. Les nouvelles étendues sont distinctes des anciennes étendues. Toutes les autres copies du fichier (dans les instantanés, par exemple) indiquent toujours les anciennes étendues. Par conséquent, vous avez des données gonflables.

Il y a un long fil de défragmentation de la liste de diffusion démarrer ici qui a des points intéressants.

4
Spacedog

BTRFS Defrag ne cassera pas Tout reflexion

Juste les instances particulières que vous le signalez. Donc, si vous avez la sous-volume A et instantanés S1 Et S2 De cette sous-volume A, puis exécutant de défragme sur Juste Subvolume A _ _ va briser la réflexion entre elle et les instantanés, mais S1 et S2 Partage toujours toutes les données qu'ils étaient à l'origine. Si vous prenez ensuite un troisième instantané de A, il partagera des données avec A, mais pas avec S1 Ou S2 (Car A ne partage plus les données avec S1 ou S2).

Compte tenu de ce comportement, vous avez à leur tour trois cas potentiels lorsque vous parlez d'instantanés persistants:

  1. Vous vous souciez de Minimiser l'espace utilisé, mais ne sont pas aussi inquiets pour la performance.
    [.____] Dans ce cas, la seule option est de ne pas exécuter de défragmentation du tout.
  2. Vous vous souciez de Performance, mais pas d'utilisation de l'espace. Dans ce cas, défragmenter tout.
  3. Vous vous souciez de l'utilisation de l'espace et de la performance. Dans ce cas équilibré cas, je suggérerais personnellement défragmenter que la sous-volume de la source (alors que Subvolume A dans l'explication ci-dessus), et ce faisant ainsi sur un calendrier qui coïncide avec une rotation d'instantanée. L'idée est de defragment juste avant de prendre un instantané et d'une fréquence qui donne un bon équilibre entre l'utilisation et la performance de l'espace. En règle générale, si vous prenez cette route, commencez par effectuer la défragmentation sur une base mensuelle si vous faites des instantanés quotidiens ou hebdomadaires, ou avec chaque quatrième instantané, sinon, puis ajustez l'intervalle en fonction de la manière dont cela a une incidence sur votre utilisation de l'espace.

Source: Btrfs mailinglist , comme référence par SPaCedog.

BTRFS défragment Snapshot Readonly

De mon expérience d'essai et d'erreur, BTRFS défragmentant des instantanés (pour utiliser la nouvelle compression ZSTD) a entraîné une exclusive de 100% et 0,00 octets de données partagées.

Avant btrfs defragment:

# btrfs filesystem du -s /mnt/btrfs/Backups.backupdb/d2/readonly-snapshot/
     Total   Exclusive  Set shared  Filename
   1.41GiB     6.27MiB     1.41GiB  /mnt/btrfs/Backups.backupdb/d2/readonly-snapshot/

Après btrfs defragment:

# btrfs filesystem du -s /mnt/btrfs/Backups.backupdb/d2/readonly-snapshot/
     Total   Exclusive  Set shared  Filename
   1.42GiB     1.42GiB       0.00B  /mnt/btrfs/Backups.backupdb/d2/readonly-snapshot/

Les données partagées diminue à 0,00 milliard

7
Pro Backup