5.3. Ceph Storage ノードのディスクレイアウトのマッピング


コンテナー化された Ceph Storage をデプロイする場合には、ディスクレイアウトをマッピングし、Ceph OSD サービス用に専用のブロックデバイスを指定する必要があります。カスタム Ceph パラメーターを定義するために作成した環境ファイル (/home/stack/templates/ceph-config.yaml) で、このマッピングを行うことができます。

parameter_defaultsCephAnsibleDisksConfig リソースを使用して、ディスクレイアウトをマッピングします。このリソースでは、以下の変数が使用されます。

変数必須/オプションデフォルト値 (未設定の場合)説明

osd_scenario

必須

lvm

注記: デフォルト値は lvm です。

lvm の値により、ceph-ansibleceph-volume を使用して OSD、block.db および BlueStore WAL デバイスを設定することができます。

devices

必須

なし。変数を設定する必要があります。

ノード上の OSD に使用するブロックデバイスのリスト。

dedicated_devices

必須 (ただし osd_scenarionon-collocated の場合のみ)

devices

devices パラメーターの各エントリーを専用のジャーナル用ブロックデバイスにマッピングするブロックデバイスのリスト。この変数は、osd_scenario=non-collocated の場合にのみ使用できます。

dmcrypt

オプション

false

OSD に保存されるデータが暗号化されているか (true)、暗号化されていないか (false) を設定します。

osd_objectstore

オプション

bluestore

注記: デフォルト値は bluestore です。

Ceph の使用するストレージバックエンドを設定します。

注記: 値のデフォルトは bluestore ですが、コレートまたは非コレートのシナリオで osd_scenariofilestore に設定できます。dedicated_devices がジャーナリングディスクを識別する非コレートのシナリオで、filestore に値を設定することができます。デバイスに定義されたディスクを分割し、OSD データとジャーナリングデータの両方を同じデバイスに保存するコレートのシナリオで、値を filestore に設定できます。

5.3.1. BlueStore の使用

手順

  1. Ceph OSD として使用するブロックデバイスを指定するには、以下のスニペットのバリエーションを使用します。

    parameter_defaults:
      CephAnsibleDisksConfig:
        devices:
          - /dev/sdb
          - /dev/sdc
          - /dev/sdd
          - /dev/nvme0n1
        osd_scenario: lvm
        osd_objectstore: bluestore
  2. /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. 永続デバイス名が付いたデバイスの参照

手順

  1. 一部のノードでは、/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
  2. (オプション) オーバークラウドのデプロイメント前に 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) で設定されるデータベースです。

手順

  1. 環境ファイルに以下の内容を追加してください。

    parameter_defaults:
      CephAnsibleDisksConfig:
        devices:
          - /dev/sda
          - /dev/sdb
          - /dev/nvme0n1
          - /dev/sdc
          - /dev/sdd
          - /dev/nvme0n2
        osd_scenario: lvm
        osd_objectstore: bluestore

    これにより、sdasdbsdc、および sdd の 4 つの OSD が設定されます。各ペアには、独自のデータベース nvem0n1 および nvme0n2 があります。

    注記

    devices リスト内のデバイスの順序は重要です。ドライブに続いて block.db および BlueStore WAL (DB-WAL) デバイスをリスト表示します。この例では、nvme0n1sda および sdb の DB-WAL で、nvme0n2sdc および sdd の DB-WAL です。詳細は、BlueStore の使用 を参照してください。

  2. オーバークラウドのデプロイ時に、-e オプションを使用して、デプロイメントコマンドに新しいコンテンツが含まれる環境ファイルを追加します。

5.3.3.2. 専用のログ先行書き込み (WAL) デバイスの使用

専用のログ先行書き込み (WAL) デバイスを指定できます。devicesdedicated_devices、および bluestore_wal_devices を一緒に使用すると、OSD のすべてのコンポーネントを別々のデバイスに分割できるため、パフォーマンスが向上します。

以下の手順例では、別の追加ディクショナリー bluestore_wal_devices が、NVMe デバイス nvme0n1 および nvme0n2 のログ先行書き込みを分離します。

手順

  1. 環境ファイルに以下の内容を追加してください。

    parameter_defaults:
      CephAnsibleDisksConfig:
        devices:
          - /dev/sda
          - /dev/sdb
        dedicated_devices:
          - /dev/sdx
          - /dev/sdy
        bluestore_wal_devices:
          - /dev/nvme0n1
          - /dev/nvme0n2
  2. オーバークラウドのデプロイ時に、-e オプションを使用して、デプロイメントコマンドに新しいコンテンツが含まれる環境ファイルを追加します。

5.3.3.3. 制御性の向上のための事前作成 LVM の使用

以前の高度なシナリオでは、ceph-volume は異なる種別のデバイスリストを使用して OSD の論理ボリュームを作成します。ceph-volume を実行する前に論理ボリュームを作成し、それらの論理ボリュームの lvm_volumes リストを ceph-volume に渡すこともできます。これには、論理ボリュームを事前に作成する必要がありますが、制御がより正確になります。director はハードウェアをプロビジョニングするロールりも果たすため、初回ブートスクリプトを使用してこれらの LVM を事前に作成する必要があります。

手順

  1. OS::TripleO::NodeUserData リソース種別として heat テンプレートを登録する、以下の内容の環境ファイル /home/stack/templates/firstboot.yaml を作成します。

    resource_registry:
      OS::TripleO::NodeUserData: /home/stack/templates/ceph-lvm.yaml
  2. 環境ファイル /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}
  3. 以下の方法で、デバイスリストの代わりに 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
  4. オーバークラウドのデプロイ時に、-e オプションを使用して、デプロイメントコマンドに新しいコンテンツが含まれる環境ファイルを追加します。

    注記
    WAL デバイスが DB デバイスよりも優れたパフォーマンスのハードウェアに存在する場合に限り、別の WAL デバイスを指定する必要があります。通常、別の DB デバイスを作成するだけで十分で、同じパーティションが WAL 機能に使用されます。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.