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 c86cdb37 [auto] Generated docs from Apache Ozone master
58c87a862d41bf8e39780f979c9faf9d2dce1cb4
c86cdb37 is described below
commit c86cdb373d0065e2ac414332d51f4c694fff120d
Author: Github Actions <[email protected]>
AuthorDate: Wed May 28 12:46:39 2025 +0000
[auto] Generated docs from Apache Ozone master
58c87a862d41bf8e39780f979c9faf9d2dce1cb4
---
docs/edge/design.html | 10 +
docs/edge/design/dn-min-space-configuration.html | 652 +++++++++++++++++++++++
docs/edge/design/index.xml | 9 +-
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, 686 insertions(+), 7 deletions(-)
diff --git a/docs/edge/design.html b/docs/edge/design.html
index d2bd6a7a..f998526e 100644
--- a/docs/edge/design.html
+++ b/docs/edge/design.html
@@ -485,6 +485,16 @@ s=d.getElementsByTagName('script')[0];
</thead>
<tbody>
+ <tr>
+ <td>2025-05-05</td>
+ <td>
+ <a
href="https://issues.apache.org/jira/browse/HDDS-12928">HDDS-12928</a>
+ </td>
+ <td><a
href="./design/dn-min-space-configuration.html">Minimum free space
configuration for datanode volumes</a></td>
+ <td>Describe proposal for minimum free space
configuration which volume must have to function correctly.</td>
+ <td>implemented</td>
+ </tr>
+
<tr>
<td>2024-04-05</td>
<td>
diff --git a/docs/edge/design/dn-min-space-configuration.html
b/docs/edge/design/dn-min-space-configuration.html
new file mode 100644
index 00000000..68ae269e
--- /dev/null
+++ b/docs/edge/design/dn-min-space-configuration.html
@@ -0,0 +1,652 @@
+
+
+<!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>Overview</span>
+ </a>
+ </li>
+
+
+
+ <li class="">
+
+ <a href="../start.html">
+
+
+
+ <span>Getting Started</span>
+ </a>
+ </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">Ozone
Manager</a>
+
+ </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/recon.html">Recon</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../concept/networkports.html">Network
Ports</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>
+
+ </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">S3 Protocol</a>
+
+ </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/csi.html">CSI Protocol</a>
+
+ </li>
+
+ <li class="">
+
+ <a href="../interface/httpfs.html">HttpFS
Gateway</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/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><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-12928">[HDDS-12928]</a>
Minimum free space configuration for datanode volumes (implemented) </h1>
+ <div><i>Authors: Sumit Agrawal</i><div
class="pull-right">2025-05-05</div></div>
+ <p> </p>
+
+ <div class="panel panel-success">
+ <div class="panel-heading">Summary</div>
+ <div class="panel-body">
+ Describe proposal for minimum free space configuration
which volume must have to function correctly.
+ </div>
+ </div>
+
+ <!--
+ Licensed 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. See accompanying LICENSE file.
+-->
+<h1 id="abstract">Abstract</h1>
+<p>Volume in the datanode stores the container data and metadata (rocks db
co-located on the volume).
+There are various parallel operation going on such as import container, export
container, write and delete data blocks,
+container repairs, create and delete containers. The space is also required
for volume db to perform compaction at regular interval.
+This is hard to capture exact usages and free available space. So, this is
required to configure minimum free space
+so that datanode operation can perform without any corruption and environment
being stuck and support read of data.</p>
+<p>This free space is used to ensure volume allocation if <code>required space
< (volume available space - free space - reserved space - committed
space)</code>.
+Any container creation and import container need to ensure that this
constraint is met. And block byte writes need ensure that <code>free
space</code> space is available.
+Note: Any issue related to ensuring free space is tracked with separate
JIRA.</p>
+<h1 id="existing-configuration-before-hdds-12928">Existing configuration
(before HDDS-12928)</h1>
+<p>Two configurations are provided,</p>
+<ul>
+<li>hdds.datanode.volume.min.free.space (default: 5GB)</li>
+<li>hdds.datanode.volume.min.free.space.percent</li>
+</ul>
+<ol>
+<li>If nothing is configured, takes default value as 5GB</li>
+<li>if both are configured, priority to
hdds.datanode.volume.min.free.space</li>
+<li>else respective configuration is used.</li>
+</ol>
+<h1 id="problem-statement">Problem Statement</h1>
+<ul>
+<li>With 5GB default configuration, its not avoiding full disk scenario due to
error in ensuring free space availability.
+This is due to container size being imported is 5GB which is near boundary,
and other parallel operation.</li>
+<li>Volume DB size can increase with increase in disk space as container and
blocks it can hold can more and hence metadata.</li>
+<li>Volume DB size can also vary due to small files and big files combination,
as more small files can lead to more metadata.</li>
+</ul>
+<p>Solution involves</p>
+<ul>
+<li>appropriate default min free space</li>
+<li>depends on disk size variation</li>
+</ul>
+<h1
id="approach-1-combination-of-minimum-free-space-and-percent-increase-on-disk-size">Approach
1 Combination of minimum free space and percent increase on disk size</h1>
+<p>Configuration:</p>
+<ol>
+<li>Minimum free space: hdds.datanode.volume.min.free.space: default value
<code>20GB</code></li>
+<li>disk size variation: hdds.datanode.volume.min.free.space.percent: default
0.1% or 0.001 ratio</li>
+</ol>
+<p>Minimum free space = Max (<code><Min free space></code>,
<code><percent disk space></code>)</p>
+<table>
+ <thead>
+ <tr>
+ <th>Disk space</th>
+ <th>Min Free Space (percent: 1%)</th>
+ <th>Min Free Space ( percent: 0.1%)</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>100 GB</td>
+ <td>20 GB</td>
+ <td>20 GB (min space default)</td>
+ </tr>
+ <tr>
+ <td>1 TB</td>
+ <td>20 GB</td>
+ <td>20 GB (min space default)</td>
+ </tr>
+ <tr>
+ <td>10 TB</td>
+ <td>100 GB</td>
+ <td>20 GB (min space default)</td>
+ </tr>
+ <tr>
+ <td>100 TB</td>
+ <td>1 TB</td>
+ <td>100 GB</td>
+ </tr>
+ </tbody>
+</table>
+<p>considering above table with this solution,</p>
+<ul>
+<li>0.1 % to be sufficient to hold almost all cases, as not observed any dn
volume db to be more that 1-2 GB</li>
+</ul>
+<h1 id="approach-2-only-minimum-free-space-configuration">Approach 2 Only
minimum free space configuration</h1>
+<p>Considering above approach, 20 GB as default should be sufficient for most
of the disk, as usually disk size is 10-15TB as seen.
+Higher disk is rarely used, and instead multiple volumes are attached to same
DN with multiple disk.</p>
+<p>Considering this scenario, Minimum free space:
<code>hdds.datanode.volume.min.free.space</code> itself is enough and
+percent based configuration can be removed.</p>
+<h3 id="compatibility">Compatibility</h3>
+<p>If <code>hdds.datanode.volume.min.free.space.percent</code> is configured,
this should not have any impact
+as default value is increased to 20GB which will consider most of the use
case.</p>
+<h1
id="approach-3-combination-of-maximum-free-space-and-percent-configuration-on-disk-size">Approach
3 Combination of maximum free space and percent configuration on disk size</h1>
+<p>Configuration:</p>
+<ol>
+<li>Maximum free space: hdds.datanode.volume.min.free.space: default value
<code>20GB</code></li>
+<li>disk size variation: hdds.datanode.volume.min.free.space.percent: default
10% or 0.1 ratio</li>
+</ol>
+<p>Minimum free space = <strong>Min</strong> (<code><Max free
space></code>, <code><percent disk space></code>)</p>
+<blockquote>
+<p>Difference with approach <code>one</code> is, Min function over the 2 above
configuration</p>
+</blockquote>
+<table>
+ <thead>
+ <tr>
+ <th>Disk space</th>
+ <th>Min Free Space (20GB, 10% of disk)</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>10 GB</td>
+ <td>1 GB (=Min(20GB, 1GB)</td>
+ </tr>
+ <tr>
+ <td>100 GB</td>
+ <td>10 GB (=Min(20GB, 10GB)</td>
+ </tr>
+ <tr>
+ <td>1 TB</td>
+ <td>20 GB (=Min(20GB, 100GB)</td>
+ </tr>
+ <tr>
+ <td>10 TB</td>
+ <td>20 GB (=Min(20GB, 1TB)</td>
+ </tr>
+ <tr>
+ <td>100 TB</td>
+ <td>20GB (=Min(20GB, 10TB)</td>
+ </tr>
+ </tbody>
+</table>
+<p>This case is more useful for test environment where disk space is less and
no need any additional configuration.</p>
+<h1 id="conclusion">Conclusion</h1>
+<ol>
+<li>Going with Approach 1</li>
+</ol>
+<ul>
+<li>Approach 2 is simple setting only min-free-space, but it does not expand
with higher disk size.</li>
+<li>Approach 3 is more applicable for test environment where disk space is
less, else same as Approach 2.</li>
+<li>So Approach 1 is selected considering advantage where higher free space
can be configured by default.</li>
+</ul>
+<ol start="2">
+<li>Min Space will be 20GB as default</li>
+</ol>
+
+ </div>
+
+ </div>
+ </div>
+ </div>
+
+
+
+<footer class="footer">
+ <div class="container">
+ <span class="small text-muted">
+ Version: 2.1.0-SNAPSHOT, Last Modified: May 28, 2025 <a
class="hide-child link primary-color"
href="https://github.com/apache/ozone/commit/b8b226c3c85edef881c11d03b88b9157199e86fa">b8b226c3c8</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/design/index.xml b/docs/edge/design/index.xml
index 77b61aa7..ab2a363a 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>Mon, 29 Apr 2024 10:37:20 +0100</lastBuildDate>
+ <lastBuildDate>Wed, 28 May 2025 10:07:28 +0530</lastBuildDate>
<atom:link href="/design/index.xml" rel="self" type="application/rss+xml"
/>
+ <item>
+ <title>Minimum free space configuration for datanode volumes</title>
+ <link>/design/dn-min-space-configuration.html</link>
+ <pubDate>Mon, 05 May 2025 00:00:00 +0000</pubDate>
+ <guid>/design/dn-min-space-configuration.html</guid>
+ <description>Describe proposal for minimum free space configuration
which volume must have to function correctly.</description>
+ </item>
<item>
<title>Overwriting an Ozone Key only if it has not changed.</title>
<link>/design/overwrite-key-only-if-unchanged.html</link>
diff --git a/docs/edge/en/sitemap.xml b/docs/edge/en/sitemap.xml
index 2258f6f8..dac748e1 100644
--- a/docs/edge/en/sitemap.xml
+++ b/docs/edge/en/sitemap.xml
@@ -609,6 +609,12 @@
hreflang="en"
href="/start/fromsource.html"
/>
+ </url><url>
+ <loc>/design.html</loc>
+ <lastmod>2025-05-28T10:07:28+05:30</lastmod>
+ </url><url>
+ <loc>/design/dn-min-space-configuration.html</loc>
+ <lastmod>2025-05-28T10:07:28+05:30</lastmod>
</url><url>
<loc>/tools/debug.html</loc>
<lastmod>2024-10-30T12:13:52+05:30</lastmod>
@@ -622,9 +628,6 @@
hreflang="en"
href="/tools/debug.html"
/>
- </url><url>
- <loc>/design.html</loc>
- <lastmod>2024-04-29T10:37:20+01:00</lastmod>
</url><url>
<loc>/design/overwrite-key-only-if-unchanged.html</loc>
<lastmod>2024-04-29T10:37:20+01:00</lastmod>
diff --git a/docs/edge/index.xml b/docs/edge/index.xml
index cf713be9..134bd116 100644
--- a/docs/edge/index.xml
+++ b/docs/edge/index.xml
@@ -357,6 +357,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>Minimum free space configuration for datanode volumes</title>
+ <link>/design/dn-min-space-configuration.html</link>
+ <pubDate>Mon, 05 May 2025 00:00:00 +0000</pubDate>
+ <guid>/design/dn-min-space-configuration.html</guid>
+ <description>Describe proposal for minimum free space configuration
which volume must have to function correctly.</description>
+ </item>
<item>
<title>Ozone Debug</title>
<link>/tools/debug.html</link>
diff --git a/docs/edge/interface/ofs.html b/docs/edge/interface/ofs.html
index aa235860..d7a10943 100644
--- a/docs/edge/interface/ofs.html
+++ b/docs/edge/interface/ofs.html
@@ -562,7 +562,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-o3fshahahugoshortcode97s5hbhb">Differences from <a
href="../interface/o3fs.html">o3fs</a></h2>
+<h2 id="differences-from-o3fshahahugoshortcode98s5hbhb">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 918e4182..3af54b51 100644
--- a/docs/edge/sitemap.xml
+++ b/docs/edge/sitemap.xml
@@ -4,7 +4,7 @@
<sitemap>
<loc>/en/sitemap.xml</loc>
- <lastmod>2025-05-21T20:13:44+03:00</lastmod>
+ <lastmod>2025-05-28T10:07:28+05:30</lastmod>
</sitemap>
diff --git a/docs/edge/zh/interface/ofs.html b/docs/edge/zh/interface/ofs.html
index c99e0754..5f20ca13 100644
--- a/docs/edge/zh/interface/ofs.html
+++ b/docs/edge/zh/interface/ofs.html
@@ -478,7 +478,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="与-o3fshahahugoshortcode96s5hbhb-的区别">与 <a
href="../../zh/interface/o3fs.html">o3fs</a> 的区别</h2>
+<h2 id="与-o3fshahahugoshortcode97s5hbhb-的区别">与 <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]