数据节点

数据节点容器模式 v3

师成师成· 更新于 2026-09-28· 阅读 3 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

在 Ozone 中,用户数据被切分为数据块(block),存储在 HDDS 容器中。容器是 Ozone/HDDS 的基本复制单元。每个容器都包含其元数据和数据。数据以文件形式保存在磁盘上,元数据保存在 RocksDB 中。

此前,数据节点上每个容器都对应一个 RocksDB。随着用户数据不断增长,一个数据节点上将出现数十万个 RocksDB 实例。在单个 JVM 中管理如此数量的 RocksDB 实例是一大挑战。

与之前的方式不同,容器 Schema v3 为每个数据卷仅使用一个 RocksDB,将所有容器的元数据都保存在该 RocksDB 中。

配置

这主要是数据节点的功能,不需要太多配置。默认情况下该功能已启用。

如果更倾向于"每个容器一个 RocksDB"的模式,可以通过以下配置来禁用该功能。请注意,一旦启用了该功能,强烈建议之后不要将其禁用。

<property>
   <name>hdds.datanode.container.schema.v3.enabled</name>
   <value>false</value>
   <description>Disable or enable this feature.</description>
</property>

在没有任何特定配置的情况下,单个 RocksDB 会创建在 hdds.datanode.dir 所配置的数据卷之下。

对于有高性能需求的高级集群管理员,可以利用更快的存储介质来保存 RocksDB。此时需要配置以下两个属性:

<property>
   <name>hdds.datanode.container.db.dir</name>
   <value/>
   <description>This setting is optional. Specify where the per-disk RocksDB instances will be stored.</description>
</property>

<property>
   <name>hdds.datanode.failed.db.volumes.tolerated</name>
   <value>-1</value>
   <description>The number of db volumes that are allowed to fail before a Datanode stops offering service.
   Default -1 means unlimited, but we should have at least one good volume left.</description>
</property>

向后兼容

启用此功能后,每个现有容器各自拥有的 RocksDB 仍然可以访问。所有容器数据将共存于现有的 Ozone 集群中。

参考资料

评论

登录后参与评论

正在加载评论…