ストレージノードのインストールと設定

ストレージノードのインストールと設定

このセクションでは、Block Storage サービスのストレージノードをインストールして設定する方法について説明します。簡単のため、この設定では例として未使用のローカルブロックストレージデバイスがある 1 台のストレージノードを使用します。この説明では /dev/sdb を使用しますが、お使いのノードに合わせて別の値に置き換えることができます。

Block Storage サービスは、 LVM ドライバーを使用して、このデバイス上に論理ボリュームを構成し、 iSCSI 経由でこれらをインスタンスに提供します。これらの手順を少し変更するだけで、お使いの環境に追加のストレージノードを追加し、水平にスケールさせることができます。

前提条件

ストレージノードに Block Storage サービスをインストールして設定する前に、ストレージデバイスを準備する必要があります。

注釈

ストレージノードにおいて以下の手順を実行します。

  1. 補助ユーティリティーパッケージをインストールします。

    • LVM パッケージをインストールします。

      # zypper install lvm2
      
    • (オプション) QCOW2 や VMDK などの raw 以外のイメージ形式を使用したい場合、QEMU パッケージをインストールします。

      # zypper install qemu
      

    注釈

    いくつかのディストリビューションは、デフォルトで LVM が含まれています。

  2. LVM 物理ボリューム /dev/sdb を作成します。

    # pvcreate /dev/sdb
    
    Physical volume "/dev/sdb" successfully created
    
  3. LVM ボリュームグループ cinder-volumes を作成します。

    # vgcreate cinder-volumes /dev/sdb
    
    Volume group "cinder-volumes" successfully created
    

    Block Storage のサービスが、このボリュームグループ内に論理ボリュームを作成します。

  4. インスタンスのみが Block Storage のボリュームにアクセスできますが、ボリュームに関連付けられたデバイスを管理するのはベースのオペレーティングシステムです。デフォルトでは、LVM ボリュームのスキャンツールが、ボリュームを含むブロックストレージデバイス用の /dev ディレクトリーをスキャンします。プロジェクトがボリューム上で LVM を使用している場合、スキャンツールがこれらのボリュームを検知し、それらをキャッシュしようとします。これにより、ベースのオペレーティングシステムとプロジェクトボリュームの両方にさまざまな問題を引き起こす可能性があります。cinder-volumes ボリュームグループを含むデバイスのみをスキャンするように、LVM を再設定する必要があります。/etc/lvm/lvm.conf ファイルを編集し、以下の作業をすべて行います。

    • devices セクションに、/dev/sdb デバイスを受け付け、他のデバイスをすべて拒否するフィルターを追加します。

      devices {
      ...
      filter = [ "a/sdb/", "r/.*/"]
      

      フィルター配列の各項目は、許可 を意味する a拒否 を意味する r から始まり、デバイス名にマッチする正規表現を含みます。他のすべてのデバイスを拒否させるために、この配列は r/.*/ で終わる必要があります。vgs -vvvv コマンドを使用して、フィルターをテストできます。

      警告

      ストレージノードがオペレーティングシステムのディスクで LVM を使用している場合、関連するデバイスをフィルターに追加する必要があります。例えば、/dev/sda デバイスにオペレーティングシステムが含まれる場合、次のようにします。

      filter = [ "a/sda/", "a/sdb/", "r/.*/"]
      

      同様に、コンピュートノードがオペレーティングシステムのディスクで LVM を使用している場合、それらのノードにおいて /etc/lvm/lvm.conf ファイルにあるフィルターも変更して、オペレーティングシステムのディスクのみが含まれるようにする必要があります。例えば、/dev/sda デバイスにオペレーティングシステムが含まれる場合、次のようにします。

      filter = [ "a/sda/", "r/.*/"]
      

コンポーネントのインストールと設定

  1. パッケージをインストールします。

    # zypper install openstack-cinder-volume tgt
    
  1. /etc/cinder/cinder.conf ファイルを編集し、以下の作業をすべて行います。

    • [database] セクションで、データベースのアクセス方法を設定します。

      [database]
      ...
      connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder
      

      CINDER_DBPASS を Block Storage データベース用に選択したパスワードで置き換えます。

    • [DEFAULT] セクションに、RabbitMQ メッセージキューのアクセス方法を設定します。

      [DEFAULT]
      ...
      transport_url = rabbit://openstack:RABBIT_PASS@controller
      

      RABBIT_PASSRabbitMQopenstack アカウント用に選択したパスワードで置き換えます。

    • [DEFAULT] セクションと [keystone_authtoken] セクションに、Identity サービスへのアクセス方法を設定します。

      [DEFAULT]
      ...
      auth_strategy = keystone
      
      [keystone_authtoken]
      ...
      auth_uri = http://controller:5000
      auth_url = http://controller:35357
      memcached_servers = controller:11211
      auth_type = password
      project_domain_name = Default
      user_domain_name = Default
      project_name = service
      username = cinder
      password = CINDER_PASS
      

      CINDER_PASS を Identity サービスで cinder ユーザー用に選択したパスワードで置き換えます。

      注釈

      [keystone_authtoken] セクションにある他のオプションは、コメントアウトまたは削除します。

    • [DEFAULT] セクションに my_ip オプションを設定します。

      [DEFAULT]
      ...
      my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
      

      MANAGEMENT_INTERFACE_IP_ADDRESS をストレージノードの管理ネットワークインターフェースの IP アドレスに置き換えます。通常は、アーキテクチャー例 にある 1 番目のノードは 10.0.0.41 です。

    • [lvm] セクションに、LVM ドライバー、cinder-volumes ボリュームグループ、iSCSI プロトコル、適切な iSCSI サービスを指定し、LVM バックエンドを設定します。

      [lvm]
      ...
      volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
      volume_group = cinder-volumes
      iscsi_protocol = iscsi
      iscsi_helper = tgtadm
      
    • [DEFAULT] セクションで LVM バックエンドを有効にします。

      [DEFAULT]
      ...
      enabled_backends = lvm
      

      注釈

      バックエンドの名前は任意です。このガイドは、例としてバックエンドの名前にドライバー名を使用します。

    • [DEFAULT] セクションで、Image サービス API の場所を設定します。

      [DEFAULT]
      ...
      glance_api_servers = http://controller:9292
      
    • [oslo_concurrency] セクションにロックパスを設定します。

      [oslo_concurrency]
      ...
      lock_path = /var/lib/cinder/tmp
      
  1. /etc/tgt/conf.d/cinder.conf を以下の内容で作成します。

    include /var/lib/cinder/volumes/*
    

インストールの最終作業

  • Block Storage ボリュームサービスと関連サービスを起動し、システム起動時に自動的に起動するよう設定します。

    # systemctl enable openstack-cinder-volume.service tgtd.service
    # systemctl start openstack-cinder-volume.service tgtd.service
    
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.