管理 StorageGRID 中的对象元数据存储
StorageGRID 系统的对象元数据容量控制可以存储在该系统上的对象的最大数量。为了确保您的 StorageGRID 系统有足够的空间来存储新对象,您必须了解 StorageGRID 存储对象元数据的位置和方式。
什么是对象元数据?
对象元数据是描述对象的任何信息。StorageGRID 使用对象元数据来跟踪网格中所有对象的位置,并随时间管理每个对象的生命周期。
对于 StorageGRID 中的对象,对象元数据包含以下类型的信息:
-
系统元数据,包括每个对象的唯一 ID (UUID)、对象名称、S3 存储桶的名称、租户帐户名称或 ID、对象的逻辑大小、对象首次创建的日期和时间以及对象上次修改的日期和时间。
-
与对象关联的任何自定义用户元数据键值对。
-
对于 S3 对象,与对象关联的任何对象标记键值对。
-
对于复制的对象副本,每个副本的当前存储位置。
-
对于擦除编码的对象副本,每个片段的当前存储位置。
-
对于云存储池中的对象副本,对象的位置,包括外部存储桶的名称和对象的唯一标识符。
-
对于分段对象和多部分对象,分段标识符和数据大小。
对象元数据是如何存储的?
StorageGRID 将对象元数据维护在 Cassandra 数据库中,该数据库独立于对象数据存储。为了提供冗余并保护对象元数据免受丢失,StorageGRID 在每个站点为系统中的所有对象存储三个元数据副本。
此图表示两个站点的存储节点。每个站点具有相同数量的对象元数据,每个站点的元数据在该站点的所有存储节点之间进行细分。

对象元数据存储在哪里?
此图表示单个存储节点的存储卷。

如图所示,StorageGRID 在每个存储节点的存储卷 0 上为对象元数据预留空间。它使用预留空间来存储对象元数据并执行基本的数据库操作。存储卷 0 上的任何剩余空间以及存储节点中的所有其他存储卷均专用于对象数据(复制副本和纠删码片段)。
为特定存储节点上的对象元数据保留的空间量取决于以下几个因素。
元数据预留空间设置
_元数据保留空间_是一个系统范围的设置,表示将为每个存储节点的卷 0 上的元数据保留的空间量。如表所示,此设置的默认值基于:
-
您最初安装 StorageGRID 时使用的软件版本。
-
每个存储节点上的 RAM 量。
| 用于初始 StorageGRID 安装的版本 | 存储节点上的 RAM 量 | 默认元数据保留空间设置 |
|---|---|---|
11.5 至 12.0 |
网格中每个存储节点上 128 GB 或更多 |
8 TB (8,000 GB) |
网格中的任何存储节点上小于 128 GB |
3 TB (3,000 GB) |
|
11.1 至 11.4 |
任意一个站点的每个存储节点上 128 GB 或更多 |
4 TB (4,000 GB) |
每个站点上任何存储节点上的小于 128 GB |
3 TB (3,000 GB) |
|
11.0或更早版本 |
任意金额 |
2 TB (2,000 GB) |
查看元数据保留空间设置
按照以下步骤查看 StorageGRID 系统的元数据保留空间设置。
-
选择*配置* > 系统 > 存储设置。
-
在存储设置页面上,展开*元数据保留空间*部分。
对于 StorageGRID 11.8 或更高版本,元数据保留空间值必须至少为 100 GB 且不超过 1 PB。
新 StorageGRID 11.6 或更高版本安装的默认设置(其中每个存储节点具有 128 GB 或更多 RAM)为 8,000 GB(8 TB)。
元数据的实际预留空间
与系统范围的元数据保留空间设置不同,对象元数据的_实际保留空间_是为每个存储节点单独确定的。对于任何给定的存储节点,元数据的实际保留空间取决于该节点的卷 0 的大小以及系统范围的元数据保留空间设置。
| 此节点的卷 0 的大小 | 元数据的实际预留空间 |
|---|---|
不到 500 GB(非生产用) |
卷 0 的 10% |
500 GB 或更多 + 或 + 仅元数据 Storage Nodes |
以下值中较小的值:
注意:仅元数据存储节点仅需要一个 rangedb。 |
查看元数据的实际预留空间
按照下面的步骤查看特定存储节点上元数据的实际保留空间。
-
从网格管理器中,选择*节点* > 存储节点。
-
选择 Storage 选项卡。
-
将光标放在"已用存储 - 对象元数据"图表上,并找到*实际保留*值。

在屏幕截图中,*实际保留*值为 8 TB。此屏幕截图适用于新 StorageGRID 11.6 安装中的大型存储节点。由于此存储节点的系统范围元数据保留空间设置小于卷 0,因此此节点的实际保留空间等于元数据保留空间设置。
实际保留元数据空间示例
假设您使用 11.7 版或更高版本安装新的 StorageGRID 系统。在此示例中,假设每个存储节点的 RAM 超过 128 GB,并且存储节点 1 (SN1) 的卷 0 为 6 TB。基于这些值:
-
全系统*元数据保留空间*设置为 8 TB。(如果每个存储节点的 RAM 超过 128 GB,这是新 StorageGRID 11.6 或更高版本安装的默认值。)
-
SN1 元数据的实际保留空间为 6 TB。(整个卷被保留,因为卷 0 小于*元数据保留空间*设置。)
允许的元数据空间
每个存储节点的元数据实际保留空间被细分为可用于对象元数据的空间(允许的元数据空间)和基本数据库操作(如压缩和修复)以及未来硬件和软件升级所需的空间。允许的元数据空间控制整体对象容量。

下表显示了 StorageGRID 如何根据节点的内存量和元数据的实际预留空间,计算不同存储节点的*允许元数据空间*。
存储节点上的内存量 |
|||
< 128 GB |
>= 128 GB |
元数据的实际预留空间 |
|
⇐ 4 TB |
元数据实际保留空间的 60%,最多 1.32 TB |
元数据实际保留空间的 60%,最多 1.98 TB |
|
查看允许的元数据空间
按照下面的步骤查看存储节点允许的元数据空间。
-
在网格管理器中,选择 节点 。
-
选择存储节点。
-
选择 Storage 选项卡。
-
将光标放在"已用存储 - 对象元数据"图表上,并找到 Allowed 值。

在屏幕截图中,*允许*值为 3.96 TB,这是元数据实际保留空间超过 4 TB 的 Storage Node 的最大值。
*允许的*值对应于此 Prometheus 指标:
storagegrid_storage_utilization_metadata_allowed_bytes
允许的元数据空间示例
假设您使用版本 11.6 安装 StorageGRID 系统。对于此示例,假设每个存储节点的 RAM 超过 128 GB,并且存储节点 1(SN1)的卷 0 为 6 TB。基于这些值:
-
全系统*元数据保留空间*设置为 8 TB。(这是每个 Storage Node 内存超过 128 GB RAM 时,StorageGRID 11.6 或更高版本的默认值。)
-
SN1 元数据的实际保留空间为 6 TB。(整个卷被保留,因为卷 0 小于*元数据保留空间*设置。)
-
SN1 上元数据的允许空间为 3 TB,基于元数据允许空间的表中所示的计算:(元数据的实际保留空间 − 1 TB)× 60%,最多 3.96 TB。
不同大小的存储节点如何影响对象容量
如上所述,StorageGRID 会在每个站点的存储节点之间均匀分布对象元数据。因此,如果站点包含不同大小的存储节点,则该站点上最小的节点决定了站点的元数据容量。
请考虑以下示例:
-
您有一个包含三个不同大小的存储节点的单站点网格。
-
*元数据保留空间*设置为 4 TB。
-
对于实际保留的元数据空间和允许的元数据空间,存储节点具有以下值。
存储节点 卷 0 的大小 实际保留的元数据空间 允许的元数据空间 SN1
2.2 TB
2.2 TB
1.32 TB
SN2
5 TB
4 TB
1.98 TB
SN3
6 TB
4 TB
1.98 TB
由于对象元数据均匀分布在站点的存储节点上,因此本示例中的每个节点只能容纳 1.32 TB 的元数据。SN2 和 SN3 允许的额外 0.66 TB 元数据空间无法使用。

同样,由于 StorageGRID 在每个站点维护 StorageGRID 系统的所有对象元数据,因此 StorageGRID 系统的整体元数据容量由最小站点的对象元数据容量决定。
由于对象元数据容量控制最大对象计数,当某个节点的元数据容量耗尽时,网格实际上已满。
-
要了解如何监视每个存储节点的对象元数据容量,请参见 "监控 StorageGRID" 的说明。
-
要增加系统的对象元数据容量,请 "展开网格" 通过添加新的存储节点。