[ 英语 | 日本語 | Deutsch | Indonesia ]

配额

为了防止系统容量在没有通知的情况下耗尽,您可以设置配额。配额是运行限制。例如,可以控制每个租户允许的千兆字节数,以确保单个租户无法消耗所有磁盘空间。目前,配额是在租户(或项目)级别强制执行的,而不是用户级别。

警告

由于如果没有合理的配额,单个租户可能会耗尽所有可用资源,OpenStack 默认会附带默认配额。您应该注意哪些配额设置对您的硬件功能有意义。

使用命令行界面,您可以管理 OpenStack Compute 服务和块存储服务的配额。

通常,会更改默认值,因为租户可能需要超过 OpenStack 默认的每个租户 10 个卷,或者超过 OpenStack 默认的计算节点上 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>

例如,要将项目的镜像存储限制为 5 GB,请执行以下操作

user_storage_quota = 5368709120

注意

/etc/glance/glance-api.conf 中有一个配置选项,限制了每个镜像允许的成员数量,名为 image_member_quota,默认设置为 128。该设置与存储配额不同。

设置计算服务配额

作为管理员用户,您可以更新现有租户的计算服务配额,以及更新新租户的配额默认值。请参阅 计算配额说明

计算配额说明

配额

描述

属性名称

固定 IP

每个项目允许的固定 IP 地址数量。此数字必须等于或大于允许的实例数量。

fixed-ips

浮动 IP

每个项目允许的浮动 IP 地址数量。

floating-ips

注入文件内容字节

每个注入文件允许的内容字节数。

injected-file-content-bytes

注入文件路径字节

每个注入文件路径允许的字节数。

injected-file-path-bytes

注入文件

每个项目允许的注入文件数量。

injected-files

实例

每个项目允许的实例数量。

instances

密钥对

每个用户允许的密钥对数量。

key-pairs

元数据项

每个实例允许的元数据项数量。

metadata-items

RAM

每个项目允许的实例 RAM 千兆字节数。

ram

安全组规则

每个项目允许的安全组规则数量。

security-group-rules

安全组

安全组

每个项目允许的安全组数量。

VCPUs

实例核心数

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
    

设置对象存储配额

目前对象存储有两个类别的配额

容器配额

限制可以存储在单个容器中的总大小(以字节为单位)或对象数量。

帐户配额

限制用户在对象存储服务中可用的总大小(以字节为单位)。

要利用容器配额或帐户配额,您的对象存储代理服务器必须在 [pipeline:main] 管道中添加 container_quotasaccount_quotas(或两者)。每种配额类型还需要在 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

要查看和更新对象存储配额,请使用由 python-swiftclient 包提供的 swift 命令。项目中包含的任何用户都可以查看放置在其项目上的配额。要更新对象存储配额,您必须在应用配额的项目中拥有 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

设置块存储配额

作为管理员用户,您可以更新租户的块存储服务配额,以及更新新租户的配额默认值。请参阅 表:块存储配额说明

表:块存储配额说明

属性名称

描述

千兆字节

每个租户允许的卷千兆字节数

快照

每个租户允许的块存储快照数量。

volumes

每个租户允许的块存储卷数量

查看和更新租户(项目)的块存储配额

作为管理员用户,您可以使用由 python-cinderclient 包提供的 cinder quota-* 命令来查看和更新租户配额。

要查看和更新默认块存储配额值

  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 文件中的属性。

要查看租户(项目)的块存储配额

  1. 如下查看配额

    # cinder quota-show  tenantID
    

    例如

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

要更新租户(项目)的块存储配额

  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  |
    +-----------+-------+