Migration d'un pool

Il est parfois nécessaire de migrer tous les objets d'un pool vers un autre. Cette opération est effectuée dans des cas tels que la nécessité de modifier des paramètres qui ne peuvent pas être modifiés sur un pool spécifique. Par exemple, vous avez besoin de réduire le nombre de groupes de placement d'un pool.

A propos de cette tâche

Important: Lorsqu'une charge de travail utilise uniquement des images Ceph Block Device , procédez comme suit:
Les méthodes de migration décrites pour Ceph Block Device sont plus recommandées que celles décrites ici. L'utilisation du cppool ne permet pas de conserver toutes les images instantanées et les métadonnées associées aux images instantanées, ce qui entraîne une copie infidèle des données. Par exemple, la copie d'un pool RBD ne copie pas complètement l'image. Dans ce cas, les snaps ne sont pas présents et ne fonctionneront pas correctement. Le cppool ne conserve pas non plus la zone user_version sur laquelle certains utilisateurs de librados peuvent s'appuyer.

Si la migration d'un pool est nécessaire et que vos charges de travail utilisateur contiennent des images autres que des unités par blocs Ceph, passez à l'une des procédures décrites ici.

Avant de commencer

  • Si vous utilisez la commande rados cppool :
    • Un accès en lecture seule au pool est requis.
    • N'utilisez cette commande que si vous ne disposez pas d'images RBD et de ses snaps et que user_version est consommé par les librados.
  • Si vous utilisez les commandes RADOS de l'unité locale, vérifiez que l'espace de cluster disponible est suffisant. Deux, trois ou plusieurs copies de données seront présentes par facteur de réplication de pool.

Migration directe

Copiez tous les objets à l'aide de la commande rados cppool .
Important: L'accès en lecture seule au pool est requis lors de la copie.
ceph osd pool create NEW_POOL PG_NUM [ <other new pool parameters> ]
rados cppool SOURCE_POOL NEW_POOL
ceph osd pool rename SOURCE_POOL NEW_SOURCE_POOL_NAME
ceph osd pool rename NEW_POOL SOURCE_POOL
Exemple :
[ceph : root@host01 /]# ceph osd pool create pool1 250
[ceph : root@host01 /]# rados cppool pool2 pool1
[ceph : root@host01 /]# ceph osd pool rename pool2 pool3
[ceph : root@host01 /]# ceph osd pool rename pool1 pool2

Migration via une unité locale

Procédure

  1. Utilisez les commandes rados export et rados import et un répertoire local temporaire pour sauvegarder toutes les données exportées.
    ceph osd pool create NEW_POOL PG_NUM [ <other new pool parameters> ]
    rados export --create SOURCE_POOL FILE_PATH
    rados import FILE_PATH NEW_POOL
    Exemple :
    [ceph : root@host01 /]# ceph osd pool create pool1 250
    [ceph : root@host01 /]# rados export --create pool2 <chemin du fichier d'exportation>
    [ceph : root@host01 /]# rados import <chemin du fichier d'exportation> pool1
  2. Obligatoire : Arrêtez toutes les entrées/sorties vers le pool source.
  3. Obligatoire : Resynchroniser tous les objets modifiés.
    rados export --workers 5 SOURCE_POOL FILE_PATH
    rados import --workers 5 FILE_PATH NEW_POOL
    Exemple :
    [ceph : root@host01 /]# rados export --workers 5 pool2 <chemin du fichier d'exportation>
    [ceph : root@host01 /]# rados import --workers 5 <chemin du fichier d'exportation> pool1