クォータ

クォータ

システムの容量が通知なしに完全に消費されないように、 クォータ を設定することができます。クォータとは、運用上の制限値です。たとえば、各テナントに許容される容量 (GB) を制御して、単一のテナントで全ディスク容量すべてが消費されないようにします。現在、ユーザーレベルではなく、テナント (またはプロジェクト) レベルで、クォータを有効にすることができます。

警告

妥当なクォータがないと、単一のテナントが利用可能なリソースをすべて使用してしまう可能性があるため、デフォルトのクォータが 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 のクォータの説明
クォータ 説明 プロパティ名
固定 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
セキュリティグループルール Number of security group rules per project. 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  |
    +-----------+-------+
    
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.