This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/ozone-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 0cef56a1 [auto] Generated docs from Apache Ozone master
4b1627c4bce6aacb49db52cbf0277acdc93b0e5c
0cef56a1 is described below
commit 0cef56a19f3cc4ef920c18f326bf0dfb78171c22
Author: Github Actions <[email protected]>
AuthorDate: Thu Sep 4 12:46:37 2025 +0000
[auto] Generated docs from Apache Ozone master
4b1627c4bce6aacb49db52cbf0277acdc93b0e5c
---
docs/edge/design.html | 10 +
docs/edge/design/index.xml | 9 +-
docs/edge/design/listener-om.html | 678 ++++++++++++++++++++++++++++++++++++++
docs/edge/en/sitemap.xml | 9 +-
docs/edge/index.xml | 7 +
docs/edge/interface/ofs.html | 2 +-
docs/edge/sitemap.xml | 2 +-
docs/edge/zh/interface/ofs.html | 2 +-
8 files changed, 712 insertions(+), 7 deletions(-)
diff --git a/docs/edge/design.html b/docs/edge/design.html
index 14488e91..acaa32d0 100644
--- a/docs/edge/design.html
+++ b/docs/edge/design.html
@@ -577,6 +577,16 @@ s=d.getElementsByTagName('script')[0];
</thead>
<tbody>
+ <tr>
+ <td>2025-08-27</td>
+ <td>
+ <a
href="https://issues.apache.org/jira/browse/HDDS-11523">HDDS-11523</a>
+ </td>
+ <td><a href="./design/listener-om.html">Listener
Ozone Manager</a></td>
+ <td>Read-only Ozone Manager to scale out read
performance.</td>
+ <td>implementing</td>
+ </tr>
+
<tr>
<td>2025-05-12</td>
<td>
diff --git a/docs/edge/design/index.xml b/docs/edge/design/index.xml
index 7ddadd08..2a7c9cc5 100644
--- a/docs/edge/design/index.xml
+++ b/docs/edge/design/index.xml
@@ -6,8 +6,15 @@
<description>Recent content in Designs on Ozone</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Tue, 12 Aug 2025 14:24:23 -0400</lastBuildDate>
+ <lastBuildDate>Wed, 03 Sep 2025 11:34:46 -0700</lastBuildDate>
<atom:link href="/design/index.xml" rel="self" type="application/rss+xml"
/>
+ <item>
+ <title>Listener Ozone Manager</title>
+ <link>/design/listener-om.html</link>
+ <pubDate>Wed, 27 Aug 2025 00:00:00 +0000</pubDate>
+ <guid>/design/listener-om.html</guid>
+ <description>Read-only Ozone Manager to scale out read
performance.</description>
+ </item>
<item>
<title>Full Volume Handling</title>
<link>/design/full-volume-handling.html</link>
diff --git a/docs/edge/design/listener-om.html
b/docs/edge/design/listener-om.html
new file mode 100644
index 00000000..400b119e
--- /dev/null
+++ b/docs/edge/design/listener-om.html
@@ -0,0 +1,678 @@
+
+
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <meta name="description" content="Apache Ozone Documentation">
+
+ <title>Documentation for Apache Ozone</title>
+
+
+ <link href="../css/bootstrap.min.css" rel="stylesheet">
+
+
+ <link href="../css/ozonedoc.css" rel="stylesheet">
+
+
+
+ <link href="../swagger-resources/swagger-ui.css" rel="stylesheet">
+
+
+ <script>
+ var _paq = window._paq = window._paq || [];
+
+
+
+ _paq.push(['disableCookies']);
+
+
+ _paq.push(['trackPageView']);
+ _paq.push(['enableLinkTracking']);
+ (function() {
+ var u="//analytics.apache.org/";
+ _paq.push(['setTrackerUrl', u+'matomo.php']);
+ _paq.push(['setSiteId', '34']);
+ var d=document, g=d.createElement('script'),
+s=d.getElementsByTagName('script')[0];
+ g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
+ })();
+ </script>
+
+
+ </head>
+
+
+ <body>
+
+<nav class="navbar navbar-inverse navbar-fixed-top">
+ <div class="container-fluid">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle collapsed"
data-toggle="collapse" data-target="#sidebar" aria-expanded="false"
aria-controls="navbar">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a href="../index.html" class="navbar-left ozone-logo">
+ <img src="../ozone-logo-small.png"/>
+ </a>
+ <a class="navbar-brand hidden-xs" href="../index.html">
+ Apache Ozone/HDDS Documentation
+ </a>
+ <a class="navbar-brand visible-xs-inline" href="#">Apache Ozone</a>
+ </div>
+ <div id="navbar" class="navbar-collapse collapse">
+ <ul class="nav navbar-nav navbar-right">
+ <li><a href="https://github.com/apache/ozone">Source</a></li>
+ <li><a href="https://ozone.apache.org">Apache Ozone</a></li>
+ <li><a href="https://apache.org">ASF</a></li>
+ </ul>
+ </div>
+ </div>
+</nav>
+
+ <div class="container-fluid">
+ <div class="row">
+
+<div class="col-sm-2 col-md-2 sidebar" id="sidebar">
+ <ul class="nav nav-sidebar">
+
+
+
+ <li class="">
+
+ <a href="../index.html">
+
+
+
+ <span>An Introduction to Apache Ozone</span>
+ </a>
+ </li>
+
+
+
+ <li class="">
+ <a href="../start.html">
+
+ <span>Getting Started</span>
+ </a>
+ <ul class="nav">
+
+ <li class="">
+
+ <a
href="../start/productiondeployment.html">Production Deployment</a>
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+ <li class="">
+ <a href="../concept.html">
+
+ <span>Architecture</span>
+ </a>
+ <ul class="nav">
+
+ <li class="">
+
+ <a href="../concept/overview.html">Overview</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../concept/ozonemanager.html">
+
+ <span>Ozone Manager</span>
+ </a>
+ <ul class="nav">
+
+ <li class="">
+ <a
href="../concept/volumesbucketskeys.html">Volumes, Buckets, and Keys</a>
+ </li>
+
+ </ul>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../concept/storagecontainermanager.html">Storage Container Manager</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../concept/containers.html">Containers</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../concept/datanodes.html">Datanodes</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../concept/ozones3gateway.html">Ozone S3
Gateway</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../concept/recon.html">Recon</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../concept/networkports.html">Network
Ports</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../concept/comparison.html">Comparison
with Other Storage Technologies</a>
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+ <li class="">
+ <a href="../feature.html">
+
+ <span>Features</span>
+ </a>
+ <ul class="nav">
+
+ <li class="">
+
+ <a
href="../feature/decommission.html">Decommissioning</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/om-ha.html">OM High
Availability</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/erasurecoding.html">Ozone
Erasure Coding</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/snapshot.html">Ozone
Snapshot</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/scm-ha.html">SCM High
Availability</a>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../feature/streaming-write-pipeline.html">Streaming Write Pipeline</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/dn-merge-rocksdb.html">Merge
Container RocksDB in DN</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/prefixfso.html">Prefix based
File System Optimization</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/topology.html">Topology
awareness</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/quota.html">Quota in Ozone</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/recon.html">Recon Server</a>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../feature/observability.html">Observability</a>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../feature/nonrolling-upgrade.html">Non-Rolling Upgrades and
Downgrades</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/s3-multi-tenancy.html">
+
+ <span>S3 Multi-Tenancy</span>
+ </a>
+ <ul class="nav">
+
+ <li class="">
+ <a
href="../feature/s3-multi-tenancy-setup.html">Setup</a>
+ </li>
+
+ <li class="">
+ <a
href="../feature/s3-tenant-commands.html">Tenant commands</a>
+ </li>
+
+ <li class="">
+ <a
href="../feature/s3-multi-tenancy-access-control.html">Access Control</a>
+ </li>
+
+ </ul>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../feature/reconfigurability.html">Reconfigurability</a>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../feature/containerbalancer.html">Container Balancer</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/maintenance.html">Maintenance
Mode</a>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../feature/multi-raft-support.html">Multi-Raft Support in Ozone</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../feature/trash.html">Trash</a>
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+ <li class="">
+ <a href="../integration.html">
+
+ <span>Application Integrations</span>
+ </a>
+ <ul class="nav">
+
+ <li class="">
+
+ <a href="../integration/distcp.html">Hadoop
DistCp</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../integration/hive.html">Hive</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../integration/impala.html">Impala</a>
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+ <li class="">
+ <a href="../interface.html">
+
+ <span>Client Interfaces</span>
+ </a>
+ <ul class="nav">
+
+ <li class="">
+
+ <a href="../interface/ofs.html">Ofs (Hadoop
compatible)</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/o3fs.html">O3fs (Hadoop
compatible)</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/s3.html">
+
+ <span>S3 Protocol</span>
+ </a>
+ <ul class="nav">
+
+ <li class="">
+ <a
href="../interface/cyberduckozones3.html">Accessing Ozone S3 via CyberDuck</a>
+ </li>
+
+ </ul>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/cli.html">Command Line
Interface</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/reconapi.html">Recon API</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/javaapi.html">Java API</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/python.html">Accessing Apache
Ozone from Python</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/csi.html">CSI Protocol</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/httpfs.html">HttpFS
Gateway</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/native-cpp.html">Native
C/C++ Client Access to Ozone</a>
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+ <li class="">
+ <a href="../security.html">
+
+ <span>Security</span>
+ </a>
+ <ul class="nav">
+
+ <li class="">
+
+ <a href="../security/secureozone.html">Securing
Ozone</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../security/securingtde.html">Transparent
Data Encryption</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../security/gdpr.html">GDPR in Ozone</a>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../security/securingdatanodes.html">Securing Datanodes</a>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../security/securingozonehttp.html">Securing HTTP</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../security/securings3.html">Securing
S3</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../security/securityacls.html">Ozone
ACLs</a>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../security/protect-in-transit-traffic.html">Protect In-Transit
Traffic</a>
+
+ </li>
+
+ <li class="">
+
+ <a
href="../security/securitywithranger.html">Apache Ranger</a>
+
+ </li>
+
+ </ul>
+ </li>
+
+
+
+ <li class="">
+
+ <a href="../tools.html">
+
+
+
+ <span>Tools</span>
+ </a>
+ </li>
+
+
+
+ <li class="">
+
+ <a href="../recipe.html">
+
+
+
+ <span>Recipes</span>
+ </a>
+ </li>
+
+
+
+ <li class="">
+
+ <a href="../troubleshooting.html">
+
+
+
+ <span>Troubleshooting</span>
+ </a>
+ </li>
+
+
+ <li><a href="../design.html"><span><b>Design docs</b></span></a></li>
+ <li class="visible-xs"><a href="#">References</a>
+ <ul class="nav">
+ <li><a href="https://github.com/apache/ozone"><span class="glyphicon
glyphicon-new-window" aria-hidden="true"></span> Source</a></li>
+ <li><a href="https://ozone.apache.org"><span class="glyphicon
glyphicon-new-window" aria-hidden="true"></span> Apache Ozone</a></li>
+ <li><a href="https://apache.org"><span class="glyphicon
glyphicon-new-window" aria-hidden="true"></span> ASF</a></li>
+ </ul></li>
+ </ul>
+
+</div>
+
+ <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2
main-content">
+ <div class="col-md-9">
+ <h1><a
href="https://issues.apache.org/jira/browse/HDDS-11523">[HDDS-11523]</a>
Listener Ozone Manager (implementing) </h1>
+ <div><i>Authors: Janus Chow, Wei-Chiu Chuang</i><div
class="pull-right">2025-08-27</div></div>
+ <p> </p>
+
+ <div class="panel panel-success">
+ <div class="panel-heading">Summary</div>
+ <div class="panel-body">
+ Read-only Ozone Manager to scale out read performance.
+ </div>
+ </div>
+
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<h2 id="introduction">Introduction</h2>
+<p>The Listener Ozone Manager (OM) is a read-only, non-voting member of the OM
High Availability (HA) group. It receives all log entries from the leader and
stays up-to-date, but it does not participate in leader election or consensus
votes. This allows Listener OMs to serve read requests from clients, which can
significantly improve read performance and reduce the load on the voting
OMs.</p>
+<h2 id="why-use-listener-oms">Why use Listener OMs?</h2>
+<p>In a standard OM HA setup, all OMs are peers and participate in the Raft
consensus protocol. This means that all OMs are involved in the write path,
which can become a bottleneck for read-heavy workloads. By introducing Listener
OMs, you can scale out your read performance by offloading read requests to
these read-only OMs.</p>
+<h2 id="how-it-works">How it works</h2>
+<p>A Listener OM is a regular OM that is configured to be a listener. When an
OM is configured as a listener, it is added to the Ratis group as a listener.
This means that it will receive all log entries from the leader, but it will
not participate in the leader election or consensus votes.</p>
+<p>Clients can be configured to send read requests to Listener OMs. This
allows read requests to be served by the Listener OMs, which reduces the load
on the voting OMs and improves read performance.</p>
+<p><strong>Note:</strong> An OM in a listener state cannot be transitioned
into a leader or follower, whether automatically, or via the <code>ozone admin
om transfer</code> command.</p>
+<h2 id="best-practices">Best Practices</h2>
+<ul>
+<li><strong>Recommended Cluster Topology:</strong> For a production
environment, you can have 1 or 3 voting OMs. A setup with 2 voting OMs will not
work as Ratis requires an odd number of voting members for quorum. You can add
any number of Listener OMs to this cluster. For high availability, 3 voting OMs
are recommended.</li>
+<li><strong>Deploy multiple Listener OMs for high availability:</strong> To
ensure that your read requests can still be served in the event of a Listener
OM failure, it is recommended to deploy multiple Listener OMs.</li>
+<li><strong>Monitor the load on your Listener OMs:</strong> It is important to
monitor the load on your Listener OMs to ensure that they are not becoming a
bottleneck.</li>
+<li><strong>Decommissioning a Listener OM:</strong> A Listener OM can be
decommissioned. The process is the same as decommissioning a regular OM. Once
the Listener OM is decommissioned, it is removed from the OM HA Ring and does
not receive Ratis transactions.</li>
+</ul>
+<h2 id="configuration">Configuration</h2>
+<p>To configure a Listener OM, you need to perform the following steps:</p>
+<ol>
+<li>
+<p><strong>Configure <code>ozone-site.xml</code> for all OM roles:</strong>
Add the following properties to the <code>ozone-site.xml</code> file on all OMs
in the cluster. This includes the existing voting OMs and the new Listener
OMs.</p>
+<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-xml" data-lang="xml"><span style="display:flex;"><span><span
style="color:#f92672"><property></span>
+</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><name></span>ozone.om.service.ids<span
style="color:#f92672"></name></span>
+</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><value></span>cluster1<span
style="color:#f92672"></value></span>
+</span></span><span style="display:flex;"><span><span
style="color:#f92672"></property></span>
+</span></span><span style="display:flex;"><span><span
style="color:#f92672"><property></span>
+</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><name></span>ozone.om.nodes.cluster1<span
style="color:#f92672"></name></span>
+</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><value></span>om1,om2,om3,om4,om5<span
style="color:#f92672"></value></span>
+</span></span><span style="display:flex;"><span><span
style="color:#f92672"></property></span>
+</span></span><span style="display:flex;"><span><span
style="color:#f92672"><property></span>
+</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><name></span>ozone.om.address.cluster1.om1<span
style="color:#f92672"></name></span>
+</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><value></span>host1<span
style="color:#f92672"></value></span>
+</span></span><span style="display:flex;"><span><span
style="color:#f92672"></property></span>
+</span></span><span style="display:flex;"><span><span
style="color:#f92672"><property></span>
+</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><name></span>ozone.om.address.cluster1.om2<span
style="color:#f92672"></name></span>
+</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><value></span>host2<span
style="color:#f92672"></value></span>
+</span></span><span style="display:flex;"><span><span
style="color:#f92672"></property></span>
+</span></span><span style="display:flex;"><span><span
style="color:#f92672"><property></span>
+</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><name></span>ozone.om.address.cluster1.om3<span
style="color:#f92672"></name></span>
+</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><value></span>host3<span
style="color:#f92672"></value></span>
+</span></span><span style="display:flex;"><span><span
style="color:#f92672"></property></span>
+</span></span><span style="display:flex;"><span><span
style="color:#f92672"><property></span>
+</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><name></span>ozone.om.address.cluster1.om4<span
style="color:#f92672"></name></span>
+</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><value></span>host4<span
style="color:#f92672"></value></span>
+</span></span><span style="display:flex;"><span><span
style="color:#f92672"></property></span>
+</span></span><span style="display:flex;"><span><span
style="color:#f92672"><property></span>
+</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><name></span>ozone.om.address.cluster1.om5<span
style="color:#f92672"></name></span>
+</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><value></span>host5<span
style="color:#f92672"></value></span>
+</span></span><span style="display:flex;"><span><span
style="color:#f92672"></property></span>
+</span></span><span style="display:flex;"><span><span
style="color:#f92672"><property></span>
+</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><name></span>ozone.om.listener.nodes<span
style="color:#f92672"></name></span>
+</span></span><span style="display:flex;"><span> <span
style="color:#f92672"><value></span>om4,om5<span
style="color:#f92672"></value></span>
+</span></span><span style="display:flex;"><span><span
style="color:#f92672"></property></span>
+</span></span></code></pre></div><p>In this example, <code>om1</code>,
<code>om2</code>, and <code>om3</code> are the voting OMs, and <code>om4</code>
and <code>om5</code> are the Listener OMs.</p>
+</li>
+<li>
+<p><strong>Bootstrap the Listener OM:</strong> Before a new Listener OM can be
started, it needs to be bootstrapped. This is the same process as bootstrapping
a regular OM. For more details, please refer to the <a
href="../feature/om-ha.html#om-bootstrap">OM High Availability</a>
documentation.</p>
+</li>
+</ol>
+<h2 id="consistency-guarantees">Consistency Guarantees</h2>
+<p>Listener OMs provide eventual consistency for read operations. This means
that there may be a short delay before the latest data is available on the
Listener OMs. However, for most read-heavy workloads, this delay is
acceptable.</p>
+<h2 id="references">References</h2>
+<ul>
+<li><a href="../feature/om-ha.html">Ozone Manager High Availability</a></li>
+</ul>
+
+ </div>
+
+ </div>
+ </div>
+ </div>
+
+
+
+<footer class="footer">
+ <div class="container">
+ <span class="small text-muted">
+ Version: 2.1.0-SNAPSHOT, Last Modified: September 3, 2025 <a
class="hide-child link primary-color"
href="https://github.com/apache/ozone/commit/4b1627c4bce6aacb49db52cbf0277acdc93b0e5c">4b1627c4bc</a>
+ </span>
+ </div>
+</footer>
+
+
+
+<script src="../js/jquery-3.5.1.min.js"></script>
+<script src="../js/ozonedoc.js"></script>
+<script src="../js/bootstrap.min.js"></script>
+
+
+ </body>
+</html>
diff --git a/docs/edge/en/sitemap.xml b/docs/edge/en/sitemap.xml
index fe268710..23a2488c 100644
--- a/docs/edge/en/sitemap.xml
+++ b/docs/edge/en/sitemap.xml
@@ -706,6 +706,12 @@
hreflang="en"
href="/start/fromsource.html"
/>
+ </url><url>
+ <loc>/design.html</loc>
+ <lastmod>2025-09-03T11:34:46-07:00</lastmod>
+ </url><url>
+ <loc>/design/listener-om.html</loc>
+ <lastmod>2025-09-03T11:34:46-07:00</lastmod>
</url><url>
<loc>/feature/om-bootstrapping-with-snapshots.html</loc>
<lastmod>2025-08-09T02:25:09+05:30</lastmod>
@@ -718,9 +724,6 @@
</url><url>
<loc>/concept/volumesbucketskeys.html</loc>
<lastmod>2025-07-05T08:18:07-07:00</lastmod>
- </url><url>
- <loc>/design.html</loc>
- <lastmod>2025-08-12T14:24:23-04:00</lastmod>
</url><url>
<loc>/design/full-volume-handling.html</loc>
<lastmod>2025-07-07T11:24:38+05:30</lastmod>
diff --git a/docs/edge/index.xml b/docs/edge/index.xml
index a4c2e89f..f6117978 100644
--- a/docs/edge/index.xml
+++ b/docs/edge/index.xml
@@ -483,6 +483,13 @@
<guid>/start/fromsource.html</guid>
<description><!---
 Licensed to the Apache Software Foundation
(ASF) under one or more
 contributor license agreements. See the NOTICE
file distributed with
 this work for additional information regarding
copyright ownership.
 The ASF licenses this file to You under the Apache
License, Version 2.0
 (the "License"); you may not use this file
except in compliance with
 the License. You may obtain a copy of the
License at

 http: [...]
</item>
+ <item>
+ <title>Listener Ozone Manager</title>
+ <link>/design/listener-om.html</link>
+ <pubDate>Wed, 27 Aug 2025 00:00:00 +0000</pubDate>
+ <guid>/design/listener-om.html</guid>
+ <description>Read-only Ozone Manager to scale out read
performance.</description>
+ </item>
<item>
<title>OM Bootstrapping with Snapshots</title>
<link>/feature/om-bootstrapping-with-snapshots.html</link>
diff --git a/docs/edge/interface/ofs.html b/docs/edge/interface/ofs.html
index c467882f..bb6f0dd1 100644
--- a/docs/edge/interface/ofs.html
+++ b/docs/edge/interface/ofs.html
@@ -654,7 +654,7 @@ For example:</p>
<p>Or use the put command to write a file to the bucket.</p>
<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span style="display:flex;"><span>hdfs
dfs -put /etc/hosts /volume1/bucket1/test</span></span></code></pre></div>
<p>For more usage, see: <a
href="https://issues.apache.org/jira/secure/attachment/12987636/Design%20ofs%20v1.pdf">https://issues.apache.org/jira/secure/attachment/12987636/Design%20ofs%20v1.pdf</a></p>
-<h2 id="differences-from-o3fshahahugoshortcode112s5hbhb">Differences from <a
href="../interface/o3fs.html">o3fs</a></h2>
+<h2 id="differences-from-o3fshahahugoshortcode111s5hbhb">Differences from <a
href="../interface/o3fs.html">o3fs</a></h2>
<h3 id="creating-files">Creating files</h3>
<p>OFS doesn’t allow creating keys(files) directly under root or volumes.
Users will receive an error message when they try to do that:</p>
diff --git a/docs/edge/sitemap.xml b/docs/edge/sitemap.xml
index 5ce29858..de29854c 100644
--- a/docs/edge/sitemap.xml
+++ b/docs/edge/sitemap.xml
@@ -4,7 +4,7 @@
<sitemap>
<loc>/en/sitemap.xml</loc>
- <lastmod>2025-09-03T00:34:09-04:00</lastmod>
+ <lastmod>2025-09-03T11:34:46-07:00</lastmod>
</sitemap>
diff --git a/docs/edge/zh/interface/ofs.html b/docs/edge/zh/interface/ofs.html
index e953c143..ae89f8e1 100644
--- a/docs/edge/zh/interface/ofs.html
+++ b/docs/edge/zh/interface/ofs.html
@@ -484,7 +484,7 @@ ofs://omservice/tmp/key1
<p>或者使用 put 命令向桶中写入一个文件</p>
<div class="highlight"><pre tabindex="0"
style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span style="display:flex;"><span>hdfs
dfs -put /etc/hosts /volume1/bucket1/test</span></span></code></pre></div>
<p>有关更多用法,请参见: <a
href="https://issues.apache.org/jira/secure/attachment/12987636/Design%20ofs%20v1.pdf">https://issues.apache.org/jira/secure/attachment/12987636/Design%20ofs%20v1.pdf</a></p>
-<h2 id="与-o3fshahahugoshortcode111s5hbhb-的区别">与 <a
href="../../zh/interface/o3fs.html">o3fs</a> 的区别</h2>
+<h2 id="与-o3fshahahugoshortcode110s5hbhb-的区别">与 <a
href="../../zh/interface/o3fs.html">o3fs</a> 的区别</h2>
<h3 id="创建文件">创建文件</h3>
<p>OFS 不允许直接在根目录或卷下创建键(文件)。
当用户尝试这样做时,他们将收到一个错误消息:</p>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]