1.3. Ceph OSD
Red Hat Ceph Storage クラスターが稼働している場合は、ランタイム時に OSD をストレージクラスターに追加できます。
Ceph OSD は、通常 1 つのストレージドライブおよびノード内の関連付けられたジャーナル用に 1 つの ceph-osd
デーモンで設定されます。ノードに複数のストレージドライブがある場合は、ドライブごとに 1 つの ceph-osd
デーモンをマッピングします。
Red Hat は、クラスターの容量を定期的に確認して、ストレージ容量の最後に到達するかどうかを確認することを推奨します。ストレージクラスターが ほぼ完全
の比率に達すると、1 つ以上の OSD を追加してストレージクラスターの容量を拡張します。
Red Hat Ceph Storage クラスターのサイズを縮小したり、ハードウェアを置き換える場合は、ランタイム時に OSD を削除することも可能です。ノードに複数のストレージドライブがある場合には、そのドライブ用に ceph-osd
デーモンのいずれかを削除する必要もあります。通常、ストレージクラスターの容量を確認して、容量の上限に達したかどうかを確認することが推奨されます。ストレージクラスターが ほぼ完全
の比率ではないことを OSD を削除する場合。
OSD を追加する前に、ストレージクラスターが 完全な
比率を超えないようにします。ストレージクラスターが ほぼ完全な
比率に達した後に OSD の障害が発生すると、ストレージクラスターが 完全な
比率を超過する可能性があります。Ceph は、ストレージ容量の問題を解決するまでデータを保護するための書き込みアクセスをブロックします。完全な
比率の影響を考慮せずに OSD を削除しないでください。
1.3.1. Ceph OSD ノードの設定
同様に、Ceph OSD とサポートするハードウェアを、OSD を使用するプールのストレージストラテジーとして設定する必要があります。Ceph は、一貫性のあるパフォーマンスプロファイルを確保するために、プール全体でハードウェアを統一します。最適なパフォーマンスを得るには、同じタイプまたはサイズのドライブのある CRUSH 階層を検討してください。詳細は、Storage Strategiesを参照してください。
異なるサイズのドライブを追加する場合は、それに応じて重みを調整しなければならない場合があります。OSD を CRUSH マップに追加する場合は、新規 OSD の重みを考慮してください。ハードドライブの容量は、1 年あたり約 40% 増加するため、新しい OSD ノードはストレージクラスターの古いノードよりも大きなハードドライブを持つ可能性があります。つまり、重みが大きくなる可能性があります。
新規インストールを実行する前に、Installation Guide for Red Hat Enterprise Linux または UbuntuのRequirements for Installing Red Hat Ceph Storageの章を参照してください。
1.3.2. コンテナーの OSD ID のドライブへのマッピング
場合によっては、コンテナー化された OSD が使用しているドライブを特定する必要がある場合があります。たとえば、OSD に問題がある場合には、ドライブのステータスを検証するために使用するドライブを把握しなければならない場合があります。また、コンテナー化されていない OSD の場合は、OSD ID を参照して開始および停止しますが、コンテナー化された OSD を開始および停止するには、使用するドライブを参照する必要があります。
前提条件
- コンテナー化環境で実行中の Red Hat Ceph Storage クラスター
-
コンテナーホストへの
root
アクセス権限があること。
手順
コンテナー名を見つけます。たとえば、
osd.5
に関連付けられたドライブを特定するには、osd.5
が実行中のコンテナーノードでターミナルを開き、docker ps
を実行してすべてのコンテナーを一覧表示します。例
[root@ceph3 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3a866f927b74 registry.access.redhat.com/rhceph/rhceph-3-rhel7:latest "/entrypoint.sh" About an hour ago Up About an hour ceph-osd-ceph3-sdd 91f3d4829079 registry.access.redhat.com/rhceph/rhceph-3-rhel7:latest "/entrypoint.sh" 22 hours ago Up 22 hours ceph-osd-ceph3-sdb 73dfe4021a49 registry.access.redhat.com/rhceph/rhceph-3-rhel7:latest "/entrypoint.sh" 7 days ago Up 7 days ceph-osd-ceph3-sdf 90f6d756af39 registry.access.redhat.com/rhceph/rhceph-3-rhel7:latest "/entrypoint.sh" 7 days ago Up 7 days ceph-osd-ceph3-sde e66d6e33b306 registry.access.redhat.com/rhceph/rhceph-3-rhel7:latest "/entrypoint.sh" 7 days ago Up 7 days ceph-mgr-ceph3 733f37aafd23 registry.access.redhat.com/rhceph/rhceph-3-rhel7:latest "/entrypoint.sh" 7 days ago Up 7 days ceph-mon-ceph3
docker exec
を使用して、直前の出力から OSD コンテナー名上でceph-volume lvm list
を実行します。例
[root@ceph3 ~]# docker exec ceph-osd-ceph3-sdb ceph-volume lvm list ====== osd.5 ======= [journal] /dev/journals/journal1 journal uuid C65n7d-B1gy-cqX3-vZKY-ZoE0-IEYM-HnIJzs osd id 1 cluster fsid ce454d91-d748-4751-a318-ff7f7aa18ffd type journal osd fsid 661b24f8-e062-482b-8110-826ffe7f13fa data uuid SlEgHe-jX1H-QBQk-Sce0-RUls-8KlY-g8HgcZ journal device /dev/journals/journal1 data device /dev/test_group/data-lv2 devices /dev/sda [data] /dev/test_group/data-lv2 journal uuid C65n7d-B1gy-cqX3-vZKY-ZoE0-IEYM-HnIJzs osd id 1 cluster fsid ce454d91-d748-4751-a318-ff7f7aa18ffd type data osd fsid 661b24f8-e062-482b-8110-826ffe7f13fa data uuid SlEgHe-jX1H-QBQk-Sce0-RUls-8KlY-g8HgcZ journal device /dev/journals/journal1 data device /dev/test_group/data-lv2 devices /dev/sdb
この出力から、
osd.5
が/dev/sdb
に関連付けられていることがわかります。
関連情報
- 詳細は、障害のある OSD ディスクの置き換えを参照してください。
1.3.3. 同じディスクトポロジーを持つ Ansible を使用した Ceph OSD の追加
同じディスクトポロジーを持つ Ceph OSD の場合には、Ansible は /usr/share/ceph-ansible/group_vars/osds
ファイルの devices:
セクションで指定されているのと同じデバイスパスを使用して、他の OSD ノードと同じ数の OSD を追加します。
新しい Ceph OSD ノードは、残りの OSD と同じ設定になります。
前提条件
- 稼働中の Red Hat Ceph Storage クラスター。
- Installation Guide for Red Hat Enterprise Linux または Ubuntu の Requirements for Installing Red Hat Ceph Storage の章を参照してください。
-
新規ノードへの
root
アクセスがあること。 - ストレージクラスター内の他の OSD ノードと同じ数の OSD データドライブ。
手順
[osds]
セクションの下に Ceph OSD ノードを/etc/ansible/hosts
ファイルに追加します。例
[osds] ... osd06 $NEW_OSD_NODE_NAME
Ansible が Ceph ノードに到達できることを確認します。
[user@admin ~]$ ansible all -m ping
Ansible 設定ディレクトリーに移動します。
[user@admin ~]$ cd /usr/share/ceph-ansible
add-osd.yml
ファイルを/usr/share/ceph-ansible/
ディレクトリーにコピーします。[user@admin ceph-ansible]$ sudo cp infrastructure-playbooks/add-osd.yml .
Ceph の通常のデプロイメントまたはコンテナー化されたデプロイメント向けに Ansible Playbook を実行します。
[user@admin ceph-ansible]$ ansible-playbook add-osd.yml
注記OSD を追加する際に、
PGs were not reported as active+clean
で Playbook が失敗する場合は、all.yml
ファイルに以下の変数を設定し、再試行と遅延を調整します。# OSD handler checks handler_health_osd_check_retries: 50 handler_health_osd_check_delay: 30
1.3.4. 異なるディスクトポロジーが設定された Ansible を使用した Ceph OSD の追加
異なるディスクトポロジーを持つ Ceph OSD については、新しい OSD ノードを既存のストレージクラスターに追加する 2 つの方法があります。
前提条件
- 稼働中の Red Hat Ceph Storage クラスター。
- Installation Guide for Red Hat Enterprise Linux または Ubuntu の Requirements for Installing Red Hat Ceph Storage の章を参照してください。
-
新規ノードへの
root
アクセスがあること。
手順
最初の操作
[osds]
セクションの下に、新しい Ceph OSD ノードを/etc/ansible/hosts
ファイルに追加します。例
[osds] ... osd06 $NEW_OSD_NODE_NAME
ストレージクラスターに追加される新しい Ceph OSD ノードを
/etc/ansible/host_vars/
ディレクトリーに作成します。構文
touch /etc/ansible/host_vars/$NEW_OSD_NODE_NAME
例
[root@admin ~]# touch /etc/ansible/host_vars/osd07
新しいファイルを編集し、
devices:
およびdedicated_devices:
セクションをファイルに追加します。以下の各セクションに、-
およびスペースを追加してから、この OSD ノードのブロックデバイス名への完全パスを追加します。例
devices: - /dev/sdc - /dev/sdd - /dev/sde - /dev/sdf dedicated_devices: - /dev/sda - /dev/sda - /dev/sdb - /dev/sdb
Ansible がすべての Ceph ノードに到達できることを確認します。
[user@admin ~]$ ansible all -m ping
ディレクトリーを Ansible 設定ディレクトリーに移動します。
[user@admin ~]$ cd /usr/share/ceph-ansible
add-osd.yml
ファイルを/usr/share/ceph-ansible/
ディレクトリーにコピーします。[user@admin ceph-ansible]$ sudo cp infrastructure-playbooks/add-osd.yml .
Ansible Playbook の実行:
[user@admin ceph-ansible]$ ansible-playbook add-osd.yml
2 つ目の方法
新しい OSD ノード名を
/etc/ansible/hosts
ファイルに追加し、devices
オプションおよびdedicated_devices
オプションを使用して、異なるディスクトポロジーを指定します。例
[osds] ... osd07 devices="['/dev/sdc', '/dev/sdd', '/dev/sde', '/dev/sdf']" dedicated_devices="['/dev/sda', '/dev/sda', '/dev/sdb', '/dev/sdb']"
Ansible がすべての Ceph ノードに到達できることを確認します。
[user@admin ~]$ ansible all -m ping
ディレクトリーを Ansible 設定ディレクトリーに移動します。
[user@admin ~]$ cd /usr/share/ceph-ansible
add-osd.yml
ファイルを/usr/share/ceph-ansible/
ディレクトリーにコピーします。[user@admin ceph-ansible]$ sudo cp infrastructure-playbooks/add-osd.yml .
Ansible Playbook の実行:
[user@admin ceph-ansible]$ ansible-playbook add-osd.yml
1.3.5. コマンドラインインターフェイスを使用した Ceph OSD の追加
OSD を Red Hat Ceph Storage に手動で追加するハイレベルのワークフローを以下に示します。
-
ceph-osd
パッケージをインストールして、新規 OSD インスタンスを作成します。 - OSD データおよびジャーナルドライブを準備してマウントします。
- 新規 OSD ノードを CRUSH マップに追加します。
- 所有者およびグループパーミッションを更新します。
-
ceph-osd
デーモンを有効にして起動します。
ceph-disk
コマンドは非推奨となりました。ceph-volume
コマンドは、コマンドラインインターフェイスから OSD をデプロイするのに推奨される方法です。現在、ceph-volume
コマンドは lvm
プラグインのみをサポートしています。Red Hat は、本ガイドで両方のコマンドを参照として使用している例を提供します。これにより、ストレージ管理者は ceph-disk
に依存するカスタムスクリプトを ceph-volume
に変換できます。
ceph-volume
コマンドの使用方法は、Red Hat Ceph Storage Administration Guideを参照してください。
カスタムストレージクラスター名の場合は、ceph
コマンドおよび ceph-osd
コマンドで --cluster $CLUSTER_NAME
オプションを使用します。
前提条件
- 稼働中の Red Hat Ceph Storage クラスター。
- Installation Guide for Red Hat Enterprise Linux または Ubuntu の Requirements for Installing Red Hat Ceph Storage の章を参照してください。
-
新規ノードへの
root
アクセスがあること。
手順
Red Hat Ceph Storage 3 OSD ソフトウェアリポジトリーを有効にします。
Red Hat Enterprise Linux
[root@osd ~]# subscription-manager repos --enable=rhel-7-server-rhceph-3-osd-els-rpms
Ubuntu
[user@osd ~]$ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/Tools $(lsb_release -sc) main | tee /etc/apt/sources.list.d/Tools.list' [user@osd ~]$ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -'
/etc/ceph/
ディレクトリーを作成します。# mkdir /etc/ceph
新しい OSD ノードで、Ceph 管理キーリングと設定ファイルを Ceph Monitor ノードの 1 つからコピーします。
構文
scp $USER_NAME@$MONITOR_HOST_NAME:/etc/ceph/$CLUSTER_NAME.client.admin.keyring /etc/ceph scp $USER_NAME@$MONITOR_HOST_NAME:/etc/ceph/$CLUSTER_NAME.conf /etc/ceph
例
[root@osd ~]# scp root@node1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ [root@osd ~]# scp root@node1:/etc/ceph/ceph.conf /etc/ceph/
ceph-osd
パッケージを新しい Ceph OSD ノードにインストールします。Red Hat Enterprise Linux
[root@osd ~]# yum install ceph-osd
Ubuntu
[user@osd ~]$ sudo apt-get install ceph-osd
新規 OSD について、ジャーナルを共存させるか、または専用のジャーナルを使用するかどうかを決定します。
注記--filestore
オプションが必要です。ジャーナルを共存させる OSD の場合:
構文
[root@osd ~]# ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/$DEVICE_NAME
例
[root@osd ~]# ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/sda
専用のジャーナルを持つ OSD の場合:
構文
[root@osd ~]# ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/$DEVICE_NAME /dev/$JOURNAL_DEVICE_NAME
または
[root@osd ~]# ceph-volume lvm prepare --filestore --data /dev/$DEVICE_NAME --journal /dev/$JOURNAL_DEVICE_NAME
例
[root@osd ~]# ceph-disk --setuser ceph --setgroup ceph prepare --filestore /dev/sda /dev/sdb
[root@osd ~]# ceph-volume lvm prepare --filestore --data /dev/vg00/lvol1 --journal /dev/sdb
noup
オプションを設定します。[root@osd ~]# ceph osd set noup
新しい OSD をアクティベートします。
構文
[root@osd ~]# ceph-disk activate /dev/$DEVICE_NAME
または
[root@osd ~]# ceph-volume lvm activate --filestore $OSD_ID $OSD_FSID
例
[root@osd ~]# ceph-disk activate /dev/sda
[root@osd ~]# ceph-volume lvm activate --filestore 0 6cc43680-4f6e-4feb-92ff-9c7ba204120e
OSD を CRUSH マップに追加します。
構文
ceph osd crush add $OSD_ID $WEIGHT [$BUCKET_TYPE=$BUCKET_NAME ...]
例
[root@osd ~]# ceph osd crush add 4 1 host=node4
注記複数のバケットを指定する場合、コマンドは OSD を指定したバケットから最も具体的なバケットに配置、および 指定した他のバケットに従ってバケットを移動します。
注記CRUSH マップを手動で編集することもできます。Red Hat Ceph Storage 3 の Storage Strategies ガイドの Editing a CRUSH map セクションを参照してください。
重要ルートバケットのみを指定する場合、OSD はルートに直接アタッチしますが、CRUSH ルールは OSD がホストバケット内に置かれることを想定します。
noup
オプションの設定を解除します。[root@osd ~]# ceph osd unset noup
新規作成されたディレクトリーの所有者とグループのパーミッションを更新します。
構文
chown -R $OWNER:$GROUP $PATH_TO_DIRECTORY
例
[root@osd ~]# chown -R ceph:ceph /var/lib/ceph/osd [root@osd ~]# chown -R ceph:ceph /var/log/ceph [root@osd ~]# chown -R ceph:ceph /var/run/ceph [root@osd ~]# chown -R ceph:ceph /etc/ceph
カスタム名のクラスターを使用する場合は、以下の行を適切なファイルに追加します。
Red Hat Enterprise Linux
[root@osd ~]# echo "CLUSTER=$CLUSTER_NAME" >> /etc/sysconfig/ceph
Ubuntu
[user@osd ~]$ sudo echo "CLUSTER=$CLUSTER_NAME" >> /etc/default/ceph
$CLUSTER_NAME
は、カスタムクラスター名に置き換えます。新規 OSD が
起動
し、データを受信する準備ができていることを確認するには、OSD サービスを有効にして起動します。構文
systemctl enable ceph-osd@$OSD_ID systemctl start ceph-osd@$OSD_ID
例
[root@osd ~]# systemctl enable ceph-osd@4 [root@osd ~]# systemctl start ceph-osd@4
1.3.6. Ansible を使用した Ceph OSD の削除
Red Hat Ceph Storage クラスターの容量をスケールダウンしないといけない場合があります。Ansible を使用して Red Hat Ceph Storage クラスターから OSD を削除するには、使用する OSD のシナリオに応じて、Playbook shrink-osd.yml
または shrink-osd-ceph-disk.yml
を実行します。osd_scenario
が collocated
または non-collocated
に設定されている場合には、Playbook shrink-osd-ceph-disk.yml
を使用します。osd_scenario
を lvm
に設定した場合は、Playbook shrink-osd.yml
を使用します。
ストレージクラスターから OSD を削除すると、その OSD に含まれるすべてのデータが破棄されます。
前提条件
- Ansible によりデプロイされた実行中の Red Hat Ceph Storage
- 実行中の Ansible 管理ノード
- Ansible 管理ノードへの root レベルのアクセス。
手順
/usr/share/ceph-ansible/
ディレクトリーに移動します。[user@admin ~]$ cd /usr/share/ceph-ansible
-
Ceph Monitor ノードの
/etc/ceph/
から、削除する OSD が含まれるノードに管理キーリングをコピーします。 infrastructure-playbooks
ディレクトリーから現在のディレクトリーに、適切な Playbook をコピーします。[root@admin ceph-ansible]# cp infrastructure-playbooks/shrink-osd.yml .
または
[root@admin ceph-ansible]# cp infrastructure-playbooks/shrink-osd-ceph-disk.yml .
ベアメタル または コンテナー のデプロイメントの場合は、適切な Ansible Playbook を実行します。
構文
ansible-playbook shrink-osd.yml -e osd_to_kill=$ID -u $ANSIBLE_USER
または
ansible-playbook shrink-osd-ceph-disk.yml -e osd_to_kill=$ID -u $ANSIBLE_USER
以下を置き換えます。
-
$id
は、OSD の ID に置き換えます。複数の OSD を削除するには、OSD ID をコンマで区切ります。 -
$ANSIBLE_USER
は、Ansible ユーザーの名前に置き換えてください。
例
[user@admin ceph-ansible]$ ansible-playbook shrink-osd.yml -e osd_to_kill=1 -u user
または
[user@admin ceph-ansible]$ ansible-playbook shrink-osd-ceph-disk.yml -e osd_to_kill=1 -u user
-
OSD が正常に削除されていることを確認します。
[root@mon ~]# ceph osd tree
関連情報
- 詳細は、Red Hat Enterprise Linux または UbuntuのRed Hat Ceph Storage Installation Guideを参照してください。
1.3.7. コマンドラインインターフェイスを使用した Ceph OSD の削除
ストレージクラスターから OSD を削除するには、クラスターマップの更新、その認証キーの削除、OSD マップからの OSD の削除、および ceph.conf
ファイルからの OSD の削除を行う必要があります。ノードに複数のドライブがある場合は、この手順を繰り返して、それぞれのドライブについて OSD を削除する必要がある場合があります。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
-
利用可能な OSD が十分になるようにして、ストレージクラスターが
ほぼ完全
な比率にならないようにしてください。 -
OSD ノードへの
root
アクセス権限があること。
手順
OSD サービスを無効にし、停止します。
構文
systemctl disable ceph-osd@$OSD_ID systemctl stop ceph-osd@$OSD_ID
例
[root@osd ~]# systemctl disable ceph-osd@4 [root@osd ~]# systemctl stop ceph-osd@4
OSD が停止したら、
停止
します。ストレージクラスターから OSD を削除します。
構文
ceph osd out $OSD_ID
例
[root@osd ~]# ceph osd out 4
重要OSD が削除されると、Ceph は再バランス調整を開始し、データをストレージクラスター内の他の OSD にコピーします。Red Hat は、次の手順に進む前に、ストレージクラスターが
active+clean
になるまで待つことを推奨します。データの移行を確認するには、以下のコマンドを実行します。[root@monitor ~]# ceph -w
CRUSH マップから OSD を削除して、データを受信しないようにします。
構文
ceph osd crush remove $OSD_NAME
例
[root@osd ~]# ceph osd crush remove osd.4
注記CRUSH マップをコンパイルし、デバイス一覧から OSD を削除して、ホストバケットの項目としてデバイスを削除するか、またはホストバケットを削除することもできます。CRUSH マップにあり、ホストを削除するには、マップを再コンパイルしてからこれを設定します。詳細は、Storage Strategies Guide を参照してください。
OSD 認証キーを削除します。
構文
ceph auth del osd.$OSD_ID
例
[root@osd ~]# ceph auth del osd.4
OSD を削除します。
構文
ceph osd rm $OSD_ID
例
[root@osd ~]# ceph osd rm 4
ストレージクラスターの設定ファイル (デフォルトでは
/etc/ceph.conf
) を編集して、OSD エントリーが存在する場合は削除します。例
[osd.4] host = $HOST_NAME
-
OSD を手動で追加している場合は、
/etc/fstab
ファイルで OSD への参照を削除します。 更新された設定ファイルを、ストレージクラスター内の他のすべてのノードの
/etc/ceph/
ディレクトリーにコピーします。構文
scp /etc/ceph/$CLUSTER_NAME.conf $USER_NAME@$HOST_NAME:/etc/ceph/
例
[root@osd ~]# scp /etc/ceph/ceph.conf root@node4:/etc/ceph/
1.3.8. コマンドラインインターフェイスを使用したジャーナルの置き換え
ジャーナルとデータデバイスが同じ物理デバイスにある場合 (osd_scenario: collocated
を使用する場合など) にジャーナルを置き換えるには、OSD 全体を置き換える必要があります。ただし、ジャーナルがデータデバイスとは別の物理デバイスにある OSD では (osd_scenario: non-collocated
を使用する場合)、ジャーナルデバイスのみを置き換えることができます。
前提条件
- 稼働中の Red Hat Ceph Storage クラスター
- 新しいパーティションまたはストレージデバイス。
手順
クラスターを
noout
に設定してバックフィルを防ぎます。[root@osd1 ~]# ceph osd set noout
ジャーナルが変更された OSD を停止します。
[root@osd1 ~]# systemctl stop ceph-osd@$OSD_ID
OSD のジャーナルをフラッシュします。
[root@osd1 ~]# ceph-osd -i $OSD_ID --flush-journal
古いジャーナルパーティションを削除して、パーティションの UUID が新しいパーティションと競合しないようにします。
sgdisk --delete=$OLD_PART_NUM -- $OLD_DEV_PATH
- 置き換え
-
$OLD_PART_NUM
は、古いジャーナルデバイスのパーティション番号に置き換えます。 -
$OLD_DEV_PATH
は、古いジャーナルデバイスへのパスに置き換えます。
-
例
[root@osd1 ~]# sgdisk --delete=1 -- /dev/sda
新しいデバイスに新しいジャーナルパーティションを作成します。この
sgdisk
コマンドは、次に利用可能なパーティション番号を自動的に使用します。sgdisk --new=0:0:$JOURNAL_SIZE -- $NEW_DEV_PATH
- 置き換え
-
$JOURNAL_SIZE
は、環境に適したジャーナルサイズに置き換えます (例:10240M
)。 -
NEW_DEV_PATH
は、新規ジャーナルに使用するデバイスへのパスに置き換えます。
-
注記ジャーナルの最小デフォルトサイズは 5 GB です。通常、10 GB を超える値は必要ありません。詳細は、Red Hat サポート にお問い合わせください。
例
[root@osd1 ~]# sgdisk --new=0:0:10240M -- /dev/sda
新しいパーティションに適切なパラメーターを設定します。
sgdisk --change-name=0:"ceph journal" --partition-guid=0:$OLD_PART_UUID --typecode=0:45b0969e-9b03-4f30-b4c6-b4b80ceff106 --mbrtogpt -- $NEW_DEV_PATH
- 置き換え
-
$OLD_PART_UUID
は、関連する OSD のjournal_uuid
ファイルの UUID に置き換えます。たとえば、OSD が0
の場合は、/var/lib/ceph/osd/ceph-0/journal_uuid
の UUID を使用します。 -
NEW_DEV_PATH
は、新規ジャーナルに使用するデバイスへのパスに置き換えます。
-
例
[root@osd1 ~]# sgdisk --change-name=0:"ceph journal" --partition-guid=0:a1279726-a32d-4101-880d-e8573bb11c16 --typecode=0:097c058d-0758-4199-a787-ce9bacb13f48 --mbrtogpt -- /dev/sda
上記の
sgdisk
コマンドを実行すると、新しいジャーナルパーティションが Ceph 用に準備され、ジャーナルを作成できます。重要sgdisk
の制限により、パーティションが正常に作成されないため、このコマンドをパーティション作成コマンドと組み合わせることはできません。新しいジャーナルを作成します。
[root@osd1 ~]# ceph-osd -i $OSD_ID --mkjournal
OSD を起動します。
[root@osd1 ~]# systemctl start ceph-osd@$OSD_ID
OSD で
noout
フラグを削除します。[root@osd1 ~]# ceph osd unset noout
ジャーナルが正しいデバイスに関連付けられていることを確認します。
[root@osd1 ~]# ceph-disk list
1.3.9. データ移行の監視
OSD を CRUSH マップに追加または削除すると、Ceph は配置グループを新規または既存の OSD に移行してデータのリバランスを開始します。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- 最近 OSD を追加または削除した。
手順
データの移行を確認するには、以下を実行します。
[root@monitor ~]# ceph -w
-
配置グループのステータスが
active+clean
からactive, some degraded objects
し、最後に移行の完了時にactive+clean
に変わるのを確認します。 -
ユーティリティーを終了するには、
Ctrl + C
を押します。