管理对象元数据存储
StorageGRID 系统的对象元数据容量用于控制可存储在该系统上的最大对象数。为了确保 StorageGRID 系统有足够的空间来存储新对象,您必须了解 StorageGRID 在何处以及如何存储对象元数据。
什么是对象元数据?
对象元数据是指描述对象的任何信息。StorageGRID 使用对象元数据跟踪网格中所有对象的位置,并管理每个对象的生命周期。
对于 StorageGRID 中的对象,对象元数据包括以下类型的信息:
-
系统元数据,包括每个对象的唯一 ID ( UUID ),对象名称, S3 存储分段或 Swift 容器的名称,租户帐户名称或 ID ,对象的逻辑大小,首次创建对象的日期和时间, 以及上次修改对象的日期和时间。
-
与对象关联的任何自定义用户元数据键值对。
-
对于 S3 对象,是指与该对象关联的任何对象标记键值对。
-
对于复制的对象副本,为每个副本提供当前存储位置。
-
对于经过擦除编码的对象副本,为每个片段的当前存储位置。
-
对于云存储池中的对象副本,此对象的位置,包括外部存储分段的名称和对象的唯一标识符。
-
对于分段对象和多部分对象,分段标识符和数据大小。
如何存储对象元数据?
StorageGRID 在 Cassandra 数据库中维护对象元数据,该数据库独立于对象数据进行存储。为了提供冗余并防止对象元数据丢失, StorageGRID 会为每个站点的系统中的所有对象存储三个元数据副本。对象元数据的三个副本均匀分布在每个站点的所有存储节点上。
此图表示两个站点上的存储节点。每个站点都具有相同数量的对象元数据,这些元数据会在该站点的存储节点之间平均分布。
对象元数据存储在何处?
此图表示单个存储节点的存储卷。
如图所示, StorageGRID 会为每个存储节点的存储卷 0 上的对象元数据预留空间。它会使用预留空间存储对象元数据并执行基本数据库操作。存储卷 0 和存储节点中所有其他存储卷上的任何剩余空间仅用于对象数据(复制的副本和经过纠删编码的片段)。
为特定存储节点上的对象元数据预留的空间量取决于多种因素,如下所述。
元数据预留空间设置
元数据预留空间 _ 是一个系统范围设置,表示将为每个存储节点的卷 0 上的元数据预留的空间量。如表所示、StorageGRID 11.5的此设置的默认值基于以下内容:
-
最初安装 StorageGRID 时使用的软件版本。
-
每个存储节点上的 RAM 量。
用于初始 StorageGRID 安装的版本 | 存储节点上的 RAM 量 | StorageGRID 11.5的默认元数据预留空间设置 |
---|---|---|
11.5 |
网格中的每个存储节点上的容量为 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 系统的元数据预留空间设置,请执行以下操作:
-
选择*配置*>*系统设置*>*存储选项*。
-
在存储水印表中,找到 * 元数据预留空间 * 。
在屏幕截图中, * 元数据预留空间 * 值为 8 , 000 GB ( 8 TB )。这是新StorageGRID 11.5安装的默认设置、其中每个存储节点的RAM均为128 GB或以上。
元数据的实际预留空间
与系统范围的元数据预留空间设置不同,系统会为每个存储节点确定对象元数据的 actual reserved space 。对于任何给定的存储节点,元数据的实际预留空间取决于节点的卷 0 大小以及系统范围的 * 元数据预留空间 * 设置。
节点的卷 0 大小 | 元数据的实际预留空间 |
---|---|
小于 500 GB (非生产用) |
卷 0 的 10% |
500 GB 或更大 |
这些值中较小的值:
|
要查看特定存储节点上元数据的实际预留空间,请执行以下操作:
-
在网格管理器中、选择*节点*>*存储节点_*。
-
选择 * 存储 * 选项卡。
-
将光标悬停在 "Storage Used - Object Metadata " 图表上,找到 "* 实际预留 * " 值。
在屏幕截图中, * 实际预留 * 值为 8 TB 。此屏幕截图适用于新安装的StorageGRID 11.5中的大型存储节点。由于此存储节点的系统范围元数据预留空间设置小于卷 0 ,因此此节点的实际预留空间等于元数据预留空间设置。
实际预留*值对应于此Prometheus指标:
storagegrid_storage_utilization_metadata_reserved_bytes
实际预留的元数据空间示例
假设您安装的是使用11.5版的新StorageGRID 系统。在此示例中,假设每个存储节点的 RAM 超过 128 GB ,并且存储节点 1 ( SN1 )的卷 0 为 6 TB 。基于以下值:
-
系统范围的 * 元数据预留空间 * 设置为 8 TB 。(如果每个存储节点的RAM超过128 GB、则这是新StorageGRID 11.5安装的默认值。)
-
SN1 元数据的实际预留空间为 6 TB 。(由于卷 0 小于 * 元数据预留空间 * 设置,因此会保留整个卷。)
允许的元数据空间
每个存储节点为元数据实际预留的空间细分为可用于对象元数据的空间(允许的元数据空间 _ )以及基本数据库操作(如数据缩减和修复)以及未来硬件和软件升级所需的空间。允许的元数据空间用于控制整体对象容量。
下表总结了 StorageGRID 如何确定存储节点的允许元数据空间值。
元数据的实际预留空间 | 允许的元数据空间 |
---|---|
4 TB或更少 |
元数据实际预留空间的 60% ,最大 1.98 TB |
超过4 TB |
(元数据的实际预留空间−1 TB)×60%、最多2.64 TB |
如果您的StorageGRID 系统在任何存储节点上存储(或预期存储)的元数据超过2.64 TB、则在某些情况下、允许的元数据空间可能会增加。如果您的每个存储节点的RAM均超过128 GB、并且存储卷0上有可用空间、请联系您的NetApp客户代表。如果可能、NetApp将审核您的要求并增加每个存储节点的允许元数据空间。 |
要查看存储节点允许的元数据空间,请执行以下操作:
-
在网格管理器中、选择*节点*>*存储节点_*。
-
选择 * 存储 * 选项卡。
-
将光标悬停在已用存储 - 对象元数据图表上,找到 * 允许 * 值。
在屏幕截图中, * 允许 * 值为 2.64 TB ,这是存储节点的最大值,该存储节点的元数据实际预留空间超过 4 TB 。
-
允许 * 值对应于此 Prometheus 指标:
storagegrid_storage_utilization_metadata_allowed_bytes
允许的元数据空间示例
假设您安装的是使用11.5版的StorageGRID 系统。在此示例中,假设每个存储节点的 RAM 超过 128 GB ,并且存储节点 1 ( SN1 )的卷 0 为 6 TB 。基于以下值:
-
系统范围的 * 元数据预留空间 * 设置为 8 TB 。(当每个存储节点的RAM超过128 GB时、这是StorageGRID 11.5的默认值。)
-
SN1 元数据的实际预留空间为 6 TB 。(由于卷 0 小于 * 元数据预留空间 * 设置,因此会保留整个卷。)
-
SN1 上允许的元数据空间为 2.64 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 系统的整体元数据容量取决于最小站点的对象元数据容量。
由于对象元数据容量控制最大对象数,因此当一个节点用尽元数据容量时,网格实际上已满。
-
要了解如何监控每个存储节点的对象元数据容量、请执行以下操作:
-
要增加系统的对象元数据容量、必须添加新的存储节点: