第6章 OpenStack で NFS バックエンドを使用するための設定

本章は、OpenStack Volume サービス (openstack-cinder-volume) が既存の NFS サーバーを追加のバックエンドとして使用するように設定する方法について説明します。さらに、NFS 共有をバックエンドとしたボリュームの作成を呼び出すために使用可能なボリューム種別の作成方法についても記載しています。

必須条件:

  • バックエンドとして使用する NFS 共有は、事前に正しく設定しておく必要があります。
  • OpenStack Volume サービスをホストするノードには、NFS 共有への読み取り/書き込み権限が必要です。
  • また、OpenStack Volume サービスをホストするノードへの root アクセスが必要です。

前提条件:

  • OpenStack デプロイメントが Red Hat Enterprise Linux OpenStack Platform インストーラー でプロビジョニングされていないこと
  • OpenStack Block Storage サービスがデフォルトのバックエンドを使用していること (このバックエンドでは Packstack でデプロイされた lvm というバックエンド名を使用)

6.1. SELinux の設定

クライアントで SELinux が有効になっており、クライアントがインスタンス上の NFS ボリュームにアクセスする必要がある場合には、virt_use_nfs のブール値も有効にする必要があります。このブール値を有効にして (再起動後も有効な状態を保つには)、root で以下のコマンドを実行してください。

# setsebool -P virt_use_nfs on

インスタンス上の NFS ボリュームにアクセスする必要がある全クライアントのホストで、このコマンドを実行します。これには、全コンピュートノードも含まれます。

6.2. 共有の設定

まず、NFS のバックエンド追加における最初の手順として、OpenStack Volume サービスが使用する NFS 共有を定義します。これには以下を実行します。

  1. OpenStack Volume サービスをホストするノードへ root でログインします。
  2. /etc/cinder/ ディレクトリーに、nfs_share という名前の新規テキストファイルを作成します。

    /etc/cinder/nfs_share
  3. 以下の形式で、/etc/cinder/nfs_share に NFS 共有を定義します。

    HOST:SHARE

    各オプションについての説明は以下の通りです。

    • 「HOST」は、NFS サーバーの IP アドレスまたはホスト名に置き換えます。
    • 「SHARE」は、HOST にエクスポートされる NFS 共有への絶対パスに置き換えます。
  4. 次に、ユーザー root とグループ cinder を /etc/cinder/nfs_share の所有者に設定します。

    # chown root:cinder /etc/cinder/nfs_share
  5. 最後に、/etc/cinder/nfs_share を設定して、cinder グループのメンバーが読み取ることができるようにします。

    # chmod 0640 /etc/cinder/nfs_share

6.3. 新規バックエンドの定義の作成

デフォルトでは、Packstack により、LVM のバックエンドの定義が /etc/cinder/cinder.conf に作成されます。

[lvm]
iscsi_helper=lioadm
volume_group=cinder-volumes
iscsi_ip_address=
volume_driver=cinder.volume.drivers.lvm.LVMISCSIDriver
volume_backend_name=lvm

/etc/cinder/cinder.conf で NFS 共有を定義した後には、この共有に対して、追加でバックエンドの定義を設定することができます。この設定には、以下を実行します。

  1. OpenStack Volume サービスをホストするノードへ root でログインします。
  2. NFS バックエンドの新しい定義を作成して、Volume Servive が NFS 共有を定義するファイル (/etc/cinder/nfs_share) を使用するように設定します。

    # openstack-config --set /etc/cinder/cinder.conf nfs nfs_shares_config /etc/cinder/nfs_shares

    ここでは、定義名に nfsbackend という名前を使用します。

  3. Volume サービスが cinder.volume.drivers.nfs.NfsDriver という名前の NFS ボリュームドライバーを使用するように設定します。

    # openstack-config --set /etc/cinder/cinder.conf nfs volume_driver cinder.volume.drivers.nfs.NfsDriver
  4. NFS バックエンドのボリュームのバックエンド名を定義します (以下のコマンドでは、nfs という名前を使用します)。

    # openstack-config --set /etc/cinder/cinder.conf nfs volume_backend_name nfsbackend
  5. 必要なマウントオプションを (MOUNTOPTIONS) nfs_mount_options の設定キーに追加します。

    # openstack-config --set /etc/cinder/cinder.conf nfs nfs_mount_options _MOUNTOPTIONS_

この時点で、以下のセクションが /etc/cinder/cinder.conf に表示されるはずです。

[nfs]
nfs_shares_config = /etc/cinder/nfs_shares
volume_driver = cinder.volume.drivers.nfs.NfsDriver
volume_backend_name = nfsbackend
nfs_mount_options =

NFS バックエンドを有効化できるようになりました。バックエンドは、/etc/cinder/cinder.confenabled_backends 設定キーで有効化します。Packstack で作成されるデフォルトのバックエンドは、そこに表示されているはずです。

enabled_backends=lvm

以下のように、一覧に新規の NFS バックエンド定義を追加します。

enabled_backends=lvm,nfs

NFS バックエンドが有効になったら、OpenStack の Volume サービスを再起動します。

# openstack-service restart cinder-volume

6.4. NFS バックエンドのボリューム種別の作成

新規の NFS バックエンドが利用できるようになりましたが、新規ボリュームの作成時にはまだ使用することができません。新規ボリュームがこの NFS バックエンドを使用するように設定するには、まず、このボリュームに ボリュームの種別 を作成する必要があります。

  1. 既存のボリューム種別を表示します。デフォルトでは、lvm バックエンドに対して、(iscsi という名前の) ボリューム種別が存在します。

      +--------------------------------------+-------+
      |                  ID                  |  Name |
      +--------------------------------------+-------+
      | f8d31dc8-a20e-410c-81bf-6b0a971c61a0 | iscsi |
      +--------------------------------------+-------+
  2. NFS バックエンドに nfstype という名前の新規ボリューム種別を作成します。

    # cinder type-create nfstype
  3. バックエンド名 (nfsbackend) を使用して、NFS バックエンドで nfstype というボリューム種別 が使用されるように設定します。

    # cinder type-key nfstype set volume_backend_name=nfsbackend
  4. 新しい種別が正しく作成、設定されていることを確認します。

    +--------------------------------------+---------+
    |                  ID                  |   Name  |
    +--------------------------------------+---------+
    | bbff44b5-52b1-43d6-beb4-83aa2d20bc59 | nfstype |
    | f8d31dc8-a20e-410c-81bf-6b0a971c61a0 |  iscsi  |
    +--------------------------------------+---------+
    +-----------------------+-------+---------------------------------------+
    |           ID          |  Name |               extra_specs             |
    +-----------------------+-------+---------------------------------------+
    |bbff44b5-~-83aa2d20bc59|nfstype|{u'volume_backend_name': u'nfsbackend'}|
    |f8d31dc8-~-6b0a971c61a0| iscsi |    {u'volume_backend_name': u'lvm'}   |
    +-----------------------+-------+---------------------------------------+
注記

ボリューム種別の作成や設定は、Dashboard からも行うことができます。詳しくは、「ボリューム種別へのボリューム設定の関連付け」を参照してください。

6.5. 新しい NFS バックエンドのテスト

新規 NFS バックエンドをテストするには、nfsvolume という新規ボリュームを作成し、nfstype というボリューム種別を呼び出します。

+---------------------+--------------------------------------+
|       Property      |                Value                 |
+---------------------+--------------------------------------+
|     attachments     |                  []                  |
|  availability_zone  |                 nova                 |
|       bootable      |                false                 |
|      created_at     |      2015-01-06T05:14:09.271114      |
| display_description |                 None                 |
|     display_name    |              nfsvolume               |
|      encrypted      |                False                 |
|          id         | 0cd7ac45-622a-47b0-9503-7025bbedc8ed |
|       metadata      |                  {}                  |
|         size        |                  1                   |
|     snapshot_id     |                 None                 |
|     source_volid    |                 None                 |
|        status       |               creating               |
|     volume_type     |               nfstype                |
+---------------------+--------------------------------------+

ボリュームが正しく作成されたら、(NFS サーバー上の) NFS 共有を確認します。該当するボリューム (名前に新規作成されたボリュームの ID が含まれているボリューム) が以下のように表示されるはずです。

drwxrwxrwx.  2 root      root      4.0K Jan  6 15:14 .
drwxr-xr-x. 18 root      root      4.0K Jan  5 04:03 ..
-rw-rw-rw-.  1 nfsnobody nfsnobody 1.0G Jan  6 15:14+  +volume-0cd7ac45-622a-47b0-9503-7025bbedc8ed