5.3. Ceph Storage ノードのディスクレイアウトのマッピング
コンテナー化された Ceph Storage をデプロイする場合には、ディスクレイアウトをマッピングし、Ceph OSD サービス用に専用のブロックデバイスを指定する必要があります。カスタム Ceph パラメーターを定義するために作成した環境ファイル (/home/stack/templates/ceph-config.yaml
) で、このマッピングを行うことができます。
parameter_defaults
で CephAnsibleDisksConfig
リソースを使用して、ディスクレイアウトをマッピングします。このリソースでは、以下の変数が使用されます。
変数 | 必須/オプション | デフォルト値 (未設定の場合) | 説明 |
---|---|---|---|
osd_scenario | 必須 | lvm
注記: デフォルト値は |
|
devices | 必須 | なし。変数を設定する必要があります。 | ノード上の OSD に使用するブロックデバイスのリスト。 |
dedicated_devices |
必須 (ただし | devices |
|
dmcrypt | オプション | false |
OSD に保存されるデータが暗号化されているか ( |
osd_objectstore | オプション | bluestore
注記: デフォルト値は | Ceph の使用するストレージバックエンドを設定します。
注記: 値のデフォルトは |
5.3.1. BlueStore の使用
手順
Ceph OSD として使用するブロックデバイスを指定するには、以下のスニペットのバリエーションを使用します。
parameter_defaults: CephAnsibleDisksConfig: devices: - /dev/sdb - /dev/sdc - /dev/sdd - /dev/nvme0n1 osd_scenario: lvm osd_objectstore: bluestore
/dev/nvme0n1
は高パフォーマンスのデバイスクラスにあるため、例に示すparameter_defaults
では、/dev/sdb
、/dev/sdc
、および/dev/sdd
上で動作する 3 つの OSD が作成されます。この 3 つの OSD は、block.db
および BlueStore WAL デバイスに/dev/nvme0n1
を使用します。ceph-volume
ツールは、batch
サブコマンドを使用してこれを実施します。Ceph Storage ノードごとに同じ設定が複製され、ハードウェアが統一されていることを前提とします。block.db
および BlueStore WAL データが OSD と同じディスクに存在する場合は、以下に示すようにパラメーターのデフォルトを変更します。parameter_defaults: CephAnsibleDisksConfig: devices: - /dev/sdb - /dev/sdc - /dev/sdd osd_scenario: lvm osd_objectstore: bluestore
5.3.2. 永続デバイス名が付いたデバイスの参照
手順
一部のノードでは、
/dev/sdb
および/dev/sdc
等のディスクパスが、リブート中に同じブロックデバイスをポイントしない場合があります。このようなケースが Ceph Storage ノードで見られる場合は、各ディスクに/dev/disk/by-path/
シンボリックリンクを指定して、ブロックデバイスのマッピングがデプロイメント全体で一貫性を保つようにします。parameter_defaults: CephAnsibleDisksConfig: devices: - /dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:10:0 - /dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:11:0 dedicated_devices: - /dev/nvme0n1 - /dev/nvme0n1
(オプション) オーバークラウドのデプロイメント前に OSD デバイスのリストを設定しなければならないので、ディスクデバイスの PCI パスを把握/設定できない場合があります。このような場合には、イントロスペクション中にブロックデバイスの
/dev/disk/by-path/symlink
データを収集します。以下の例の最初のコマンドを実行して、サーバー
b08-h03-r620-hci
のアンダークラウド Object Storage サービス (swift) からイントロスペクションデータをダウンロードし、そのデータをb08-h03-r620-hci.json
と呼ばれるファイルに保存します。2 番目のコマンドを実行して、"by-path" を grep します。このコマンドの出力には、ディスクの特定に使用できる一意の/dev/disk/by-path
値が含まれます。(undercloud) [stack@b08-h02-r620 ironic]$ openstack baremetal introspection data save b08-h03-r620-hci | jq . > b08-h03-r620-hci.json (undercloud) [stack@b08-h02-r620 ironic]$ grep by-path b08-h03-r620-hci.json "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:0:0", "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:1:0", "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:3:0", "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:4:0", "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:5:0", "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:6:0", "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:7:0", "by_path": "/dev/disk/by-path/pci-0000:02:00.0-scsi-0:2:0:0",
ストレージデバイスの命名規則の詳細は、ストレージデバイスの管理ガイドの 永続的な命名属性の概要 を参照してください。
5.3.3. 高度なシナリオでの OSD の設定
環境ファイルにおいて、CephAnsibleDisksConfig
リソースの devices
変数で、OSD に使用するブロックデバイスをリスト表示します。
他のデバイス設定パラメーターを指定せずに devices
変数を使用する場合、ceph-volume lvm batch
は、高パフォーマンスデバイスを低速なデバイスの block.db
として均等に共有し、OSD 設定を自動的に最適化します。
以下の手順を使用して、ceph-volume lvm batch
モードで実行しないように devices
を設定できます。
5.3.3.1. block.db を使用したパフォーマンスの向上
block.db
を使用すると、スループットを高め、応答時間を改善することで、Ceph Storage クラスターのパフォーマンスを向上させることができます。block.db
は、データセグメントと BlueStore ログ先行書き込み (WAL) で設定されるデータベースです。
手順
環境ファイルに以下の内容を追加してください。
parameter_defaults: CephAnsibleDisksConfig: devices: - /dev/sda - /dev/sdb - /dev/nvme0n1 - /dev/sdc - /dev/sdd - /dev/nvme0n2 osd_scenario: lvm osd_objectstore: bluestore
これにより、
sda
、sdb
、sdc
、およびsdd
の 4 つの OSD が設定されます。各ペアには、独自のデータベースnvem0n1
およびnvme0n2
があります。注記devices
リスト内のデバイスの順序は重要です。ドライブに続いて block.db および BlueStore WAL (DB-WAL) デバイスをリスト表示します。この例では、nvme0n1
はsda
およびsdb
の DB-WAL で、nvme0n2
はsdc
およびsdd
の DB-WAL です。詳細は、BlueStore の使用 を参照してください。-
オーバークラウドのデプロイ時に、
-e
オプションを使用して、デプロイメントコマンドに新しいコンテンツが含まれる環境ファイルを追加します。
5.3.3.2. 専用のログ先行書き込み (WAL) デバイスの使用
専用のログ先行書き込み (WAL) デバイスを指定できます。devices
、dedicated_devices
、および bluestore_wal_devices
を一緒に使用すると、OSD のすべてのコンポーネントを別々のデバイスに分割できるため、パフォーマンスが向上します。
以下の手順例では、別の追加ディクショナリー bluestore_wal_devices
が、NVMe デバイス nvme0n1
および nvme0n2
のログ先行書き込みを分離します。
手順
環境ファイルに以下の内容を追加してください。
parameter_defaults: CephAnsibleDisksConfig: devices: - /dev/sda - /dev/sdb dedicated_devices: - /dev/sdx - /dev/sdy bluestore_wal_devices: - /dev/nvme0n1 - /dev/nvme0n2
-
オーバークラウドのデプロイ時に、
-e
オプションを使用して、デプロイメントコマンドに新しいコンテンツが含まれる環境ファイルを追加します。
5.3.3.3. 制御性の向上のための事前作成 LVM の使用
以前の高度なシナリオでは、ceph-volume
は異なる種別のデバイスリストを使用して OSD の論理ボリュームを作成します。ceph-volume
を実行する前に論理ボリュームを作成し、それらの論理ボリュームの lvm_volumes
リストを ceph-volume
に渡すこともできます。これには、論理ボリュームを事前に作成する必要がありますが、制御がより正確になります。director はハードウェアをプロビジョニングするロールりも果たすため、初回ブートスクリプトを使用してこれらの LVM を事前に作成する必要があります。
手順
OS::TripleO::NodeUserData
リソース種別として heat テンプレートを登録する、以下の内容の環境ファイル/home/stack/templates/firstboot.yaml
を作成します。resource_registry: OS::TripleO::NodeUserData: /home/stack/templates/ceph-lvm.yaml
環境ファイル
/home/stack/templates/ceph-lvm.yaml
を作成します。3 つの物理ボリュームを含む以下の例のようなリストを追加します。デバイスリストが長い場合は、要件に応じて例をデプロイメントします。heat_template_version: 2014-10-16 description: > Extra hostname configuration resources: userdata: type: OS::Heat::MultipartMime properties: parts: - config: {get_resource: ceph_lvm_config} ceph_lvm_config: type: OS::Heat::SoftwareConfig properties: config: | #!/bin/bash -x pvcreate /dev/sda vgcreate ceph_vg_hdd /dev/sda pvcreate /dev/sdb vgcreate ceph_vg_ssd /dev/sdb pvcreate /dev/nvme0n1 vgcreate ceph_vg_nvme /dev/nvme0n1 lvcreate -n ceph_lv_wal1 -L 50G ceph_vg_nvme lvcreate -n ceph_lv_db1 -L 500G ceph_vg_ssd lvcreate -n ceph_lv_data1 -L 5T ceph_vg_hdd lvs outputs: OS::stack_id: value: {get_resource: userdata}
以下の方法で、デバイスリストの代わりに
lvm_volumes
パラメーターを使用します。これは、ボリュームグループと論理ボリュームがすでに作成されていることを前提とします。このシナリオの一般的なユースケースでは、WAL および DB LV が SSD 上にあり、データ LV が HDD 上にあります。parameter_defaults: CephAnsibleDisksConfig: osd_objectstore: bluestore osd_scenario: lvm lvm_volumes: - data: ceph_lv_data1 data_vg: ceph_vg_hdd db: ceph_lv_db1 db_vg: ceph_vg_ssd wal: ceph_lv_wal1 wal_vg: ceph_vg_nvme
オーバークラウドのデプロイ時に、
-e
オプションを使用して、デプロイメントコマンドに新しいコンテンツが含まれる環境ファイルを追加します。- 注記
- WAL デバイスが DB デバイスよりも優れたパフォーマンスのハードウェアに存在する場合に限り、別の WAL デバイスを指定する必要があります。通常、別の DB デバイスを作成するだけで十分で、同じパーティションが WAL 機能に使用されます。