This is an automated email from the ASF dual-hosted git repository.

weichiu pushed a commit to branch HDDS-9225-website-v2
in repository https://gitbox.apache.org/repos/asf/ozone-site.git


The following commit(s) were added to refs/heads/HDDS-9225-website-v2 by this 
push:
     new 956e87147 HDDS-14464. [Docs] Core Concepts -> Namespace -> Bucket -> 
Layouts -> File System Optimized Buckets (FSO) (#294)
956e87147 is described below

commit 956e87147858855fd839532293959e227a5d983a
Author: Gargi Jaiswal <[email protected]>
AuthorDate: Wed Jan 28 00:24:20 2026 +0530

    HDDS-14464. [Docs] Core Concepts -> Namespace -> Bucket -> Layouts -> File 
System Optimized Buckets (FSO) (#294)
---
 .../04-layouts/02-file-system-optimized.md         | 69 +++++++++++++++++++++-
 1 file changed, 68 insertions(+), 1 deletion(-)

diff --git 
a/docs/03-core-concepts/03-namespace/02-buckets/04-layouts/02-file-system-optimized.md
 
b/docs/03-core-concepts/03-namespace/02-buckets/04-layouts/02-file-system-optimized.md
index 5e6616fbe..b226fea71 100644
--- 
a/docs/03-core-concepts/03-namespace/02-buckets/04-layouts/02-file-system-optimized.md
+++ 
b/docs/03-core-concepts/03-namespace/02-buckets/04-layouts/02-file-system-optimized.md
@@ -4,4 +4,71 @@ sidebar_label: File System Optimized (FSO)
 
 # File System Optimized Buckets (FSO)
 
-**TODO:** File a subtask under 
[HDDS-9857](https://issues.apache.org/jira/browse/HDDS-9857) and complete this 
page or section.
+## Overview
+
+**File System Optimized** (FSO) is a bucket layout optimized for Hadoop 
Compatible File System (HCFS) operations. Unlike the Object Store (OBS) layout, 
FSO maintains separate entries for intermediate directories, enabling efficient 
file system operations like directory listing, renaming, and deletion.
+FSO buckets support **atomic rename** and **delete operations** on directories 
at any level in constant time, regardless of directory depth or the number of 
files contained within.
+
+For example, in an FSO bucket, keys are stored with their hierarchical 
structure preserved:
+
+```text
+/mybucket/data/2025/nov/report
+/mybucket/data/2025/dec/summary
+/mybucket/archive/2024/logs/applog
+```
+
+Each intermediate directories (`data`, `2025`, `nov`, etc.) are stored as a 
separate entry, allowing efficient directory-level operations.
+
+:::note
+FSO is the default bucket layout in Ozone. To explicitly specify FSO layout 
when creating a bucket, use the `--layout` flag:
+
+```bash
+ozone sh bucket create /<volume-name>/<bucket-name> --layout 
FILE_SYSTEM_OPTIMIZED
+```
+
+:::
+
+## Why FSO for Ozone?
+
+### 1. Atomic Operations (The O(1) Factor)
+
+In a standard Object Store, if you rename a directory containing **1 million 
files**, the system has to:
+
+- Find all 1 million keys
+- Copy them to a new path string
+- Delete the 1 million old keys
+
+This is **O(n)** operation — the more files you have, the longer it takes.
+
+In FSO, a **rename** is just a metadata pointer update. To rename `/data` to 
`/archive`, Ozone simply finds the entry for `data` in the `DirectoryTable` and 
updates its name to `archive`. All the children (the millions of files) stay 
exactly where they are because they point to the `unique ID` of that directory, 
not its name.
+
+### 2. Delete operations
+
+Deleting a directory with millions of files is efficient because all child 
entries share the same parent ID prefix, allowing Ozone to quickly locate and 
remove them using prefix-based queries, rather than scanning the entire 
namespace.
+
+## When to Use FSO vs Object Store (OBS)
+
+Choose **File System Optimized (FSO)** when:
+
+- Using Hadoop Compatible File System interfaces
+- Storing data for analytics workloads (Hive, Spark ...)
+- Working with hierarchical directory structures
+- Requiring atomic directory operations (rename, delete)
+- Needing trash/recycle bin functionality
+
+Choose **Object Store (OBS)** when:
+
+- Primarily using S3-compatible APIs
+- Working with flat object access patterns
+
+## Configuration
+
+To update the default layout when creating buckets, configure these properties 
in `ozone-site.xml`:
+
+| Property | Default Value | Description |
+|----------|---------------|-------------|
+| `ozone.default.bucket.layout` | none | Sets the default layout for all 
buckets if no layout is specified during creation by the client |
+| `ozone.client.fs.default.bucket.layout` | `FILE_SYSTEM_OPTIMIZED` | Sets the 
default layout for buckets created using the OFS client |
+| `ozone.s3g.default.bucket.layout` | `OBJECT_STORE` | Defines the default 
layout for buckets created through the S3 API |
+
+For detailed technical information about the internal metadata structure and 
implementation, see the [File System Optimization System 
Internals](../../../../07-system-internals/07-features/01-filesystem-optimization.md)
 documentation.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to