搜索

第 5 章 配置 Object Storage 服务 (swift)

download PDF

Red Hat OpenStack Platform (RHOSP) Object Storage 服务(swift)将其对象或数据存储在容器中。容器与文件系统中的目录类似,但它们无法嵌套。容器为用户提供了一种简单的方法来存储任何非结构化数据。例如,对象可以包含 photos、文本文件或镜像。存储的对象不会被压缩。

5.1. 对象存储环

对象存储服务(swift)使用名为 ring 的数据结构来在集群中分发分区空间。这个分区空间是对象存储服务中的数据持久性引擎的核心。通过环,对象存储服务可以快速轻松地在集群中同步每个分区。

Ring 包含有关对象存储分区的信息,以及如何在不同的节点和磁盘间分布分区。当任何对象存储组件与数据交互时,会在环中本地执行快速查找来确定每个对象的可能的分区。

对象存储服务有三个环来存储以下类型的数据:

  • 帐户信息
  • 容器,以便于将对象组织到帐户下
  • 对象副本

5.1.1. 检查集群健康状况

对象存储服务(swift)在后台运行多个进程,以确保长期数据可用性、持久性和持久性。例如:

  • 审核员会持续重新读取数据库和对象文件,并使用 checksums 进行比较,以确保没有静默的位。任何不再匹配其校验和的数据库或对象文件都是 quarantined,且在该节点上不可读取。然后,replicators 复制另一个副本,以便再次提供本地副本。
  • 当您替换磁盘或节点或对象是 quarantined 时,对象和文件可能会消失。当发生这种情况时,replicators 会将缺少的对象或数据库文件复制到其他节点之一。

对象存储服务包含一个名为 swift-recon 的工具,用于从所有节点收集数据并检查整个集群健康状况。

流程

  1. 登录到其中一个 Controller 节点。
  2. 运行以下命令:

    [tripleo-admin@overcloud-controller-2 ~]$ sudo podman exec -it -u swift swift_object_server /usr/bin/swift-recon -arqlT --md5
    
    ======================================================================--> Starting reconnaissance on 3 hosts (object)
    ======================================================================[2018-12-14 14:55:47] Checking async pendings
    [async_pending] - No hosts returned valid data.
    ======================================================================[2018-12-14 14:55:47] Checking on replication
    [replication_failure] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3
    [replication_success] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3
    [replication_time] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3
    [replication_attempted] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3
    Oldest completion was 2018-12-14 14:55:39 (7 seconds ago) by 198.51.100.186:6000.
    Most recent completion was 2018-12-14 14:55:42 (4 seconds ago) by 198.51.100.174:6000.
    ======================================================================[2018-12-14 14:55:47] Checking load averages
    [5m_load_avg] low: 1, high: 2, avg: 2.1, total: 6, Failed: 0.0%, no_result: 0, reported: 3
    [15m_load_avg] low: 2, high: 2, avg: 2.6, total: 7, Failed: 0.0%, no_result: 0, reported: 3
    [1m_load_avg] low: 0, high: 0, avg: 0.8, total: 2, Failed: 0.0%, no_result: 0, reported: 3
    ======================================================================[2018-12-14 14:55:47] Checking ring md5sums
    3/3 hosts matched, 0 error[s] while checking hosts.
    ======================================================================[2018-12-14 14:55:47] Checking swift.conf md5sum
    3/3 hosts matched, 0 error[s] while checking hosts.
    ======================================================================[2018-12-14 14:55:47] Checking quarantine
    [quarantined_objects] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3
    [quarantined_accounts] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3
    [quarantined_containers] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 3
    ======================================================================[2018-12-14 14:55:47] Checking time-sync
    3/3 hosts matched, 0 error[s] while checking hosts.
    ======================================================================
  3. 可选: 使用 --all 选项返回附加输出。

    此命令查询 ring 上的所有服务器以获取以下数据:

    • async pendings :如果集群负载过高,且进程无法快速更新数据库文件,则一些更新会异步进行。这些数字会随时间而减少。
    • 复制指标 :查看复制时间戳;完整复制通过频繁出现几个错误。旧条目(例如,带有 6 个月前的时间戳的条目)表示节点上的复制还没有在最后的六个月内完成。
    • Ring md5sums:这样可确保所有环文件在所有节点上都一致。
    • swift.conf md5sums:这样可确保所有配置文件在所有节点上都一致。
    • Quarantined 文件:所有节点必须具有 no 或非常少的 quarantined 文件。
    • time-sync :所有节点必须同步。

5.1.2. 增加环分区电源

Ring power 决定将资源(如帐户、容器或对象)映射到的分区。分区包含在资源存储在后端文件系统中的路径中。因此,更改分区电源需要将资源重新定位到后端文件系统中的新路径。

在大量填充的集群中,重新定位过程会非常耗时。为避免停机,在集群仍在运行时重新定位资源。您必须在不临时丢失数据访问或损害进程性能(如复制和审核)的情况下执行此操作。如需增加环分区电源的帮助,请联系红帽支持。

5.1.3. 对象存储服务的分区电源建议

使用单独的 Red Hat OpenStack Platform (RHOSP) Object Storage 服务(swift)节点时,使用较高的分区电源值。

对象存储服务使用修改后的 哈希环 在磁盘和节点之间分发数据。默认有三个环:一个用于帐户,一个用于容器,另一个用于对象。每个环使用一个称为 分区电源 的固定参数。此参数设置可创建的最大分区数。

分区电源参数非常重要,只能为新容器及其对象更改。因此,在初始部署 前设置这个值非常重要。

对于 RHOSP director 部署的环境,默认分区 power 值为 10。对于较小的部署来说,这是合理的值,特别是您只计划在 Controller 节点上为对象存储服务使用磁盘。

如果使用三个副本,下表可帮助您选择适当的分区电源:

表 5.1. 每个可用磁盘数量的适当分区电源值

分区 Power

磁盘的最大数量

10

~ 35

11

~ 75

12

~ 150

13

~ 250

14

~ 500

重要

设置过度高的分区电源值(例如,14 代表 40 个磁盘)对复制时间造成负面影响。

要设置分区电源,请使用以下资源:

parameter_defaults:
  SwiftPartPower: 11
提示

您还可以为新容器配置额外的对象服务器 ring。如果要在最初使用低分区电源的对象存储服务部署中添加更多磁盘,这非常有用。

其他资源

5.1.4. 自定义环

随着技术进步和存储容量的增加,创建自定义环是更新现有 Object Storage 集群的方法。

当您向集群添加新节点时,它们的特征可能与原始节点的不同。如果没有自定义调整,可能会使用新节点的较大的容量。或者,如果对环中的权重发生变化,数据分布可能会变得不均匀,这会降低安全性。

自动化可能无法与未来的技术趋势保持同步。例如,现在使用的一些较旧的 Object Storage 集群以前源自在 SSD 可用之前。

在集群不断增长和技术时,ring 构建器有助于管理对象存储。如需创建自定义环的帮助,请联系红帽支持。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.