跳转到: 导航, 搜索

SwiftQuotas

  • Launchpad Entry: SwiftSpec:storage-quotas
  • 创建时间: 2012年3月1日
  • 贡献者: Everett Toews

快速说明

我在 https://review.openstack.org/#/c/19758/ http://www.zmanda.com/blogs/?p=1043https://github.com/AlexYangYu/StackLab-swift/tree/dev-quota 看到了一些类似的工作。

最好能在此进行一些协作。

总结

在某些部署场景中,例如私有云,提供商可能希望通过配额限制租户(帐户)的最大允许存储量。

发布说明

存储配额可防止帐户使用超过其允许的存储空间。

存储配额为 -1 表示帐户的存储空间不受限制(-1 在 Nova 配额中也表示无限)。

原理

这对于无法随着存储使用量增长而简单添加磁盘的提供商来说是必要的。可能有很多因素会阻止提供商轻松添加磁盘。

前提条件

配额值存储在每个帐户中。所有值均以字节为单位。

用户故事

1. 帐户无限存储

  • 帐户配额:-1
  • 当配额值为 -1 时,存储空间不受限制。

2. 帐户无存储

  • 帐户配额:0
  • 当配额值为 0 时,不允许存储。

3. 帐户有限制存储

  • 帐户配额:>1
  • 当配额值大于 1 时,存储空间限制为此值。

4. 帐户超出配额

从中间件返回的错误代码,客户端负责实际通知(电子邮件/短信/任何方式)

如果帐户超出配额,它将进入超额模式。以下只是示例,中间件应该足够通用,以便可以轻松地调整(可插拔?)以添加不同的模式。此规范中唯一要实现的一种模式是只读/删除模式。

潜在的超额模式

  • 只读/删除模式
  • 自动增加配额
  • 全部停止
  • 特定速率限制(对超出配额的帐户降级服务)

5. 帐户低于配额

  • 一切照常

设计

待定

实现

  1. 获取认证令牌
  2. 获取使用量
  3. 获取配额
  4. 在 Swift 中间件中过滤

配额可以存在于 Swift 之外,作为身份验证的一部分,因为它们是帐户(租户)级别的信息。

使用量数据从哪里获取?

  • 对帐户进行 HEAD 操作(RFE:自 XXX 以来的字节数传输量)HEAD 操作成本低廉,缓存将使其保持性能,返回计费字节数,而不是原始字节数
  • 日志记录(用于汇总存储和带宽)

UI 变更

Swift CLI 需要能够 CRUD 帐户的配额。您应该能够在 Horizon 中查看配额使用情况。

代码变更

代码变更应包括需要更改的内容的概述,并且在某些情况下甚至包括具体细节。

迁移

包括

  • 数据迁移(如果有)
  • 从旧 URL 到新 URL 的重定向(如果有)
  • 如何引导用户使用新的操作方式(如果需要)。

测试/演示计划

这不必在规范接近 Beta 之前添加或完成。

未解决的问题

这应该突出显示需要在进一步的规范中解决的任何问题,而不是规范本身的问题;因为任何存在问题的规范都无法获得批准。

BoF 议程和讨论

使用本节记录 BoF 期间的笔记;如果将其保留在批准的规范中,请用于总结讨论内容并记录任何被拒绝的选项。