4.7. プールの移行
すべてのオブジェクトをあるプールから別のプールに移行することが必要な場合があります。これは、特定のプールでは変更できないパラメーターを変更する必要がある場合などに行われます。たとえば、プールの配置グループの数を減らす必要がある場合です。
ワークロードが Ceph ブロックデバイスイメージ のみ を使用している場合は、Red Hat Ceph Storage ブロックデバイスガイド に記載されているプールの移動および移行の手順に従ってください。
Ceph ブロックデバイスを説明している移行方法は、このドキュメントに記載の移行方法よりも推奨されます。cppool を使用すると、すべてのスナップショットとスナップショット関連のメタデータが保存されないため、データの不正確なコピーが作成されます。たとえば、RBD プールをコピーしても、イメージは完全にはコピーされません。この場合、スナップは存在しないため、正しく機能しません。cppool は、一部の librados ユーザーが依存する可能性のある user_version フィールドも保存しません。
プールの移行が必要で、ユーザーのワークロードに Ceph ブロックデバイス以外のイメージが含まれている場合は、ここに記載されている手順のいずれかを続行してください。
前提条件
rados cppoolコマンドを使用する場合は、以下のとおりです。- プールへの読み取り専用アクセスが必要です。
-
このコマンドは、librados によって消費される RBD イメージとそのスナップおよび
user_versionがない場合にのみ使用してください。
- ローカルドライブの RADOS コマンドを使用する場合は、十分なクラスター領域が利用可能であることを確認してください。プールのレプリケーション係数に従って、2 つ、3 つ、またはそれ以上のデータのコピーが存在します。
手順
方法 1 - 推奨される直接的な方法
rados cppool コマンドを使用してすべてのオブジェクトをコピーします。
コピー中はプールへの読み取り専用アクセスが必要です。
構文
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
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
例
[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
[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
方法 2 - ローカルドライブを使用する方法
rados exportおよびrados importコマンドと一時ローカルディレクトリーを使用して、エクスポートされたすべてのデータを保存します。構文
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
ceph osd pool create NEW_POOL PG_NUM [ <other new pool parameters> ] rados export --create SOURCE_POOL FILE_PATH rados import FILE_PATH NEW_POOLCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例
[ceph: root@host01 /]# ceph osd pool create pool1 250 [ceph: root@host01 /]# rados export --create pool2 <path of export file> [ceph: root@host01 /]# rados import <path of export file> pool1
[ceph: root@host01 /]# ceph osd pool create pool1 250 [ceph: root@host01 /]# rados export --create pool2 <path of export file> [ceph: root@host01 /]# rados import <path of export file> pool1Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 必須。ソースプールへのすべての I/O を停止します。
必須。変更されたすべてのオブジェクトを再同期します。
構文
rados export --workers 5 SOURCE_POOL FILE_PATH rados import --workers 5 FILE_PATH NEW_POOL
rados export --workers 5 SOURCE_POOL FILE_PATH rados import --workers 5 FILE_PATH NEW_POOLCopy to Clipboard Copied! Toggle word wrap Toggle overflow 例
[ceph: root@host01 /]# rados export --workers 5 pool2 <path of export file> [ceph: root@host01 /]# rados import --workers 5 <path of export file> pool1
[ceph: root@host01 /]# rados export --workers 5 pool2 <path of export file> [ceph: root@host01 /]# rados import --workers 5 <path of export file> pool1Copy to Clipboard Copied! Toggle word wrap Toggle overflow