[ English | Deutsch | Indonesia | 日本語 ]

クォータ

To prevent system capacities from being exhausted without notification, you can set up quotas. Quotas are operational limits. For example, the number of gigabytes allowed per tenant can be controlled to ensure thata single tenant cannot consume all of the disk space. Quotas are currently enforced at the tenant (or project) level, rather than the user level.

警告

妥当なクォータがないと、単一のテナントが利用可能なリソースをすべて使用してしまう可能性があるため、デフォルトのクォータが OpenStack には含まれています。お使いのハードウェア機能には、どのクォータ設定が適切か注意してください。

コマンドラインインターフェースを使って、OpenStack Compute と Block Storage のクォータを管理できます。

テナントには、10 個を超える Block Storage ボリュームまたはコンピュートノードで 1 TB 以上が必要であるため、通常クラウドのオペレーターはデフォルト値を変更します。

注釈

全てのテナントを表示するには、以下のコマンドを実行します。

$ openstack project list
+---------------------------------+----------+
| ID                              | Name     |
+---------------------------------+----------+
| a981642d22c94e159a4a6540f70f9f8 | admin    |
| 934b662357674c7b9f5e4ec6ded4d0e | tenant01 |
| 7bc1dbfd7d284ec4a856ea1eb82dca8 | tenant02 |
| 9c554aaef7804ba49e1b21cbd97d218 | services |
+---------------------------------+----------+

イメージクォータの設定

プロジェクトのイメージ保存容量を合計バイト数で制限できます。現在、このクォータはクラウド全体に適用されます。そのため、イメージのクォータを 5 GB に設定する場合、クラウドの全プロジェクトが、5 GB 以内のイメージやスナップショットのみを保存できます。

この機能を有効にするには、 /etc/glance/glance-api.conf ファイルを編集して [DEFAULT] セクションに以下を追加します。

user_storage_quota = <bytes>

たとえば、プロジェクトのイメージストレージを 5GB に制限するには、以下を実行します。

user_storage_quota = 5368709120

注釈

イメージごとに許可されるメンバーの数を制限する、 /etc/glance/glance-api.conf の設定オプションがあります。これは、 image_member_quota であり、デフォルトで 128 です。その設定は、保存容量のクォータとは別のクォータです。

コンピュートサービスのクォータの設定

管理ユーザーは、既存のテナントの Compute のクォータを更新できます。また、新規テナントのクォータのデフォルト値を更新することもできます。 Compute のクォータの説明 を参照してください。

Compute のクォータの説明

クォータ

説明

プロパティ名

Fixed IP

プロジェクトごとの固定 IP アドレスの最大数。この数はプロジェクトごとの最大インスタンス数以上にしなければなりません。

fixed-ips

Floating IP

プロジェクトごとの最大 Floating IP 数

floating-ips

注入ファイルのコンテンツ (バイト)

injected file あたりの最大バイト数

injected-file-content-bytes

注入ファイルのパス (バイト)

injected file のパス長の最大バイト数

injected-file-path-bytes

注入ファイル

プロジェクトごとの injected file の最大数

injected-files

インスタンス

プロジェクトごとの最大インスタンス数

instances

キーペア

ユーザーごとの最大キーペア数

key-pairs

メタデータ項目

インスタンスごとのメタデータ項目数

metadata-items

メモリー

プロジェクトごとのインスタンスの RAM 容量(メガバイト単位)

ram

セキュリティグループルール

プロジェクトごとのセキュリティグループルール数

security-group-rules

セキュリティグループ

プロジェクトごとのセキュリティグループ数

security-groups

仮想 CPU

プロジェクトごとのインスタンスのコア数

cores

サーバーグループ

プロジェクトごとのサーバーグループ数

server_groups

サーバーグループのメンバー

サーバーグループごとのサーバー数。

server_group_members

テナント (プロジェクト) のコンピュートクォータの表示/更新

管理ユーザーは nova quota-* コマンドを使って、テナントのクォータを表示したり更新したりできます。コマンドは python-novaclient パッケージに含まれます。

デフォルトのクォータ値の表示と更新

  1. 全テナントに対するクォータのデフォルト値を全て表示するには、以下のようにします。

    $ nova quota-defaults
    

    例えば

    $ nova quota-defaults
    +-----------------------------+-------+
    | Quota                       | Limit |
    +-----------------------------+-------+
    | instances                   | 10    |
    | cores                       | 20    |
    | ram                         | 51200 |
    | floating_ips                | 10    |
    | fixed_ips                   | -1    |
    | metadata_items              | 128   |
    | injected_files              | 5     |
    | injected_file_content_bytes | 10240 |
    | injected_file_path_bytes    | 255   |
    | key_pairs                   | 100   |
    | security_groups             | 10    |
    | security_group_rules        | 20    |
    | server_groups               | 10    |
    | server_group_members        | 10    |
    +-----------------------------+-------+
    
  2. 新規テナントに対するクォータのデフォルト値を更新するには、以下のようにします。

    $ nova quota-class-update default key value
    

    例えば

    $ nova quota-class-update default --instances 15
    

テナント (プロジェクト) のクォータ値の表示

  1. テナント ID を変数に格納します。

    $ tenant=$(openstack project list | awk '/tenantName/ {print $2}')
    
  2. テナントの現在のクォータ値を一覧表示します。

    $ nova quota-show --tenant $tenant
    

    例えば

    $ nova quota-show --tenant $tenant
    +-----------------------------+-------+
    | Quota                       | Limit |
    +-----------------------------+-------+
    | instances                   | 10    |
    | cores                       | 20    |
    | ram                         | 51200 |
    | floating_ips                | 10    |
    | fixed_ips                   | -1    |
    | metadata_items              | 128   |
    | injected_files              | 5     |
    | injected_file_content_bytes | 10240 |
    | injected_file_path_bytes    | 255   |
    | key_pairs                   | 100   |
    | security_groups             | 10    |
    | security_group_rules        | 20    |
    | server_groups               | 10    |
    | server_group_members        | 10    |
    +-----------------------------+-------+
    

テナント (プロジェクト) のクォータ値の更新

  1. テナント ID を取得します。

    $ tenant=$(openstack project list | awk '/tenantName/ {print $2}')
    
  2. 指定したクォータ値を更新します。

    # nova quota-update --quotaName quotaValue tenantID
    

    例えば

    # nova quota-update --floating-ips 20 $tenant
    # nova quota-show --tenant $tenant
    +-----------------------------+-------+
    | Quota                       | Limit |
    +-----------------------------+-------+
    | instances                   | 10    |
    | cores                       | 20    |
    | ram                         | 51200 |
    | floating_ips                | 20    |
    | fixed_ips                   | -1    |
    | metadata_items              | 128   |
    | injected_files              | 5     |
    | injected_file_content_bytes | 10240 |
    | injected_file_path_bytes    | 255   |
    | key_pairs                   | 100   |
    | security_groups             | 10    |
    | security_group_rules        | 20    |
    | server_groups               | 10    |
    | server_group_members        | 10    |
    +-----------------------------+-------+
    

    注釈

    以下を実行して、nova quota-update コマンドのオプションリストを表示します。

    $ nova help quota-update
    

Object Storage のクォータの設定

現在、Object Storage に対する 2 種類のクォータがあります。

コンテナーのクォータ

1 つのコンテナーに保存できる、オブジェクトの容量 (バイト単位) や個数の合計を制限します。

アカウントのクォータ

ユーザーが Object Storage サービス で利用できる合計容量 (バイト単位) を制限します。

コンテナーのクォータやアカウントのクォータの利点を得るために、Object Storage のプロキシーサーバーが container_quotasaccount_quotas (または両方) を [pipeline:main] パイプラインに追加するする必要があります。各クォータの種類は、proxy-server.conf ファイルにそれ自身のセクションも必要とします。

[pipeline:main]
pipeline = catch_errors [...] slo dlo account_quotas proxy-server

[filter:account_quotas]
use = egg:swift#account_quotas

[filter:container_quotas]
use = egg:swift#container_quotas

Object Storage クォータを表示および更新するためには、python-swiftclient パッケージにより提供される swift コマンドを使用します。プロジェクト内のユーザーは誰でも、そのプロジェクトに設定されているクォータを表示できます。プロジェクトの Object Storage クォータを更新する場合、クォータを適用するプロジェクトにおいて ResellerAdmin ロールを持つ必要があります。

プロジェクトのアカウントのクォータを表示します。

$ swift stat
   Account: AUTH_b36ed2d326034beba0a9dd1fb19b70f9
Containers: 0
   Objects: 0
     Bytes: 0
Meta Quota-Bytes: 214748364800
X-Timestamp: 1351050521.29419
Content-Type: text/plain; charset=utf-8
Accept-Ranges: bytes

プロジェクトのアカウントのクォータを適用または更新します。

$ swift post -m quota-bytes:
     <bytes>

例として、アカウントに 5 GB のクォータを設定します。

$ swift post -m quota-bytes:
     5368709120

再び swift stat コマンドを実行して、クォータを検証します。

$ swift stat
   Account: AUTH_b36ed2d326034beba0a9dd1fb19b70f9
Containers: 0
   Objects: 0
     Bytes: 0
Meta Quota-Bytes: 5368709120
X-Timestamp: 1351541410.38328
Content-Type: text/plain; charset=utf-8
Accept-Ranges: bytes

Block Storage のクォータの設定

管理ユーザーは、既存のテナントの Block Storage のクォータを更新できます。また、新規テナントのクォータのデフォルト値を更新することもできます。表: Block Storage のクォータの説明 を参照してください。

表: Block Storage のクォータの説明

プロパティ名

説明

gigabytes

テナントごとのボリューム容量の最大値(単位はギガバイト)

snapshots

テナントごとのブロックストレージスナップショット数

volumes

テナントごとのブロックストレージボリューム数

Block Storage サービスのテナント (プロジェクト) の クォータの表示と更新

管理ユーザーは cinder quota-* コマンドを使って、テナントのクォータを表示したり更新したりできます。コマンドは python-cinderclient パッケージに含まれます。

Block Storage のデフォルトのクォータ値の表示と更新

  1. 全テナントに対するクォータのデフォルト値を全て表示するには、以下のようにします。

    $ cinder quota-defaults tenantID
    
  2. テナント ID を取得します。

    $ tenant=$(openstack project list | awk '/tenantName/ {print $2}')
    

    例えば

    $ cinder quota-defaults $tenant
    +-----------+-------+
    |  Property | Value |
    +-----------+-------+
    | gigabytes |  1000 |
    | snapshots |   10  |
    |  volumes  |   10  |
    +-----------+-------+
    
  3. 新規テナントのクォータのデフォルト値を更新するには、/etc/cinder/cinder.conf ファイルの対応する項目を更新します。

プロジェクトの Block Storage クォータの表示方法

  1. 特定のテナントのクォータを表示するには以下のようにします。

    # cinder quota-show  tenantID
    

    例えば

    # cinder quota-show $tenant
    +-----------+-------+
    |  Property | Value |
    +-----------+-------+
    | gigabytes |  1000 |
    | snapshots |   10  |
    |  volumes  |   10  |
    +-----------+-------+
    

プロジェクトの Block Storage クォータの更新方法

  1. テナント ID を変数に格納します。

    $ tenant=$(openstack project list | awk '/tenantName/ {print $2}')
    
  2. 指定したクォータ値を更新します。

    # cinder quota-update --quotaName NewValue tenantID
    

    例えば

    # cinder quota-update --volumes 15 $tenant
    # cinder quota-show $tenant
    +-----------+-------+
    |  Property | Value |
    +-----------+-------+
    | gigabytes |  1000 |
    | snapshots |   10  |
    |  volumes  |   15  |
    +-----------+-------+