You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by gi...@apache.org on 2026/02/09 22:20:47 UTC
(ozone-site) branch asf-site updated: [auto] Apply changes from master 290adb0950c3cccfe3598007e778c6955adeb1b8
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 80044950c [auto] Apply changes from master 290adb0950c3cccfe3598007e778c6955adeb1b8
80044950c is described below
commit 80044950c84c6929873e3edc9e0548f75788e076
Author: Github Actions <no...@github.com>
AuthorDate: Mon Feb 9 22:20:36 2026 +0000
[auto] Apply changes from master 290adb0950c3cccfe3598007e778c6955adeb1b8
---
.github/workflows/ozone-docs.yml | 51 -
.hugo_build.lock | 0
.idea/.gitignore | 10 -
.idea/checkstyle-idea.xml | 15 -
.idea/codeStyles/Project.xml | 7 -
.idea/codeStyles/codeStyleConfig.xml | 5 -
.idea/misc.xml | 6 -
.idea/modules.xml | 8 -
.idea/ozone-site.iml | 9 -
.idea/vcs.xml | 6 -
...ache.pdf => 04_Chuang_Performance_of_Apache.pdf | Bin
404.html | 165 +-
...(EC).pdf => Apache Ozone Erasure Coding(EC).pdf | Bin
...r.pdf => ApacheCoCAsia2025OzoneDiskBalancer.pdf | Bin
...an_Sammi.pdf => ApacheConAsia2022_Yan_Sammi.pdf | Bin
...pee.pdf => ApacheOzoneBestPracticesAtShopee.pdf | Bin
assets/Ozone2.pdf => Ozone2.pdf | Bin
...tup_Nov102022.pdf => Ozone_meetup_Nov102022.pdf | Bin
...heOzone-v3.pdf => What'sNewInApacheOzone-v3.pdf | Bin
android-chrome-192x192.png | Bin 7686 -> 0 bytes
android-chrome-512x512.png | Bin 27743 -> 0 bytes
apache_incubator.png | Bin 8249 -> 0 bytes
apple-touch-icon.png | Bin 6118 -> 13472 bytes
asf_feather.png | Bin 1209 -> 0 bytes
assets/ApacheOzoneBestPracticesAtDidi.pdf | Bin 5642945 -> 0 bytes
assets/css/styles.27c88cdc.css | 1 +
..._of_Apache-b4f6319cdd1eddbb3d9d62809a91d0c2.pdf | Bin
...Coding(EC)-e2b2167bd29f218b073bb8c60828a5b1.pdf | Bin
...skBalancer-c38d9a13bcf99baaec9391d43c166bb1.pdf | Bin
..._Yan_Sammi-f5ae5f952e57dda4e2d3b15b6e41ac89.pdf | Bin
...esAtShopee-2a36eb1d89674cb28eb6523ad52b1bc8.pdf | Bin
.../Ozone2-c80007ff224036a0f45d2e15499cb74d.pdf | Bin
..._Nov102022-7215fdb825c62e9b8cb0925e9962d260.pdf | Bin
...heOzone-v3-b2e3bf484b981e091157c5dc8d10059d.pdf | Bin
.../CSI-43be6c4c7173d76430a75929c602669d.png | Bin
...erMetadata-0e1d6fbd9172fdd064e4b1623db13b28.png | Bin
...Containers-af815cd35045a100eb9c3534adb31766.png | Bin
...unk-Layout-a02f386de80189b7a93d59273b6d9a4c.png | Bin
...o-Failures-3282015dfe66d9400c33e2c968c5eda6.png | Bin
...ional-Read-cb74627ab5163ee8b70a386c62f2327c.png | Bin
...Containers-4102782ba4d5575f7b788ee28a0d120e.png | Bin
...ionalOzone-813c1c8dbb9509c9d242aca96540db20.png | Bin 0 -> 78741 bytes
...ectMetrics-da824f2ba5392f17b06bac6d6db1749c.png | Bin
...oneOverall-bd2dbb0a4ddf6becaf35b83b1ceef475.png | Bin
...RPCMetrics-0e97374302cde21114d6d09558674523.png | Bin
.../HA-OM-30dfa9edace3c770b0294a885d9b5207.png | Bin
...ublebuffer-83220301aa67e3310bc6063364abeea7.png | Bin
...ureDiagram-f355c07eca9678e194c05fe8eed8317c.png | Bin 0 -> 60252 bytes
...oneManager-4d310b421f2dddc728e6d613be8d49f2.png | Bin
...r-ReadPath-21af8267b6511eb134b7d1936dd88421.png | Bin
...-WritePath-42ea66efe76c49fd5250f338d653fec7.png | Bin
...FSO-Delete-829a8d2b097fb698106e432f9d35d132.png | Bin
...FSO-Format-e3d29291d2e8ccb2767bb25d56d382a1.png | Bin
...FSO-Rename-daa685e54c515e7ab4aaa194d4497062.png | Bin
...evelDesign-2616251c073fa1d9c9e8ec7d07c9da5b.png | Bin
...onOmDesign-0027b37ae6de87428bb247838100eb75.png | Bin
...nScmDesign-0821f5808e438bc50c2770e8ec4a3c3c.png | Bin
...nerManager-989fad39f0a68b94e8614e86f0f7abab.png | Bin
...isualized-45bba17930c54023c2a2a2e7ab188c40.png} | Bin 8250698 -> 8253598 bytes
...skBalancer-53a3a83a7f67ee898aa3810f693e76d0.png | Bin
.../om-ui-1634884c27405e98f839a457553e6fdc.png | Bin 0 -> 391465 bytes
...le-at-didi-bff8e63e93ed0f503b50d7350756bef4.png | Bin 0 -> 135508 bytes
...est-web-ui-ed045555932611e659ff699bd29746ac.png | Bin
...quickstart-5d83a74b1d8270cf15400cf00cf686fe.gif | Bin 0 -> 1151479 bytes
...ases-2.0.0-4b1c17a39a59ee23b48d0041b8e53b02.jpg | Bin
...ases-2.1.0-68b6a727871557b86b2c96dad9100d98.jpg | Bin
...oes-online-102b1f38e6b783c7401950efbbef20b0.png | Bin 0 -> 1029134 bytes
...-secure-ha-dfd97a3f493e0fe6e7049dc8f4ddd9f3.png | Bin
.../scm-ui-33b889437916c969e0ce93d408d0cdd6.png | Bin 0 -> 366483 bytes
assets/js/0058b4c6.7e322dd9.js | 1 +
assets/js/0109176c.6334cadd.js | 1 +
assets/js/01a85c17.85b74c67.js | 1 +
assets/js/02138157.ee0b2184.js | 1 +
assets/js/03368fab.7e9e617a.js | 1 +
assets/js/04b9c31d.e4f2768d.js | 1 +
assets/js/04d9fefb.3a8dfb13.js | 1 +
assets/js/052712d5.48e6262b.js | 1 +
assets/js/053d1938.20a38a1a.js | 1 +
assets/js/0840299b.05870425.js | 1 +
assets/js/085b90d1.533f74c8.js | 1 +
assets/js/08885ee4.6dc406dc.js | 1 +
assets/js/09c33c63.8a176739.js | 1 +
assets/js/0a77a02a.b1df0783.js | 1 +
assets/js/0ae50a2d.f6909c30.js | 1 +
assets/js/0c13f873.163e1ba6.js | 1 +
assets/js/0c8bce8d.dfeaea71.js | 1 +
assets/js/0cc3bb00.97e3cf95.js | 1 +
assets/js/0d879757.1657aa73.js | 1 +
assets/js/0da82c72.67fdcc78.js | 1 +
assets/js/0e5b3588.daa9dd52.js | 1 +
assets/js/0eaa771b.1e11c7fa.js | 1 +
assets/js/0f17e3bc.17b934e3.js | 1 +
assets/js/0fbd5774.130f75e6.js | 1 +
assets/js/0ff5f891.2acc4abc.js | 1 +
assets/js/110dab8f.671c6609.js | 1 +
assets/js/1120d2b4.ca7db19e.js | 1 +
assets/js/116dafbe.e6760fee.js | 1 +
assets/js/11a82aed.5b341cd6.js | 1 +
assets/js/12208eb1.be3a2b0a.js | 1 +
assets/js/12246c8d.8d6c0b57.js | 1 +
assets/js/12471960.95b0d88d.js | 1 +
assets/js/136a29a5.10977b14.js | 1 +
assets/js/13837f48.fbbc3fa3.js | 1 +
assets/js/13e764bc.8d7c43c5.js | 1 +
assets/js/1439.116ee8f9.js | 1 +
assets/js/1468.26955791.js | 1 +
assets/js/15129825.f6948397.js | 1 +
assets/js/15cf7b2a.99717086.js | 1 +
assets/js/160383c5.5a97cdfd.js | 1 +
assets/js/161e2963.e2cc7078.js | 1 +
assets/js/16667e75.8419dab6.js | 1 +
assets/js/17486204.d54e3c19.js | 1 +
assets/js/1757cffd.3c2316e0.js | 1 +
assets/js/17896441.03566946.js | 1 +
assets/js/1853.667b13f4.js | 1 +
assets/js/185a5460.1c837a6f.js | 1 +
assets/js/1886.fecc7561.js | 1 +
assets/js/197d3cd9.5b334f91.js | 1 +
assets/js/1993.a851b1da.js | 1 +
assets/js/1a43903b.ee4f4a8f.js | 1 +
assets/js/1a4e3797.4aed2119.js | 1 +
assets/js/1ab30042.de843bd5.js | 1 +
assets/js/1b229a62.fc65070f.js | 1 +
assets/js/1b6a5bcd.f6ff3e72.js | 1 +
assets/js/1b70d9e7.2abc4812.js | 1 +
assets/js/1b8e52eb.93e5360b.js | 1 +
assets/js/1c005771.d1a258d3.js | 1 +
assets/js/1c7a78d1.8c65d2a3.js | 1 +
assets/js/1dc0ab3a.ad2964df.js | 1 +
assets/js/1ef8912a.4a3df788.js | 1 +
assets/js/1f391b9e.73872c86.js | 1 +
assets/js/1f685b3f.1bed277d.js | 1 +
assets/js/1fa54c71.ba011f50.js | 1 +
assets/js/1fd605f7.1ca90812.js | 1 +
assets/js/2051.e4b7747a.js | 1 +
assets/js/209227ae.3ba7e63a.js | 1 +
assets/js/2099.cdc90080.js | 1 +
assets/js/20aca2f7.a0b89313.js | 1 +
assets/js/226299c5.ee68cbbc.js | 1 +
assets/js/22a9010a.89deefd1.js | 1 +
assets/js/2549.d903311f.js | 1 +
assets/js/25ef3180.faa384fd.js | 1 +
assets/js/2650.01642cc1.js | 1 +
assets/js/272934ce.76b477dc.js | 1 +
assets/js/27517eae.6906383d.js | 1 +
assets/js/28af3b53.f272b3d1.js | 1 +
assets/js/2a1c523e.cbbb9cc0.js | 1 +
assets/js/2a23baca.4c272c3a.js | 1 +
assets/js/2a4ec9b1.3acef554.js | 1 +
assets/js/2b9685f4.b08a7b96.js | 1 +
assets/js/2d2fd688.4e9fb5b3.js | 1 +
assets/js/2e3f6775.f52ee625.js | 1 +
assets/js/2e4a4c97.1d461088.js | 1 +
assets/js/2e4e76c3.47ead4d3.js | 1 +
assets/js/2ef82850.b56e855c.js | 1 +
assets/js/2f397620.de2bdf74.js | 1 +
assets/js/2f663518.48239e51.js | 1 +
assets/js/2f6aa6cb.87bba809.js | 1 +
assets/js/2fe6cc41.2fa36caf.js | 1 +
assets/js/3032.55daff11.js | 1 +
assets/js/30b888a6.f63f36ec.js | 1 +
assets/js/3189e57d.4cf98c71.js | 1 +
assets/js/3213315f.57dbb535.js | 1 +
assets/js/3258.ea739d76.js | 1 +
assets/js/3272.65f4c560.js | 1 +
assets/js/34a0ce28.0c2f7074.js | 1 +
assets/js/35b9018a.7586a5ea.js | 1 +
assets/js/36994c47.a4a53ba1.js | 1 +
assets/js/36c6ce7f.0f5aa8d9.js | 1 +
assets/js/36c7bd66.b72759e9.js | 1 +
assets/js/37304240.f97ad41d.js | 1 +
assets/js/37410e38.5f8ee863.js | 1 +
assets/js/375a8bbd.be919cd4.js | 1 +
assets/js/376d263c.c6cbac8b.js | 1 +
assets/js/37a575ce.70ba8d0d.js | 1 +
assets/js/37a94f03.4cb75050.js | 1 +
assets/js/384a8076.b8a493b2.js | 1 +
assets/js/38ceb0cd.1a3bf5c7.js | 1 +
assets/js/39bcb9a5.7f45784f.js | 1 +
assets/js/3a2db09e.b037e4de.js | 1 +
assets/js/3a421ee5.6724360f.js | 1 +
assets/js/3a83d278.cfbc9c6a.js | 1 +
assets/js/3ba88bdf.5249846e.js | 1 +
assets/js/3bd284a7.75ca6550.js | 1 +
assets/js/3dfbad43.e2281f3e.js | 1 +
assets/js/3e06bbca.adeafcaf.js | 1 +
assets/js/3e20bc80.b0851803.js | 1 +
assets/js/3f219944.6e548442.js | 1 +
assets/js/3ffb4a21.acff5e23.js | 1 +
assets/js/40365719.66832d85.js | 1 +
assets/js/40aa72fd.5de4963c.js | 1 +
assets/js/411cc4b6.bfceda9d.js | 1 +
assets/js/4167.b7c5d5ae.js | 1 +
assets/js/42110920.4451ad9a.js | 1 +
assets/js/4234.dc826387.js | 2 +
assets/js/4234.dc826387.js.LICENSE.txt | 9 +
assets/js/42d8ca15.a03a7a7f.js | 1 +
assets/js/43bff776.feee653b.js | 1 +
assets/js/45468a7c.6ffb0681.js | 1 +
assets/js/4558438b.9b4260b1.js | 1 +
assets/js/459241f7.ad0f3340.js | 1 +
assets/js/45b2d120.6c78a89e.js | 1 +
assets/js/45f53cca.a4587ad5.js | 1 +
assets/js/473fe8ee.a5f66726.js | 1 +
assets/js/4746385f.996aa7e0.js | 1 +
assets/js/47f4bf31.d820e699.js | 1 +
assets/js/487eb9f3.dc1727af.js | 1 +
assets/js/4a1548fd.3b8a21df.js | 1 +
assets/js/4e5aed4c.6317bcd8.js | 1 +
assets/js/4ec478d0.5ca42167.js | 1 +
assets/js/505897ff.25a14010.js | 1 +
assets/js/50c3045a.ea1bd3b0.js | 1 +
assets/js/51315432.f04bcc94.js | 1 +
assets/js/51319779.afd6bdb2.js | 1 +
assets/js/5270.1723b5ba.js | 1 +
assets/js/5299.3e11872f.js | 1 +
assets/js/530c6dee.3c7a40dc.js | 1 +
assets/js/5323.00ecd7d7.js | 1 +
assets/js/5338.de1defdd.js | 1 +
assets/js/53e7f0dc.867c2354.js | 1 +
assets/js/545c3f5a.8d24730e.js | 1 +
assets/js/5478.8e1ad15e.js | 2 +
assets/js/5478.8e1ad15e.js.LICENSE.txt | 9 +
assets/js/54e167c5.c3166a40.js | 1 +
assets/js/552dc82c.bec66ee9.js | 1 +
assets/js/55509f1b.3187a64d.js | 1 +
assets/js/5567.7cf6d27e.js | 1 +
assets/js/5610.46e9675a.js | 1 +
assets/js/56cd121b.ce1c0b4f.js | 1 +
assets/js/5714c893.10006956.js | 1 +
assets/js/5751.c2f2cd56.js | 1 +
assets/js/58891582.52d7f4b6.js | 1 +
assets/js/595d9a28.7573b539.js | 1 +
assets/js/5994d45c.f1e71c20.js | 1 +
assets/js/5a46aeac.d961edf1.js | 1 +
assets/js/5b16b6b9.b04859c8.js | 1 +
assets/js/5b1e349a.a02602bb.js | 1 +
assets/js/5b399521.64d9f05c.js | 1 +
assets/js/5caf6617.c80bed06.js | 1 +
assets/js/5d0f4e9d.c93e340c.js | 1 +
assets/js/5d5cf83c.134c37c0.js | 1 +
assets/js/5dfb27c3.a2869e72.js | 1 +
assets/js/5e95c892.d227ff5b.js | 1 +
assets/js/5edcc78a.27df306d.js | 1 +
assets/js/5f9ea80b.9a7f3b8b.js | 1 +
assets/js/60568eba.37ee1283.js | 1 +
assets/js/608b4a80.ea85a7fe.js | 1 +
assets/js/60f41ad1.f55d5692.js | 1 +
assets/js/6133.74c166b9.js | 1 +
assets/js/6141.9fb9cab6.js | 1 +
assets/js/61ca30ba.18d0f2a0.js | 1 +
assets/js/621db11d.cc321e96.js | 1 +
assets/js/62a24fd2.5bda60a9.js | 1 +
assets/js/633c79eb.831ce03b.js | 1 +
assets/js/639b7917.972f0eb5.js | 1 +
assets/js/6493c59b.34afe7bd.js | 1 +
assets/js/64a473ad.ba702374.js | 1 +
assets/js/650d9d88.b7031010.js | 1 +
assets/js/6561.4e1df2cf.js | 1 +
assets/js/6634.3fe7dcaa.js | 1 +
assets/js/667eab11.9b4ee00c.js | 1 +
assets/js/6742.61ef2ae3.js | 1 +
assets/js/67ca202b.b1168fcb.js | 1 +
assets/js/6811.5271b5fe.js | 1 +
assets/js/6875c492.50ffdac0.js | 1 +
assets/js/6889d740.d2629c1e.js | 1 +
assets/js/6897.062c3534.js | 1 +
assets/js/6a15a39b.6335fba0.js | 1 +
assets/js/6a46f4bd.bb912b2a.js | 1 +
assets/js/6a77d54b.63f9cca1.js | 1 +
assets/js/6a7b8dd1.ff71fe74.js | 1 +
assets/js/6c8c855e.d309ccfa.js | 1 +
assets/js/6d3e07c7.1e435c8b.js | 1 +
assets/js/6da13527.152db8a0.js | 1 +
assets/js/6f66b5d0.90a944e5.js | 1 +
assets/js/70555442.fde6a094.js | 1 +
assets/js/7168.e437de75.js | 1 +
assets/js/7380.68e92350.js | 1 +
assets/js/73b7c255.82491923.js | 1 +
assets/js/74c5eee6.f944ad57.js | 1 +
assets/js/75169831.ebcce157.js | 1 +
assets/js/7597.8e8c8aa8.js | 1 +
assets/js/76a21dad.2177abc1.js | 1 +
assets/js/76cb8ec1.05002251.js | 1 +
assets/js/7724993a.3d73ec8d.js | 1 +
assets/js/77b6d47b.a84f05c3.js | 1 +
assets/js/7855.3ed8afd4.js | 1 +
assets/js/78d5380c.e1d85a30.js | 1 +
assets/js/78d918a4.0bf485ed.js | 1 +
assets/js/7b9b27b6.ae824432.js | 1 +
assets/js/7bc88236.a3625f16.js | 1 +
assets/js/7c03de1f.358e1cd1.js | 1 +
assets/js/7c056a5d.45149d39.js | 1 +
assets/js/7d9e994c.32410155.js | 1 +
assets/js/7e0e20a4.dd31ce96.js | 1 +
assets/js/7e36553e.42eec6af.js | 1 +
assets/js/7e890041.9e611dc3.js | 1 +
assets/js/7f1fe63b.dc42c418.js | 1 +
assets/js/7f634e4b.3d1ce1d2.js | 1 +
assets/js/8032.e363506c.js | 1 +
assets/js/814f3328.e22f90b2.js | 1 +
assets/js/81b22b86.abff2657.js | 1 +
assets/js/81e337af.461d9a39.js | 1 +
assets/js/82241d4b.21c5dc41.js | 1 +
assets/js/8287.3f97c415.js | 1 +
assets/js/830083b0.ee49c4c5.js | 1 +
assets/js/839562c1.10691c60.js | 1 +
assets/js/8427fcb9.983a58b0.js | 1 +
assets/js/84334567.b83e47b3.js | 1 +
assets/js/845118d0.a96ea1a4.js | 1 +
assets/js/85164bb4.7ed3c360.js | 1 +
assets/js/85de1ca4.af9f6684.js | 1 +
assets/js/8654.96c344ab.js | 1 +
assets/js/881b0800.5f54c526.js | 1 +
assets/js/8934.7cbd855f.js | 1 +
assets/js/8999.b5307276.js | 1 +
assets/js/8a4f0f2b.0200c7a8.js | 1 +
assets/js/8c863459.fda673d7.js | 1 +
assets/js/8cbab211.a1fa6038.js | 1 +
assets/js/8e330ab9.ab3738cc.js | 1 +
assets/js/8e7f3688.4c13fe6d.js | 1 +
assets/js/8e8b76bd.028ad944.js | 1 +
assets/js/8f789fdc.b9336461.js | 1 +
assets/js/9039.d4721e44.js | 1 +
assets/js/905d7d03.721d0517.js | 1 +
assets/js/90bc9aa3.8f0acc6f.js | 1 +
assets/js/910da79e.0536945b.js | 1 +
assets/js/913.50478952.js | 1 +
assets/js/915ff4b4.5faa56b8.js | 1 +
assets/js/916338ad.157f57d3.js | 1 +
assets/js/935537b5.24363f22.js | 1 +
assets/js/93955e5f.5b30c1c4.js | 1 +
assets/js/93b5677f.f108cde0.js | 1 +
assets/js/941b6a5c.91e3f525.js | 1 +
assets/js/95476a67.e6ba9385.js | 1 +
assets/js/958bcf3f.c1a94132.js | 1 +
assets/js/972a484a.fb46a77f.js | 1 +
assets/js/975dbdad.c8f13248.js | 1 +
assets/js/9935caea.ca40c64b.js | 1 +
assets/js/9982.16ba79b2.js | 1 +
assets/js/99917b89.8c639e33.js | 1 +
assets/js/9a1ec30b.31d0d845.js | 1 +
assets/js/9a5d0469.b5d426a5.js | 1 +
assets/js/9ac4a1c9.6f6be470.js | 1 +
assets/js/9ba0b85e.168f780f.js | 1 +
assets/js/9d88772c.7ba6f0e0.js | 1 +
assets/js/9dc2a457.622b2da0.js | 1 +
assets/js/9e0208fd.5ce7852f.js | 1 +
assets/js/9e4087bc.3725958d.js | 1 +
assets/js/9eedadc8.9fe4da5d.js | 1 +
assets/js/9f954d78.12034106.js | 1 +
assets/js/a28b626b.b410ea13.js | 1 +
assets/js/a3c78e87.4e0847f5.js | 1 +
assets/js/a4017e94.934b6a04.js | 1 +
assets/js/a41d09ec.1333ce01.js | 1 +
assets/js/a42f4f65.bfc83331.js | 1 +
assets/js/a449d252.75987ebc.js | 1 +
assets/js/a4a5d40b.d304cc5e.js | 1 +
assets/js/a4eb0304.b6772007.js | 1 +
assets/js/a619bb62.5edffb4c.js | 1 +
assets/js/a6aa9e1f.57bccca3.js | 1 +
assets/js/a6b116bb.453e65be.js | 1 +
assets/js/a6e5191f.0a38bf62.js | 1 +
assets/js/a72fc262.56bb342e.js | 1 +
assets/js/a7456010.239de607.js | 1 +
assets/js/a78af1a6.a737f94b.js | 1 +
assets/js/a7bd4aaa.6d1df8fc.js | 1 +
assets/js/a8602d45.5b9a17c1.js | 1 +
assets/js/a943e576.0956f608.js | 1 +
assets/js/a94703ab.1a468acd.js | 1 +
assets/js/aa18c9ef.952703c2.js | 1 +
assets/js/aa732369.3bd6cfa8.js | 1 +
assets/js/aacf565e.6cc7b599.js | 1 +
assets/js/aba21aa0.ec0bcc62.js | 1 +
assets/js/ac391ad5.752ebaab.js | 1 +
assets/js/acecf23e.24c84ed0.js | 1 +
assets/js/ad3cb989.a04ccdd1.js | 1 +
assets/js/ad4e1843.67e529cd.js | 1 +
assets/js/adb89cc2.21240e05.js | 1 +
assets/js/ae1695c8.f87a8907.js | 1 +
assets/js/ae6e62f6.ec1361ef.js | 1 +
assets/js/af6e0c44.f9b30ef0.js | 1 +
assets/js/afe08b72.cde1aa81.js | 1 +
assets/js/b05a4210.9a7a0d75.js | 1 +
assets/js/b0c41062.95d75ba9.js | 1 +
assets/js/b1024aea.c63c77c5.js | 1 +
assets/js/b13b3b2b.3062ba3a.js | 1 +
assets/js/b2f4eabe.ec019a1f.js | 1 +
assets/js/b48a78fc.9becf1d0.js | 1 +
assets/js/b4e94af8.99b69895.js | 1 +
assets/js/b72f7105.2ac442bd.js | 1 +
assets/js/b9495bc0.705c3e6c.js | 1 +
assets/js/b9c121dc.05758913.js | 1 +
assets/js/bb0ddf3e.e6cf28e5.js | 1 +
assets/js/bc642695.65393d1e.js | 1 +
assets/js/bf390970.7dda1a04.js | 1 +
assets/js/c043e62a.02614b4d.js | 1 +
assets/js/c141421f.e437406c.js | 1 +
assets/js/c15d9823.edd1c34a.js | 1 +
assets/js/c1cc9167.7d38f54a.js | 1 +
assets/js/c1de0536.b0cdcd5e.js | 1 +
assets/js/c3e3ddca.a15e9703.js | 1 +
assets/js/c4168ebf.cda9180d.js | 1 +
assets/js/c451e248.53d809fb.js | 1 +
assets/js/c4f5d8e4.5b8562a6.js | 1 +
assets/js/c4f6336c.8ca51bf7.js | 1 +
assets/js/c598a0a7.112a4d9e.js | 1 +
assets/js/c60c2d34.10e2f11f.js | 1 +
assets/js/c851fb37.35c3c38b.js | 1 +
assets/js/c87c95f9.9392dc5b.js | 1 +
assets/js/c914fcd3.07416afe.js | 1 +
assets/js/c9cac9d9.df71a81e.js | 1 +
assets/js/c9d58a7e.72d69da4.js | 1 +
assets/js/ca9e37bc.d84350d3.js | 1 +
assets/js/cac6b926.38afd68f.js | 1 +
assets/js/cb5fd5c7.394eb532.js | 1 +
assets/js/ccb5e6de.e7b2a2d2.js | 1 +
assets/js/ccb77ba8.8b42196e.js | 1 +
assets/js/ccc49370.590bd82f.js | 1 +
assets/js/cfcf96c5.3498fa1a.js | 1 +
assets/js/cfda822c.65cd7e4a.js | 1 +
assets/js/d062734b.c5f21e2f.js | 1 +
assets/js/d27179cb.6d0ef49a.js | 1 +
assets/js/d28084b4.86a6be4a.js | 1 +
assets/js/d28c1238.4474da8b.js | 1 +
assets/js/d426dfb0.30581de6.js | 1 +
assets/js/d4a76a9e.bd2372b5.js | 1 +
assets/js/d4e1b2cd.e41bbccf.js | 1 +
assets/js/d5269aa9.9e67bb92.js | 1 +
assets/js/d58885c7.b72296de.js | 1 +
assets/js/d5a63f77.61eab06e.js | 1 +
assets/js/d6b065ff.dd707a36.js | 1 +
assets/js/d70d497d.5332dca2.js | 1 +
assets/js/d833f931.8623a72a.js | 1 +
assets/js/d9dd3c84.8c4ec4ee.js | 1 +
assets/js/dd0cb4d0.03ad0ef1.js | 1 +
assets/js/dd7af807.658fe970.js | 1 +
assets/js/ddb4e1f1.813d3ebf.js | 1 +
assets/js/deb48bc9.21a8f31c.js | 1 +
assets/js/decea48b.1adf6115.js | 1 +
assets/js/df761b7f.f55c3235.js | 1 +
assets/js/df8b7c40.34eaea68.js | 1 +
assets/js/e0171ab9.97f7fe24.js | 1 +
assets/js/e0422aba.08548689.js | 1 +
assets/js/e26b272f.43ff0cd7.js | 1 +
assets/js/e2d0a228.b3132674.js | 1 +
assets/js/e2d365cf.812831e4.js | 1 +
assets/js/e3026fec.a46346b5.js | 1 +
assets/js/e30cbb44.5ab0d763.js | 1 +
assets/js/e32aa822.cffd06f8.js | 1 +
assets/js/e444076e.405fc64f.js | 1 +
assets/js/e4697b8f.87670ae1.js | 1 +
assets/js/e4abdefd.3bc1d88f.js | 1 +
assets/js/e6302cf2.8d4faeb1.js | 1 +
assets/js/e66180b6.6b819f85.js | 1 +
assets/js/e74aaaaf.b7a8ccbe.js | 1 +
assets/js/e8b30a51.7e112de0.js | 1 +
assets/js/e92c0479.385ca556.js | 1 +
assets/js/ebd6064d.474783a4.js | 1 +
assets/js/ed14cf75.382c9eb3.js | 1 +
assets/js/edf73588.74600e84.js | 1 +
assets/js/eed272e6.4f480602.js | 1 +
assets/js/ef8b811a.8674e68f.js | 1 +
assets/js/f0ca1847.7332fba3.js | 1 +
assets/js/f19f22e0.59fbce1b.js | 1 +
assets/js/f294ca1c.96d0e6ae.js | 1 +
assets/js/f325e07c.072b6f75.js | 1 +
assets/js/f3637e5b.be9f05de.js | 1 +
assets/js/f3691cb3.4c06eec7.js | 1 +
assets/js/f4208ca8.24e62b37.js | 1 +
assets/js/f59a295b.b152130a.js | 1 +
assets/js/f6c2a2ed.9b8b9bd9.js | 1 +
assets/js/f6cbf94f.5cca401a.js | 1 +
assets/js/f6d9e6b3.5646cdce.js | 1 +
assets/js/f81c1134.6d1187c6.js | 1 +
assets/js/f94dbc4c.e861f4be.js | 1 +
assets/js/f9701530.0c1a679f.js | 1 +
assets/js/fc9567a5.7e25faf6.js | 1 +
assets/js/fcc2d8b4.f36a408e.js | 1 +
assets/js/fd2b3ec7.52e8566c.js | 1 +
assets/js/fe21dcba.1f6c2097.js | 1 +
assets/js/fe612d60.e37ecd64.js | 1 +
assets/js/fed66378.9cbf4007.js | 1 +
assets/js/ff5a59f6.1dd1ecc8.js | 1 +
assets/js/main.cd201a6c.js | 2 +
assets/js/main.cd201a6c.js.LICENSE.txt | 64 +
assets/js/runtime~main.dc044eab.js | 1 +
blog/2025/04/30/ozone-2.0.0-release/index.html | 68 +
.../07/02/access-ozone-via-cyberduck/index.html | 119 +
blog/2026/01/29/disk-balancer-preview/index.html | 110 +
.../apache-ozone-best-practices-at-didi/index.html | 94 +
blog/archive/index.html | 32 +
blog/atom.xml | 353 +
blog/authors/index.html | 32 +
blog/index.html | 36 +
blog/rss.xml | 320 +
blog/tags/cyber-duck/index.html | 32 +
blog/tags/datanode/index.html | 35 +
blog/tags/disk-balancer/index.html | 35 +
blog/tags/erasure-coding/index.html | 33 +
blog/tags/index.html | 32 +
blog/tags/ozone-2-0-0/index.html | 32 +
blog/tags/ozone-2-2/index.html | 35 +
blog/tags/ozone/index.html | 35 +
blog/tags/performance/index.html | 33 +
blog/tags/release/index.html | 32 +
blog/tags/s-3/index.html | 32 +
blog/tags/scale/index.html | 33 +
blog/tags/user-stories/index.html | 33 +
blogs/index.html | 152 -
bootstrap.min.css | 6 -
bootstrap.min.js | 7 -
browserconfig.xml | 9 -
categories/index.html | 159 -
categories/index.xml | 11 -
categories/page/1/index.html | 1 -
cloud.png | Bin 343530 -> 0 bytes
community/ask-a-question/index.html | 44 +
community/communication-channels/index.html | 154 +
community/events-and-media/index.html | 139 +
community/how-to-contribute/index.html | 147 +
community/index.html | 187 -
community/report-an-issue/index.html | 54 +
community/who-uses-ozone/index.html | 34 +
doap_ozone.rdf | 23 +-
docs/1.4.1/NOTES.md | 20 -
docs/1.4.1/OzoneOverview.png | Bin 41729 -> 0 bytes
docs/1.4.1/OzoneOverview.svg | 238 -
docs/1.4.1/SCMBlockDiagram.png | Bin 14714 -> 0 bytes
docs/1.4.1/concept.html | 646 -
docs/1.4.1/concept/FunctionalOzone.png | Bin 55334 -> 0 bytes
docs/1.4.1/concept/OzoneBlock.png | Bin 4650 -> 0 bytes
docs/1.4.1/concept/containers.html | 546 -
docs/1.4.1/concept/datanodes.html | 557 -
docs/1.4.1/concept/index.xml | 54 -
docs/1.4.1/concept/overview.html | 557 -
docs/1.4.1/concept/ozoneBlockDiagram.png | Bin 45218 -> 0 bytes
docs/1.4.1/concept/ozonemanager.html | 679 --
docs/1.4.1/concept/recon.html | 721 --
docs/1.4.1/concept/storagecontainermanager.html | 626 -
docs/1.4.1/css/bootstrap-theme.min.css | 6 -
docs/1.4.1/css/bootstrap-theme.min.css.map | 1 -
docs/1.4.1/css/bootstrap.min.css | 6 -
docs/1.4.1/css/bootstrap.min.css.map | 1 -
docs/1.4.1/css/ozonedoc.css | 212 -
docs/1.4.1/design.html | 781 --
docs/1.4.1/design/configless.html | 490 -
docs/1.4.1/design/decommissioning.html | 1321 ---
docs/1.4.1/design/dn-merge-rocksdb.html | 487 -
docs/1.4.1/design/ec.html | 494 -
docs/1.4.1/design/gdpr.html | 488 -
docs/1.4.1/design/httpfs.html | 489 -
docs/1.4.1/design/index.xml | 222 -
docs/1.4.1/design/locks.html | 487 -
docs/1.4.1/design/multiraft.html | 488 -
docs/1.4.1/design/namespace-support.html | 490 -
docs/1.4.1/design/nfs.html | 493 -
docs/1.4.1/design/nonrolling-upgrade.html | 489 -
docs/1.4.1/design/ofs.html | 490 -
docs/1.4.1/design/omha.html | 497 -
docs/1.4.1/design/omprepare.html | 513 -
docs/1.4.1/design/ozone-enhancement-proposals.html | 659 --
docs/1.4.1/design/recon1.html | 493 -
docs/1.4.1/design/recon2.html | 489 -
docs/1.4.1/design/s3-performance-new.png | Bin 34927 -> 0 bytes
docs/1.4.1/design/s3-performance-old.png | Bin 33688 -> 0 bytes
docs/1.4.1/design/s3-performance.html | 660 --
docs/1.4.1/design/s3gateway.html | 490 -
docs/1.4.1/design/scmha.html | 496 -
docs/1.4.1/design/secure-s3.html | 497 -
docs/1.4.1/design/storage-class.html | 487 -
docs/1.4.1/design/symmetric-token-signatures.html | 487 -
docs/1.4.1/design/tde.html | 487 -
docs/1.4.1/design/token.html | 485 -
docs/1.4.1/design/topology.html | 489 -
docs/1.4.1/design/trash.html | 485 -
docs/1.4.1/design/typesafeconfig.html | 489 -
docs/1.4.1/design/upgrade-dev-primer.html | 575 -
docs/1.4.1/design/volume-management.html | 613 -
docs/1.4.1/en/index.html | 10 -
docs/1.4.1/en/sitemap.xml | 740 --
docs/1.4.1/feature.html | 855 --
docs/1.4.1/feature/decommission.html | 561 -
docs/1.4.1/feature/dn-merge-rocksdb.html | 539 -
docs/1.4.1/feature/erasurecoding.html | 662 --
docs/1.4.1/feature/faircallqueue.html | 562 -
docs/1.4.1/feature/index.xml | 144 -
docs/1.4.1/feature/nonrolling-upgrade.html | 599 -
docs/1.4.1/feature/observability.html | 683 --
docs/1.4.1/feature/om-ha.html | 582 -
docs/1.4.1/feature/prefixfso.html | 554 -
docs/1.4.1/feature/quota.html | 613 -
docs/1.4.1/feature/recon.html | 523 -
docs/1.4.1/feature/reconfigurability.html | 596 -
.../feature/s3-multi-tenancy-access-control.html | 589 -
docs/1.4.1/feature/s3-multi-tenancy-setup.html | 562 -
docs/1.4.1/feature/s3-multi-tenancy.html | 563 -
docs/1.4.1/feature/s3-tenant-commands.html | 769 --
docs/1.4.1/feature/scm-ha.html | 650 -
docs/1.4.1/feature/snapshot.html | 552 -
docs/1.4.1/feature/streaming-write-pipeline.html | 602 -
docs/1.4.1/feature/topology.html | 562 -
docs/1.4.1/fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes
docs/1.4.1/fonts/glyphicons-halflings-regular.svg | 288 -
docs/1.4.1/fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes
docs/1.4.1/fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes
.../1.4.1/fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes
docs/1.4.1/index.html | 507 -
docs/1.4.1/index.xml | 613 -
docs/1.4.1/interface.html | 707 --
docs/1.4.1/interface/cli.html | 721 --
docs/1.4.1/interface/csi.html | 554 -
docs/1.4.1/interface/httpfs.html | 690 --
docs/1.4.1/interface/index.xml | 74 -
docs/1.4.1/interface/javaapi.html | 607 -
docs/1.4.1/interface/o3fs.html | 571 -
docs/1.4.1/interface/ofs.html | 651 -
docs/1.4.1/interface/reconapi.html | 1399 ---
docs/1.4.1/interface/s3.html | 663 --
docs/1.4.1/interface/swaggerreconapi.html | 143 -
docs/1.4.1/js/bootstrap.min.js | 6 -
docs/1.4.1/js/jquery-3.5.1.min.js | 2 -
docs/1.4.1/js/ozonedoc.js | 23 -
docs/1.4.1/ozone-logo-monochrome.svg | 195 -
docs/1.4.1/ozone-logo-small.png | Bin 40237 -> 0 bytes
docs/1.4.1/ozone-usage.png | Bin 120495 -> 0 bytes
docs/1.4.1/recipe.html | 579 -
docs/1.4.1/recipe/botoclient.html | 659 --
docs/1.4.1/recipe/index.xml | 33 -
docs/1.4.1/recipe/prometheus-key-allocate.png | Bin 51155 -> 0 bytes
docs/1.4.1/recipe/prometheus.html | 580 -
docs/1.4.1/recipe/prometheus.png | Bin 38962 -> 0 bytes
docs/1.4.1/recipe/sparkozonefsk8s.html | 604 -
docs/1.4.1/security.html | 714 --
docs/1.4.1/security/gdpr.html | 555 -
docs/1.4.1/security/index.xml | 67 -
docs/1.4.1/security/secureozone.html | 674 --
docs/1.4.1/security/securingdatanodes.html | 571 -
docs/1.4.1/security/securingozonehttp.html | 787 --
docs/1.4.1/security/securings3.html | 547 -
docs/1.4.1/security/securingtde.html | 608 -
docs/1.4.1/security/securityacls.html | 651 -
docs/1.4.1/security/securitywithranger.html | 626 -
docs/1.4.1/sitemap.xml | 18 -
docs/1.4.1/slides/README.md | 25 -
docs/1.4.1/slides/ozone-slides.drawio | 1 -
docs/1.4.1/slides/ozone.odp | Bin 2034839 -> 0 bytes
docs/1.4.1/slides/ozone.pdf | Bin 1109486 -> 0 bytes
docs/1.4.1/start.html | 689 --
docs/1.4.1/start/docker.png | Bin 7002 -> 0 bytes
docs/1.4.1/start/fromsource.html | 548 -
docs/1.4.1/start/hadoop.png | Bin 4923 -> 0 bytes
docs/1.4.1/start/index.xml | 53 -
docs/1.4.1/start/k8s.png | Bin 6270 -> 0 bytes
docs/1.4.1/start/kubernetes.html | 538 -
docs/1.4.1/start/minikube.html | 552 -
docs/1.4.1/start/minikube.png | Bin 5764 -> 0 bytes
docs/1.4.1/start/onprem.html | 661 --
docs/1.4.1/start/runningviadocker.html | 551 -
docs/1.4.1/start/startfromdockerhub.html | 570 -
docs/1.4.1/swagger-resources/favicon-16x16.png | Bin 665 -> 0 bytes
docs/1.4.1/swagger-resources/favicon-32x32.png | Bin 628 -> 0 bytes
docs/1.4.1/swagger-resources/recon-api.yaml | 1662 ---
docs/1.4.1/swagger-resources/swagger-ui-bundle.js | 21 -
.../swagger-ui-standalone-preset.js | 21 -
docs/1.4.1/swagger-resources/swagger-ui.css | 11772 -------------------
docs/1.4.1/tools.html | 645 -
docs/1.4.1/tools/admin.html | 521 -
docs/1.4.1/tools/auditparser.html | 566 -
docs/1.4.1/tools/genconf.html | 517 -
docs/1.4.1/tools/index.xml | 47 -
docs/1.4.1/tools/logsinozone.html | 525 -
docs/1.4.1/tools/testtools.html | 561 -
docs/1.4.1/zh/concept.html | 553 -
docs/1.4.1/zh/concept/containers.html | 456 -
docs/1.4.1/zh/concept/datanodes.html | 441 -
docs/1.4.1/zh/concept/index.xml | 54 -
docs/1.4.1/zh/concept/overview.html | 440 -
docs/1.4.1/zh/concept/ozonemanager.html | 574 -
docs/1.4.1/zh/concept/recon.html | 576 -
docs/1.4.1/zh/concept/storagecontainermanager.html | 528 -
docs/1.4.1/zh/feature.html | 596 -
docs/1.4.1/zh/feature/erasurecoding.html | 529 -
docs/1.4.1/zh/feature/index.xml | 67 -
docs/1.4.1/zh/feature/observability.html | 565 -
docs/1.4.1/zh/feature/om-ha.html | 481 -
docs/1.4.1/zh/feature/prefixfso.html | 454 -
docs/1.4.1/zh/feature/quota.html | 518 -
docs/1.4.1/zh/feature/recon.html | 427 -
docs/1.4.1/zh/feature/reconfigurability.html | 504 -
docs/1.4.1/zh/feature/scm-ha.html | 547 -
docs/1.4.1/zh/index.html | 416 -
docs/1.4.1/zh/index.xml | 270 -
docs/1.4.1/zh/interface.html | 530 -
docs/1.4.1/zh/interface/csi.html | 465 -
docs/1.4.1/zh/interface/index.xml | 46 -
docs/1.4.1/zh/interface/javaapi.html | 512 -
docs/1.4.1/zh/interface/o3fs.html | 495 -
docs/1.4.1/zh/interface/reconapi.html | 753 --
docs/1.4.1/zh/interface/s3.html | 560 -
docs/1.4.1/zh/recipe.html | 467 -
docs/1.4.1/zh/recipe/index.xml | 26 -
docs/1.4.1/zh/recipe/prometheus.html | 488 -
docs/1.4.1/zh/recipe/sparkozonefsk8s.html | 517 -
docs/1.4.1/zh/security.html | 597 -
docs/1.4.1/zh/security/gdpr.html | 433 -
docs/1.4.1/zh/security/index.xml | 60 -
docs/1.4.1/zh/security/secureozone.html | 563 -
docs/1.4.1/zh/security/securingdatanodes.html | 461 -
docs/1.4.1/zh/security/securings3.html | 446 -
docs/1.4.1/zh/security/securingtde.html | 454 -
docs/1.4.1/zh/security/securityacls.html | 541 -
docs/1.4.1/zh/security/securitywithranger.html | 528 -
docs/1.4.1/zh/sitemap.xml | 590 -
docs/1.4.1/zh/start.html | 595 -
docs/1.4.1/zh/start/fromsource.html | 452 -
docs/1.4.1/zh/start/index.xml | 53 -
docs/1.4.1/zh/start/kubernetes.html | 448 -
docs/1.4.1/zh/start/minikube.html | 462 -
docs/1.4.1/zh/start/onprem.html | 546 -
docs/1.4.1/zh/start/runningviadocker.html | 453 -
docs/1.4.1/zh/start/startfromdockerhub.html | 465 -
docs/1.4.1/zh/tools.html | 507 -
docs/1.4.1/zh/tools/auditparser.html | 474 -
docs/1.4.1/zh/tools/genconf.html | 426 -
docs/1.4.1/zh/tools/index.xml | 33 -
docs/1.4.1/zh/tools/testtools.html | 472 -
docs/2.0.0/NOTES.md | 20 -
docs/2.0.0/OzoneOverview.png | Bin 41729 -> 0 bytes
docs/2.0.0/OzoneOverview.svg | 238 -
docs/2.0.0/SCMBlockDiagram.png | Bin 14714 -> 0 bytes
docs/2.0.0/concept.html | 676 --
docs/2.0.0/concept/ContainerMetadata.png | Bin 98493 -> 0 bytes
docs/2.0.0/concept/Containers.png | Bin 24775 -> 0 bytes
docs/2.0.0/concept/FunctionalOzone.png | Bin 55334 -> 0 bytes
docs/2.0.0/concept/OzoneBlock.png | Bin 4650 -> 0 bytes
docs/2.0.0/concept/OzoneManager-ReadPath.png | Bin 81030 -> 0 bytes
docs/2.0.0/concept/OzoneManager-WritePath.png | Bin 96696 -> 0 bytes
docs/2.0.0/concept/OzoneManager.png | Bin 13327 -> 0 bytes
docs/2.0.0/concept/ReconHighLevelDesign.png | Bin 239168 -> 0 bytes
docs/2.0.0/concept/ReconOmDesign.png | Bin 162797 -> 0 bytes
docs/2.0.0/concept/ReconScmDesign.png | Bin 181628 -> 0 bytes
docs/2.0.0/concept/StorageContainerManager.png | Bin 13336 -> 0 bytes
docs/2.0.0/concept/containers.html | 576 -
docs/2.0.0/concept/datanodes.html | 629 -
docs/2.0.0/concept/index.xml | 54 -
docs/2.0.0/concept/overview.html | 587 -
docs/2.0.0/concept/ozoneBlockDiagram.png | Bin 45218 -> 0 bytes
docs/2.0.0/concept/ozonemanager.html | 709 --
docs/2.0.0/concept/recon.html | 751 --
docs/2.0.0/concept/storagecontainermanager.html | 656 --
docs/2.0.0/css/bootstrap-theme.min.css | 6 -
docs/2.0.0/css/bootstrap-theme.min.css.map | 1 -
docs/2.0.0/css/bootstrap.min.css | 6 -
docs/2.0.0/css/bootstrap.min.css.map | 1 -
docs/2.0.0/css/ozonedoc.css | 212 -
docs/2.0.0/design.html | 821 --
docs/2.0.0/design/configless.html | 520 -
docs/2.0.0/design/decommissioning.html | 1351 ---
docs/2.0.0/design/dn-merge-rocksdb.html | 517 -
docs/2.0.0/design/ec.html | 524 -
docs/2.0.0/design/gdpr.html | 518 -
docs/2.0.0/design/httpfs.html | 519 -
docs/2.0.0/design/index.xml | 229 -
docs/2.0.0/design/locks.html | 517 -
docs/2.0.0/design/multiraft.html | 518 -
docs/2.0.0/design/namespace-support.html | 520 -
docs/2.0.0/design/nfs.html | 523 -
docs/2.0.0/design/nonrolling-upgrade.html | 519 -
docs/2.0.0/design/ofs.html | 520 -
docs/2.0.0/design/omha.html | 527 -
docs/2.0.0/design/omprepare.html | 543 -
.../design/overwrite-key-only-if-unchanged.html | 626 -
docs/2.0.0/design/ozone-enhancement-proposals.html | 689 --
docs/2.0.0/design/recon1.html | 523 -
docs/2.0.0/design/recon2.html | 519 -
docs/2.0.0/design/s3-performance-new.png | Bin 34927 -> 0 bytes
docs/2.0.0/design/s3-performance-old.png | Bin 33688 -> 0 bytes
docs/2.0.0/design/s3-performance.html | 690 --
docs/2.0.0/design/s3gateway.html | 520 -
docs/2.0.0/design/scmha.html | 526 -
docs/2.0.0/design/secure-s3.html | 527 -
docs/2.0.0/design/storage-class.html | 517 -
docs/2.0.0/design/symmetric-token-signatures.html | 517 -
docs/2.0.0/design/tde.html | 517 -
docs/2.0.0/design/token.html | 515 -
docs/2.0.0/design/topology.html | 519 -
docs/2.0.0/design/trash.html | 515 -
docs/2.0.0/design/typesafeconfig.html | 519 -
docs/2.0.0/design/upgrade-dev-primer.html | 605 -
docs/2.0.0/design/volume-management.html | 643 -
docs/2.0.0/en/index.html | 10 -
docs/2.0.0/en/sitemap.xml | 848 --
docs/2.0.0/feature.html | 904 --
docs/2.0.0/feature/EC-Chunk-Layout.png | Bin 179275 -> 0 bytes
docs/2.0.0/feature/EC-Reads-With-No-Failures.png | Bin 194800 -> 0 bytes
docs/2.0.0/feature/EC-Reconstructional-Read.png | Bin 221681 -> 0 bytes
.../EC-Write-Block-Allocation-in-Containers.png | Bin 194715 -> 0 bytes
docs/2.0.0/feature/GrafanaOzoneObjectMetrics.png | Bin 319286 -> 0 bytes
docs/2.0.0/feature/GrafanaOzoneOverall.png | Bin 507556 -> 0 bytes
docs/2.0.0/feature/GrafanaOzoneRPCMetrics.png | Bin 447935 -> 0 bytes
docs/2.0.0/feature/HA-OM-doublebuffer.png | Bin 77661 -> 0 bytes
docs/2.0.0/feature/HA-OM.png | Bin 60888 -> 0 bytes
docs/2.0.0/feature/PrefixFSO-Delete.png | Bin 253792 -> 0 bytes
docs/2.0.0/feature/PrefixFSO-Format.png | Bin 270550 -> 0 bytes
docs/2.0.0/feature/PrefixFSO-Rename.png | Bin 227851 -> 0 bytes
docs/2.0.0/feature/decommission.html | 599 -
docs/2.0.0/feature/dn-merge-rocksdb.html | 574 -
docs/2.0.0/feature/erasurecoding.html | 700 --
docs/2.0.0/feature/faircallqueue.html | 592 -
docs/2.0.0/feature/index.xml | 144 -
docs/2.0.0/feature/nonrolling-upgrade.html | 612 -
docs/2.0.0/feature/observability.html | 713 --
docs/2.0.0/feature/om-ha.html | 607 -
docs/2.0.0/feature/prefixfso.html | 584 -
docs/2.0.0/feature/quota.html | 643 -
docs/2.0.0/feature/recon.html | 553 -
docs/2.0.0/feature/reconfigurability.html | 627 -
.../feature/s3-multi-tenancy-access-control.html | 619 -
docs/2.0.0/feature/s3-multi-tenancy-setup.html | 592 -
docs/2.0.0/feature/s3-multi-tenancy.html | 593 -
docs/2.0.0/feature/s3-tenant-commands.html | 799 --
docs/2.0.0/feature/scm-ha.html | 666 --
docs/2.0.0/feature/scm-secure-ha.png | Bin 46757 -> 0 bytes
docs/2.0.0/feature/snapshot.html | 582 -
docs/2.0.0/feature/streaming-write-pipeline.html | 632 -
docs/2.0.0/feature/topology.html | 597 -
docs/2.0.0/fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes
docs/2.0.0/fonts/glyphicons-halflings-regular.svg | 288 -
docs/2.0.0/fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes
docs/2.0.0/fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes
.../2.0.0/fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes
docs/2.0.0/index.html | 537 -
docs/2.0.0/index.xml | 648 -
docs/2.0.0/integration.html | 651 -
docs/2.0.0/integration/distcp.html | 575 -
docs/2.0.0/integration/hive.html | 641 -
docs/2.0.0/integration/impala.html | 587 -
docs/2.0.0/integration/index.xml | 32 -
docs/2.0.0/interface.html | 790 --
docs/2.0.0/interface/CSI.png | Bin 27210 -> 0 bytes
docs/2.0.0/interface/cli.html | 756 --
docs/2.0.0/interface/csi.html | 584 -
docs/2.0.0/interface/httpfs.html | 720 --
docs/2.0.0/interface/index.xml | 74 -
docs/2.0.0/interface/javaapi.html | 637 -
docs/2.0.0/interface/o3fs.html | 601 -
docs/2.0.0/interface/ofs.html | 686 --
docs/2.0.0/interface/pvtest-webui.png | Bin 13830 -> 0 bytes
docs/2.0.0/interface/reconapi.html | 1471 ---
docs/2.0.0/interface/s3.html | 690 --
docs/2.0.0/interface/swaggerreconapi.html | 143 -
docs/2.0.0/js/bootstrap.min.js | 6 -
docs/2.0.0/js/jquery-3.5.1.min.js | 2 -
docs/2.0.0/js/ozonedoc.js | 23 -
docs/2.0.0/ozone-logo-monochrome.svg | 195 -
docs/2.0.0/ozone-logo-small.png | Bin 40237 -> 0 bytes
docs/2.0.0/ozone-usage.png | Bin 120495 -> 0 bytes
docs/2.0.0/recipe.html | 609 -
docs/2.0.0/recipe/botoclient.html | 694 --
docs/2.0.0/recipe/index.xml | 33 -
docs/2.0.0/recipe/prometheus-key-allocate.png | Bin 51155 -> 0 bytes
docs/2.0.0/recipe/prometheus.html | 610 -
docs/2.0.0/recipe/prometheus.png | Bin 38962 -> 0 bytes
docs/2.0.0/recipe/sparkozonefsk8s.html | 634 -
docs/2.0.0/security.html | 744 --
docs/2.0.0/security/gdpr.html | 585 -
docs/2.0.0/security/index.xml | 67 -
docs/2.0.0/security/secureozone.html | 704 --
docs/2.0.0/security/securingdatanodes.html | 601 -
docs/2.0.0/security/securingozonehttp.html | 822 --
docs/2.0.0/security/securings3.html | 577 -
docs/2.0.0/security/securingtde.html | 638 -
docs/2.0.0/security/securityacls.html | 681 --
docs/2.0.0/security/securitywithranger.html | 656 --
docs/2.0.0/sitemap.xml | 18 -
docs/2.0.0/slides/README.md | 25 -
docs/2.0.0/slides/ozone-slides.drawio | 1 -
docs/2.0.0/slides/ozone.odp | Bin 2034839 -> 0 bytes
docs/2.0.0/slides/ozone.pdf | Bin 1109486 -> 0 bytes
docs/2.0.0/start.html | 719 --
docs/2.0.0/start/docker.png | Bin 7002 -> 0 bytes
docs/2.0.0/start/fromsource.html | 578 -
docs/2.0.0/start/hadoop.png | Bin 4923 -> 0 bytes
docs/2.0.0/start/index.xml | 53 -
docs/2.0.0/start/k8s.png | Bin 6270 -> 0 bytes
docs/2.0.0/start/kubernetes.html | 568 -
docs/2.0.0/start/minikube.html | 582 -
docs/2.0.0/start/minikube.png | Bin 5764 -> 0 bytes
docs/2.0.0/start/onprem.html | 691 --
docs/2.0.0/start/runningviadocker.html | 582 -
docs/2.0.0/start/startfromdockerhub.html | 600 -
docs/2.0.0/swagger-resources/favicon-16x16.png | Bin 665 -> 0 bytes
docs/2.0.0/swagger-resources/favicon-32x32.png | Bin 628 -> 0 bytes
docs/2.0.0/swagger-resources/recon-api.yaml | 2163 ----
docs/2.0.0/swagger-resources/swagger-ui-bundle.js | 21 -
.../swagger-ui-standalone-preset.js | 21 -
docs/2.0.0/swagger-resources/swagger-ui.css | 11772 -------------------
docs/2.0.0/tools.html | 696 --
docs/2.0.0/tools/admin.html | 673 --
docs/2.0.0/tools/auditparser.html | 596 -
docs/2.0.0/tools/debug.html | 934 --
docs/2.0.0/tools/genconf.html | 547 -
docs/2.0.0/tools/index.xml | 54 -
docs/2.0.0/tools/logsinozone.html | 555 -
docs/2.0.0/tools/testtools.html | 591 -
docs/2.0.0/zh/concept.html | 601 -
docs/2.0.0/zh/concept/containers.html | 504 -
docs/2.0.0/zh/concept/datanodes.html | 531 -
docs/2.0.0/zh/concept/index.xml | 54 -
docs/2.0.0/zh/concept/overview.html | 488 -
docs/2.0.0/zh/concept/ozonemanager.html | 622 -
docs/2.0.0/zh/concept/recon.html | 624 -
docs/2.0.0/zh/concept/storagecontainermanager.html | 576 -
docs/2.0.0/zh/feature.html | 707 --
docs/2.0.0/zh/feature/decommission.html | 525 -
docs/2.0.0/zh/feature/dn-merge-rocksdb.html | 502 -
docs/2.0.0/zh/feature/erasurecoding.html | 577 -
docs/2.0.0/zh/feature/index.xml | 88 -
docs/2.0.0/zh/feature/observability.html | 613 -
docs/2.0.0/zh/feature/om-ha.html | 524 -
docs/2.0.0/zh/feature/prefixfso.html | 502 -
docs/2.0.0/zh/feature/quota.html | 566 -
docs/2.0.0/zh/feature/recon.html | 475 -
docs/2.0.0/zh/feature/reconfigurability.html | 553 -
docs/2.0.0/zh/feature/scm-ha.html | 583 -
docs/2.0.0/zh/feature/topology.html | 525 -
docs/2.0.0/zh/index.html | 464 -
docs/2.0.0/zh/index.xml | 333 -
docs/2.0.0/zh/interface.html | 636 -
docs/2.0.0/zh/interface/cli.html | 675 --
docs/2.0.0/zh/interface/csi.html | 513 -
docs/2.0.0/zh/interface/index.xml | 60 -
docs/2.0.0/zh/interface/javaapi.html | 560 -
docs/2.0.0/zh/interface/o3fs.html | 543 -
docs/2.0.0/zh/interface/ofs.html | 590 -
docs/2.0.0/zh/interface/reconapi.html | 1311 ---
docs/2.0.0/zh/interface/s3.html | 605 -
docs/2.0.0/zh/recipe.html | 536 -
docs/2.0.0/zh/recipe/botoclient.html | 620 -
docs/2.0.0/zh/recipe/index.xml | 33 -
docs/2.0.0/zh/recipe/prometheus.html | 536 -
docs/2.0.0/zh/recipe/sparkozonefsk8s.html | 565 -
docs/2.0.0/zh/security.html | 669 --
docs/2.0.0/zh/security/gdpr.html | 481 -
docs/2.0.0/zh/security/index.xml | 67 -
docs/2.0.0/zh/security/secureozone.html | 611 -
docs/2.0.0/zh/security/securingdatanodes.html | 509 -
docs/2.0.0/zh/security/securingozonehttp.html | 736 --
docs/2.0.0/zh/security/securings3.html | 494 -
docs/2.0.0/zh/security/securingtde.html | 502 -
docs/2.0.0/zh/security/securityacls.html | 589 -
docs/2.0.0/zh/security/securitywithranger.html | 576 -
docs/2.0.0/zh/sitemap.xml | 707 --
docs/2.0.0/zh/start.html | 643 -
docs/2.0.0/zh/start/fromsource.html | 500 -
docs/2.0.0/zh/start/index.xml | 53 -
docs/2.0.0/zh/start/kubernetes.html | 496 -
docs/2.0.0/zh/start/minikube.html | 510 -
docs/2.0.0/zh/start/onprem.html | 594 -
docs/2.0.0/zh/start/runningviadocker.html | 501 -
docs/2.0.0/zh/start/startfromdockerhub.html | 513 -
docs/2.0.0/zh/tools.html | 597 -
docs/2.0.0/zh/tools/admin.html | 484 -
docs/2.0.0/zh/tools/auditparser.html | 522 -
docs/2.0.0/zh/tools/debug.html | 854 --
docs/2.0.0/zh/tools/genconf.html | 474 -
docs/2.0.0/zh/tools/index.xml | 47 -
docs/2.0.0/zh/tools/testtools.html | 520 -
docs/2.1.0/NOTES.md | 20 -
docs/2.1.0/OzoneOverview.png | Bin 41729 -> 0 bytes
docs/2.1.0/OzoneOverview.svg | 238 -
docs/2.1.0/SCMBlockDiagram.png | Bin 14714 -> 0 bytes
docs/2.1.0/concept.html | 949 --
docs/2.1.0/concept/ContainerMetadata.png | Bin 98493 -> 0 bytes
docs/2.1.0/concept/Containers.png | Bin 24775 -> 0 bytes
docs/2.1.0/concept/FunctionalOzone.png | Bin 55334 -> 0 bytes
docs/2.1.0/concept/OzoneBlock.png | Bin 4650 -> 0 bytes
docs/2.1.0/concept/OzoneManager-ReadPath.png | Bin 81030 -> 0 bytes
docs/2.1.0/concept/OzoneManager-WritePath.png | Bin 96696 -> 0 bytes
docs/2.1.0/concept/OzoneManager.png | Bin 13327 -> 0 bytes
docs/2.1.0/concept/ReconHighLevelDesign.png | Bin 239168 -> 0 bytes
docs/2.1.0/concept/ReconOmDesign.png | Bin 162797 -> 0 bytes
docs/2.1.0/concept/ReconScmDesign.png | Bin 181628 -> 0 bytes
docs/2.1.0/concept/StorageContainerManager.png | Bin 13336 -> 0 bytes
docs/2.1.0/concept/comparison.html | 879 --
docs/2.1.0/concept/containers.html | 690 --
docs/2.1.0/concept/datanodes.html | 791 --
docs/2.1.0/concept/flowchart.png | Bin 1212887 -> 0 bytes
docs/2.1.0/concept/hdds-13515-design-document.html | 1025 --
docs/2.1.0/concept/index.xml | 96 -
docs/2.1.0/concept/networkports.html | 919 --
docs/2.1.0/concept/overview.html | 701 --
docs/2.1.0/concept/ozoneBlockDiagram.png | Bin 45218 -> 0 bytes
docs/2.1.0/concept/ozonemanager.html | 823 --
docs/2.1.0/concept/ozones3gateway.html | 731 --
docs/2.1.0/concept/recon.html | 867 --
docs/2.1.0/concept/rocksdb.html | 835 --
docs/2.1.0/concept/storagecontainermanager.html | 791 --
docs/2.1.0/concept/volumesbucketskeys.html | 777 --
docs/2.1.0/css/bootstrap-theme.min.css | 6 -
docs/2.1.0/css/bootstrap-theme.min.css.map | 1 -
docs/2.1.0/css/bootstrap.min.css | 6 -
docs/2.1.0/css/bootstrap.min.css.map | 1 -
docs/2.1.0/css/ozonedoc.css | 212 -
docs/2.1.0/design.html | 1005 --
docs/2.1.0/design/configless.html | 634 -
docs/2.1.0/design/container-reconciliation.html | 1021 --
docs/2.1.0/design/decommissioning.html | 1465 ---
docs/2.1.0/design/distributed-tracing-flow.png | Bin 589655 -> 0 bytes
.../design/distributed-tracing-opentelemetry.html | 1063 --
docs/2.1.0/design/distributed-tracing-sample.png | Bin 292240 -> 0 bytes
docs/2.1.0/design/dn-merge-rocksdb.html | 631 -
docs/2.1.0/design/dn-min-space-configuration.html | 759 --
docs/2.1.0/design/dn-usedspace-calculation.html | 681 --
docs/2.1.0/design/ec.html | 638 -
docs/2.1.0/design/full-volume-handling.html | 760 --
docs/2.1.0/design/gdpr.html | 632 -
docs/2.1.0/design/httpfs.html | 633 -
docs/2.1.0/design/index.xml | 278 -
docs/2.1.0/design/listener-om.html | 694 --
docs/2.1.0/design/locks.html | 631 -
docs/2.1.0/design/multiraft.html | 632 -
docs/2.1.0/design/namespace-support.html | 634 -
docs/2.1.0/design/nfs.html | 637 -
docs/2.1.0/design/nonrolling-upgrade.html | 633 -
docs/2.1.0/design/ofs.html | 634 -
docs/2.1.0/design/omha.html | 641 -
docs/2.1.0/design/omprepare.html | 657 --
.../design/overwrite-key-only-if-unchanged.html | 740 --
docs/2.1.0/design/ozone-enhancement-proposals.html | 795 --
docs/2.1.0/design/recon1.html | 636 -
docs/2.1.0/design/recon2.html | 633 -
docs/2.1.0/design/s3-performance-new.png | Bin 34927 -> 0 bytes
docs/2.1.0/design/s3-performance-old.png | Bin 33688 -> 0 bytes
docs/2.1.0/design/s3-performance.html | 804 --
docs/2.1.0/design/s3gateway.html | 634 -
docs/2.1.0/design/scmha.html | 640 -
docs/2.1.0/design/secure-s3.html | 641 -
docs/2.1.0/design/storage-class.html | 631 -
docs/2.1.0/design/symmetric-token-signatures.html | 631 -
docs/2.1.0/design/tde.html | 631 -
docs/2.1.0/design/token.html | 629 -
docs/2.1.0/design/tools.html | 792 --
docs/2.1.0/design/topology.html | 633 -
docs/2.1.0/design/trash.html | 629 -
docs/2.1.0/design/typesafeconfig.html | 633 -
docs/2.1.0/design/upgrade-dev-primer.html | 719 --
docs/2.1.0/design/volume-management.html | 757 --
docs/2.1.0/en/index.html | 10 -
docs/2.1.0/en/sitemap.xml | 973 --
docs/2.1.0/feature.html | 1102 --
docs/2.1.0/feature/EC-Chunk-Layout.png | Bin 179275 -> 0 bytes
docs/2.1.0/feature/EC-Reads-With-No-Failures.png | Bin 194800 -> 0 bytes
docs/2.1.0/feature/EC-Reconstructional-Read.png | Bin 221681 -> 0 bytes
.../EC-Write-Block-Allocation-in-Containers.png | Bin 194715 -> 0 bytes
docs/2.1.0/feature/GrafanaOzoneObjectMetrics.png | Bin 319286 -> 0 bytes
docs/2.1.0/feature/GrafanaOzoneOverall.png | Bin 507556 -> 0 bytes
docs/2.1.0/feature/GrafanaOzoneRPCMetrics.png | Bin 447935 -> 0 bytes
docs/2.1.0/feature/HA-OM-doublebuffer.png | Bin 77661 -> 0 bytes
docs/2.1.0/feature/HA-OM.png | Bin 60888 -> 0 bytes
docs/2.1.0/feature/PrefixFSO-Delete.png | Bin 253792 -> 0 bytes
docs/2.1.0/feature/PrefixFSO-Format.png | Bin 270550 -> 0 bytes
docs/2.1.0/feature/PrefixFSO-Rename.png | Bin 227851 -> 0 bytes
docs/2.1.0/feature/containerbalancer.html | 813 --
docs/2.1.0/feature/decommission.html | 777 --
docs/2.1.0/feature/dn-merge-rocksdb.html | 688 --
docs/2.1.0/feature/erasurecoding.html | 814 --
docs/2.1.0/feature/faircallqueue.html | 708 --
docs/2.1.0/feature/index.xml | 179 -
docs/2.1.0/feature/maintenance.html | 689 --
docs/2.1.0/feature/multi-raft-support.html | 756 --
docs/2.1.0/feature/nonrolling-upgrade.html | 726 --
docs/2.1.0/feature/observability.html | 826 --
docs/2.1.0/feature/om-ha.html | 787 --
docs/2.1.0/feature/prefixfso.html | 698 --
docs/2.1.0/feature/quota.html | 757 --
docs/2.1.0/feature/recon.html | 667 --
docs/2.1.0/feature/reconfigurability.html | 736 --
.../feature/s3-multi-tenancy-access-control.html | 733 --
docs/2.1.0/feature/s3-multi-tenancy-setup.html | 706 --
docs/2.1.0/feature/s3-multi-tenancy.html | 705 --
docs/2.1.0/feature/s3-tenant-commands.html | 933 --
docs/2.1.0/feature/scm-ha.html | 822 --
docs/2.1.0/feature/scm-secure-ha.png | Bin 46757 -> 0 bytes
.../feature/snapshot-configuration-properties.html | 724 --
docs/2.1.0/feature/snapshot.html | 796 --
docs/2.1.0/feature/streaming-write-pipeline.html | 746 --
docs/2.1.0/feature/topology.html | 823 --
docs/2.1.0/feature/trash.html | 679 --
docs/2.1.0/fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes
docs/2.1.0/fonts/glyphicons-halflings-regular.svg | 288 -
docs/2.1.0/fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes
docs/2.1.0/fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes
.../2.1.0/fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes
docs/2.1.0/index.html | 719 --
docs/2.1.0/index.xml | 879 --
docs/2.1.0/integration.html | 765 --
docs/2.1.0/integration/distcp.html | 735 --
docs/2.1.0/integration/hive.html | 755 --
docs/2.1.0/integration/impala.html | 701 --
docs/2.1.0/integration/index.xml | 32 -
docs/2.1.0/interface.html | 970 --
docs/2.1.0/interface/CSI.png | Bin 27210 -> 0 bytes
docs/2.1.0/interface/cli.html | 869 --
docs/2.1.0/interface/csi.html | 698 --
docs/2.1.0/interface/cyberduckozones3.html | 745 --
docs/2.1.0/interface/httpfs.html | 834 --
docs/2.1.0/interface/index.xml | 95 -
docs/2.1.0/interface/javaapi.html | 751 --
docs/2.1.0/interface/native-cpp.html | 736 --
docs/2.1.0/interface/o3fs.html | 715 --
docs/2.1.0/interface/ofs.html | 1470 ---
docs/2.1.0/interface/pvtest-webui.png | Bin 13830 -> 0 bytes
docs/2.1.0/interface/python.html | 842 --
docs/2.1.0/interface/reconapi.html | 1585 ---
docs/2.1.0/interface/s3.html | 912 --
docs/2.1.0/interface/swaggerreconapi.html | 143 -
docs/2.1.0/js/bootstrap.min.js | 6 -
docs/2.1.0/js/jquery-3.5.1.min.js | 2 -
docs/2.1.0/js/ozonedoc.js | 23 -
docs/2.1.0/ozone-logo-monochrome.svg | 195 -
docs/2.1.0/ozone-logo-small.png | Bin 40237 -> 0 bytes
docs/2.1.0/ozone-usage.png | Bin 120495 -> 0 bytes
docs/2.1.0/recipe.html | 802 --
docs/2.1.0/recipe/boto3tutorial.html | 724 --
docs/2.1.0/recipe/botoclient.html | 808 --
docs/2.1.0/recipe/index.xml | 54 -
docs/2.1.0/recipe/prometheus-key-allocate.png | Bin 51155 -> 0 bytes
docs/2.1.0/recipe/prometheus.html | 724 --
docs/2.1.0/recipe/prometheus.png | Bin 38962 -> 0 bytes
docs/2.1.0/recipe/pyarrowtutorial.html | 726 --
docs/2.1.0/recipe/pythonrequestsozonehttpfs.html | 748 --
docs/2.1.0/recipe/sparkozonefsk8s.html | 748 --
docs/2.1.0/security.html | 895 --
docs/2.1.0/security/gdpr.html | 699 --
docs/2.1.0/security/index.xml | 74 -
.../2.1.0/security/protect-in-transit-traffic.html | 672 --
docs/2.1.0/security/secureozone.html | 818 --
docs/2.1.0/security/securingdatanodes.html | 715 --
docs/2.1.0/security/securingozonehttp.html | 936 --
docs/2.1.0/security/securings3.html | 722 --
docs/2.1.0/security/securingtde.html | 832 --
docs/2.1.0/security/securityacls.html | 807 --
docs/2.1.0/security/securitywithranger.html | 768 --
docs/2.1.0/sitemap.xml | 18 -
docs/2.1.0/slides/README.md | 25 -
docs/2.1.0/slides/ozone-slides.drawio | 1 -
docs/2.1.0/slides/ozone.odp | Bin 2034839 -> 0 bytes
docs/2.1.0/slides/ozone.pdf | Bin 1109486 -> 0 bytes
docs/2.1.0/start.html | 833 --
docs/2.1.0/start/docker.png | Bin 7002 -> 0 bytes
docs/2.1.0/start/fromsource.html | 747 --
docs/2.1.0/start/hadoop.png | Bin 4923 -> 0 bytes
docs/2.1.0/start/index.xml | 60 -
docs/2.1.0/start/k8s.png | Bin 6270 -> 0 bytes
docs/2.1.0/start/kubernetes.html | 703 --
docs/2.1.0/start/minikube.html | 696 --
docs/2.1.0/start/minikube.png | Bin 5764 -> 0 bytes
docs/2.1.0/start/onprem.html | 812 --
docs/2.1.0/start/ozone-recon.png | Bin 408165 -> 0 bytes
docs/2.1.0/start/ozone-scm.png | Bin 322764 -> 0 bytes
docs/2.1.0/start/productiondeployment.html | 723 --
docs/2.1.0/start/runningviadocker.html | 697 --
docs/2.1.0/start/startfromdockerhub.html | 763 --
docs/2.1.0/swagger-resources/favicon-16x16.png | Bin 665 -> 0 bytes
docs/2.1.0/swagger-resources/favicon-32x32.png | Bin 628 -> 0 bytes
docs/2.1.0/swagger-resources/recon-api.yaml | 2163 ----
docs/2.1.0/swagger-resources/swagger-ui-bundle.js | 21 -
.../swagger-ui-standalone-preset.js | 21 -
docs/2.1.0/swagger-resources/swagger-ui.css | 11772 -------------------
docs/2.1.0/tools.html | 810 --
docs/2.1.0/tools/admin.html | 787 --
docs/2.1.0/tools/debug.html | 803 --
docs/2.1.0/tools/debug/auditparser.html | 710 --
docs/2.1.0/tools/debug/containerlogparser.html | 845 --
docs/2.1.0/tools/debug/debugdatanode.html | 665 --
docs/2.1.0/tools/debug/debugom.html | 681 --
docs/2.1.0/tools/debug/debugreplicas.html | 737 --
docs/2.1.0/tools/debug/index.xml | 61 -
docs/2.1.0/tools/debug/ldb.html | 1021 --
docs/2.1.0/tools/debug/ratislogparser.html | 664 --
docs/2.1.0/tools/genconf.html | 661 --
docs/2.1.0/tools/index.xml | 47 -
docs/2.1.0/tools/logsinozone.html | 701 --
docs/2.1.0/tools/repair.html | 844 --
docs/2.1.0/tools/testtools.html | 705 --
docs/2.1.0/troubleshooting.html | 683 --
docs/2.1.0/troubleshooting/index.xml | 18 -
.../om-ha-snapshot-installation.html | 670 --
docs/2.1.0/zh/concept.html | 607 -
docs/2.1.0/zh/concept/containers.html | 510 -
docs/2.1.0/zh/concept/datanodes.html | 537 -
docs/2.1.0/zh/concept/index.xml | 54 -
docs/2.1.0/zh/concept/overview.html | 494 -
docs/2.1.0/zh/concept/ozonemanager.html | 628 -
docs/2.1.0/zh/concept/recon.html | 630 -
docs/2.1.0/zh/concept/storagecontainermanager.html | 582 -
docs/2.1.0/zh/feature.html | 713 --
docs/2.1.0/zh/feature/decommission.html | 531 -
docs/2.1.0/zh/feature/dn-merge-rocksdb.html | 508 -
docs/2.1.0/zh/feature/erasurecoding.html | 583 -
docs/2.1.0/zh/feature/index.xml | 88 -
docs/2.1.0/zh/feature/observability.html | 619 -
docs/2.1.0/zh/feature/om-ha.html | 530 -
docs/2.1.0/zh/feature/prefixfso.html | 508 -
docs/2.1.0/zh/feature/quota.html | 572 -
docs/2.1.0/zh/feature/recon.html | 481 -
docs/2.1.0/zh/feature/reconfigurability.html | 554 -
docs/2.1.0/zh/feature/scm-ha.html | 589 -
docs/2.1.0/zh/feature/topology.html | 531 -
docs/2.1.0/zh/index.html | 470 -
docs/2.1.0/zh/index.xml | 347 -
docs/2.1.0/zh/interface.html | 642 -
docs/2.1.0/zh/interface/cli.html | 680 --
docs/2.1.0/zh/interface/csi.html | 519 -
docs/2.1.0/zh/interface/index.xml | 60 -
docs/2.1.0/zh/interface/javaapi.html | 566 -
docs/2.1.0/zh/interface/o3fs.html | 549 -
docs/2.1.0/zh/interface/ofs.html | 596 -
docs/2.1.0/zh/interface/reconapi.html | 1317 ---
docs/2.1.0/zh/interface/s3.html | 611 -
docs/2.1.0/zh/recipe.html | 542 -
docs/2.1.0/zh/recipe/botoclient.html | 626 -
docs/2.1.0/zh/recipe/index.xml | 33 -
docs/2.1.0/zh/recipe/prometheus.html | 542 -
docs/2.1.0/zh/recipe/sparkozonefsk8s.html | 571 -
docs/2.1.0/zh/security.html | 675 --
docs/2.1.0/zh/security/gdpr.html | 487 -
docs/2.1.0/zh/security/index.xml | 67 -
docs/2.1.0/zh/security/secureozone.html | 617 -
docs/2.1.0/zh/security/securingdatanodes.html | 515 -
docs/2.1.0/zh/security/securingozonehttp.html | 742 --
docs/2.1.0/zh/security/securings3.html | 500 -
docs/2.1.0/zh/security/securingtde.html | 508 -
docs/2.1.0/zh/security/securityacls.html | 595 -
docs/2.1.0/zh/security/securitywithranger.html | 582 -
docs/2.1.0/zh/sitemap.xml | 733 --
docs/2.1.0/zh/start.html | 649 -
docs/2.1.0/zh/start/fromsource.html | 506 -
docs/2.1.0/zh/start/index.xml | 60 -
docs/2.1.0/zh/start/kubernetes.html | 502 -
docs/2.1.0/zh/start/minikube.html | 516 -
docs/2.1.0/zh/start/onprem.html | 600 -
docs/2.1.0/zh/start/productiondeployment.html | 521 -
docs/2.1.0/zh/start/runningviadocker.html | 507 -
docs/2.1.0/zh/start/startfromdockerhub.html | 519 -
docs/2.1.0/zh/tools.html | 624 -
docs/2.1.0/zh/tools/admin.html | 490 -
docs/2.1.0/zh/tools/debug/auditparser.html | 528 -
docs/2.1.0/zh/tools/debug/containerlogparser.html | 665 --
docs/2.1.0/zh/tools/debug/ldb.html | 860 --
docs/2.1.0/zh/tools/genconf.html | 480 -
docs/2.1.0/zh/tools/index.xml | 54 -
docs/2.1.0/zh/tools/testtools.html | 526 -
.../configuration/appendix/index.html | 33 +
.../basic/configuration-files/index.html | 53 +
.../basic/directories/datanode/index.html | 33 +
.../configuration/basic/directories/index.html | 35 +
.../basic/directories/ozone-manager/index.html | 34 +
.../basic/directories/recon/index.html | 33 +
.../storage-container-manager/index.html | 33 +
.../basic/environment-variables/index.html | 63 +
.../configuration/basic/index.html | 35 +
.../basic/network/datanode/index.html | 33 +
.../basic/network/default-ports/index.html | 58 +
.../configuration/basic/network/index.html | 35 +
.../basic/network/ozone-manager/index.html | 33 +
.../configuration/basic/network/recon/index.html | 33 +
.../basic/network/s3-gateway/index.html | 33 +
.../network/storage-container-manager/index.html | 33 +
.../high-availability/client-failover/index.html | 69 +
.../configuration/high-availability/index.html | 35 +
.../high-availability/om-ha/index.html | 94 +
.../high-availability/scm-ha/index.html | 108 +
docs/administrator-guide/configuration/index.html | 35 +
.../logging/application-logs/index.html | 59 +
.../configuration/logging/audit-logs/index.html | 56 +
.../configuration/logging/index.html | 35 +
.../calculating-ec-pipeline-limits/index.html | 67 +
.../performance/fair-call-queue/index.html | 86 +
.../configuration/performance/index.html | 35 +
.../performance/multi-raft/index.html | 134 +
.../performance/placeholder/index.html | 97 +
.../configuration/performance/rocksdb/index.html | 152 +
.../s3-gateway-load-balancing/index.html | 41 +
.../streaming-write-pipeline/index.html | 74 +
.../configuration/performance/topology/index.html | 183 +
.../security/administrators/index.html | 46 +
.../configuration/security/encryption/index.html | 35 +
.../encryption/network-encryption/grpc/index.html | 42 +
.../network-encryption/hadoop-rpc/index.html | 39 +
.../encryption/network-encryption/index.html | 35 +
.../network-encryption/web-ui-https/index.html | 111 +
.../transparent-data-encryption/index.html | 171 +
.../configuration/security/https/index.html | 68 +
.../configuration/security/index.html | 35 +
.../configuration/security/kerberos/index.html | 56 +
.../configuration/security/knox/index.html | 33 +
.../configuration/security/ranger/index.html | 44 +
.../security/securing-s3-secrets/index.html | 46 +
docs/administrator-guide/index.html | 35 +
.../deployment-architecture/index.html | 33 +
.../installation/hardware-and-sizing/index.html | 165 +
docs/administrator-guide/installation/index.html | 35 +
.../installation/initializing-cluster/index.html | 77 +
.../installation/installing-binaries/index.html | 58 +
.../installation/reference-architecture/index.html | 41 +
.../operations/certificate-rotation/index.html | 34 +
.../container-replication-report/index.html | 43 +
.../data-balancing/container-balancer/index.html | 59 +
.../data-balancing/disk-balancer/index.html | 99 +
.../operations/data-balancing/index.html | 33 +
.../disk-replacement/datanodes/index.html | 172 +
.../operations/disk-replacement/index.html | 35 +
.../disk-replacement/ozone-manager/index.html | 169 +
.../operations/disk-replacement/recon/index.html | 175 +
.../storage-container-manager/index.html | 199 +
.../operations/dynamic-property-reload/index.html | 89 +
docs/administrator-guide/operations/index.html | 35 +
.../operations/leader-transfer/index.html | 35 +
.../leader-transfer/ozone-manager/index.html | 45 +
.../storage-container-manager/index.html | 46 +
.../datanodes/datanode-decommission/index.html | 114 +
.../datanodes/datanode-maintenance/index.html | 74 +
.../datanodes/index.html | 38 +
.../index.html | 35 +
.../ozone-manager/index.html | 43 +
.../storage-container-manager/index.html | 46 +
.../operations/observability/cli/index.html | 48 +
.../observability/distributed-tracing/index.html | 40 +
.../operations/observability/grafana/index.html | 62 +
.../operations/observability/index.html | 35 +
.../operations/observability/prometheus/index.html | 39 +
.../operations/observability/recon/index.html | 35 +
.../observability/recon/recon-rest-api/index.html | 33 +
.../observability/recon/recon-web-ui/index.html | 33 +
.../operations/observability/web-uis/index.html | 75 +
.../operations/quota/index.html | 77 +
.../s3-multi-tenancy/access-control/index.html | 107 +
.../operations/s3-multi-tenancy/index.html | 35 +
.../s3-multi-tenancy/overview/index.html | 73 +
.../operations/s3-multi-tenancy/setup/index.html | 54 +
.../s3-multi-tenancy/tenant-commands/index.html | 159 +
.../snapshots/configuration-properties/index.html | 48 +
.../operations/snapshots/index.html | 35 +
.../operations/snapshots/overview/index.html | 154 +
.../operations/start-and-stop/index.html | 62 +
.../operations/tools/index.html | 70 +
.../operations/tools/ozone-admin/index.html | 68 +
.../ozone-debug/audit-parser-exact/index.html | 50 +
.../container-replica-debugger-tool/index.html | 171 +
.../tools/ozone-debug/debug-datanode/index.html | 36 +
.../tools/ozone-debug/debug-om/index.html | 41 +
.../tools/ozone-debug/debug-replicas/index.html | 41 +
.../operations/tools/ozone-debug/index.html | 47 +
.../tools/ozone-debug/ldb-tool/index.html | 92 +
.../tools/ozone-debug/ratis-log-parser/index.html | 36 +
.../operations/tools/ozone-repair/index.html | 103 +
.../operations/trash/index.html | 49 +
.../operations/upgrade-and-downgrade/index.html | 101 +
.../architecture/datanodes/index.html | 89 +
docs/core-concepts/architecture/index.html | 35 +
.../core-concepts/architecture/overview/index.html | 66 +
.../architecture/ozone-manager/index.html | 145 +
docs/core-concepts/architecture/recon/index.html | 109 +
.../architecture/s3-gateway/index.html | 115 +
.../storage-container-manager/index.html | 125 +
docs/core-concepts/comparison/index.html | 52 +
docs/core-concepts/high-availability/index.html | 35 +
.../high-availability/om-ha/index.html | 45 +
.../high-availability/scm-ha/index.html | 38 +
docs/core-concepts/index.html | 35 +
.../namespace/buckets/encryption/index.html | 36 +
docs/core-concepts/namespace/buckets/index.html | 35 +
.../layouts/file-system-optimized/index.html | 69 +
.../namespace/buckets/layouts/index.html | 35 +
.../buckets/layouts/object-store/index.html | 107 +
.../namespace/buckets/links/index.html | 61 +
.../namespace/buckets/overview/index.html | 79 +
.../namespace/buckets/owners/index.html | 91 +
.../namespace/buckets/quotas/index.html | 35 +
.../namespace/buckets/replication/index.html | 33 +
.../namespace/buckets/snapshots/index.html | 40 +
docs/core-concepts/namespace/index.html | 35 +
docs/core-concepts/namespace/keys/index.html | 35 +
.../namespace/keys/overview/index.html | 59 +
docs/core-concepts/namespace/overview/index.html | 41 +
docs/core-concepts/namespace/volumes/index.html | 35 +
.../namespace/volumes/overview/index.html | 91 +
.../namespace/volumes/owners/index.html | 88 +
.../namespace/volumes/quotas/index.html | 58 +
.../replication/erasure-coding/index.html | 119 +
docs/core-concepts/replication/index.html | 35 +
docs/core-concepts/replication/ratis/index.html | 45 +
.../replication/storage-containers/index.html | 41 +
.../replication/write-pipelines/index.html | 248 +
docs/core-concepts/security/acls/index.html | 35 +
.../security/acls/native-acls/index.html | 142 +
.../security/acls/ranger-acls/index.html | 50 +
docs/core-concepts/security/index.html | 35 +
docs/core-concepts/security/kerberos/index.html | 34 +
docs/current | 1 -
.../developer-guide/build/docker-images/index.html | 86 +
docs/developer-guide/build/index.html | 35 +
docs/developer-guide/build/intellij/index.html | 34 +
docs/developer-guide/build/maven/index.html | 87 +
docs/developer-guide/index.html | 35 +
.../project/branches-and-tags/index.html | 47 +
docs/developer-guide/project/index.html | 35 +
docs/developer-guide/project/javadoc/index.html | 35 +
.../project/release-guide/index.html | 393 +
docs/developer-guide/run/docker-compose/index.html | 90 +
docs/developer-guide/run/index.html | 35 +
docs/developer-guide/run/intellij/index.html | 33 +
docs/developer-guide/run/kubernetes/index.html | 90 +
.../test/acceptance-tests/index.html | 100 +
.../test/continuous-integration/index.html | 40 +
docs/developer-guide/test/index.html | 35 +
.../test/integration-tests/index.html | 38 +
.../test/static-analysis/index.html | 119 +
docs/developer-guide/test/unit-tests/index.html | 39 +
docs/edge/NOTES.md | 20 -
docs/edge/OzoneOverview.png | Bin 41729 -> 0 bytes
docs/edge/OzoneOverview.svg | 238 -
docs/edge/SCMBlockDiagram.png | Bin 14714 -> 0 bytes
docs/edge/concept/ContainerMetadata.png | Bin 98493 -> 0 bytes
docs/edge/concept/Containers.png | Bin 24775 -> 0 bytes
docs/edge/concept/FunctionalOzone.png | Bin 55334 -> 0 bytes
docs/edge/concept/OzoneBlock.png | Bin 4650 -> 0 bytes
docs/edge/concept/OzoneManager-ReadPath.png | Bin 81030 -> 0 bytes
docs/edge/concept/OzoneManager-WritePath.png | Bin 96696 -> 0 bytes
docs/edge/concept/OzoneManager.png | Bin 13327 -> 0 bytes
docs/edge/concept/ReconHighLevelDesign.png | Bin 239168 -> 0 bytes
docs/edge/concept/ReconOmDesign.png | Bin 162797 -> 0 bytes
docs/edge/concept/ReconScmDesign.png | Bin 181628 -> 0 bytes
docs/edge/concept/StorageContainerManager.png | Bin 13336 -> 0 bytes
docs/edge/concept/comparison.html | 901 --
docs/edge/concept/containers.html | 712 --
docs/edge/concept/datanodes.html | 813 --
docs/edge/concept/flowchart.png | Bin 1212887 -> 0 bytes
docs/edge/concept/hdds-13515-design-document.html | 1048 --
docs/edge/concept/index.html | 992 --
docs/edge/concept/index.xml | 103 -
docs/edge/concept/networkports.html | 941 --
docs/edge/concept/overview.html | 723 --
docs/edge/concept/ozoneBlockDiagram.png | Bin 45218 -> 0 bytes
docs/edge/concept/ozonemanager.html | 845 --
docs/edge/concept/ozones3gateway.html | 753 --
docs/edge/concept/recon.html | 889 --
docs/edge/concept/rocksdb.html | 858 --
docs/edge/concept/s3-gateway-load-balancing.html | 685 --
docs/edge/concept/storagecontainermanager.html | 813 --
docs/edge/concept/volumesbucketskeys.html | 799 --
docs/edge/css/bootstrap-theme.min.css | 6 -
docs/edge/css/bootstrap-theme.min.css.map | 1 -
docs/edge/css/bootstrap.min.css | 6 -
docs/edge/css/bootstrap.min.css.map | 1 -
docs/edge/css/ozonedoc.css | 212 -
docs/edge/design/configless.html | 656 --
docs/edge/design/container-reconciliation.html | 1043 --
docs/edge/design/decommissioning.html | 1487 ---
docs/edge/design/diskbalancer.html | 836 --
docs/edge/design/distributed-tracing-flow.png | Bin 589655 -> 0 bytes
.../design/distributed-tracing-opentelemetry.html | 1085 --
docs/edge/design/distributed-tracing-sample.png | Bin 292240 -> 0 bytes
docs/edge/design/dn-merge-rocksdb.html | 653 -
docs/edge/design/dn-min-space-configuration.html | 782 --
docs/edge/design/dn-usedspace-calculation.html | 703 --
docs/edge/design/ec.html | 660 --
docs/edge/design/full-volume-handling.html | 783 --
docs/edge/design/gdpr.html | 654 --
docs/edge/design/httpfs.html | 655 --
docs/edge/design/index.html | 1067 --
docs/edge/design/index.xml | 306 -
docs/edge/design/listener-om.html | 716 --
docs/edge/design/locks.html | 653 -
docs/edge/design/multiraft.html | 654 --
docs/edge/design/namespace-support.html | 656 --
docs/edge/design/nfs.html | 659 --
docs/edge/design/nonrolling-upgrade.html | 655 --
docs/edge/design/ofs.html | 656 --
.../design/om-bootstrapping-with-snapshots.html | 774 --
docs/edge/design/omha.html | 663 --
docs/edge/design/omprepare.html | 679 --
.../design/overwrite-key-only-if-unchanged.html | 762 --
docs/edge/design/ozone-enhancement-proposals.html | 825 --
docs/edge/design/ozone-sts.html | 821 --
docs/edge/design/recon1.html | 659 --
docs/edge/design/recon2.html | 655 --
docs/edge/design/s3-conditional-requests.html | 837 --
docs/edge/design/s3-performance-new.png | Bin 34927 -> 0 bytes
docs/edge/design/s3-performance-old.png | Bin 33688 -> 0 bytes
docs/edge/design/s3-performance.html | 826 --
docs/edge/design/s3gateway.html | 656 --
docs/edge/design/scmha.html | 662 --
docs/edge/design/secure-s3.html | 663 --
docs/edge/design/storage-class.html | 653 -
docs/edge/design/symmetric-token-signatures.html | 653 -
docs/edge/design/tde.html | 653 -
docs/edge/design/token.html | 651 -
docs/edge/design/tools.html | 814 --
docs/edge/design/topology.html | 655 --
docs/edge/design/trash.html | 651 -
docs/edge/design/typesafeconfig.html | 655 --
docs/edge/design/upgrade-dev-primer.html | 737 --
docs/edge/design/volume-management.html | 779 --
docs/edge/en/index.html | 9 -
docs/edge/en/sitemap.xml | 1027 --
docs/edge/feature/EC-Chunk-Layout.png | Bin 179275 -> 0 bytes
docs/edge/feature/EC-Reads-With-No-Failures.png | Bin 194800 -> 0 bytes
docs/edge/feature/EC-Reconstructional-Read.png | Bin 221681 -> 0 bytes
.../EC-Write-Block-Allocation-in-Containers.png | Bin 194715 -> 0 bytes
docs/edge/feature/GrafanaOzoneObjectMetrics.png | Bin 319286 -> 0 bytes
docs/edge/feature/GrafanaOzoneOverall.png | Bin 507556 -> 0 bytes
docs/edge/feature/GrafanaOzoneRPCMetrics.png | Bin 447935 -> 0 bytes
docs/edge/feature/HA-OM-doublebuffer.png | Bin 77661 -> 0 bytes
docs/edge/feature/HA-OM.png | Bin 60888 -> 0 bytes
docs/edge/feature/PrefixFSO-Delete.png | Bin 253792 -> 0 bytes
docs/edge/feature/PrefixFSO-Format.png | Bin 270550 -> 0 bytes
docs/edge/feature/PrefixFSO-Rename.png | Bin 227851 -> 0 bytes
docs/edge/feature/containerbalancer.html | 835 --
docs/edge/feature/decommission.html | 799 --
docs/edge/feature/diskbalancer.html | 929 --
docs/edge/feature/dn-merge-rocksdb.html | 710 --
docs/edge/feature/erasurecoding.html | 872 --
docs/edge/feature/faircallqueue.html | 730 --
docs/edge/feature/index.html | 1187 --
docs/edge/feature/index.xml | 200 -
docs/edge/feature/maintenance.html | 711 --
docs/edge/feature/multi-raft-support.html | 814 --
docs/edge/feature/nonrolling-upgrade.html | 748 --
docs/edge/feature/observability.html | 848 --
.../feature/om-bootstrapping-with-snapshots.html | 797 --
docs/edge/feature/om-ha.html | 809 --
docs/edge/feature/prefixfso.html | 720 --
docs/edge/feature/quota.html | 779 --
docs/edge/feature/recon.html | 689 --
docs/edge/feature/reconfigurability.html | 1018 --
.../feature/s3-multi-tenancy-access-control.html | 755 --
docs/edge/feature/s3-multi-tenancy-setup.html | 728 --
docs/edge/feature/s3-multi-tenancy.html | 729 --
docs/edge/feature/s3-tenant-commands.html | 955 --
docs/edge/feature/scm-ha.html | 844 --
docs/edge/feature/scm-secure-ha.png | Bin 46757 -> 0 bytes
.../feature/snapshot-configuration-properties.html | 746 --
docs/edge/feature/snapshot.html | 838 --
docs/edge/feature/snapshotdefragmentation.html | 840 --
docs/edge/feature/streaming-write-pipeline.html | 768 --
docs/edge/feature/topology.html | 845 --
docs/edge/feature/trash.html | 701 --
docs/edge/fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes
docs/edge/fonts/glyphicons-halflings-regular.svg | 288 -
docs/edge/fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes
docs/edge/fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes
docs/edge/fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes
docs/edge/index.html | 741 --
docs/edge/index.xml | 935 --
docs/edge/integration/distcp.html | 758 --
docs/edge/integration/hive.html | 777 --
docs/edge/integration/impala.html | 723 --
docs/edge/integration/index.html | 787 --
docs/edge/integration/index.xml | 32 -
docs/edge/interface/CSI.png | Bin 27210 -> 0 bytes
docs/edge/interface/cli.html | 892 --
docs/edge/interface/csi.html | 720 --
docs/edge/interface/cyberduckozones3.html | 767 --
docs/edge/interface/httpfs.html | 952 --
docs/edge/interface/index.html | 992 --
docs/edge/interface/index.xml | 95 -
docs/edge/interface/javaapi.html | 773 --
docs/edge/interface/native-cpp.html | 758 --
docs/edge/interface/o3fs.html | 737 --
docs/edge/interface/ofs.html | 1492 ---
docs/edge/interface/pvtest-webui.png | Bin 13830 -> 0 bytes
docs/edge/interface/python.html | 867 --
docs/edge/interface/reconapi.html | 1607 ---
docs/edge/interface/s3.html | 935 --
docs/edge/interface/swaggerreconapi.html | 143 -
docs/edge/js/bootstrap.min.js | 6 -
docs/edge/js/jquery-3.5.1.min.js | 2 -
docs/edge/js/ozonedoc.js | 23 -
docs/edge/ozone-logo-monochrome.svg | 195 -
docs/edge/ozone-logo-small.png | Bin 40237 -> 0 bytes
docs/edge/ozone-usage.png | Bin 120495 -> 0 bytes
docs/edge/recipe/boto3tutorial.html | 747 --
docs/edge/recipe/botoclient.html | 830 --
docs/edge/recipe/index.html | 824 --
docs/edge/recipe/index.xml | 54 -
docs/edge/recipe/prometheus-key-allocate.png | Bin 51155 -> 0 bytes
docs/edge/recipe/prometheus.html | 746 --
docs/edge/recipe/prometheus.png | Bin 38962 -> 0 bytes
docs/edge/recipe/pyarrowtutorial.html | 750 --
docs/edge/recipe/pythonrequestsozonehttpfs.html | 771 --
docs/edge/recipe/sparkozonefsk8s.html | 770 --
docs/edge/security/gdpr.html | 721 --
docs/edge/security/index.html | 917 --
docs/edge/security/index.xml | 74 -
docs/edge/security/protect-in-transit-traffic.html | 694 --
docs/edge/security/secureozone.html | 840 --
docs/edge/security/securingdatanodes.html | 737 --
docs/edge/security/securingozonehttp.html | 958 --
docs/edge/security/securings3.html | 898 --
docs/edge/security/securingtde.html | 854 --
docs/edge/security/securityacls.html | 829 --
docs/edge/security/securitywithranger.html | 790 --
docs/edge/sitemap.xml | 18 -
docs/edge/slides/README.md | 25 -
docs/edge/slides/ozone-slides.drawio | 1 -
docs/edge/slides/ozone.odp | Bin 2034839 -> 0 bytes
docs/edge/slides/ozone.pdf | Bin 1109486 -> 0 bytes
docs/edge/start/docker.png | Bin 7002 -> 0 bytes
docs/edge/start/fromsource.html | 780 --
docs/edge/start/hadoop.png | Bin 4923 -> 0 bytes
docs/edge/start/index.html | 855 --
docs/edge/start/index.xml | 60 -
docs/edge/start/k8s.png | Bin 6270 -> 0 bytes
docs/edge/start/kubernetes.html | 726 --
docs/edge/start/minikube.html | 718 --
docs/edge/start/minikube.png | Bin 5764 -> 0 bytes
docs/edge/start/onprem.html | 834 --
docs/edge/start/ozone-recon.png | Bin 408165 -> 0 bytes
docs/edge/start/ozone-scm.png | Bin 322764 -> 0 bytes
docs/edge/start/productiondeployment.html | 745 --
docs/edge/start/runningviadocker.html | 719 --
docs/edge/start/startfromdockerhub.html | 785 --
docs/edge/swagger-resources/favicon-16x16.png | Bin 665 -> 0 bytes
docs/edge/swagger-resources/favicon-32x32.png | Bin 628 -> 0 bytes
docs/edge/swagger-resources/recon-api.yaml | 2163 ----
docs/edge/swagger-resources/swagger-ui-bundle.js | 21 -
.../swagger-ui-standalone-preset.js | 21 -
docs/edge/swagger-resources/swagger-ui.css | 11772 -------------------
docs/edge/tools/admin.html | 845 --
docs/edge/tools/debug/auditparser.html | 732 --
docs/edge/tools/debug/containerlogparser.html | 867 --
docs/edge/tools/debug/debugdatanode.html | 687 --
docs/edge/tools/debug/debugom.html | 703 --
docs/edge/tools/debug/debugreplicas.html | 759 --
docs/edge/tools/debug/index.html | 825 --
docs/edge/tools/debug/index.xml | 61 -
docs/edge/tools/debug/ldb.html | 1043 --
docs/edge/tools/debug/ratislogparser.html | 686 --
docs/edge/tools/genconf.html | 683 --
docs/edge/tools/index.html | 832 --
docs/edge/tools/index.xml | 47 -
docs/edge/tools/logsinozone.html | 724 --
docs/edge/tools/repair.html | 876 --
docs/edge/tools/testtools.html | 727 --
docs/edge/troubleshooting/index.html | 705 --
docs/edge/troubleshooting/index.xml | 18 -
.../om-ha-snapshot-installation.html | 692 --
docs/edge/zh/concept/containers.html | 528 -
docs/edge/zh/concept/datanodes.html | 555 -
docs/edge/zh/concept/index.html | 625 -
docs/edge/zh/concept/index.xml | 54 -
docs/edge/zh/concept/overview.html | 512 -
docs/edge/zh/concept/ozonemanager.html | 646 -
docs/edge/zh/concept/recon.html | 648 -
docs/edge/zh/concept/storagecontainermanager.html | 600 -
docs/edge/zh/design/configless.html | 472 -
docs/edge/zh/design/index.html | 473 -
docs/edge/zh/design/index.xml | 19 -
docs/edge/zh/feature/decommission.html | 549 -
docs/edge/zh/feature/diskbalancer.html | 739 --
docs/edge/zh/feature/dn-merge-rocksdb.html | 526 -
docs/edge/zh/feature/erasurecoding.html | 601 -
docs/edge/zh/feature/index.html | 752 --
docs/edge/zh/feature/index.xml | 95 -
docs/edge/zh/feature/observability.html | 637 -
docs/edge/zh/feature/om-ha.html | 548 -
docs/edge/zh/feature/prefixfso.html | 526 -
docs/edge/zh/feature/quota.html | 590 -
docs/edge/zh/feature/recon.html | 499 -
docs/edge/zh/feature/reconfigurability.html | 577 -
docs/edge/zh/feature/scm-ha.html | 607 -
docs/edge/zh/feature/topology.html | 549 -
docs/edge/zh/index.html | 488 -
docs/edge/zh/index.xml | 361 -
docs/edge/zh/interface/cli.html | 699 --
docs/edge/zh/interface/csi.html | 537 -
docs/edge/zh/interface/index.html | 660 --
docs/edge/zh/interface/index.xml | 60 -
docs/edge/zh/interface/javaapi.html | 584 -
docs/edge/zh/interface/o3fs.html | 567 -
docs/edge/zh/interface/ofs.html | 614 -
docs/edge/zh/interface/reconapi.html | 1335 ---
docs/edge/zh/interface/s3.html | 629 -
docs/edge/zh/recipe/botoclient.html | 644 -
docs/edge/zh/recipe/index.html | 560 -
docs/edge/zh/recipe/index.xml | 33 -
docs/edge/zh/recipe/prometheus.html | 560 -
docs/edge/zh/recipe/sparkozonefsk8s.html | 589 -
docs/edge/zh/security/gdpr.html | 505 -
docs/edge/zh/security/index.html | 693 --
docs/edge/zh/security/index.xml | 67 -
docs/edge/zh/security/secureozone.html | 635 -
docs/edge/zh/security/securingdatanodes.html | 533 -
docs/edge/zh/security/securingozonehttp.html | 760 --
docs/edge/zh/security/securings3.html | 518 -
docs/edge/zh/security/securingtde.html | 526 -
docs/edge/zh/security/securityacls.html | 613 -
docs/edge/zh/security/securitywithranger.html | 600 -
docs/edge/zh/sitemap.xml | 772 --
docs/edge/zh/start/fromsource.html | 524 -
docs/edge/zh/start/index.html | 667 --
docs/edge/zh/start/index.xml | 60 -
docs/edge/zh/start/kubernetes.html | 520 -
docs/edge/zh/start/minikube.html | 534 -
docs/edge/zh/start/onprem.html | 618 -
docs/edge/zh/start/productiondeployment.html | 539 -
docs/edge/zh/start/runningviadocker.html | 525 -
docs/edge/zh/start/startfromdockerhub.html | 537 -
docs/edge/zh/tools/admin.html | 508 -
docs/edge/zh/tools/debug/auditparser.html | 546 -
docs/edge/zh/tools/debug/containerlogparser.html | 683 --
docs/edge/zh/tools/debug/ldb.html | 878 --
docs/edge/zh/tools/genconf.html | 498 -
docs/edge/zh/tools/index.html | 642 -
docs/edge/zh/tools/index.xml | 54 -
docs/edge/zh/tools/testtools.html | 544 -
docs/index.html | 268 +-
docs/quick-start/index.html | 35 +
.../quick-start/installation/bare-metal/index.html | 134 +
docs/quick-start/installation/docker/index.html | 81 +
docs/quick-start/installation/index.html | 35 +
.../quick-start/installation/kubernetes/index.html | 90 +
docs/quick-start/reading-writing-data/index.html | 117 +
.../components/client/in-memory-storage/index.html | 37 +
docs/system-internals/components/client/index.html | 35 +
.../components/client/jars/index.html | 34 +
.../components/client/startup-sequence/index.html | 37 +
.../components/datanode/disk-layout/index.html | 33 +
.../datanode/in-memory-storage/index.html | 33 +
.../components/datanode/index.html | 35 +
.../datanode/read-request-flow/index.html | 33 +
.../components/datanode/rocksdb-schema/index.html | 49 +
.../datanode/startup-sequence/index.html | 33 +
.../datanode/write-request-flow/index.html | 33 +
.../components/httpfs-gateway/index.html | 35 +
.../components/httpfs-gateway/overview/index.html | 41 +
docs/system-internals/components/index.html | 35 +
.../ozone-manager/disk-layout/index.html | 33 +
.../ozone-manager/high-availability/index.html | 74 +
.../ozone-manager/in-memory-storage/index.html | 38 +
.../components/ozone-manager/index.html | 35 +
.../ozone-manager/read-request-flow/index.html | 33 +
.../ozone-manager/rocksdb-schema/index.html | 33 +
.../components/ozone-manager/roles/index.html | 33 +
.../ozone-manager/startup-sequence/index.html | 33 +
.../ozone-manager/write-request-flow/index.html | 33 +
.../components/recon/disk-layout/index.html | 33 +
.../components/recon/in-memory-storage/index.html | 33 +
docs/system-internals/components/recon/index.html | 35 +
.../components/recon/rocksdb-schema/index.html | 33 +
.../components/recon/sql-schema/index.html | 33 +
.../components/recon/startup-sequence/index.html | 33 +
.../recon/syncing-data-from-datanodes/index.html | 33 +
.../recon/syncing-data-from-om/index.html | 33 +
.../recon/syncing-data-from-scm/index.html | 33 +
.../components/s3-gateway/index.html | 35 +
.../components/s3-gateway/overview/index.html | 40 +
.../components/s3-gateway/request-flow/index.html | 33 +
.../admin-read-request-flow/index.html | 33 +
.../admin-write-request-flow/index.html | 33 +
.../disk-layout/index.html | 33 +
.../in-memory-storage/index.html | 33 +
.../storage-container-manager/index.html | 35 +
.../rocksdb-schema/index.html | 33 +
.../storage-container-manager/roles/index.html | 36 +
.../startup-sequence/index.html | 33 +
.../data-integrity/checksums/index.html | 34 +
.../data-integrity/container-scanner/index.html | 33 +
docs/system-internals/data-integrity/index.html | 35 +
.../data-integrity/volume-scanner/index.html | 33 +
.../data-operations/delete/index.html | 48 +
docs/system-internals/data-operations/index.html | 35 +
.../data-operations/read/index.html | 58 +
.../data-operations/write/index.html | 72 +
.../features/bucket-snapshots/index.html | 33 +
.../features/erasure-coding/index.html | 33 +
.../features/filesystem-optimization/index.html | 62 +
.../index.html | 158 +
docs/system-internals/features/index.html | 35 +
.../om-bootstrapping-with-snapshots/index.html | 203 +
.../features/upgrade-downgrade/index.html | 33 +
docs/system-internals/index.html | 35 +
.../network-protocols/client/index.html | 35 +
docs/system-internals/network-protocols/index.html | 35 +
.../network-protocols/overview/index.html | 34 +
.../network-protocols/server/index.html | 35 +
.../replication/data/container-balancer/index.html | 33 +
.../data/containers/creation/index.html | 33 +
.../data/containers/destruction/index.html | 33 +
.../replication/data/containers/index.html | 35 +
.../containers/offline-reconstruction/index.html | 34 +
.../data/containers/overview/index.html | 33 +
.../data/containers/persistence/index.html | 34 +
.../data/containers/replication/index.html | 150 +
.../replication/data/containers/reports/index.html | 33 +
.../replication/data/containers/states/index.html | 34 +
.../replication/data/containers/types/index.html | 34 +
docs/system-internals/replication/data/index.html | 35 +
.../data/replication-manager/index.html | 170 +
.../data/write-pipelines/creation/index.html | 33 +
.../data/write-pipelines/destruction/index.html | 34 +
.../replication/data/write-pipelines/index.html | 35 +
.../data/write-pipelines/overview/index.html | 33 +
.../data/write-pipelines/persistence/index.html | 34 +
.../data/write-pipelines/reports/index.html | 33 +
.../data/write-pipelines/states/index.html | 33 +
.../data/write-pipelines/types/index.html | 34 +
docs/system-internals/replication/index.html | 35 +
.../replication/metadata/index.html | 34 +
.../security/certificates/index.html | 34 +
docs/system-internals/security/index.html | 35 +
docs/system-internals/security/kerberos/index.html | 86 +
.../security/s3-credentials/index.html | 34 +
docs/system-internals/security/sasl/index.html | 33 +
.../security/symmetric-encryption/index.html | 150 +
docs/system-internals/security/tls/index.html | 34 +
docs/system-internals/security/tokens/index.html | 140 +
.../decommission-maintenance/index.html | 33 +
docs/troubleshooting/delete/index.html | 34 +
docs/troubleshooting/docker/index.html | 33 +
docs/troubleshooting/index.html | 35 +
docs/troubleshooting/integrations/index.html | 35 +
.../integrations/placeholder/index.html | 34 +
.../om-ha-snapshot-installation-issues/index.html | 46 +
docs/troubleshooting/performance/index.html | 34 +
docs/troubleshooting/ratis/index.html | 33 +
docs/troubleshooting/read-write/index.html | 34 +
docs/troubleshooting/recon/index.html | 33 +
docs/troubleshooting/rocksdb/index.html | 33 +
docs/troubleshooting/safemode/index.html | 34 +
.../security/authentication/index.html | 36 +
.../security/authorization/index.html | 36 +
.../security/certificates/index.html | 33 +
docs/troubleshooting/security/index.html | 35 +
docs/troubleshooting/startup/index.html | 34 +
docs/troubleshooting/storage-containers/index.html | 33 +
docs/troubleshooting/upgrade-downgrade/index.html | 33 +
docs/troubleshooting/write-pipelines/index.html | 33 +
.../client-interfaces/csi-protocol/index.html | 58 +
.../user-guide/client-interfaces/httpfs/index.html | 94 +
docs/user-guide/client-interfaces/index.html | 35 +
.../client-interfaces/java-client-api/index.html | 65 +
.../client-interfaces/native-cpp/index.html | 85 +
docs/user-guide/client-interfaces/o3/index.html | 118 +
docs/user-guide/client-interfaces/ofs/index.html | 153 +
.../user-guide/client-interfaces/python/index.html | 111 +
docs/user-guide/client-interfaces/s3/index.html | 35 +
.../client-interfaces/s3/s3-api/index.html | 102 +
.../client-interfaces/s3/securing-s3/index.html | 95 +
docs/user-guide/client-interfaces/s3a/index.html | 98 +
docs/user-guide/clients/hdfs/index.html | 34 +
docs/user-guide/clients/index.html | 35 +
docs/user-guide/clients/ozone/index.html | 39 +
docs/user-guide/clients/s3/index.html | 39 +
docs/user-guide/index.html | 35 +
docs/user-guide/integrations/flink/index.html | 91 +
.../integrations/hadoop-distcp/index.html | 94 +
docs/user-guide/integrations/hbase/index.html | 68 +
docs/user-guide/integrations/hive/index.html | 96 +
docs/user-guide/integrations/hue/index.html | 33 +
docs/user-guide/integrations/iceberg/index.html | 89 +
docs/user-guide/integrations/impala/index.html | 78 +
docs/user-guide/integrations/index.html | 35 +
docs/user-guide/integrations/oozie/index.html | 33 +
docs/user-guide/integrations/spark/index.html | 33 +
docs/user-guide/integrations/trino/index.html | 33 +
download/index.html | 53 +
downloads/index.html | 249 -
events/index.html | 198 -
faq/index.html | 202 +-
favicon-16x16.png | Bin 591 -> 0 bytes
favicon-32x32.png | Bin 1452 -> 0 bytes
favicon.svg | 55 +
fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes
fonts/glyphicons-halflings-regular.svg | 288 -
fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes
fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes
fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes
img/blog/ozone-cluster-scale-at-didi.png | Bin 0 -> 135508 bytes
...-download-latency-follower-read-goes-online.png | Bin 0 -> 1029134 bytes
img/integrations/grafana.svg | 70 +
img/integrations/hive.svg | 51 +
img/integrations/hue.svg | 20 +
img/integrations/iceberg.svg | 33 +
img/integrations/impala.svg | 82 +
img/integrations/knox.svg | 722 ++
img/integrations/oozie.svg | 36 +
img/integrations/prometheus.svg | 50 +
img/integrations/ranger.svg | 127 +
img/integrations/spark.svg | 13 +
img/integrations/trino.svg | 1 +
img/ozone-logo.svg | 60 +
img/replication/containers.svg | 5 +
img/replication/erasure-coding.svg | 26 +
img/replication/pipelines.svg | 16 +
img/replication/ratis.svg | 125 +
img/social-card.png | Bin 0 -> 380902 bytes
img/social/github.svg | 22 +
img/social/jira.svg | 22 +
img/social/mail.svg | 22 +
img/social/slack.svg | 22 +
img/social/twitter-x.svg | 22 +
img/social/youtube.svg | 22 +
index.html | 240 +-
index.xml | 211 -
jquery.min.js | 6 -
logo-white.png | Bin 542 -> 0 bytes
mstile-150x150.png | Bin 2813 -> 0 bytes
opensearch.xml | 10 +
ozone-logo-grayscale.ai | 2169 ----
ozone-logo-grayscale.png | Bin 38143 -> 0 bytes
ozone-logo.ai | 2326 ----
ozone-logo.png | Bin 40237 -> 0 bytes
public/404.html | 149 -
public/android-chrome-192x192.png | Bin 7686 -> 0 bytes
public/android-chrome-512x512.png | Bin 27743 -> 0 bytes
public/apache_incubator.png | Bin 8249 -> 0 bytes
public/apple-touch-icon.png | Bin 6118 -> 0 bytes
public/asf_feather.png | Bin 1209 -> 0 bytes
public/assets/ApacheOzoneBestPracticesAtDidi.pdf | Bin 5642945 -> 0 bytes
public/blogs/index.html | 152 -
public/bootstrap.min.css | 6 -
public/bootstrap.min.js | 7 -
public/browserconfig.xml | 9 -
public/categories/index.html | 157 -
public/categories/index.xml | 12 -
public/categories/page/1/index.html | 10 -
public/cloud.png | Bin 343530 -> 0 bytes
public/community/index.html | 187 -
public/doap_ozone.rdf | 60 -
public/docs/index.html | 175 -
public/downloads/index.html | 247 -
public/events/index.html | 197 -
public/faq/index.html | 182 -
public/favicon-16x16.png | Bin 591 -> 0 bytes
public/favicon-32x32.png | Bin 1452 -> 0 bytes
public/favicon.ico | Bin 15086 -> 0 bytes
public/fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes
public/fonts/glyphicons-halflings-regular.svg | 288 -
public/fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes
public/fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes
public/fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes
public/index.html | 224 -
public/index.xml | 146 -
public/jquery.min.js | 6 -
public/logo-white.png | Bin 542 -> 0 bytes
public/mstile-150x150.png | Bin 2813 -> 0 bytes
public/ozone-logo-grayscale.ai | 2169 ----
public/ozone-logo-grayscale.png | Bin 38143 -> 0 bytes
public/ozone-logo.ai | 2326 ----
public/ozone-logo.png | Bin 40237 -> 0 bytes
public/release/0.2.1-alpha/index.html | 179 -
public/release/0.3.0-alpha/index.html | 189 -
public/release/0.4.0-alpha/index.html | 193 -
public/release/0.4.1-alpha/index.html | 183 -
public/release/0.5.0-beta/index.html | 184 -
public/release/1.0.0/index.html | 190 -
public/release/1.1.0/index.html | 188 -
public/release/1.2.0/index.html | 10 -
public/release/1.2.1/index.html | 189 -
public/release/1.3.0/index.html | 190 -
public/release/1.4.0/index.html | 192 -
public/release/1.4.1/index.html | 179 -
public/release/2.0.0/index.html | 548 -
public/release/2.1.0/index.html | 302 -
public/release/index.html | 818 --
public/release/index.xml | 104 -
public/release/page/1/index.html | 10 -
public/release/page/2/index.html | 234 -
public/releases/0.2.1.png | Bin 947201 -> 0 bytes
public/releases/0.3.0.png | Bin 1682996 -> 0 bytes
public/releases/0.4.0.png | Bin 1342185 -> 0 bytes
public/releases/0.4.1.png | Bin 411658 -> 0 bytes
public/releases/0.5.0.jpg | Bin 366151 -> 0 bytes
public/releases/1.0.0.jpg | Bin 2529890 -> 0 bytes
public/releases/1.1.0.jpg | Bin 198307 -> 0 bytes
public/releases/1.2.0.jpg | Bin 1059581 -> 0 bytes
public/releases/1.3.0.jpg | Bin 3113922 -> 0 bytes
public/releases/1.4.0.jpg | Bin 1784849 -> 0 bytes
public/safari-pinned-tab.svg | 40 -
public/site.webmanifest | 19 -
public/sitemap.xml | 66 -
public/style.css | 333 -
public/sunrise-ozone copy.jpg | Bin 1358738 -> 0 bytes
public/sunrise-ozone.jpg | Bin 783290 -> 0 bytes
public/tags/index.html | 157 -
public/tags/index.xml | 12 -
public/tags/page/1/index.html | 10 -
pwa/icon-192-maskable.png | Bin 0 -> 12788 bytes
pwa/icon-192.png | Bin 0 -> 31679 bytes
pwa/icon-512-maskable.png | Bin 0 -> 50080 bytes
pwa/icon-512.png | Bin 0 -> 122194 bytes
pwa/manifest.json | 29 +
release-notes/1.4.1/index.html | 44 +
release-notes/2.0.0/index.html | 373 +
release-notes/2.1.0/index.html | 147 +
release/0.2.1-alpha/index.html | 181 -
release/0.3.0-alpha/index.html | 191 -
release/0.4.0-alpha/index.html | 195 -
release/0.4.1-alpha/index.html | 185 -
release/0.5.0-beta/index.html | 186 -
release/1.0.0/index.html | 192 -
release/1.1.0/index.html | 190 -
release/1.2.0/index.html | 1 -
release/1.2.1/index.html | 191 -
release/1.3.0/index.html | 192 -
release/1.4.0/index.html | 194 -
release/1.4.1/index.html | 181 -
release/2.0.0/index.html | 550 -
release/2.1.0/index.html | 298 -
release/index.html | 834 --
release/index.xml | 147 -
release/page/1/index.html | 1 -
release/page/2/index.html | 242 -
releases/2.0.0.jpg => releases-2.0.0.jpg | Bin
releases/2.1.0.jpg => releases-2.1.0.jpg | Bin
releases/0.2.1.png | Bin 947201 -> 0 bytes
releases/0.3.0.png | Bin 1682996 -> 0 bytes
releases/0.4.0.png | Bin 1342185 -> 0 bytes
releases/0.4.1.png | Bin 411658 -> 0 bytes
releases/0.5.0.jpg | Bin 366151 -> 0 bytes
releases/1.0.0.jpg | Bin 2529890 -> 0 bytes
releases/1.1.0.jpg | Bin 198307 -> 0 bytes
releases/1.2.0.jpg | Bin 1059581 -> 0 bytes
releases/1.3.0.jpg | Bin 3113922 -> 0 bytes
releases/1.4.0.jpg | Bin 1784849 -> 0 bytes
roadmap/index.html | 40 +
safari-pinned-tab.svg | 40 -
script/matomo.js | 36 +
search/index.html | 32 +
site.webmanifest | 19 -
sitemap.xml | 113 +-
style.css | 333 -
sunrise-ozone.jpg | Bin 783290 -> 0 bytes
sw.js | 1 +
tags/index.html | 159 -
tags/index.xml | 11 -
tags/page/1/index.html | 1 -
2042 files changed, 23609 insertions(+), 558154 deletions(-)
diff --git a/.github/workflows/ozone-docs.yml b/.github/workflows/ozone-docs.yml
deleted file mode 100644
index 964037d8d..000000000
--- a/.github/workflows/ozone-docs.yml
+++ /dev/null
@@ -1,51 +0,0 @@
-# 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.
-
-name: Publish Ozone docs
-on:
- schedule:
- - cron: '29 12 * * *'
- workflow_dispatch:
-jobs:
- regenerate:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout Ozone
- uses: actions/checkout@v4
- with:
- repository: apache/ozone
- path: ozone
- - name: Build Ozone docs
- working-directory: ozone
- run: |
- mvn --no-transfer-progress -pl :hdds-docs clean package
- mv hadoop-hdds/docs/target/classes/docs ../edge
- - name: Checkout Ozone Site generated version
- uses: actions/checkout@v4
- with:
- path: site
- ref: asf-site
- - name: Store updated docs
- working-directory: site
- run: |
- OZONE_SHA=$(git -C ../ozone rev-parse HEAD)
- rm -fr docs/edge
- mv ../edge docs/
- git add docs/edge
- git status
- git config --global user.name 'Github Actions'
- git config --global user.email 'noreply@github.com'
- git commit -m "[auto] Generated docs from Apache Ozone master $OZONE_SHA" || true
- git push
diff --git a/.hugo_build.lock b/.hugo_build.lock
deleted file mode 100644
index e69de29bb..000000000
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 7bc07ec21..000000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,10 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Environment-dependent path to Maven home directory
-/mavenHomeManager.xml
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/.idea/checkstyle-idea.xml b/.idea/checkstyle-idea.xml
deleted file mode 100644
index 1f88d4360..000000000
--- a/.idea/checkstyle-idea.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="CheckStyle-IDEA" serialisationVersion="2">
- <checkstyleVersion>10.23.0</checkstyleVersion>
- <scanScope>JavaOnly</scanScope>
- <option name="thirdPartyClasspath" />
- <option name="activeLocationIds" />
- <option name="locations">
- <list>
- <ConfigurationLocation id="bundled-sun-checks" type="BUNDLED" scope="All" description="Sun Checks">(bundled)</ConfigurationLocation>
- <ConfigurationLocation id="bundled-google-checks" type="BUNDLED" scope="All" description="Google Checks">(bundled)</ConfigurationLocation>
- </list>
- </option>
- </component>
-</project>
\ No newline at end of file
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
deleted file mode 100644
index 919ce1f1f..000000000
--- a/.idea/codeStyles/Project.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<component name="ProjectCodeStyleConfiguration">
- <code_scheme name="Project" version="173">
- <ScalaCodeStyleSettings>
- <option name="MULTILINE_STRING_CLOSING_QUOTES_ON_NEW_LINE" value="true" />
- </ScalaCodeStyleSettings>
- </code_scheme>
-</component>
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
deleted file mode 100644
index 5ca0622cf..000000000
--- a/.idea/codeStyles/codeStyleConfig.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<component name="ProjectCodeStyleConfiguration">
- <state>
- <option name="PREFERRED_PROJECT_CODE_STYLE" value="ozonestyle" />
- </state>
-</component>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 37813b7d4..000000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="ms-21" project-jdk-type="JavaSDK">
- <output url="file://$PROJECT_DIR$/out" />
- </component>
-</project>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index 2c7762a32..000000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectModuleManager">
- <modules>
- <module fileurl="file://$PROJECT_DIR$/.idea/ozone-site.iml" filepath="$PROJECT_DIR$/.idea/ozone-site.iml" />
- </modules>
- </component>
-</project>
\ No newline at end of file
diff --git a/.idea/ozone-site.iml b/.idea/ozone-site.iml
deleted file mode 100644
index d6ebd4805..000000000
--- a/.idea/ozone-site.iml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
- <component name="NewModuleRootManager" inherit-compiler-output="true">
- <exclude-output />
- <content url="file://$MODULE_DIR$" />
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- </component>
-</module>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 35eb1ddfb..000000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="VcsDirectoryMappings">
- <mapping directory="" vcs="Git" />
- </component>
-</project>
\ No newline at end of file
diff --git a/assets/04_Chuang_Performance_of_Apache.pdf b/04_Chuang_Performance_of_Apache.pdf
similarity index 100%
rename from assets/04_Chuang_Performance_of_Apache.pdf
rename to 04_Chuang_Performance_of_Apache.pdf
diff --git a/404.html b/404.html
index 4adbb810c..5f0477ce0 100644
--- a/404.html
+++ b/404.html
@@ -1,149 +1,32 @@
-
-<!DOCTYPE html>
-
-<html>
-
+<!doctype html>
+<html lang="en" dir="ltr" class="plugin-native plugin-id-default" data-has-hydrated="false">
<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="Object store for Hadoop">
- <meta name="keywords" content="hadoop, ozone, hdds, objectstore, scale"/>
- <meta name="robots" content="index,follow"/>
- <meta name="language" content="en"/>
-
- <title>Apache Ozone</title>
-
- <base href="https://ozone.apache.org/">
-
- <link rel="canonical" href="https://ozone.apache.org">
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">Page Not Found | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozone.apache.org/404.html"><met [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
- <link rel="stylesheet" href="bootstrap.min.css">
- <link rel="stylesheet" href="style.css">
- <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
- <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
- <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
- <link rel="manifest" href="/site.webmanifest">
- <link rel="mask-icon" href="/safari-pinned-tab.svg">
- <link rel="shortcut icon" href="/favicon.ico">
- <meta name="msapplication-TileColor" content="#da532c">
- <meta name="theme-color" content="#ffffff">
-
- <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>
-
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
</head>
-
-<body>
-
-
-<div class="topnav">
- <div class="container">
- <ul class="breadcrumb col-md-4">
- <li>
- <img class="asf-logo" src="asf_feather.png"/>
- <a href="https://www.apache.org">Apache Software Foundation</a>
- </li>
- </ul>
- <div class="col-md-8">
- <ul class="pull-right breadcrumb">
- <li><a href="https://www.apache.org/licenses/">License</a></li>
- <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
- <li><a href="https://www.apache.org/events/current-event">Events</a></li>
- <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
- <li><a href="https://www.apache.org/security/">Security</a></li>
- <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a></li>
- </ul>
- </div>
- </div>
-
- <nav class="navbar navbar-default navbar-static-top" role="navigation">
- <div class="container">
- <div class="navbar-header">
- <ul class="nav navbar-nav navbar-brand">
- <li>
- <img src="ozone-logo.png" alt="Ozone logo"/>
- <a href="https://ozone.apache.org/">Apache Ozone™</a>
- </li>
- </ul>
- <button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
- data-target="#ozone-menu" aria-expanded="false">
- <span class="sr-only">Toggle navigation</span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </button>
- </div>
-
- <div id="ozone-menu" class="collapse navbar-collapse">
- <ul class="nav navbar-nav navbar-right">
- <li><a href="faq">FAQ</a></li>
- <li><a href="downloads">Download</a></li>
- <li><a href="docs">Documentation</a></li>
- <li class="dropdown">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Community <span class="caret"></span></a>
- <ul class="dropdown-menu">
- <li><a href="community">Get involved</a></li>
- <li><a href="events">Events</a></li>
- <li><a href="blogs">Blogs</a></li>
- </ul>
- </li>
- <li><a href="https://github.com/apache/ozone">Source</a></li>
- <li><a href="https://cwiki.apache.org/confluence/display/OZONE">Wiki</a></li>
- </ul>
- </div>
-
- </nav>
-
- <div style="max-height: 200px; overflow: hidden;">
- <img src="sunrise-ozone.jpg" style="width: 100%; left:0px;"/>
- </div>
-
-</div>
-
-</div>
-
-<div class="container">
- <p>Page not found</p>
- <p><a href="/">Go to Home Page</a></p>
-</div>
-
-<footer>
- <div class="container">
-
- <div class="col-md-12 trademark">
- <p>© 2026 The Apache Software Foundation <a href="http://apache.org">The Apache Software Foundation</a>,<br/>
- Apache, Apache Hadoop, Apache Ozone, the Apache feather logo, are trademarks of The Apache Software Foundation.
- <p>
- </div>
- </div>
-</footer>
-
-
-<script src="jquery.min.js"></script>
-<script src="bootstrap.min.js"></script>
-
-
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
</body>
-</html>
-
+</html>
\ No newline at end of file
diff --git a/assets/Apache Ozone Erasure Coding(EC).pdf b/Apache Ozone Erasure Coding(EC).pdf
similarity index 100%
copy from assets/Apache Ozone Erasure Coding(EC).pdf
copy to Apache Ozone Erasure Coding(EC).pdf
diff --git a/assets/ApacheCoCAsia2025OzoneDiskBalancer.pdf b/ApacheCoCAsia2025OzoneDiskBalancer.pdf
similarity index 100%
rename from assets/ApacheCoCAsia2025OzoneDiskBalancer.pdf
rename to ApacheCoCAsia2025OzoneDiskBalancer.pdf
diff --git a/assets/ApacheConAsia2022_Yan_Sammi.pdf b/ApacheConAsia2022_Yan_Sammi.pdf
similarity index 100%
rename from assets/ApacheConAsia2022_Yan_Sammi.pdf
rename to ApacheConAsia2022_Yan_Sammi.pdf
diff --git a/assets/ApacheOzoneBestPracticesAtShopee.pdf b/ApacheOzoneBestPracticesAtShopee.pdf
similarity index 100%
rename from assets/ApacheOzoneBestPracticesAtShopee.pdf
rename to ApacheOzoneBestPracticesAtShopee.pdf
diff --git a/assets/Ozone2.pdf b/Ozone2.pdf
similarity index 100%
rename from assets/Ozone2.pdf
rename to Ozone2.pdf
diff --git a/assets/Ozone_meetup_Nov102022.pdf b/Ozone_meetup_Nov102022.pdf
similarity index 100%
rename from assets/Ozone_meetup_Nov102022.pdf
rename to Ozone_meetup_Nov102022.pdf
diff --git a/assets/What'sNewInApacheOzone-v3.pdf b/What'sNewInApacheOzone-v3.pdf
similarity index 100%
rename from assets/What'sNewInApacheOzone-v3.pdf
rename to What'sNewInApacheOzone-v3.pdf
diff --git a/android-chrome-192x192.png b/android-chrome-192x192.png
deleted file mode 100644
index 4df102d46..000000000
Binary files a/android-chrome-192x192.png and /dev/null differ
diff --git a/android-chrome-512x512.png b/android-chrome-512x512.png
deleted file mode 100644
index eec965c64..000000000
Binary files a/android-chrome-512x512.png and /dev/null differ
diff --git a/apache_incubator.png b/apache_incubator.png
deleted file mode 100644
index 987c79e3a..000000000
Binary files a/apache_incubator.png and /dev/null differ
diff --git a/apple-touch-icon.png b/apple-touch-icon.png
index 85bdb0b21..74d1e1308 100644
Binary files a/apple-touch-icon.png and b/apple-touch-icon.png differ
diff --git a/asf_feather.png b/asf_feather.png
deleted file mode 100644
index c0ebf11a6..000000000
Binary files a/asf_feather.png and /dev/null differ
diff --git a/assets/ApacheOzoneBestPracticesAtDidi.pdf b/assets/ApacheOzoneBestPracticesAtDidi.pdf
deleted file mode 100644
index ca0b2bba1..000000000
Binary files a/assets/ApacheOzoneBestPracticesAtDidi.pdf and /dev/null differ
diff --git a/assets/css/styles.27c88cdc.css b/assets/css/styles.27c88cdc.css
new file mode 100644
index 000000000..b234a5f4e
--- /dev/null
+++ b/assets/css/styles.27c88cdc.css
@@ -0,0 +1 @@
+@import url(https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Open+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap);.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote, [...]
\ No newline at end of file
diff --git a/public/assets/04_Chuang_Performance_of_Apache.pdf b/assets/files/04_Chuang_Performance_of_Apache-b4f6319cdd1eddbb3d9d62809a91d0c2.pdf
similarity index 100%
rename from public/assets/04_Chuang_Performance_of_Apache.pdf
rename to assets/files/04_Chuang_Performance_of_Apache-b4f6319cdd1eddbb3d9d62809a91d0c2.pdf
diff --git a/public/assets/Apache Ozone Erasure Coding(EC).pdf b/assets/files/Apache Ozone Erasure Coding(EC)-e2b2167bd29f218b073bb8c60828a5b1.pdf
similarity index 100%
rename from public/assets/Apache Ozone Erasure Coding(EC).pdf
rename to assets/files/Apache Ozone Erasure Coding(EC)-e2b2167bd29f218b073bb8c60828a5b1.pdf
diff --git a/public/assets/ApacheCoCAsia2025OzoneDiskBalancer.pdf b/assets/files/ApacheCoCAsia2025OzoneDiskBalancer-c38d9a13bcf99baaec9391d43c166bb1.pdf
similarity index 100%
rename from public/assets/ApacheCoCAsia2025OzoneDiskBalancer.pdf
rename to assets/files/ApacheCoCAsia2025OzoneDiskBalancer-c38d9a13bcf99baaec9391d43c166bb1.pdf
diff --git a/public/assets/ApacheConAsia2022_Yan_Sammi.pdf b/assets/files/ApacheConAsia2022_Yan_Sammi-f5ae5f952e57dda4e2d3b15b6e41ac89.pdf
similarity index 100%
rename from public/assets/ApacheConAsia2022_Yan_Sammi.pdf
rename to assets/files/ApacheConAsia2022_Yan_Sammi-f5ae5f952e57dda4e2d3b15b6e41ac89.pdf
diff --git a/public/assets/ApacheOzoneBestPracticesAtShopee.pdf b/assets/files/ApacheOzoneBestPracticesAtShopee-2a36eb1d89674cb28eb6523ad52b1bc8.pdf
similarity index 100%
rename from public/assets/ApacheOzoneBestPracticesAtShopee.pdf
rename to assets/files/ApacheOzoneBestPracticesAtShopee-2a36eb1d89674cb28eb6523ad52b1bc8.pdf
diff --git a/public/assets/Ozone2.pdf b/assets/files/Ozone2-c80007ff224036a0f45d2e15499cb74d.pdf
similarity index 100%
rename from public/assets/Ozone2.pdf
rename to assets/files/Ozone2-c80007ff224036a0f45d2e15499cb74d.pdf
diff --git a/public/assets/Ozone_meetup_Nov102022.pdf b/assets/files/Ozone_meetup_Nov102022-7215fdb825c62e9b8cb0925e9962d260.pdf
similarity index 100%
rename from public/assets/Ozone_meetup_Nov102022.pdf
rename to assets/files/Ozone_meetup_Nov102022-7215fdb825c62e9b8cb0925e9962d260.pdf
diff --git a/public/assets/What'sNewInApacheOzone-v3.pdf b/assets/files/What'sNewInApacheOzone-v3-b2e3bf484b981e091157c5dc8d10059d.pdf
similarity index 100%
rename from public/assets/What'sNewInApacheOzone-v3.pdf
rename to assets/files/What'sNewInApacheOzone-v3-b2e3bf484b981e091157c5dc8d10059d.pdf
diff --git a/docs/1.4.1/interface/CSI.png b/assets/images/CSI-43be6c4c7173d76430a75929c602669d.png
similarity index 100%
rename from docs/1.4.1/interface/CSI.png
rename to assets/images/CSI-43be6c4c7173d76430a75929c602669d.png
diff --git a/docs/1.4.1/concept/ContainerMetadata.png b/assets/images/ContainerMetadata-0e1d6fbd9172fdd064e4b1623db13b28.png
similarity index 100%
rename from docs/1.4.1/concept/ContainerMetadata.png
rename to assets/images/ContainerMetadata-0e1d6fbd9172fdd064e4b1623db13b28.png
diff --git a/docs/1.4.1/concept/Containers.png b/assets/images/Containers-af815cd35045a100eb9c3534adb31766.png
similarity index 100%
rename from docs/1.4.1/concept/Containers.png
rename to assets/images/Containers-af815cd35045a100eb9c3534adb31766.png
diff --git a/docs/1.4.1/feature/EC-Chunk-Layout.png b/assets/images/EC-Chunk-Layout-a02f386de80189b7a93d59273b6d9a4c.png
similarity index 100%
rename from docs/1.4.1/feature/EC-Chunk-Layout.png
rename to assets/images/EC-Chunk-Layout-a02f386de80189b7a93d59273b6d9a4c.png
diff --git a/docs/1.4.1/feature/EC-Reads-With-No-Failures.png b/assets/images/EC-Reads-With-No-Failures-3282015dfe66d9400c33e2c968c5eda6.png
similarity index 100%
rename from docs/1.4.1/feature/EC-Reads-With-No-Failures.png
rename to assets/images/EC-Reads-With-No-Failures-3282015dfe66d9400c33e2c968c5eda6.png
diff --git a/docs/1.4.1/feature/EC-Reconstructional-Read.png b/assets/images/EC-Reconstructional-Read-cb74627ab5163ee8b70a386c62f2327c.png
similarity index 100%
rename from docs/1.4.1/feature/EC-Reconstructional-Read.png
rename to assets/images/EC-Reconstructional-Read-cb74627ab5163ee8b70a386c62f2327c.png
diff --git a/docs/1.4.1/feature/EC-Write-Block-Allocation-in-Containers.png b/assets/images/EC-Write-Block-Allocation-in-Containers-4102782ba4d5575f7b788ee28a0d120e.png
similarity index 100%
rename from docs/1.4.1/feature/EC-Write-Block-Allocation-in-Containers.png
rename to assets/images/EC-Write-Block-Allocation-in-Containers-4102782ba4d5575f7b788ee28a0d120e.png
diff --git a/assets/images/FunctionalOzone-813c1c8dbb9509c9d242aca96540db20.png b/assets/images/FunctionalOzone-813c1c8dbb9509c9d242aca96540db20.png
new file mode 100644
index 000000000..641b7db2f
Binary files /dev/null and b/assets/images/FunctionalOzone-813c1c8dbb9509c9d242aca96540db20.png differ
diff --git a/docs/1.4.1/feature/GrafanaOzoneObjectMetrics.png b/assets/images/GrafanaOzoneObjectMetrics-da824f2ba5392f17b06bac6d6db1749c.png
similarity index 100%
rename from docs/1.4.1/feature/GrafanaOzoneObjectMetrics.png
rename to assets/images/GrafanaOzoneObjectMetrics-da824f2ba5392f17b06bac6d6db1749c.png
diff --git a/docs/1.4.1/feature/GrafanaOzoneOverall.png b/assets/images/GrafanaOzoneOverall-bd2dbb0a4ddf6becaf35b83b1ceef475.png
similarity index 100%
rename from docs/1.4.1/feature/GrafanaOzoneOverall.png
rename to assets/images/GrafanaOzoneOverall-bd2dbb0a4ddf6becaf35b83b1ceef475.png
diff --git a/docs/1.4.1/feature/GrafanaOzoneRPCMetrics.png b/assets/images/GrafanaOzoneRPCMetrics-0e97374302cde21114d6d09558674523.png
similarity index 100%
rename from docs/1.4.1/feature/GrafanaOzoneRPCMetrics.png
rename to assets/images/GrafanaOzoneRPCMetrics-0e97374302cde21114d6d09558674523.png
diff --git a/docs/1.4.1/feature/HA-OM.png b/assets/images/HA-OM-30dfa9edace3c770b0294a885d9b5207.png
similarity index 100%
rename from docs/1.4.1/feature/HA-OM.png
rename to assets/images/HA-OM-30dfa9edace3c770b0294a885d9b5207.png
diff --git a/docs/1.4.1/feature/HA-OM-doublebuffer.png b/assets/images/HA-OM-doublebuffer-83220301aa67e3310bc6063364abeea7.png
similarity index 100%
rename from docs/1.4.1/feature/HA-OM-doublebuffer.png
rename to assets/images/HA-OM-doublebuffer-83220301aa67e3310bc6063364abeea7.png
diff --git a/assets/images/OzoneArchitectureDiagram-f355c07eca9678e194c05fe8eed8317c.png b/assets/images/OzoneArchitectureDiagram-f355c07eca9678e194c05fe8eed8317c.png
new file mode 100644
index 000000000..67e449027
Binary files /dev/null and b/assets/images/OzoneArchitectureDiagram-f355c07eca9678e194c05fe8eed8317c.png differ
diff --git a/docs/1.4.1/concept/OzoneManager.png b/assets/images/OzoneManager-4d310b421f2dddc728e6d613be8d49f2.png
similarity index 100%
rename from docs/1.4.1/concept/OzoneManager.png
rename to assets/images/OzoneManager-4d310b421f2dddc728e6d613be8d49f2.png
diff --git a/docs/1.4.1/concept/OzoneManager-ReadPath.png b/assets/images/OzoneManager-ReadPath-21af8267b6511eb134b7d1936dd88421.png
similarity index 100%
rename from docs/1.4.1/concept/OzoneManager-ReadPath.png
rename to assets/images/OzoneManager-ReadPath-21af8267b6511eb134b7d1936dd88421.png
diff --git a/docs/1.4.1/concept/OzoneManager-WritePath.png b/assets/images/OzoneManager-WritePath-42ea66efe76c49fd5250f338d653fec7.png
similarity index 100%
rename from docs/1.4.1/concept/OzoneManager-WritePath.png
rename to assets/images/OzoneManager-WritePath-42ea66efe76c49fd5250f338d653fec7.png
diff --git a/docs/1.4.1/feature/PrefixFSO-Delete.png b/assets/images/PrefixFSO-Delete-829a8d2b097fb698106e432f9d35d132.png
similarity index 100%
rename from docs/1.4.1/feature/PrefixFSO-Delete.png
rename to assets/images/PrefixFSO-Delete-829a8d2b097fb698106e432f9d35d132.png
diff --git a/docs/1.4.1/feature/PrefixFSO-Format.png b/assets/images/PrefixFSO-Format-e3d29291d2e8ccb2767bb25d56d382a1.png
similarity index 100%
rename from docs/1.4.1/feature/PrefixFSO-Format.png
rename to assets/images/PrefixFSO-Format-e3d29291d2e8ccb2767bb25d56d382a1.png
diff --git a/docs/1.4.1/feature/PrefixFSO-Rename.png b/assets/images/PrefixFSO-Rename-daa685e54c515e7ab4aaa194d4497062.png
similarity index 100%
rename from docs/1.4.1/feature/PrefixFSO-Rename.png
rename to assets/images/PrefixFSO-Rename-daa685e54c515e7ab4aaa194d4497062.png
diff --git a/docs/1.4.1/concept/ReconHighLevelDesign.png b/assets/images/ReconHighLevelDesign-2616251c073fa1d9c9e8ec7d07c9da5b.png
similarity index 100%
rename from docs/1.4.1/concept/ReconHighLevelDesign.png
rename to assets/images/ReconHighLevelDesign-2616251c073fa1d9c9e8ec7d07c9da5b.png
diff --git a/docs/1.4.1/concept/ReconOmDesign.png b/assets/images/ReconOmDesign-0027b37ae6de87428bb247838100eb75.png
similarity index 100%
rename from docs/1.4.1/concept/ReconOmDesign.png
rename to assets/images/ReconOmDesign-0027b37ae6de87428bb247838100eb75.png
diff --git a/docs/1.4.1/concept/ReconScmDesign.png b/assets/images/ReconScmDesign-0821f5808e438bc50c2770e8ec4a3c3c.png
similarity index 100%
rename from docs/1.4.1/concept/ReconScmDesign.png
rename to assets/images/ReconScmDesign-0821f5808e438bc50c2770e8ec4a3c3c.png
diff --git a/docs/1.4.1/concept/StorageContainerManager.png b/assets/images/StorageContainerManager-989fad39f0a68b94e8614e86f0f7abab.png
similarity index 100%
rename from docs/1.4.1/concept/StorageContainerManager.png
rename to assets/images/StorageContainerManager-989fad39f0a68b94e8614e86f0f7abab.png
diff --git a/assets/Apache Ozone Erasure Coding(EC).pdf b/assets/images/container-states-visualized-45bba17930c54023c2a2a2e7ab188c40.png
similarity index 50%
rename from assets/Apache Ozone Erasure Coding(EC).pdf
rename to assets/images/container-states-visualized-45bba17930c54023c2a2a2e7ab188c40.png
index 033c94ace..0dadba04b 100644
Binary files a/assets/Apache Ozone Erasure Coding(EC).pdf and b/assets/images/container-states-visualized-45bba17930c54023c2a2a2e7ab188c40.png differ
diff --git a/docs/edge/feature/diskBalancer.png b/assets/images/diskBalancer-53a3a83a7f67ee898aa3810f693e76d0.png
similarity index 100%
rename from docs/edge/feature/diskBalancer.png
rename to assets/images/diskBalancer-53a3a83a7f67ee898aa3810f693e76d0.png
diff --git a/assets/images/om-ui-1634884c27405e98f839a457553e6fdc.png b/assets/images/om-ui-1634884c27405e98f839a457553e6fdc.png
new file mode 100644
index 000000000..4c278b83e
Binary files /dev/null and b/assets/images/om-ui-1634884c27405e98f839a457553e6fdc.png differ
diff --git a/assets/images/ozone-cluster-scale-at-didi-bff8e63e93ed0f503b50d7350756bef4.png b/assets/images/ozone-cluster-scale-at-didi-bff8e63e93ed0f503b50d7350756bef4.png
new file mode 100644
index 000000000..16a8464c4
Binary files /dev/null and b/assets/images/ozone-cluster-scale-at-didi-bff8e63e93ed0f503b50d7350756bef4.png differ
diff --git a/docs/1.4.1/interface/pvtest-webui.png b/assets/images/persistent-volume-test-web-ui-ed045555932611e659ff699bd29746ac.png
similarity index 100%
rename from docs/1.4.1/interface/pvtest-webui.png
rename to assets/images/persistent-volume-test-web-ui-ed045555932611e659ff699bd29746ac.png
diff --git a/assets/images/quickstart-5d83a74b1d8270cf15400cf00cf686fe.gif b/assets/images/quickstart-5d83a74b1d8270cf15400cf00cf686fe.gif
new file mode 100644
index 000000000..60d5c69d0
Binary files /dev/null and b/assets/images/quickstart-5d83a74b1d8270cf15400cf00cf686fe.gif differ
diff --git a/public/releases/2.0.0.jpg b/assets/images/releases-2.0.0-4b1c17a39a59ee23b48d0041b8e53b02.jpg
similarity index 100%
rename from public/releases/2.0.0.jpg
rename to assets/images/releases-2.0.0-4b1c17a39a59ee23b48d0041b8e53b02.jpg
diff --git a/public/releases/2.1.0.jpg b/assets/images/releases-2.1.0-68b6a727871557b86b2c96dad9100d98.jpg
similarity index 100%
rename from public/releases/2.1.0.jpg
rename to assets/images/releases-2.1.0-68b6a727871557b86b2c96dad9100d98.jpg
diff --git a/assets/images/s3g-download-latency-follower-read-goes-online-102b1f38e6b783c7401950efbbef20b0.png b/assets/images/s3g-download-latency-follower-read-goes-online-102b1f38e6b783c7401950efbbef20b0.png
new file mode 100644
index 000000000..de8d5b315
Binary files /dev/null and b/assets/images/s3g-download-latency-follower-read-goes-online-102b1f38e6b783c7401950efbbef20b0.png differ
diff --git a/docs/1.4.1/feature/scm-secure-ha.png b/assets/images/scm-secure-ha-dfd97a3f493e0fe6e7049dc8f4ddd9f3.png
similarity index 100%
rename from docs/1.4.1/feature/scm-secure-ha.png
rename to assets/images/scm-secure-ha-dfd97a3f493e0fe6e7049dc8f4ddd9f3.png
diff --git a/assets/images/scm-ui-33b889437916c969e0ce93d408d0cdd6.png b/assets/images/scm-ui-33b889437916c969e0ce93d408d0cdd6.png
new file mode 100644
index 000000000..b38f8ffb4
Binary files /dev/null and b/assets/images/scm-ui-33b889437916c969e0ce93d408d0cdd6.png differ
diff --git a/assets/js/0058b4c6.7e322dd9.js b/assets/js/0058b4c6.7e322dd9.js
new file mode 100644
index 000000000..f128cb428
--- /dev/null
+++ b/assets/js/0058b4c6.7e322dd9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[849],{86164:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"defaultSidebar":[{"type":"link","label":"Overview","href":"/docs/","docId":"overview","unlisted":false},{"type":"category","label":"Quick Start","collapsible":true,"collapsed":true,"items":[{"type": [...]
\ No newline at end of file
diff --git a/assets/js/0109176c.6334cadd.js b/assets/js/0109176c.6334cadd.js
new file mode 100644
index 000000000..8a48254db
--- /dev/null
+++ b/assets/js/0109176c.6334cadd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3286],{31931:(e,n,t)=>{t.d(n,{W:()=>l});var o=t(30758),i=t(84324);const r=["zero","one","two","few","many","other"];function s(e){return r.filter((n=>e.includes(n)))}const a={locale:"en",pluralForms:s(["one","other"]),select:e=>1===e?"one":"other"};function c(){const{i18n:{currentLocale:e}}=(0,i.A)();return(0,o.useMemo)((()=>{try{return function(e){const n=new Intl.PluralRules(e);return{locale:e,pluralForms:s(n [...]
\ No newline at end of file
diff --git a/assets/js/01a85c17.85b74c67.js b/assets/js/01a85c17.85b74c67.js
new file mode 100644
index 000000000..77949e454
--- /dev/null
+++ b/assets/js/01a85c17.85b74c67.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8209],{28820:(e,t,a)=>{a.d(t,{A:()=>l});a(30758);var s=a(13526),n=a(79084);const i={tag:"tag_de0C",tagRegular:"tagRegular_Y72n",tagWithCount:"tagWithCount_REYs"};var r=a(86070);function l(e){let{permalink:t,label:a,count:l,description:o}=e;return(0,r.jsxs)(n.A,{href:t,title:o,className:(0,s.A)(i.tag,l?i.tagWithCount:i.tagRegular),children:[a,l&&(0,r.jsx)("span",{children:l})]})}},55598:(e,t,a)=>{a.d(t,{in:()=>c [...]
\ No newline at end of file
diff --git a/assets/js/02138157.ee0b2184.js b/assets/js/02138157.ee0b2184.js
new file mode 100644
index 000000000..89aa6bda2
--- /dev/null
+++ b/assets/js/02138157.ee0b2184.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1368],{7274:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"core-concepts/replication/ratis","title":"Ratis","description":"Apache Ratis is a highly customizable open-source Java implementation","source":"@site/docs/03-core-concepts/02-replication/03-ratis.md","sourceDirName":"03-core-concepts/02-replication","slug":"/ [...]
\ No newline at end of file
diff --git a/assets/js/03368fab.7e9e617a.js b/assets/js/03368fab.7e9e617a.js
new file mode 100644
index 000000000..f612ea797
--- /dev/null
+++ b/assets/js/03368fab.7e9e617a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7864],{62392:(e,s,n)=>{n.d(s,{R:()=>d,x:()=>o});var t=n(30758);const r={},i=t.createContext(r);function d(e){const s=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),t.createElement(i.Provider,{value:s},e.children)}},64436:(e,s,n)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/04b9c31d.e4f2768d.js b/assets/js/04b9c31d.e4f2768d.js
new file mode 100644
index 000000000..174e1c1b2
--- /dev/null
+++ b/assets/js/04b9c31d.e4f2768d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1793],{62392:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>l});var t=s(30758);const r={},i=t.createContext(r);function o(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),t.createElement(i.Provider,{value:n},e.children)}},74386:(e,n,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/04d9fefb.3a8dfb13.js b/assets/js/04d9fefb.3a8dfb13.js
new file mode 100644
index 000000000..52503f1d3
--- /dev/null
+++ b/assets/js/04d9fefb.3a8dfb13.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8957],{3746:(e,s,i)=>{i.d(s,{A:()=>r});const r=i.p+"assets/images/releases-2.0.0-4b1c17a39a59ee23b48d0041b8e53b02.jpg"},30076:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>c,contentTitle:()=>t,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"type":"mdx","permalink":"/release-notes/2.0.0","source":"@site/src/pages/release-notes/2.0.0.md","title":"Release 2.0.0 Available","description":"India [...]
\ No newline at end of file
diff --git a/assets/js/052712d5.48e6262b.js b/assets/js/052712d5.48e6262b.js
new file mode 100644
index 000000000..f78c3bc62
--- /dev/null
+++ b/assets/js/052712d5.48e6262b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3459],{4886:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>l,metadata:()=>o,toc:()=>r});const o=JSON.parse('{"id":"user-guide/client-interfaces/o3","title":"Ozone Shell (ozone sh)","description":"Ozone shell is the primary interface to interact with Ozone from the command line. Behind the scenes it uses the Java API.","source":"@site/docs/04-user-guide/01-client-interfaces [...]
\ No newline at end of file
diff --git a/assets/js/053d1938.20a38a1a.js b/assets/js/053d1938.20a38a1a.js
new file mode 100644
index 000000000..288f38d76
--- /dev/null
+++ b/assets/js/053d1938.20a38a1a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1624],{68681:a=>{a.exports=JSON.parse('{"tag":{"label":"Disk Balancer","permalink":"/blog/tags/disk-balancer","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/disk-balancer","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/0840299b.05870425.js b/assets/js/0840299b.05870425.js
new file mode 100644
index 000000000..4afad0117
--- /dev/null
+++ b/assets/js/0840299b.05870425.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7081],{43109:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"troubleshooting/performance","title":"Troubleshooting Performance","description":"TODO: File a subtask under HDDS-9860 and complete this page or section.","source":"@site/docs/06-troubleshooting/06-performance.md","sourceDirName":"06-troubleshooting","slug":" [...]
\ No newline at end of file
diff --git a/assets/js/085b90d1.533f74c8.js b/assets/js/085b90d1.533f74c8.js
new file mode 100644
index 000000000..8ecfad999
--- /dev/null
+++ b/assets/js/085b90d1.533f74c8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1768],{62392:(e,t,n)=>{n.d(t,{R:()=>d,x:()=>r});var l=n(30758);const s={},i=l.createContext(s);function d(e){const t=l.useContext(i);return l.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),l.createElement(i.Provider,{value:t},e.children)}},75978:(e,t,n)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/08885ee4.6dc406dc.js b/assets/js/08885ee4.6dc406dc.js
new file mode 100644
index 000000000..46991aef1
--- /dev/null
+++ b/assets/js/08885ee4.6dc406dc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5890],{2658:e=>{e.exports=JSON.parse('{"permalink":"/blog/2025/07/02/access-ozone-via-cyberduck","editUrl":"https://github.com/apache/ozone-site/tree/master/blog/2025-07-02-access-ozone-via-cyberduck.md","source":"@site/blog/2025-07-02-access-ozone-via-cyberduck.md","title":"Accessing Ozone S3 via CyberDuck","description":"Here\'s a step\u2011by\u2011step guide to mounting and managing your Apache Ozone object [...]
\ No newline at end of file
diff --git a/assets/js/09c33c63.8a176739.js b/assets/js/09c33c63.8a176739.js
new file mode 100644
index 000000000..f5e794205
--- /dev/null
+++ b/assets/js/09c33c63.8a176739.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8787],{39587:e=>{e.exports=JSON.parse('{"tag":{"label":"Ozone 2.2","permalink":"/blog/tags/ozone-2-2","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/ozone-2-2","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/0a77a02a.b1df0783.js b/assets/js/0a77a02a.b1df0783.js
new file mode 100644
index 000000000..0ca774f9d
--- /dev/null
+++ b/assets/js/0a77a02a.b1df0783.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8496],{31931:(e,n,t)=>{t.d(n,{W:()=>l});var r=t(30758),s=t(84324);const o=["zero","one","two","few","many","other"];function a(e){return o.filter((n=>e.includes(n)))}const c={locale:"en",pluralForms:a(["one","other"]),select:e=>1===e?"one":"other"};function i(){const{i18n:{currentLocale:e}}=(0,s.A)();return(0,r.useMemo)((()=>{try{return function(e){const n=new Intl.PluralRules(e);return{locale:e,pluralForms:a(n [...]
\ No newline at end of file
diff --git a/assets/js/0ae50a2d.f6909c30.js b/assets/js/0ae50a2d.f6909c30.js
new file mode 100644
index 000000000..6b1f2bc7c
--- /dev/null
+++ b/assets/js/0ae50a2d.f6909c30.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1431],{62392:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>s});var r=t(30758);const o={},i=r.createContext(o);function a(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),r.createElement(i.Provider,{value:n},e.children)}},64463:(e,n,t)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/0c13f873.163e1ba6.js b/assets/js/0c13f873.163e1ba6.js
new file mode 100644
index 000000000..5d819d34f
--- /dev/null
+++ b/assets/js/0c13f873.163e1ba6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1956],{53586:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>m,frontMatter:()=>a,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"system-internals/components/ozone-manager/startup-sequence","title":"Ozone Manager Startup Sequence","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/01-ozone-manage [...]
\ No newline at end of file
diff --git a/assets/js/0c8bce8d.dfeaea71.js b/assets/js/0c8bce8d.dfeaea71.js
new file mode 100644
index 000000000..074c2b5e0
--- /dev/null
+++ b/assets/js/0c8bce8d.dfeaea71.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2106],{61864:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"system-internals/components/storage-container-manager/admin-write-request-flow","title":"Storage Container Manager Admin Write Request flow","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system [...]
\ No newline at end of file
diff --git a/assets/js/0cc3bb00.97e3cf95.js b/assets/js/0cc3bb00.97e3cf95.js
new file mode 100644
index 000000000..b923ad8b5
--- /dev/null
+++ b/assets/js/0cc3bb00.97e3cf95.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4610],{20604:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"user-guide/integrations/spark","title":"Spark","description":"TODO: File a subtask under HDDS-9858 and complete this page or section.","source":"@site/docs/04-user-guide/03-integrations/06-spark.md","sourceDirName":"04-user-guide/03-integrations","slug":"/use [...]
\ No newline at end of file
diff --git a/assets/js/0d879757.1657aa73.js b/assets/js/0d879757.1657aa73.js
new file mode 100644
index 000000000..a7beffb01
--- /dev/null
+++ b/assets/js/0d879757.1657aa73.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2104],{8243:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"quick-start/installation/bare-metal","title":"Try Ozone on Bare Metal","description":"This guide covers setting up Apache Ozone on physical or virtual machines. Choose between manual installation or automated deployment using the Ozone Installer tool.","source [...]
\ No newline at end of file
diff --git a/assets/js/0da82c72.67fdcc78.js b/assets/js/0da82c72.67fdcc78.js
new file mode 100644
index 000000000..1c5dc4e39
--- /dev/null
+++ b/assets/js/0da82c72.67fdcc78.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3794],{18536:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"system-internals/network-protocols/README","title":"Network Protocols Within Ozone","description":"This section documents the various network protocols used within Ozone.","source":"@site/docs/07-system-internals/06-network-protocols/README.mdx","sourceDirNam [...]
\ No newline at end of file
diff --git a/assets/js/0e5b3588.daa9dd52.js b/assets/js/0e5b3588.daa9dd52.js
new file mode 100644
index 000000000..503b3cae0
--- /dev/null
+++ b/assets/js/0e5b3588.daa9dd52.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1435],{57359:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>c,contentTitle:()=>a,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"administrator-guide/configuration/basic/configuration-files","title":"Configuration Files","description":"Apache Ozone services are configured using XML files. These configuration files define various parameters that control the behavior of Ozone Managers (OM [...]
\ No newline at end of file
diff --git a/assets/js/0eaa771b.1e11c7fa.js b/assets/js/0eaa771b.1e11c7fa.js
new file mode 100644
index 000000000..6824538ce
--- /dev/null
+++ b/assets/js/0eaa771b.1e11c7fa.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7163],{31199:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>s,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"core-concepts/high-availability/om-ha","title":"Ozone Manager High Availability","description":"Ozone has two metadata-manager nodes (Ozone Manager for key space management and Storage Container Manager for block space management) and multiple storage nodes ( [...]
\ No newline at end of file
diff --git a/assets/js/0f17e3bc.17b934e3.js b/assets/js/0f17e3bc.17b934e3.js
new file mode 100644
index 000000000..564662172
--- /dev/null
+++ b/assets/js/0f17e3bc.17b934e3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1944],{61595:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>r,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"user-guide/integrations/oozie","title":"Oozie","description":"TODO: File a subtask under HDDS-9858 and complete this page or section.","source":"@site/docs/04-user-guide/03-integrations/05-oozie.md","sourceDirName":"04-user-guide/03-integrations","slug":"/use [...]
\ No newline at end of file
diff --git a/assets/js/0fbd5774.130f75e6.js b/assets/js/0fbd5774.130f75e6.js
new file mode 100644
index 000000000..4359d318f
--- /dev/null
+++ b/assets/js/0fbd5774.130f75e6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[122],{12038:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>m,frontMatter:()=>s,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"administrator-guide/configuration/performance/README","title":"Performance Related Configurations","description":"This section documents how to configure Ozone to optimize performance.","source":"@site/docs/05-administrator-guide/02-configuration/04-performanc [...]
\ No newline at end of file
diff --git a/assets/js/0ff5f891.2acc4abc.js b/assets/js/0ff5f891.2acc4abc.js
new file mode 100644
index 000000000..07739aee0
--- /dev/null
+++ b/assets/js/0ff5f891.2acc4abc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8946],{1081:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"core-concepts/namespace/README","title":"Namespace Layout","description":"This section documents the layout of Ozone\'s namespace.","source":"@site/docs/03-core-concepts/03-namespace/README.mdx","sourceDirName":"03-core-concepts/03-namespace","slug":"/core-con [...]
\ No newline at end of file
diff --git a/assets/js/110dab8f.671c6609.js b/assets/js/110dab8f.671c6609.js
new file mode 100644
index 000000000..2769aaf6f
--- /dev/null
+++ b/assets/js/110dab8f.671c6609.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4826],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var r=n(30758),i=n(84324);const o=["zero","one","two","few","many","other"];function s(e){return o.filter((t=>e.includes(t)))}const c={locale:"en",pluralForms:s(["one","other"]),select:e=>1===e?"one":"other"};function a(){const{i18n:{currentLocale:e}}=(0,i.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:s(t [...]
\ No newline at end of file
diff --git a/assets/js/1120d2b4.ca7db19e.js b/assets/js/1120d2b4.ca7db19e.js
new file mode 100644
index 000000000..bf8c939c9
--- /dev/null
+++ b/assets/js/1120d2b4.ca7db19e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9239],{2501:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>t,default:()=>p,frontMatter:()=>r,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"administrator-guide/configuration/performance/topology","title":"Configuring Network Topology","description":"Apache Ozone uses topology information (e.g., rack placement) to optimize data access and improve resilience. A fully rack-aware cluster needs:","sour [...]
\ No newline at end of file
diff --git a/assets/js/116dafbe.e6760fee.js b/assets/js/116dafbe.e6760fee.js
new file mode 100644
index 000000000..b311cec35
--- /dev/null
+++ b/assets/js/116dafbe.e6760fee.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3273],{48355:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"administrator-guide/operations/start-and-stop","title":"Starting and Stopping the Ozone Cluster","description":"This guide describes how to start and stop an Ozone cluster, assuming it has already been configured and initialized.","source":"@site/docs/05-admi [...]
\ No newline at end of file
diff --git a/assets/js/11a82aed.5b341cd6.js b/assets/js/11a82aed.5b341cd6.js
new file mode 100644
index 000000000..7d0201388
--- /dev/null
+++ b/assets/js/11a82aed.5b341cd6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6282],{25432:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"administrator-guide/installation/installing-binaries","title":"Installing the Ozone Binaries","description":"This section outlines the steps to obtain and install the Apache Ozone binaries on your hosts.","source":"@site/docs/05-administrator-guide/01-install [...]
\ No newline at end of file
diff --git a/assets/js/12208eb1.be3a2b0a.js b/assets/js/12208eb1.be3a2b0a.js
new file mode 100644
index 000000000..5c0a86469
--- /dev/null
+++ b/assets/js/12208eb1.be3a2b0a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1494],{15835:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>c,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"troubleshooting/security/README","title":"Troubleshooting Security","description":"This section contains guides to help troubleshoot security related issues in an Ozone deployment.","source":"@site/docs/06-troubleshooting/08-security/README.mdx","sourceDirNam [...]
\ No newline at end of file
diff --git a/assets/js/12246c8d.8d6c0b57.js b/assets/js/12246c8d.8d6c0b57.js
new file mode 100644
index 000000000..3a583da32
--- /dev/null
+++ b/assets/js/12246c8d.8d6c0b57.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3225],{62392:(e,t,r)=>{r.d(t,{R:()=>i,x:()=>o});var n=r(30758);const s={},a=n.createContext(s);function i(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),n.createElement(a.Provider,{value:t},e.children)}},67571:(e,t,r)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/12471960.95b0d88d.js b/assets/js/12471960.95b0d88d.js
new file mode 100644
index 000000000..50b9501c5
--- /dev/null
+++ b/assets/js/12471960.95b0d88d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6477],{31931:(e,t,n)=>{n.d(t,{W:()=>a});var o=n(30758),r=n(84324);const s=["zero","one","two","few","many","other"];function i(e){return s.filter((t=>e.includes(t)))}const c={locale:"en",pluralForms:i(["one","other"]),select:e=>1===e?"one":"other"};function l(){const{i18n:{currentLocale:e}}=(0,r.A)();return(0,o.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:i(t [...]
\ No newline at end of file
diff --git a/assets/js/136a29a5.10977b14.js b/assets/js/136a29a5.10977b14.js
new file mode 100644
index 000000000..fc6eac639
--- /dev/null
+++ b/assets/js/136a29a5.10977b14.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7033],{10301:(e,n,o)=>{o.d(n,{A:()=>s});const s=o.p+"assets/images/quickstart-5d83a74b1d8270cf15400cf00cf686fe.gif"},62392:(e,n,o)=>{o.d(n,{R:()=>c,x:()=>r});var s=o(30758);const t={},i=s.createContext(t);function c(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.com [...]
\ No newline at end of file
diff --git a/assets/js/13837f48.fbbc3fa3.js b/assets/js/13837f48.fbbc3fa3.js
new file mode 100644
index 000000000..e293ec2dd
--- /dev/null
+++ b/assets/js/13837f48.fbbc3fa3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3963],{31651:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>l,contentTitle:()=>c,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"quick-start/installation/README","title":"Ozone Installation Quick Start","description":"This section provides instructions to quickly install an Ozone instance on your local machine that can be used for testing and evaluation. For instructions to install a p [...]
\ No newline at end of file
diff --git a/assets/js/13e764bc.8d7c43c5.js b/assets/js/13e764bc.8d7c43c5.js
new file mode 100644
index 000000000..d2de1b4eb
--- /dev/null
+++ b/assets/js/13e764bc.8d7c43c5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7780],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var r=n(30758),s=n(84324);const o=["zero","one","two","few","many","other"];function a(e){return o.filter((t=>e.includes(t)))}const i={locale:"en",pluralForms:a(["one","other"]),select:e=>1===e?"one":"other"};function c(){const{i18n:{currentLocale:e}}=(0,s.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:a(t [...]
\ No newline at end of file
diff --git a/assets/js/1439.116ee8f9.js b/assets/js/1439.116ee8f9.js
new file mode 100644
index 000000000..1f6c893f1
--- /dev/null
+++ b/assets/js/1439.116ee8f9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1439],{71439:(t,n,e)=>{e.d(n,{diagram:()=>H});var i=e(6979),s=e(74094);function r(t,n){let e;if(void 0===n)for(const i of t)null!=i&&(e>i||void 0===e&&i>=i)&&(e=i);else{let i=-1;for(let s of t)null!=(s=n(s,++i,t))&&(e>s||void 0===e&&s>=s)&&(e=s)}return e}function o(t){return t.target.depth}function c(t,n){return t.sourceLinks.length?t.depth:n-1}function l(t,n){let e=0;if(void 0===n)for(let i of t)(i=+i)&&(e+=i) [...]
\ No newline at end of file
diff --git a/assets/js/1468.26955791.js b/assets/js/1468.26955791.js
new file mode 100644
index 000000000..17fd587c1
--- /dev/null
+++ b/assets/js/1468.26955791.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1468],{91468:(e,t,r)=>{r.d(t,{default:()=>Ja});class a{constructor(e,t,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=r}static range(e,t){return t?e&&e.loc&&t.loc&&e.loc.lexer===t.loc.lexer?new a(e.loc.lexer,e.loc.start,t.loc.end):null:e&&e.loc}}class n{constructor(e,t){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc= [...]
\ No newline at end of file
diff --git a/assets/js/15129825.f6948397.js b/assets/js/15129825.f6948397.js
new file mode 100644
index 000000000..b8db074dd
--- /dev/null
+++ b/assets/js/15129825.f6948397.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6792],{6239:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>m,frontMatter:()=>a,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"troubleshooting/decommission-maintenance","title":"Troubleshooting Decommissioning and Maintenance","description":"TODO: File a subtask under HDDS-9860 and complete this page or section.","source":"@site/docs/06-troubleshooting/10-decommission-maintenance.md", [...]
\ No newline at end of file
diff --git a/assets/js/15cf7b2a.99717086.js b/assets/js/15cf7b2a.99717086.js
new file mode 100644
index 000000000..09340fc4e
--- /dev/null
+++ b/assets/js/15cf7b2a.99717086.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3846],{47765:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>t,contentTitle:()=>l,default:()=>h,frontMatter:()=>d,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"administrator-guide/installation/hardware-and-sizing","title":"Hardware and Sizing","description":"This guide outlines the hardware requirements and sizing recommendations for Apache Ozone clusters of different scales. Proper hardware selection is critical fo [...]
\ No newline at end of file
diff --git a/assets/js/160383c5.5a97cdfd.js b/assets/js/160383c5.5a97cdfd.js
new file mode 100644
index 000000000..0135bec74
--- /dev/null
+++ b/assets/js/160383c5.5a97cdfd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4402],{9635:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"administrator-guide/configuration/basic/environment-variables","title":"Environment Variables","description":"The ozone-env.sh script, located at $OZONE_HOME/etc/hadoop, defines the environment variables used by Ozone processes.","source":"@site/docs/05-admini [...]
\ No newline at end of file
diff --git a/assets/js/161e2963.e2cc7078.js b/assets/js/161e2963.e2cc7078.js
new file mode 100644
index 000000000..c653c6471
--- /dev/null
+++ b/assets/js/161e2963.e2cc7078.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8682],{62392:(e,n,s)=>{s.d(n,{R:()=>r,x:()=>l});var i=s(30758);const o={},t=i.createContext(o);function r(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),i.createElement(t.Provider,{value:n},e.children)}},81241:(e,n,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/16667e75.8419dab6.js b/assets/js/16667e75.8419dab6.js
new file mode 100644
index 000000000..f21c719f8
--- /dev/null
+++ b/assets/js/16667e75.8419dab6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1606],{25997:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>r,default:()=>p,frontMatter:()=>c,metadata:()=>a,toc:()=>i});const a=JSON.parse('{"id":"core-concepts/namespace/buckets/quotas","title":"Bucket Quotas","description":"Quota Management","source":"@site/docs/03-core-concepts/03-namespace/02-buckets/03-quotas.md","sourceDirName":"03-core-concepts/03-namespace/02-buckets","slug":"/core-concepts/name [...]
\ No newline at end of file
diff --git a/assets/js/17486204.d54e3c19.js b/assets/js/17486204.d54e3c19.js
new file mode 100644
index 000000000..50aacaf27
--- /dev/null
+++ b/assets/js/17486204.d54e3c19.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9935],{62392:(e,t,n)=>{n.d(t,{R:()=>d,x:()=>o});var i=n(30758);const r={},s=i.createContext(r);function d(e){const t=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(s.Provider,{value:t},e.children)}},65358:(e,t,n)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/1757cffd.3c2316e0.js b/assets/js/1757cffd.3c2316e0.js
new file mode 100644
index 000000000..66ccef25e
--- /dev/null
+++ b/assets/js/1757cffd.3c2316e0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4230],{17749:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"system-internals/components/client/in-memory-storage","title":"Ozone Client In-Memory Storage","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/06-client/02-in-memor [...]
\ No newline at end of file
diff --git a/assets/js/17896441.03566946.js b/assets/js/17896441.03566946.js
new file mode 100644
index 000000000..1549d1b91
--- /dev/null
+++ b/assets/js/17896441.03566946.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8401],{15618:(e,t,n)=>{n.d(t,{A:()=>c});n(30758);var s=n(13526),a=n(48862),i=n(69697),l=n(10868),o=n(86070);function r(e){let{className:t}=e;return(0,o.jsx)(l.A,{type:"caution",title:(0,o.jsx)(a.Rc,{}),className:(0,s.A)(t,i.G.common.unlistedBanner),children:(0,o.jsx)(a.Uh,{})})}function c(e){return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(a.AE,{}),(0,o.jsx)(r,{...e})]})}},25846:(e,t,n)=>{n.d(t,{A:()=>x});var s [...]
\ No newline at end of file
diff --git a/assets/js/1853.667b13f4.js b/assets/js/1853.667b13f4.js
new file mode 100644
index 000000000..471653c1e
--- /dev/null
+++ b/assets/js/1853.667b13f4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1853],{24234:(e,t,l)=>{l.d(t,{diagram:()=>f});var n=l(86141),a=l(74094),o=l(89219),i=l(6979),s=l(6133);l(56287),l(48488),l(62829),l(69982),l(74565);const d=e=>i.e.sanitizeText(e,(0,i.c)());let r={dividerMargin:10,padding:5,textHeight:10,curve:void 0};const c=function(e,t,l,n,a){const o=Object.keys(e);i.l.info("keys:",o),i.l.info(e),o.filter((t=>e[t].parent==a)).forEach((function(l){var o,s;const r=e[l],c=r.cssC [...]
\ No newline at end of file
diff --git a/assets/js/185a5460.1c837a6f.js b/assets/js/185a5460.1c837a6f.js
new file mode 100644
index 000000000..a5bfe8572
--- /dev/null
+++ b/assets/js/185a5460.1c837a6f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2915],{62392:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>s});var i=t(30758);const a={},r=i.createContext(a);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),i.createElement(r.Provider,{value:n},e.children)}},63255:(e,n,t)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/1886.fecc7561.js b/assets/js/1886.fecc7561.js
new file mode 100644
index 000000000..6fffa9904
--- /dev/null
+++ b/assets/js/1886.fecc7561.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1886],{21886:(e,t,n)=>{n.d(t,{diagram:()=>i});var r=n(78934),l=(n(89219),n(74094));n(6979),n(52540),n(5237),n(83129),n(69982),n(33579);n(97224);n(48861),n(37562);n(78721);l.lUB;var o=n(86210);n(56287),n(48488),n(62829),n(74565);const a={},s=function(e){const t=Object.keys(e);for(const n of t)a[n]=e[n]},i={parser:r.p,db:r.f,renderer:o.f,styles:o.a,init:e=>{e.flowchart||(e.flowchart={}),e.flowchart.arrowMarkerAbs [...]
\ No newline at end of file
diff --git a/assets/js/197d3cd9.5b334f91.js b/assets/js/197d3cd9.5b334f91.js
new file mode 100644
index 000000000..4efc3ee91
--- /dev/null
+++ b/assets/js/197d3cd9.5b334f91.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5395],{62392:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>s});var c=n(30758);const r={},a=c.createContext(r);function o(e){const t=c.useContext(a);return c.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),c.createElement(a.Provider,{value:t},e.children)}},66731:(e,t,n)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/1993.a851b1da.js b/assets/js/1993.a851b1da.js
new file mode 100644
index 000000000..e9142caa3
--- /dev/null
+++ b/assets/js/1993.a851b1da.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1993],{31993:(t,e,n)=>{n.d(e,{diagram:()=>O});var i=n(6979),s=n(74094),r=n(13212),a=n(58480),o=n(81896),l=(n(56287),n(48488),n(62829),function(){var t=function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n},e=[6,8,10,11,12,14,16,17,20,21],n=[1,9],i=[1,10],s=[1,11],r=[1,12],a=[1,13],o=[1,16],l=[1,17],c={trace:function(){},yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statem [...]
\ No newline at end of file
diff --git a/assets/js/1a43903b.ee4f4a8f.js b/assets/js/1a43903b.ee4f4a8f.js
new file mode 100644
index 000000000..801477377
--- /dev/null
+++ b/assets/js/1a43903b.ee4f4a8f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7430],{5651:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"administrator-guide/installation/README","title":"Installing Ozone In Production","description":"This section documents how to install a production Ozone system.","source":"@site/docs/05-administrator-guide/01-installation/README.mdx","sourceDirName":"05-admin [...]
\ No newline at end of file
diff --git a/assets/js/1a4e3797.4aed2119.js b/assets/js/1a4e3797.4aed2119.js
new file mode 100644
index 000000000..e7cfd2ea6
--- /dev/null
+++ b/assets/js/1a4e3797.4aed2119.js
@@ -0,0 +1 @@
+(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2138],{633:e=>{"use strict";e.exports="3.24.2"},1770:e=>{"use strict";function t(e,t){this._state=e,this._rawResults={};var r=this;e.params.forEach((function(e){var i=e.$$id;r[i]=t[i],r._rawResults[i]=t[i]}))}t.prototype={constructor:t},e.exports=t},12959:e=>{"use strict";e.exports=function(e,t){e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}},13518:e=>{"use strict"; [...]
\ No newline at end of file
diff --git a/assets/js/1ab30042.de843bd5.js b/assets/js/1ab30042.de843bd5.js
new file mode 100644
index 000000000..c0c9960a6
--- /dev/null
+++ b/assets/js/1ab30042.de843bd5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2354],{60802:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>d,contentTitle:()=>s,default:()=>l,frontMatter:()=>t,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"administrator-guide/operations/node-decommissioning-and-maintenance/storage-container-manager","title":"Decommissioning a Storage Container Manager","description":"Storage Container Manager (SCM) decommissioning is the process in which you can gracefully remo [...]
\ No newline at end of file
diff --git a/assets/js/1b229a62.fc65070f.js b/assets/js/1b229a62.fc65070f.js
new file mode 100644
index 000000000..7ed8f8fce
--- /dev/null
+++ b/assets/js/1b229a62.fc65070f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6124],{61083:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>r,contentTitle:()=>d,default:()=>l,frontMatter:()=>a,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"administrator-guide/operations/node-decommissioning-and-maintenance/ozone-manager","title":"Decommissioning an Ozone Manager","description":"Ozone Manager (OM) decommissioning is the process in which you gracefully remove one of the OM from the OM HA Ring."," [...]
\ No newline at end of file
diff --git a/assets/js/1b6a5bcd.f6ff3e72.js b/assets/js/1b6a5bcd.f6ff3e72.js
new file mode 100644
index 000000000..0042699a8
--- /dev/null
+++ b/assets/js/1b6a5bcd.f6ff3e72.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9337],{62392:(e,n,r)=>{r.d(n,{R:()=>o,x:()=>t});var d=r(30758);const i={},s=d.createContext(i);function o(e){const n=d.useContext(s);return d.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),d.createElement(s.Provider,{value:n},e.children)}},98620:(e,n,r)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/1b70d9e7.2abc4812.js b/assets/js/1b70d9e7.2abc4812.js
new file mode 100644
index 000000000..808a73a08
--- /dev/null
+++ b/assets/js/1b70d9e7.2abc4812.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9606],{53078:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"system-internals/replication/data/write-pipelines/reports","title":"Write Pipeline Reports","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/04-replication/02-data/01-write-pipeli [...]
\ No newline at end of file
diff --git a/assets/js/1b8e52eb.93e5360b.js b/assets/js/1b8e52eb.93e5360b.js
new file mode 100644
index 000000000..4373bd0f8
--- /dev/null
+++ b/assets/js/1b8e52eb.93e5360b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6111],{12616:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"system-internals/components/storage-container-manager/disk-layout","title":"Storage Container Manager Disk Layout","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/0 [...]
\ No newline at end of file
diff --git a/assets/js/1c005771.d1a258d3.js b/assets/js/1c005771.d1a258d3.js
new file mode 100644
index 000000000..88c217996
--- /dev/null
+++ b/assets/js/1c005771.d1a258d3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2351],{49855:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>a,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"troubleshooting/om-ha-snapshot-installation-issues","title":"Troubleshooting OM HA snapshot installation issues","description":"When a new Ozone Manager (OM) is added to an existing OM HA cluster, it needs to obtain the latest OM DB snapshot from the leader O [...]
\ No newline at end of file
diff --git a/assets/js/1c7a78d1.8c65d2a3.js b/assets/js/1c7a78d1.8c65d2a3.js
new file mode 100644
index 000000000..45caed2b7
--- /dev/null
+++ b/assets/js/1c7a78d1.8c65d2a3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[43],{7188:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"system-internals/components/README","title":"Ozone Components","description":"The internal workings of each Ozone component are documented in this section.","source":"@site/docs/07-system-internals/01-components/README.mdx","sourceDirName":"07-system-internals/0 [...]
\ No newline at end of file
diff --git a/assets/js/1dc0ab3a.ad2964df.js b/assets/js/1dc0ab3a.ad2964df.js
new file mode 100644
index 000000000..91d3e0e8b
--- /dev/null
+++ b/assets/js/1dc0ab3a.ad2964df.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6652],{62392:(e,t,o)=>{o.d(t,{R:()=>s,x:()=>a});var r=o(30758);const n={},i=r.createContext(n);function s(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),r.createElement(i.Provider,{value:t},e.children)}},88905:(e,t,o)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/1ef8912a.4a3df788.js b/assets/js/1ef8912a.4a3df788.js
new file mode 100644
index 000000000..a26e178b0
--- /dev/null
+++ b/assets/js/1ef8912a.4a3df788.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6910],{62392:(e,n,r)=>{r.d(n,{R:()=>s,x:()=>a});var i=r(30758);const o={},t=i.createContext(o);function s(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),i.createElement(t.Provider,{value:n},e.children)}},63072:(e,n,r)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/1f391b9e.73872c86.js b/assets/js/1f391b9e.73872c86.js
new file mode 100644
index 000000000..a7c38fb0a
--- /dev/null
+++ b/assets/js/1f391b9e.73872c86.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6061],{15618:(e,n,t)=>{t.d(n,{A:()=>o});t(30758);var i=t(13526),a=t(48862),s=t(69697),l=t(10868),r=t(86070);function c(e){let{className:n}=e;return(0,r.jsx)(l.A,{type:"caution",title:(0,r.jsx)(a.Rc,{}),className:(0,i.A)(n,s.G.common.unlistedBanner),children:(0,r.jsx)(a.Uh,{})})}function o(e){return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.AE,{}),(0,r.jsx)(c,{...e})]})}},25846:(e,n,t)=>{t.d(n,{A:()=>v});var i [...]
\ No newline at end of file
diff --git a/assets/js/1f685b3f.1bed277d.js b/assets/js/1f685b3f.1bed277d.js
new file mode 100644
index 000000000..2e783eb76
--- /dev/null
+++ b/assets/js/1f685b3f.1bed277d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8650],{40778:e=>{e.exports=JSON.parse('{"tag":{"label":"Ozone","permalink":"/blog/tags/ozone","allTagsPath":"/blog/tags","count":2,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/ozone","page":1,"postsPerPage":10,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/1fa54c71.ba011f50.js b/assets/js/1fa54c71.ba011f50.js
new file mode 100644
index 000000000..8056ff2ea
--- /dev/null
+++ b/assets/js/1fa54c71.ba011f50.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[623],{48152:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>i,contentTitle:()=>c,default:()=>u,frontMatter:()=>r,metadata:()=>n,toc:()=>l});var n=t(82813),a=t(86070),s=t(62392);const r={title:"Apache Ozone 2.0.0 Release",date:new Date("2025-04-30T00:00:00.000Z"),authors:["apache-ozone-community"],tags:["release","ozone-2.0.0"]},c=void 0,i={authorsImageUrls:[void 0]},l=[];function p(e){const o={p:"p",...(0,s.R)(),...e.compon [...]
\ No newline at end of file
diff --git a/assets/js/1fd605f7.1ca90812.js b/assets/js/1fd605f7.1ca90812.js
new file mode 100644
index 000000000..129488a8b
--- /dev/null
+++ b/assets/js/1fd605f7.1ca90812.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4084],{62392:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>a});var s=t(30758);const o={},i=s.createContext(o);function r(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(i.Provider,{value:n},e.children)}},98232:(e,n,t)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/2051.e4b7747a.js b/assets/js/2051.e4b7747a.js
new file mode 100644
index 000000000..c88e3e483
--- /dev/null
+++ b/assets/js/2051.e4b7747a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2051],{32051:(e,t,o)=>{o.r(t),o.d(t,{default:()=>i});var n=o(30758),a=o(13526),s=o(2543);const l={popup:"popup_BI40",buttonContainer:"buttonContainer_eGJp"};var r=o(86070);function i(e){let{onReload:t}=e;const[o,i]=(0,n.useState)(!0);return o&&(0,r.jsxs)("div",{className:(0,a.A)("alert","alert--secondary",l.popup),children:[(0,r.jsx)("p",{children:(0,r.jsx)(s.A,{id:"theme.PwaReloadPopup.info",description:"The t [...]
\ No newline at end of file
diff --git a/assets/js/209227ae.3ba7e63a.js b/assets/js/209227ae.3ba7e63a.js
new file mode 100644
index 000000000..27a6fe733
--- /dev/null
+++ b/assets/js/209227ae.3ba7e63a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4347],{38766:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>t,contentTitle:()=>c,default:()=>l,frontMatter:()=>h,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"type":"mdx","permalink":"/download","source":"@site/src/pages/download.md","title":"Downloads","description":"| Version | Release Date | Source Download [...]
\ No newline at end of file
diff --git a/assets/js/2099.cdc90080.js b/assets/js/2099.cdc90080.js
new file mode 100644
index 000000000..dbedf3275
--- /dev/null
+++ b/assets/js/2099.cdc90080.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2099],{2099:(e,t,n)=>{n.d(t,{diagram:()=>a});var r=n(78934),l=n(86210),o=n(6979);n(74094),n(89219),n(69982),n(74565),n(56287),n(48488),n(62829);const a={parser:r.p,db:r.f,renderer:l.f,styles:l.a,init:e=>{e.flowchart||(e.flowchart={}),e.flowchart.arrowMarkerAbsolute=e.arrowMarkerAbsolute,(0,o.p)({flowchart:{arrowMarkerAbsolute:e.arrowMarkerAbsolute}}),l.f.setConf(e.flowchart),r.f.clear(),r.f.setGen("gen-2")}}},3 [...]
\ No newline at end of file
diff --git a/assets/js/20aca2f7.a0b89313.js b/assets/js/20aca2f7.a0b89313.js
new file mode 100644
index 000000000..118d4d674
--- /dev/null
+++ b/assets/js/20aca2f7.a0b89313.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7881],{62392:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>a});var i=s(30758);const r={},t=i.createContext(r);function o(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(t.Provider,{value:n},e.children)}},65978:(e,n,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/226299c5.ee68cbbc.js b/assets/js/226299c5.ee68cbbc.js
new file mode 100644
index 000000000..759aa5d03
--- /dev/null
+++ b/assets/js/226299c5.ee68cbbc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3373],{48404:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>d,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"administrator-guide/configuration/security/administrators","title":"Configuring Ozone Administrators","description":"Ozone identifies administrators through specific configuration properties, allowing for fine-grained control over administrative access. These [...]
\ No newline at end of file
diff --git a/assets/js/22a9010a.89deefd1.js b/assets/js/22a9010a.89deefd1.js
new file mode 100644
index 000000000..ec8bcfd71
--- /dev/null
+++ b/assets/js/22a9010a.89deefd1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6069],{31931:(e,t,n)=>{n.d(t,{W:()=>a});var r=n(30758),o=n(84324);const s=["zero","one","two","few","many","other"];function i(e){return s.filter((t=>e.includes(t)))}const c={locale:"en",pluralForms:i(["one","other"]),select:e=>1===e?"one":"other"};function l(){const{i18n:{currentLocale:e}}=(0,o.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:i(t [...]
\ No newline at end of file
diff --git a/assets/js/2549.d903311f.js b/assets/js/2549.d903311f.js
new file mode 100644
index 000000000..f6b024b46
--- /dev/null
+++ b/assets/js/2549.d903311f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2549],{1835:(e,t,i)=>{i.d(t,{A:()=>a});i(30758);var n=i(13526),o=i(2543),s=i(18358),r=i(86070);function a(e){let{className:t}=e;return(0,r.jsx)("main",{className:(0,n.A)("container margin-vert--xl",t),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(s.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(o.A,{id:"theme.NotFound.title", [...]
\ No newline at end of file
diff --git a/assets/js/25ef3180.faa384fd.js b/assets/js/25ef3180.faa384fd.js
new file mode 100644
index 000000000..92112dc40
--- /dev/null
+++ b/assets/js/25ef3180.faa384fd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7377],{62392:(e,s,n)=>{n.d(s,{R:()=>l,x:()=>c});var t=n(30758);const o={},i=t.createContext(o);function l(e){const s=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:l(e.components),t.createElement(i.Provider,{value:s},e.children)}},71787:(e,s,n)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/2650.01642cc1.js b/assets/js/2650.01642cc1.js
new file mode 100644
index 000000000..b0ff0fb20
--- /dev/null
+++ b/assets/js/2650.01642cc1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2650],{416:(e,r,n)=>{n.d(r,{A:()=>c});var l=n(30758),t=n(2736),a=n.n(t),i=["color","size","title","className"];function o(){return o=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var l in n)({}).hasOwnProperty.call(n,l)&&(e[l]=n[l])}return e},o.apply(null,arguments)}var s=(0,l.forwardRef)((function(e,r){var n=e.color,t=void 0===n?"currentColor":n,a=e.s [...]
\ No newline at end of file
diff --git a/assets/js/272934ce.76b477dc.js b/assets/js/272934ce.76b477dc.js
new file mode 100644
index 000000000..b98cf5a16
--- /dev/null
+++ b/assets/js/272934ce.76b477dc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5500],{27809:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"administrator-guide/configuration/basic/directories/storage-container-manager","title":"Directory Configurations for Storage Container Manager","description":"TODO: File a subtask under HDDS-9859 and complete this page or section.","source":"@site/docs/05-adm [...]
\ No newline at end of file
diff --git a/assets/js/27517eae.6906383d.js b/assets/js/27517eae.6906383d.js
new file mode 100644
index 000000000..ccc5c79a0
--- /dev/null
+++ b/assets/js/27517eae.6906383d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7966],{47965:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>l,frontMatter:()=>a,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"administrator-guide/configuration/basic/network/recon","title":"Network Configuration for Recon","description":"TODO: File a subtask under HDDS-9859 and complete this page or section.","source":"@site/docs/05-administrator-guide/02-configuration/01-basic/02-n [...]
\ No newline at end of file
diff --git a/assets/js/28af3b53.f272b3d1.js b/assets/js/28af3b53.f272b3d1.js
new file mode 100644
index 000000000..82bdc2835
--- /dev/null
+++ b/assets/js/28af3b53.f272b3d1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[819],{35864:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"system-internals/replication/data/write-pipelines/types","title":"Types of Write Pipelines","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/04-replication/02-data/01-write-pipelin [...]
\ No newline at end of file
diff --git a/assets/js/2a1c523e.cbbb9cc0.js b/assets/js/2a1c523e.cbbb9cc0.js
new file mode 100644
index 000000000..0bbd07f0c
--- /dev/null
+++ b/assets/js/2a1c523e.cbbb9cc0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8293],{10538:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/FunctionalOzone-813c1c8dbb9509c9d242aca96540db20.png"},30491:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/OzoneArchitectureDiagram-f355c07eca9678e194c05fe8eed8317c.png"},62392:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>o});var a=t(30758);const s={},r=a.createContext(s);function i(e){const n=a.useContext(r);return a.useMemo((function(){return"functi [...]
\ No newline at end of file
diff --git a/assets/js/2a23baca.4c272c3a.js b/assets/js/2a23baca.4c272c3a.js
new file mode 100644
index 000000000..6d81f5da7
--- /dev/null
+++ b/assets/js/2a23baca.4c272c3a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2582],{50242:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>r,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"user-guide/client-interfaces/native-cpp","title":"Native C/C++ Client Access to Ozone","description":"Components Summary","source":"@site/docs/04-user-guide/01-client-interfaces/08-native-cpp.md","sourceDirName":"04-user-guide/01-client-interfaces","slug":"/u [...]
\ No newline at end of file
diff --git a/assets/js/2a4ec9b1.3acef554.js b/assets/js/2a4ec9b1.3acef554.js
new file mode 100644
index 000000000..21e38f578
--- /dev/null
+++ b/assets/js/2a4ec9b1.3acef554.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6310],{44053:(e,a,t)=>{t.r(a),t.d(a,{assets:()=>c,contentTitle:()=>r,default:()=>d,frontMatter:()=>s,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"core-concepts/high-availability/scm-ha","title":"SCM High Availability","description":"Ozone has two metadata-manager nodes (Ozone Manager for key space management and Storage Container Management for block space management) and multiple storage nodes (Datano [...]
\ No newline at end of file
diff --git a/assets/js/2b9685f4.b08a7b96.js b/assets/js/2b9685f4.b08a7b96.js
new file mode 100644
index 000000000..1ecd9e9c8
--- /dev/null
+++ b/assets/js/2b9685f4.b08a7b96.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2925],{61075:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>o,toc:()=>m});const o=JSON.parse('{"id":"system-internals/components/ozone-manager/in-memory-storage","title":"Ozone Manager In-Memory Storage","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/01-ozone-mana [...]
\ No newline at end of file
diff --git a/assets/js/2d2fd688.4e9fb5b3.js b/assets/js/2d2fd688.4e9fb5b3.js
new file mode 100644
index 000000000..483b27ea1
--- /dev/null
+++ b/assets/js/2d2fd688.4e9fb5b3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8983],{8804:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>s,metadata:()=>i,toc:()=>u});const i=JSON.parse('{"id":"administrator-guide/configuration/security/knox","title":"Configuring Apache Knox","description":"TODO: File a subtask under HDDS-9859 and complete this page or section.","source":"@site/docs/05-administrator-guide/02-configuration/03-security/04-knox.md","sou [...]
\ No newline at end of file
diff --git a/assets/js/2e3f6775.f52ee625.js b/assets/js/2e3f6775.f52ee625.js
new file mode 100644
index 000000000..b170c9478
--- /dev/null
+++ b/assets/js/2e3f6775.f52ee625.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7962],{12695:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>m,frontMatter:()=>o,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"system-internals/replication/data/README","title":"Implementation of Data Replication","description":"This section documents the implementation of data replication in Ozone\'s block storage layer.","source":"@site/docs/07-system-internals/04-replication/02-da [...]
\ No newline at end of file
diff --git a/assets/js/2e4a4c97.1d461088.js b/assets/js/2e4a4c97.1d461088.js
new file mode 100644
index 000000000..684bd47ed
--- /dev/null
+++ b/assets/js/2e4a4c97.1d461088.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3250],{24734:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"user-guide/clients/s3","title":"Using an S3 Client With Ozone","description":"Document how to set it up an S3 client to run against Ozone (access key and secret key).","source":"@site/docs/04-user-guide/02-clients/03-s3.md","sourceDirName":"04-user-guide/02-c [...]
\ No newline at end of file
diff --git a/assets/js/2e4e76c3.47ead4d3.js b/assets/js/2e4e76c3.47ead4d3.js
new file mode 100644
index 000000000..0d2a31ab0
--- /dev/null
+++ b/assets/js/2e4e76c3.47ead4d3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8828],{62392:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>a});var i=n(30758);const o={},s=i.createContext(o);function r(e){const t=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),i.createElement(s.Provider,{value:t},e.children)}},96049:(e,t,n)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/2ef82850.b56e855c.js b/assets/js/2ef82850.b56e855c.js
new file mode 100644
index 000000000..8b9e47526
--- /dev/null
+++ b/assets/js/2ef82850.b56e855c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4427],{46354:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>u,contentTitle:()=>a,default:()=>d,frontMatter:()=>s,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"troubleshooting/security/authorization","title":"Troubleshooting Authorization","description":"TODO: File a subtask under HDDS-9860 and complete this page or section.","source":"@site/docs/06-troubleshooting/08-security/03-authorization.md","sourceDirName":"0 [...]
\ No newline at end of file
diff --git a/assets/js/2f397620.de2bdf74.js b/assets/js/2f397620.de2bdf74.js
new file mode 100644
index 000000000..026331bd9
--- /dev/null
+++ b/assets/js/2f397620.de2bdf74.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2566],{27203:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>i,contentTitle:()=>d,default:()=>u,frontMatter:()=>o,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"system-internals/features/upgrade-downgrade","title":"Upgrade and Downgrade System Internals","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/07-features/02-upgrade-downgrade.md" [...]
\ No newline at end of file
diff --git a/assets/js/2f663518.48239e51.js b/assets/js/2f663518.48239e51.js
new file mode 100644
index 000000000..c9fe0b142
--- /dev/null
+++ b/assets/js/2f663518.48239e51.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[656],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var r=n(30758),o=n(84324);const i=["zero","one","two","few","many","other"];function s(e){return i.filter((t=>e.includes(t)))}const c={locale:"en",pluralForms:s(["one","other"]),select:e=>1===e?"one":"other"};function a(){const{i18n:{currentLocale:e}}=(0,o.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:s(t. [...]
\ No newline at end of file
diff --git a/assets/js/2f6aa6cb.87bba809.js b/assets/js/2f6aa6cb.87bba809.js
new file mode 100644
index 000000000..0a2591ee3
--- /dev/null
+++ b/assets/js/2f6aa6cb.87bba809.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[26],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var s=n(30758),r=n(84324);const o=["zero","one","two","few","many","other"];function a(e){return o.filter((t=>e.includes(t)))}const c={locale:"en",pluralForms:a(["one","other"]),select:e=>1===e?"one":"other"};function i(){const{i18n:{currentLocale:e}}=(0,r.A)();return(0,s.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:a(t.r [...]
\ No newline at end of file
diff --git a/assets/js/2fe6cc41.2fa36caf.js b/assets/js/2fe6cc41.2fa36caf.js
new file mode 100644
index 000000000..abc27e66c
--- /dev/null
+++ b/assets/js/2fe6cc41.2fa36caf.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3049],{8881:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>p,frontMatter:()=>a,metadata:()=>i,toc:()=>u});const i=JSON.parse('{"id":"system-internals/replication/data/write-pipelines/README","title":"Write Pipeline Implementation","description":"This section documents the implementation of pipelines: groups of datanodes that Ozone uses to write data.","source":"@site/docs/07-system-internal [...]
\ No newline at end of file
diff --git a/assets/js/3032.55daff11.js b/assets/js/3032.55daff11.js
new file mode 100644
index 000000000..380fb994f
--- /dev/null
+++ b/assets/js/3032.55daff11.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3032],{6064:(t,e,r)=>{r.d(e,{A:()=>s});var n=r(22663);const o=function(t,e){return(0,n.A)(e,(function(e){return t[e]}))};var i=r(22859);const s=function(t){return null==t?[]:o(t,(0,i.A)(t))}},9584:(t,e,r)=>{r.d(e,{A:()=>n});const n=function(t,e){return t.has(e)}},13027:(t,e,r)=>{r.d(e,{A:()=>i});var n=r(80565),o=r(97427);const i=function(t){return"symbol"==typeof t||(0,o.A)(t)&&"[object Symbol]"==(0,n.A)(t)}},2 [...]
\ No newline at end of file
diff --git a/assets/js/30b888a6.f63f36ec.js b/assets/js/30b888a6.f63f36ec.js
new file mode 100644
index 000000000..3352829ad
--- /dev/null
+++ b/assets/js/30b888a6.f63f36ec.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8153],{16083:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>m,frontMatter:()=>a,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"system-internals/data-integrity/README","title":"Implementation of Data Integrity Checks","description":"This section documents the implementation of Ozone\'s data integrity checks.","source":"@site/docs/07-system-internals/03-data-integrity/README.mdx","sour [...]
\ No newline at end of file
diff --git a/assets/js/3189e57d.4cf98c71.js b/assets/js/3189e57d.4cf98c71.js
new file mode 100644
index 000000000..e239f0b77
--- /dev/null
+++ b/assets/js/3189e57d.4cf98c71.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6573],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var r=n(30758),o=n(84324);const i=["zero","one","two","few","many","other"];function s(e){return i.filter((t=>e.includes(t)))}const c={locale:"en",pluralForms:s(["one","other"]),select:e=>1===e?"one":"other"};function a(){const{i18n:{currentLocale:e}}=(0,o.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:s(t [...]
\ No newline at end of file
diff --git a/assets/js/3213315f.57dbb535.js b/assets/js/3213315f.57dbb535.js
new file mode 100644
index 000000000..fb43f4794
--- /dev/null
+++ b/assets/js/3213315f.57dbb535.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2585],{62392:(e,t,i)=>{i.d(t,{R:()=>a,x:()=>o});var n=i(30758);const s={},r=n.createContext(s);function a(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),n.createElement(r.Provider,{value:t},e.children)}},64173:(e,t,i)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/3258.ea739d76.js b/assets/js/3258.ea739d76.js
new file mode 100644
index 000000000..78b6110d4
--- /dev/null
+++ b/assets/js/3258.ea739d76.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3258],{83258:(e,s,c)=>{c.r(s)}}]);
\ No newline at end of file
diff --git a/assets/js/3272.65f4c560.js b/assets/js/3272.65f4c560.js
new file mode 100644
index 000000000..5c7cc2a19
--- /dev/null
+++ b/assets/js/3272.65f4c560.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3272],{73272:(e,s,c)=>{c.r(s)}}]);
\ No newline at end of file
diff --git a/assets/js/34a0ce28.0c2f7074.js b/assets/js/34a0ce28.0c2f7074.js
new file mode 100644
index 000000000..47363acf5
--- /dev/null
+++ b/assets/js/34a0ce28.0c2f7074.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4511],{27033:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>n,toc:()=>p});const n=JSON.parse('{"id":"system-internals/components/httpfs-gateway/overview","title":"HttpFS Gateway Overview","description":"Architecture","source":"@site/docs/07-system-internals/01-components/07-httpfs-gateway/01-overview.md","sourceDirName":"07-system-internals/01-components/07- [...]
\ No newline at end of file
diff --git a/assets/js/35b9018a.7586a5ea.js b/assets/js/35b9018a.7586a5ea.js
new file mode 100644
index 000000000..2cb69fc18
--- /dev/null
+++ b/assets/js/35b9018a.7586a5ea.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4556],{8953:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"system-internals/network-protocols/overview","title":"Overview of Network Protocols Used Within Ozone","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/06-network-protocols/01-over [...]
\ No newline at end of file
diff --git a/assets/js/36994c47.a4a53ba1.js b/assets/js/36994c47.a4a53ba1.js
new file mode 100644
index 000000000..9a02d6b4f
--- /dev/null
+++ b/assets/js/36994c47.a4a53ba1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9858],{45516:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-blog","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/36c6ce7f.0f5aa8d9.js b/assets/js/36c6ce7f.0f5aa8d9.js
new file mode 100644
index 000000000..6ef403541
--- /dev/null
+++ b/assets/js/36c6ce7f.0f5aa8d9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8892],{40557:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>i,contentTitle:()=>d,default:()=>p,frontMatter:()=>c,metadata:()=>a,toc:()=>s});const a=JSON.parse('{"id":"developer-guide/project/javadoc","title":"Ozone JavaDoc API","description":"You can find the latest Ozone JavaDoc at the following URL:","source":"@site/docs/08-developer-guide/04-project/03-javadoc.md","sourceDirName":"08-developer-guide/04-project","slug":" [...]
\ No newline at end of file
diff --git a/assets/js/36c7bd66.b72759e9.js b/assets/js/36c7bd66.b72759e9.js
new file mode 100644
index 000000000..eab686c6a
--- /dev/null
+++ b/assets/js/36c7bd66.b72759e9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1764],{62392:(e,o,t)=>{t.d(o,{R:()=>a,x:()=>d});var n=t(30758);const r={},s=n.createContext(r);function a(e){const o=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function d(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),n.createElement(s.Provider,{value:o},e.children)}},95584:(e,o,t)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/37304240.f97ad41d.js b/assets/js/37304240.f97ad41d.js
new file mode 100644
index 000000000..a1218bd55
--- /dev/null
+++ b/assets/js/37304240.f97ad41d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6350],{43535:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"system-internals/components/ozone-manager/write-request-flow","title":"Ozone Manager Write Request Flow","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/01-ozone-ma [...]
\ No newline at end of file
diff --git a/assets/js/37410e38.5f8ee863.js b/assets/js/37410e38.5f8ee863.js
new file mode 100644
index 000000000..548bec6c9
--- /dev/null
+++ b/assets/js/37410e38.5f8ee863.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1484],{31931:(e,t,n)=>{n.d(t,{W:()=>a});var s=n(30758),r=n(84324);const o=["zero","one","two","few","many","other"];function c(e){return o.filter((t=>e.includes(t)))}const i={locale:"en",pluralForms:c(["one","other"]),select:e=>1===e?"one":"other"};function l(){const{i18n:{currentLocale:e}}=(0,r.A)();return(0,s.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:c(t [...]
\ No newline at end of file
diff --git a/assets/js/375a8bbd.be919cd4.js b/assets/js/375a8bbd.be919cd4.js
new file mode 100644
index 000000000..ecacf2bc4
--- /dev/null
+++ b/assets/js/375a8bbd.be919cd4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2019],{31931:(e,t,r)=>{r.d(t,{W:()=>l});var n=r(30758),c=r(84324);const o=["zero","one","two","few","many","other"];function s(e){return o.filter((t=>e.includes(t)))}const i={locale:"en",pluralForms:s(["one","other"]),select:e=>1===e?"one":"other"};function a(){const{i18n:{currentLocale:e}}=(0,c.A)();return(0,n.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:s(t [...]
\ No newline at end of file
diff --git a/assets/js/376d263c.c6cbac8b.js b/assets/js/376d263c.c6cbac8b.js
new file mode 100644
index 000000000..fc2182a60
--- /dev/null
+++ b/assets/js/376d263c.c6cbac8b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1981],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var s=n(30758),r=n(84324);const c=["zero","one","two","few","many","other"];function o(e){return c.filter((t=>e.includes(t)))}const a={locale:"en",pluralForms:o(["one","other"]),select:e=>1===e?"one":"other"};function i(){const{i18n:{currentLocale:e}}=(0,r.A)();return(0,s.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:o(t [...]
\ No newline at end of file
diff --git a/assets/js/37a575ce.70ba8d0d.js b/assets/js/37a575ce.70ba8d0d.js
new file mode 100644
index 000000000..0840e568f
--- /dev/null
+++ b/assets/js/37a575ce.70ba8d0d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1339],{62392:(e,o,n)=>{n.d(o,{R:()=>t,x:()=>s});var i=n(30758);const a={},r=i.createContext(a);function t(e){const o=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function s(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:t(e.components),i.createElement(r.Provider,{value:o},e.children)}},73121:(e,o,n)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/37a94f03.4cb75050.js b/assets/js/37a94f03.4cb75050.js
new file mode 100644
index 000000000..a67e4a980
--- /dev/null
+++ b/assets/js/37a94f03.4cb75050.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1210],{62392:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>i});var r=t(30758);const o={},s=r.createContext(o);function a(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),r.createElement(s.Provider,{value:n},e.children)}},95362:(e,n,t)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/384a8076.b8a493b2.js b/assets/js/384a8076.b8a493b2.js
new file mode 100644
index 000000000..3b91a9f36
--- /dev/null
+++ b/assets/js/384a8076.b8a493b2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1464],{62392:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>o});var s=t(30758);const a={},i=s.createContext(a);function r(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),s.createElement(i.Provider,{value:n},e.children)}},72988:(e,n,t)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/38ceb0cd.1a3bf5c7.js b/assets/js/38ceb0cd.1a3bf5c7.js
new file mode 100644
index 000000000..a6478cbf2
--- /dev/null
+++ b/assets/js/38ceb0cd.1a3bf5c7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[649],{62392:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>i});var s=t(30758);const o={},a=s.createContext(o);function r(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(a.Provider,{value:n},e.children)}},95561:(e,n,t)=>{t [...]
\ No newline at end of file
diff --git a/assets/js/39bcb9a5.7f45784f.js b/assets/js/39bcb9a5.7f45784f.js
new file mode 100644
index 000000000..031b48397
--- /dev/null
+++ b/assets/js/39bcb9a5.7f45784f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8847],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var s=n(30758),r=n(84324);const o=["zero","one","two","few","many","other"];function a(e){return o.filter((t=>e.includes(t)))}const c={locale:"en",pluralForms:a(["one","other"]),select:e=>1===e?"one":"other"};function i(){const{i18n:{currentLocale:e}}=(0,r.A)();return(0,s.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:a(t [...]
\ No newline at end of file
diff --git a/assets/js/3a2db09e.b037e4de.js b/assets/js/3a2db09e.b037e4de.js
new file mode 100644
index 000000000..6289768f6
--- /dev/null
+++ b/assets/js/3a2db09e.b037e4de.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8121],{68070:e=>{e.exports=JSON.parse('{"tags":[{"label":"user-stories","permalink":"/blog/tags/user-stories","count":1},{"label":"performance","permalink":"/blog/tags/performance","count":1},{"label":"erasure-coding","permalink":"/blog/tags/erasure-coding","count":1},{"label":"scale","permalink":"/blog/tags/scale","count":1},{"label":"Ozone","permalink":"/blog/tags/ozone","count":2},{"label":"Disk Balancer","p [...]
\ No newline at end of file
diff --git a/assets/js/3a421ee5.6724360f.js b/assets/js/3a421ee5.6724360f.js
new file mode 100644
index 000000000..89be0e981
--- /dev/null
+++ b/assets/js/3a421ee5.6724360f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2357],{47061:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>h,frontMatter:()=>c,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"system-internals/security/symmetric-encryption","title":"Symmetric Encryption Within Ozone","description":"In secure mode, Ozone issues tokens to authorize and verify each block and container access. Traditionally, each token is signed by Ozone Manager (OM) o [...]
\ No newline at end of file
diff --git a/assets/js/3a83d278.cfbc9c6a.js b/assets/js/3a83d278.cfbc9c6a.js
new file mode 100644
index 000000000..98c2bd983
--- /dev/null
+++ b/assets/js/3a83d278.cfbc9c6a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6663],{48665:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>s,contentTitle:()=>r,default:()=>u,frontMatter:()=>a,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"administrator-guide/configuration/performance/calculating-ec-pipeline-limits","title":"Calculating EC Pipeline Limits","description":"The target number of open EC pipelines SCM aims to maintain is calculated dynamically for each EC replication configuration ( [...]
\ No newline at end of file
diff --git a/assets/js/3ba88bdf.5249846e.js b/assets/js/3ba88bdf.5249846e.js
new file mode 100644
index 000000000..176b4be7b
--- /dev/null
+++ b/assets/js/3ba88bdf.5249846e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8579],{24056:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>l,frontMatter:()=>r,metadata:()=>i,toc:()=>u});const i=JSON.parse('{"id":"developer-guide/test/continuous-integration","title":"Continuous Integration With GitHub Actions","description":"TODO: File a subtask under HDDS-9861 and complete this page or section.","source":"@site/docs/08-developer-guide/03-test/04-continuous-integration [...]
\ No newline at end of file
diff --git a/assets/js/3bd284a7.75ca6550.js b/assets/js/3bd284a7.75ca6550.js
new file mode 100644
index 000000000..c740fa6ad
--- /dev/null
+++ b/assets/js/3bd284a7.75ca6550.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7890],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var r=n(30758),o=n(84324);const i=["zero","one","two","few","many","other"];function s(e){return i.filter((t=>e.includes(t)))}const c={locale:"en",pluralForms:s(["one","other"]),select:e=>1===e?"one":"other"};function a(){const{i18n:{currentLocale:e}}=(0,o.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:s(t [...]
\ No newline at end of file
diff --git a/assets/js/3dfbad43.e2281f3e.js b/assets/js/3dfbad43.e2281f3e.js
new file mode 100644
index 000000000..c21fc80bb
--- /dev/null
+++ b/assets/js/3dfbad43.e2281f3e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4738],{33130:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>l,frontMatter:()=>a,metadata:()=>o,toc:()=>m});const o=JSON.parse('{"id":"system-internals/components/recon/syncing-data-from-om","title":"How Recon Syncs Data From Ozone Manager","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/04-recon/0 [...]
\ No newline at end of file
diff --git a/assets/js/3e06bbca.adeafcaf.js b/assets/js/3e06bbca.adeafcaf.js
new file mode 100644
index 000000000..ecfe122b5
--- /dev/null
+++ b/assets/js/3e06bbca.adeafcaf.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5409],{43772:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>d,frontMatter:()=>o,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"core-concepts/namespace/buckets/links","title":"Bucket Links","description":"Bucket linking allows exposing a bucket from one volume (or even another bucket) as if it were in a different location, particularly useful for S3 compatibility or cross-tenant acces [...]
\ No newline at end of file
diff --git a/assets/js/3e20bc80.b0851803.js b/assets/js/3e20bc80.b0851803.js
new file mode 100644
index 000000000..8bd93230c
--- /dev/null
+++ b/assets/js/3e20bc80.b0851803.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6972],{21814:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>l,default:()=>p,frontMatter:()=>c,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"developer-guide/README","title":"Developer Guide","description":"This section provides a guide for developers looking to contribute to the Ozone project.","source":"@site/docs/08-developer-guide/README.mdx","sourceDirName":"08-developer-guide","slug":"/develo [...]
\ No newline at end of file
diff --git a/assets/js/3f219944.6e548442.js b/assets/js/3f219944.6e548442.js
new file mode 100644
index 000000000..f50a78d77
--- /dev/null
+++ b/assets/js/3f219944.6e548442.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6025],{62392:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>i});var n=s(30758);const r={},o=n.createContext(r);function a(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),n.createElement(o.Provider,{value:t},e.children)}},78771:(e,t,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/3ffb4a21.acff5e23.js b/assets/js/3ffb4a21.acff5e23.js
new file mode 100644
index 000000000..e9a1a2955
--- /dev/null
+++ b/assets/js/3ffb4a21.acff5e23.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2021],{26831:(e,a,n)=>{n.r(a),n.d(a,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>r,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"administrator-guide/configuration/performance/s3-gateway-load-balancing","title":"Using Multiple S3 Gateways for Load Balancing","description":"The Ozone S3 Gateway is designed to be stateless, which means it does not store any data on the node where it is ru [...]
\ No newline at end of file
diff --git a/assets/js/40365719.66832d85.js b/assets/js/40365719.66832d85.js
new file mode 100644
index 000000000..302f9fe6e
--- /dev/null
+++ b/assets/js/40365719.66832d85.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4954],{8918:(e,i,n)=>{n.d(i,{A:()=>t});const t=n.p+"assets/images/scm-ui-33b889437916c969e0ce93d408d0cdd6.png"},46096:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>d,contentTitle:()=>o,default:()=>u,frontMatter:()=>a,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"administrator-guide/operations/observability/web-uis","title":"Web UIs","description":"Apache Ozone provides lightweight, read-only Web UIs for core servi [...]
\ No newline at end of file
diff --git a/assets/js/40aa72fd.5de4963c.js b/assets/js/40aa72fd.5de4963c.js
new file mode 100644
index 000000000..ff7d95dcb
--- /dev/null
+++ b/assets/js/40aa72fd.5de4963c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9992],{62392:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>o});var s=t(30758);const i={},a=s.createContext(i);function r(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(a.Provider,{value:n},e.children)}},83152:(e,n,t)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/411cc4b6.bfceda9d.js b/assets/js/411cc4b6.bfceda9d.js
new file mode 100644
index 000000000..5091953d0
--- /dev/null
+++ b/assets/js/411cc4b6.bfceda9d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9067],{62392:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>r});var s=t(30758);const i={},o=s.createContext(i);function a(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(o.Provider,{value:n},e.children)}},99473:(e,n,t)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/4167.b7c5d5ae.js b/assets/js/4167.b7c5d5ae.js
new file mode 100644
index 000000000..92a518f81
--- /dev/null
+++ b/assets/js/4167.b7c5d5ae.js
@@ -0,0 +1 @@
+(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4167],{21707:function(t){t.exports=function(){"use strict";var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},e=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d/,i=/\d\d/,s=/\d\d?/,r=/\d*[^-_:/,()\s\d]+/,a={},o=function(t){return(t=+t)+(t>68?1900:2e3)},c=function(t){return function(e){this[t]=+e} [...]
\ No newline at end of file
diff --git a/assets/js/42110920.4451ad9a.js b/assets/js/42110920.4451ad9a.js
new file mode 100644
index 000000000..a2074cdea
--- /dev/null
+++ b/assets/js/42110920.4451ad9a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6688],{210:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>t,default:()=>u,frontMatter:()=>s,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"administrator-guide/configuration/performance/fair-call-queue","title":"Fairness","description":"What is FairCallQueue?","source":"@site/docs/05-administrator-guide/02-configuration/04-performance/08-fair-call-queue.md","sourceDirName":"05-administrator-guide/0 [...]
\ No newline at end of file
diff --git a/assets/js/4234.dc826387.js b/assets/js/4234.dc826387.js
new file mode 100644
index 000000000..2f735f3ae
--- /dev/null
+++ b/assets/js/4234.dc826387.js
@@ -0,0 +1,2 @@
+/*! For license information please see 4234.dc826387.js.LICENSE.txt */
+(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4234],{4234:(e,t,n)=>{"use strict";n.d(t,{diagram:()=>hh});var r=n(6979);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){for(var n=0;n< [...]
\ No newline at end of file
diff --git a/assets/js/4234.dc826387.js.LICENSE.txt b/assets/js/4234.dc826387.js.LICENSE.txt
new file mode 100644
index 000000000..a9f6f1244
--- /dev/null
+++ b/assets/js/4234.dc826387.js.LICENSE.txt
@@ -0,0 +1,9 @@
+/*!
+Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable
+Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com)
+Licensed under The MIT License (http://opensource.org/licenses/MIT)
+*/
+
+/*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */
+
+/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */
diff --git a/assets/js/42d8ca15.a03a7a7f.js b/assets/js/42d8ca15.a03a7a7f.js
new file mode 100644
index 000000000..dc82b5e7b
--- /dev/null
+++ b/assets/js/42d8ca15.a03a7a7f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7263],{62392:(e,s,n)=>{n.d(s,{R:()=>i,x:()=>r});var t=n(30758);const o={},a=t.createContext(o);function i(e){const s=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),t.createElement(a.Provider,{value:s},e.children)}},76916:(e,s,n)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/43bff776.feee653b.js b/assets/js/43bff776.feee653b.js
new file mode 100644
index 000000000..4f3f1e007
--- /dev/null
+++ b/assets/js/43bff776.feee653b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3262],{53684:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"core-concepts/namespace/buckets/overview","title":"Buckets Overview","description":"What is a Bucket?","source":"@site/docs/03-core-concepts/03-namespace/02-buckets/01-overview.md","sourceDirName":"03-core-concepts/03-namespace/02-buckets","slug":"/core-conce [...]
\ No newline at end of file
diff --git a/assets/js/45468a7c.6ffb0681.js b/assets/js/45468a7c.6ffb0681.js
new file mode 100644
index 000000000..f27d67e58
--- /dev/null
+++ b/assets/js/45468a7c.6ffb0681.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8587],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var r=n(30758),i=n(84324);const o=["zero","one","two","few","many","other"];function s(e){return o.filter((t=>e.includes(t)))}const a={locale:"en",pluralForms:s(["one","other"]),select:e=>1===e?"one":"other"};function c(){const{i18n:{currentLocale:e}}=(0,i.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:s(t [...]
\ No newline at end of file
diff --git a/assets/js/4558438b.9b4260b1.js b/assets/js/4558438b.9b4260b1.js
new file mode 100644
index 000000000..54c628bb9
--- /dev/null
+++ b/assets/js/4558438b.9b4260b1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[816],{28772:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"administrator-guide/operations/node-decommissioning-and-maintenance/datanodes/README","title":"Datanode Decommissioning and Maintenance","description":"Datanode Decommission","source":"@site/docs/05-administrator-guide/03-operations/03-node-decommissioning-and [...]
\ No newline at end of file
diff --git a/assets/js/459241f7.ad0f3340.js b/assets/js/459241f7.ad0f3340.js
new file mode 100644
index 000000000..673320646
--- /dev/null
+++ b/assets/js/459241f7.ad0f3340.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1299],{58904:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>d,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"administrator-guide/operations/tools/ozone-repair","title":"Ozone Repair","description":"Ozone Repair (ozone repair) is an advanced tool to repair Ozone. The nodes being repaired must be stopped before the tool is run.","source":"@site/docs/05-administrator-g [...]
\ No newline at end of file
diff --git a/assets/js/45b2d120.6c78a89e.js b/assets/js/45b2d120.6c78a89e.js
new file mode 100644
index 000000000..80378e050
--- /dev/null
+++ b/assets/js/45b2d120.6c78a89e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6109],{2632:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"core-concepts/namespace/buckets/layouts/README","title":"Bucket Layouts","description":"This section documents the different bucket layouts supported by Ozone and their use cases.","source":"@site/docs/03-core-concepts/03-namespace/02-buckets/04-layouts/README [...]
\ No newline at end of file
diff --git a/assets/js/45f53cca.a4587ad5.js b/assets/js/45f53cca.a4587ad5.js
new file mode 100644
index 000000000..e48f3fe2c
--- /dev/null
+++ b/assets/js/45f53cca.a4587ad5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8863],{15864:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>m,frontMatter:()=>o,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"system-internals/security/README","title":"Security Within Ozone","description":"This section documents the various security features used within Ozone.","source":"@site/docs/07-system-internals/05-security/README.mdx","sourceDirName":"07-system-internals/05- [...]
\ No newline at end of file
diff --git a/assets/js/473fe8ee.a5f66726.js b/assets/js/473fe8ee.a5f66726.js
new file mode 100644
index 000000000..12f88a0f5
--- /dev/null
+++ b/assets/js/473fe8ee.a5f66726.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2350],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var r=n(30758),i=n(84324);const s=["zero","one","two","few","many","other"];function o(e){return s.filter((t=>e.includes(t)))}const a={locale:"en",pluralForms:o(["one","other"]),select:e=>1===e?"one":"other"};function c(){const{i18n:{currentLocale:e}}=(0,i.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:o(t [...]
\ No newline at end of file
diff --git a/assets/js/4746385f.996aa7e0.js b/assets/js/4746385f.996aa7e0.js
new file mode 100644
index 000000000..536fcb14f
--- /dev/null
+++ b/assets/js/4746385f.996aa7e0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8546],{62392:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>o});var s=n(30758);const r={},i=s.createContext(r);function a(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(i.Provider,{value:t},e.children)}},73220:(e,t,n)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/47f4bf31.d820e699.js b/assets/js/47f4bf31.d820e699.js
new file mode 100644
index 000000000..c9f47bc79
--- /dev/null
+++ b/assets/js/47f4bf31.d820e699.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7678],{29199:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>s,default:()=>u,frontMatter:()=>l,metadata:()=>i,toc:()=>a});const i=JSON.parse('{"id":"developer-guide/build/intellij","title":"Ozone Development With Intellij","description":"TODO: File a subtask under HDDS-9861 and complete this page or section.","source":"@site/docs/08-developer-guide/01-build/02-intellij.md","sourceDirName":"08-developer-gu [...]
\ No newline at end of file
diff --git a/assets/js/487eb9f3.dc1727af.js b/assets/js/487eb9f3.dc1727af.js
new file mode 100644
index 000000000..8fd1a369b
--- /dev/null
+++ b/assets/js/487eb9f3.dc1727af.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2109],{62392:(e,t,s)=>{s.d(t,{R:()=>o,x:()=>i});var n=s(30758);const c={},a=n.createContext(c);function o(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:o(e.components),n.createElement(a.Provider,{value:t},e.children)}},62398:(e,t,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/4a1548fd.3b8a21df.js b/assets/js/4a1548fd.3b8a21df.js
new file mode 100644
index 000000000..d61fde638
--- /dev/null
+++ b/assets/js/4a1548fd.3b8a21df.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2330],{61765:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>d,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"system-internals/components/datanode/read-request-flow","title":"Datanode Read Request Flow","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/03-datanode/07-read-req [...]
\ No newline at end of file
diff --git a/assets/js/4e5aed4c.6317bcd8.js b/assets/js/4e5aed4c.6317bcd8.js
new file mode 100644
index 000000000..ec2c32399
--- /dev/null
+++ b/assets/js/4e5aed4c.6317bcd8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1208],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var r=n(30758),o=n(84324);const c=["zero","one","two","few","many","other"];function s(e){return c.filter((t=>e.includes(t)))}const i={locale:"en",pluralForms:s(["one","other"]),select:e=>1===e?"one":"other"};function a(){const{i18n:{currentLocale:e}}=(0,o.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:s(t [...]
\ No newline at end of file
diff --git a/assets/js/4ec478d0.5ca42167.js b/assets/js/4ec478d0.5ca42167.js
new file mode 100644
index 000000000..80596b357
--- /dev/null
+++ b/assets/js/4ec478d0.5ca42167.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5658],{62392:(e,n,s)=>{s.d(n,{R:()=>a,x:()=>i});var t=s(30758);const o={},r=t.createContext(o);function a(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),t.createElement(r.Provider,{value:n},e.children)}},70875:(e,n,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/505897ff.25a14010.js b/assets/js/505897ff.25a14010.js
new file mode 100644
index 000000000..8e762c98a
--- /dev/null
+++ b/assets/js/505897ff.25a14010.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7827],{26910:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"troubleshooting/delete","title":"Troubleshooting Delete Operations","description":"TODO: File a subtask under HDDS-9860 and complete this page or section.","source":"@site/docs/06-troubleshooting/04-delete.md","sourceDirName":"06-troubleshooting","slug":"/tro [...]
\ No newline at end of file
diff --git a/assets/js/50c3045a.ea1bd3b0.js b/assets/js/50c3045a.ea1bd3b0.js
new file mode 100644
index 000000000..f22ecda13
--- /dev/null
+++ b/assets/js/50c3045a.ea1bd3b0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6828],{31931:(e,n,o)=>{o.d(n,{W:()=>a});var t=o(30758),r=o(84324);const s=["zero","one","two","few","many","other"];function i(e){return s.filter((n=>e.includes(n)))}const l={locale:"en",pluralForms:i(["one","other"]),select:e=>1===e?"one":"other"};function c(){const{i18n:{currentLocale:e}}=(0,r.A)();return(0,t.useMemo)((()=>{try{return function(e){const n=new Intl.PluralRules(e);return{locale:e,pluralForms:i(n [...]
\ No newline at end of file
diff --git a/assets/js/51315432.f04bcc94.js b/assets/js/51315432.f04bcc94.js
new file mode 100644
index 000000000..088645a0b
--- /dev/null
+++ b/assets/js/51315432.f04bcc94.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1017],{876:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"system-internals/data-operations/delete","title":"Implementation of Delete Operations","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/02-data-operations/03-delete.md","sourceDirNa [...]
\ No newline at end of file
diff --git a/assets/js/51319779.afd6bdb2.js b/assets/js/51319779.afd6bdb2.js
new file mode 100644
index 000000000..8bd2b984e
--- /dev/null
+++ b/assets/js/51319779.afd6bdb2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1749],{40336:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"administrator-guide/configuration/high-availability/scm-ha","title":"SCM High Availability Configuration","description":"Configuration","source":"@site/docs/05-administrator-guide/02-configuration/06-high-availability/01-scm-ha.md","sourceDirName":"05-adminis [...]
\ No newline at end of file
diff --git a/assets/js/5270.1723b5ba.js b/assets/js/5270.1723b5ba.js
new file mode 100644
index 000000000..22fc553a5
--- /dev/null
+++ b/assets/js/5270.1723b5ba.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5270],{19984:(t,e,n)=>{n.d(e,{a:()=>r,b:()=>c,c:()=>o,d:()=>s,e:()=>d,f:()=>l,g:()=>h});var a=n(48488),i=n(6979);const s=(t,e)=>{const n=t.append("rect");if(n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),e.name&&n.attr("name",e.name),void 0!==e.rx&&n.attr("rx",e.rx),void 0!==e.ry&&n.attr("ry",e.ry),void 0!==e.attrs)for(const a in [...]
\ No newline at end of file
diff --git a/assets/js/5299.3e11872f.js b/assets/js/5299.3e11872f.js
new file mode 100644
index 000000000..81765a295
--- /dev/null
+++ b/assets/js/5299.3e11872f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5299],{95299:(t,i,n)=>{n.d(i,{diagram:()=>o});var s=n(6979),e=(n(56287),n(48488),n(74094),n(62829),function(){var t=function(t,i,n,s){for(n=n||{},s=t.length;s--;n[t[s]]=i);return n},i=[6,9,10],n={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0], [...]
\ No newline at end of file
diff --git a/assets/js/530c6dee.3c7a40dc.js b/assets/js/530c6dee.3c7a40dc.js
new file mode 100644
index 000000000..0ea1cb0fd
--- /dev/null
+++ b/assets/js/530c6dee.3c7a40dc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6824],{2892:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"system-internals/replication/data/containers/types","title":"Types of Containers","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/04-replication/02-data/02-containers/02-types.md" [...]
\ No newline at end of file
diff --git a/assets/js/5323.00ecd7d7.js b/assets/js/5323.00ecd7d7.js
new file mode 100644
index 000000000..17660882a
--- /dev/null
+++ b/assets/js/5323.00ecd7d7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5323],{5323:(e,t,s)=>{s.d(t,{diagram:()=>V});var o=s(70913),i=s(89219),a=s(74094),r=s(6979),n=s(6133);s(56287),s(48488),s(62829),s(69982),s(74565);const d="rect",c="rectWithTitle",l="statediagram",p=`${l}-state`,b="transition",g=`${b} note-edge`,h=`${l}-note`,u=`${l}-cluster`,y=`${l}-cluster-alt`,f="parent",w="note",x="----",$=`${x}${w}`,m=`${x}${f}`,T="fill:none",S="fill: #333",k="text",v="normal";let D={},A=0 [...]
\ No newline at end of file
diff --git a/assets/js/5338.de1defdd.js b/assets/js/5338.de1defdd.js
new file mode 100644
index 000000000..58bb9463d
--- /dev/null
+++ b/assets/js/5338.de1defdd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5338],{25338:(t,i,e)=>{e.d(i,{diagram:()=>d});var a=e(6979),n=e(74094),r=(e(56287),e(48488),e(62829),function(){var t=function(t,i,e,a){for(e=e||{},a=t.length;a--;e[t[a]]=i);return e},i=[1,3],e=[1,4],a=[1,5],n=[1,6],r=[1,7],s=[1,5,13,15,17,19,20,25,27,28,29,30,31,32,33,34,37,38,40,41,42,43,44,45,46,47,48,49,50],l=[1,5,6,13,15,17,19,20,25,27,28,29,30,31,32,33,34,37,38,40,41,42,43,44,45,46,47,48,49,50],o=[32,33,3 [...]
\ No newline at end of file
diff --git a/assets/js/53e7f0dc.867c2354.js b/assets/js/53e7f0dc.867c2354.js
new file mode 100644
index 000000000..8f5ca8ff3
--- /dev/null
+++ b/assets/js/53e7f0dc.867c2354.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9450],{31931:(e,t,n)=>{n.d(t,{W:()=>a});var r=n(30758),s=n(84324);const o=["zero","one","two","few","many","other"];function i(e){return o.filter((t=>e.includes(t)))}const c={locale:"en",pluralForms:i(["one","other"]),select:e=>1===e?"one":"other"};function l(){const{i18n:{currentLocale:e}}=(0,s.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:i(t [...]
\ No newline at end of file
diff --git a/assets/js/545c3f5a.8d24730e.js b/assets/js/545c3f5a.8d24730e.js
new file mode 100644
index 000000000..3f116c152
--- /dev/null
+++ b/assets/js/545c3f5a.8d24730e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1977],{43635:a=>{a.exports=JSON.parse('{"tag":{"label":"scale","permalink":"/blog/tags/scale","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/scale","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/5478.8e1ad15e.js b/assets/js/5478.8e1ad15e.js
new file mode 100644
index 000000000..0bc8ba0a9
--- /dev/null
+++ b/assets/js/5478.8e1ad15e.js
@@ -0,0 +1,2 @@
+/*! For license information please see 5478.8e1ad15e.js.LICENSE.txt */
+(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5478],{4003:(t,e,i)=>{"use strict";i.d(e,{A:()=>o});var r=i(45786);function n(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var i=function(){var r=arguments,n=e?e.apply(this,r):r[0],o=i.cache;if(o.has(n))return o.get(n);var a=t.apply(this,r);return i.cache=o.set(n,a)||o,a};return i.cache=new(n.Cache||r.A),i}n.Cache=r.A;const o=n},5220:(t,e,i)=>{"use strict";i.d(e,{A:( [...]
\ No newline at end of file
diff --git a/assets/js/5478.8e1ad15e.js.LICENSE.txt b/assets/js/5478.8e1ad15e.js.LICENSE.txt
new file mode 100644
index 000000000..110c6efd5
--- /dev/null
+++ b/assets/js/5478.8e1ad15e.js.LICENSE.txt
@@ -0,0 +1,9 @@
+/*!
+ * Wait for document loaded before starting the execution
+ */
+
+/*! @license DOMPurify 3.1.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.6/LICENSE */
+
+/*! Check if previously processed */
+
+/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */
diff --git a/assets/js/54e167c5.c3166a40.js b/assets/js/54e167c5.c3166a40.js
new file mode 100644
index 000000000..9573f3096
--- /dev/null
+++ b/assets/js/54e167c5.c3166a40.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3415],{47541:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>i,toc:()=>p});const i=JSON.parse('{"id":"system-internals/replication/data/write-pipelines/states","title":"Write Pipeline States","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/04-replication/02-data/01-write-pipeline [...]
\ No newline at end of file
diff --git a/assets/js/552dc82c.bec66ee9.js b/assets/js/552dc82c.bec66ee9.js
new file mode 100644
index 000000000..5745a5bf9
--- /dev/null
+++ b/assets/js/552dc82c.bec66ee9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5387],{62392:(e,s,t)=>{t.d(s,{R:()=>c,x:()=>a});var n=t(30758);const o={},r=n.createContext(o);function c(e){const s=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),n.createElement(r.Provider,{value:s},e.children)}},92239:(e,s,t)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/55509f1b.3187a64d.js b/assets/js/55509f1b.3187a64d.js
new file mode 100644
index 000000000..aa849561c
--- /dev/null
+++ b/assets/js/55509f1b.3187a64d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5014],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var r=n(30758),s=n(84324);const i=["zero","one","two","few","many","other"];function c(e){return i.filter((t=>e.includes(t)))}const o={locale:"en",pluralForms:c(["one","other"]),select:e=>1===e?"one":"other"};function a(){const{i18n:{currentLocale:e}}=(0,s.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:c(t [...]
\ No newline at end of file
diff --git a/assets/js/5567.7cf6d27e.js b/assets/js/5567.7cf6d27e.js
new file mode 100644
index 000000000..6a9f0550c
--- /dev/null
+++ b/assets/js/5567.7cf6d27e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5567],{31931:(e,t,s)=>{s.d(t,{W:()=>c});var a=s(30758),n=s(84324);const l=["zero","one","two","few","many","other"];function i(e){return l.filter((t=>e.includes(t)))}const r={locale:"en",pluralForms:i(["one","other"]),select:e=>1===e?"one":"other"};function o(){const{i18n:{currentLocale:e}}=(0,n.A)();return(0,a.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:i(t [...]
\ No newline at end of file
diff --git a/assets/js/5610.46e9675a.js b/assets/js/5610.46e9675a.js
new file mode 100644
index 000000000..7ddb505f7
--- /dev/null
+++ b/assets/js/5610.46e9675a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5610],{55610:(e,t,n)=>{n.r(t),n.d(t,{renderReloadPopup:()=>s});n(30758);var d=n(99576),o=n(86070);const c="pwa-popup-container",r=()=>document.getElementById(c),u=()=>{const e=document.createElement("div");return e.id=c,document.body.appendChild(e),e};function s(e){const t=r()??u();return Promise.all([n.e(1869),n.e(2051)]).then(n.bind(n,32051)).then((n=>{let{default:c}=n;(0,d.createRoot)(t).render((0,o.jsx)(c,{ [...]
\ No newline at end of file
diff --git a/assets/js/56cd121b.ce1c0b4f.js b/assets/js/56cd121b.ce1c0b4f.js
new file mode 100644
index 000000000..dac2164d4
--- /dev/null
+++ b/assets/js/56cd121b.ce1c0b4f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9451],{62392:(e,n,a)=>{a.d(n,{R:()=>i,x:()=>r});var t=a(30758);const s={},o=t.createContext(s);function i(e){const n=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),t.createElement(o.Provider,{value:n},e.children)}},69519:(e,n,a)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/5714c893.10006956.js b/assets/js/5714c893.10006956.js
new file mode 100644
index 000000000..03556ddea
--- /dev/null
+++ b/assets/js/5714c893.10006956.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4781],{40180:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>r,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"system-internals/replication/metadata","title":"Implementation of Metadata Replication","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/04-replication/01-metadata.md","sourceDirN [...]
\ No newline at end of file
diff --git a/assets/js/5751.c2f2cd56.js b/assets/js/5751.c2f2cd56.js
new file mode 100644
index 000000000..3476842b5
--- /dev/null
+++ b/assets/js/5751.c2f2cd56.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5751],{15751:(t,e,i)=>{i.d(e,{diagram:()=>T});var n=i(6979),r=i(74094),s=i(69982),a=i(89219),l=(i(56287),i(48488),i(62829),function(){var t=function(t,e,i,n){for(i=i||{},n=t.length;n--;i[t[n]]=e);return i},e=[1,3],i=[1,4],n=[1,5],r=[1,6],s=[5,6,8,9,11,13,31,32,33,34,35,36,44,62,63],a=[1,18],l=[2,7],c=[1,22],o=[1,23],h=[1,24],u=[1,25],y=[1,26],d=[1,27],p=[1,20],_=[1,28],E=[1,29],g=[62,63],R=[5,8,9,11,13,31,32,33 [...]
\ No newline at end of file
diff --git a/assets/js/58891582.52d7f4b6.js b/assets/js/58891582.52d7f4b6.js
new file mode 100644
index 000000000..2a4b684f2
--- /dev/null
+++ b/assets/js/58891582.52d7f4b6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5889],{62392:(e,t,s)=>{s.d(t,{R:()=>o,x:()=>i});var r=s(30758);const n={},d=r.createContext(n);function o(e){const t=r.useContext(d);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),r.createElement(d.Provider,{value:t},e.children)}},98422:(e,t,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/595d9a28.7573b539.js b/assets/js/595d9a28.7573b539.js
new file mode 100644
index 000000000..e78ba8274
--- /dev/null
+++ b/assets/js/595d9a28.7573b539.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5462],{28943:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>i,contentTitle:()=>d,default:()=>u,frontMatter:()=>n,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"administrator-guide/operations/tools/ozone-debug/audit-parser-exact","title":"Audit Parser","description":"Audit Parser tool can be used for querying the Ozone audit logs.","source":"@site/docs/05-administrator-guide/03-operations/11-tools/03-ozone-debug/06-a [...]
\ No newline at end of file
diff --git a/assets/js/5994d45c.f1e71c20.js b/assets/js/5994d45c.f1e71c20.js
new file mode 100644
index 000000000..449d6d325
--- /dev/null
+++ b/assets/js/5994d45c.f1e71c20.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8778],{33345:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>a,frontMatter:()=>r,metadata:()=>i,toc:()=>h});const i=JSON.parse('{"type":"mdx","permalink":"/community/how-to-contribute","source":"@site/src/pages/community/how-to-contribute.md","title":"How to Contribute to Apache Ozone","description":"Thank you for your interest in contributing to Apache Ozone! This guide will help you unders [...]
\ No newline at end of file
diff --git a/assets/js/5a46aeac.d961edf1.js b/assets/js/5a46aeac.d961edf1.js
new file mode 100644
index 000000000..b5d109a59
--- /dev/null
+++ b/assets/js/5a46aeac.d961edf1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8185],{62392:(e,t,s)=>{s.d(t,{R:()=>a,x:()=>o});var n=s(30758);const i={},r=n.createContext(i);function a(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),n.createElement(r.Provider,{value:t},e.children)}},78211:(e,t,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/5b16b6b9.b04859c8.js b/assets/js/5b16b6b9.b04859c8.js
new file mode 100644
index 000000000..77d0285a2
--- /dev/null
+++ b/assets/js/5b16b6b9.b04859c8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1692],{13011:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"system-internals/replication/data/container-balancer","title":"SCM Container Balancer","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/04-replication/02-data/04-container-balance [...]
\ No newline at end of file
diff --git a/assets/js/5b1e349a.a02602bb.js b/assets/js/5b1e349a.a02602bb.js
new file mode 100644
index 000000000..951789dc4
--- /dev/null
+++ b/assets/js/5b1e349a.a02602bb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8675],{54568:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>d,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"administrator-guide/configuration/security/kerberos","title":"Configuring Kerberos","description":"Ozone depends on Kerberos to make the clusters secure. Historically, HDFS has supported running in an isolated secure networks where it is possible to deploy wi [...]
\ No newline at end of file
diff --git a/assets/js/5b399521.64d9f05c.js b/assets/js/5b399521.64d9f05c.js
new file mode 100644
index 000000000..ad8f24732
--- /dev/null
+++ b/assets/js/5b399521.64d9f05c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4979],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var r=n(30758),o=n(84324);const i=["zero","one","two","few","many","other"];function c(e){return i.filter((t=>e.includes(t)))}const s={locale:"en",pluralForms:c(["one","other"]),select:e=>1===e?"one":"other"};function a(){const{i18n:{currentLocale:e}}=(0,o.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:c(t [...]
\ No newline at end of file
diff --git a/assets/js/5caf6617.c80bed06.js b/assets/js/5caf6617.c80bed06.js
new file mode 100644
index 000000000..a268ad1ad
--- /dev/null
+++ b/assets/js/5caf6617.c80bed06.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4626],{21702:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/OzoneManager-4d310b421f2dddc728e6d613be8d49f2.png"},23245:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/OzoneManager-WritePath-42ea66efe76c49fd5250f338d653fec7.png"},62392:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>o});var a=t(30758);const r={},i=a.createContext(r);function s(e){const n=a.useContext(i);return a.useMemo((function(){return"function"== [...]
\ No newline at end of file
diff --git a/assets/js/5d0f4e9d.c93e340c.js b/assets/js/5d0f4e9d.c93e340c.js
new file mode 100644
index 000000000..71dac7d2d
--- /dev/null
+++ b/assets/js/5d0f4e9d.c93e340c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7828],{9809:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"system-internals/components/datanode/write-request-flow","title":"Datanode Write Request Flow","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/03-datanode/06-write-r [...]
\ No newline at end of file
diff --git a/assets/js/5d5cf83c.134c37c0.js b/assets/js/5d5cf83c.134c37c0.js
new file mode 100644
index 000000000..e49462e19
--- /dev/null
+++ b/assets/js/5d5cf83c.134c37c0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3612],{17846:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>c,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"administrator-guide/configuration/performance/rocksdb","title":"RocksDB in Apache Ozone","description":"This page covers advanced topics. Ozone administration normally does not require changing these settings.","source":"@site/docs/05-administrator-guide/02-c [...]
\ No newline at end of file
diff --git a/assets/js/5dfb27c3.a2869e72.js b/assets/js/5dfb27c3.a2869e72.js
new file mode 100644
index 000000000..7e1e87254
--- /dev/null
+++ b/assets/js/5dfb27c3.a2869e72.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8127],{53497:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"developer-guide/run/docker-compose","title":"Running Ozone From Docker Compose","description":"This guide walks you through the process of building Apache Ozone from source and running it using Docker Compose. This approach is particularly useful for developm [...]
\ No newline at end of file
diff --git a/assets/js/5e95c892.d227ff5b.js b/assets/js/5e95c892.d227ff5b.js
new file mode 100644
index 000000000..8b153c6e5
--- /dev/null
+++ b/assets/js/5e95c892.d227ff5b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9647],{76489:(e,s,r)=>{r.r(s),r.d(s,{default:()=>i});r(30758);var c=r(13526),t=r(76150),u=r(69697),a=r(70389),d=r(28884),n=r(86070);function i(e){return(0,n.jsx)(t.e3,{className:(0,c.A)(u.G.wrapper.docsPages),children:(0,n.jsx)(d.A,{children:(0,a.v)(e.route.routes)})})}}}]);
\ No newline at end of file
diff --git a/assets/js/5edcc78a.27df306d.js b/assets/js/5edcc78a.27df306d.js
new file mode 100644
index 000000000..df6fe541e
--- /dev/null
+++ b/assets/js/5edcc78a.27df306d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6857],{22696:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>s,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"administrator-guide/configuration/security/encryption/README","title":"Encryption Configuration","description":"This section documents the different types of encryption supported by Ozone and how to configure them.","source":"@site/docs/05-administrator-guide [...]
\ No newline at end of file
diff --git a/assets/js/5f9ea80b.9a7f3b8b.js b/assets/js/5f9ea80b.9a7f3b8b.js
new file mode 100644
index 000000000..46b1795be
--- /dev/null
+++ b/assets/js/5f9ea80b.9a7f3b8b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9005],{55438:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>s,toc:()=>a});const s=JSON.parse('{"id":"user-guide/client-interfaces/httpfs","title":"HttpFS Gateway","description":"Ozone HttpFS can be used to integrate Ozone with other tools via REST API.","source":"@site/docs/04-user-guide/01-client-interfaces/05-httpfs.md","sourceDirName":"04-user-guide/01-cl [...]
\ No newline at end of file
diff --git a/assets/js/60568eba.37ee1283.js b/assets/js/60568eba.37ee1283.js
new file mode 100644
index 000000000..30e3bdbb8
--- /dev/null
+++ b/assets/js/60568eba.37ee1283.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[306],{62392:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>a});var t=i(30758);const o={},r=t.createContext(o);function s(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),t.createElement(r.Provider,{value:n},e.children)}},94738:(e,n,i)=>{i [...]
\ No newline at end of file
diff --git a/assets/js/608b4a80.ea85a7fe.js b/assets/js/608b4a80.ea85a7fe.js
new file mode 100644
index 000000000..ac3d08c54
--- /dev/null
+++ b/assets/js/608b4a80.ea85a7fe.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3046],{9877:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>s,default:()=>l,frontMatter:()=>i,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"administrator-guide/configuration/basic/network/s3-gateway","title":"Network Configuration for S3 Gateways","description":"TODO: File a subtask under HDDS-9859 and complete this page or section.","source":"@site/docs/05-administrator-guide/02-configuration/01- [...]
\ No newline at end of file
diff --git a/assets/js/60f41ad1.f55d5692.js b/assets/js/60f41ad1.f55d5692.js
new file mode 100644
index 000000000..347159e57
--- /dev/null
+++ b/assets/js/60f41ad1.f55d5692.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2175],{55493:(e,n,i)=>{i.d(n,{A:()=>t});const t=i.p+"assets/images/EC-Reads-With-No-Failures-3282015dfe66d9400c33e2c968c5eda6.png"},57997:(e,n,i)=>{i.d(n,{A:()=>t});const t=i.p+"assets/images/EC-Reconstructional-Read-cb74627ab5163ee8b70a386c62f2327c.png"},62392:(e,n,i)=>{i.d(n,{R:()=>r,x:()=>a});var t=i(30758);const o={},s=t.createContext(o);function r(e){const n=t.useContext(s);return t.useMemo((function(){ret [...]
\ No newline at end of file
diff --git a/assets/js/6133.74c166b9.js b/assets/js/6133.74c166b9.js
new file mode 100644
index 000000000..3fcfcdd37
--- /dev/null
+++ b/assets/js/6133.74c166b9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6133],{6133:(e,t,n)=>{n.d(t,{r:()=>E});var r=n(69982),i=n(74565),a=n(47168),d=n(6979),o=n(89219),l=n(7597),s=n(74094);let c={},h={},g={};const f=(e,t)=>(d.l.trace("In isDescendant",t," ",e," = ",h[t].includes(e)),!!h[t].includes(e)),u=(e,t,n,r)=>{d.l.warn("Copying children of ",e,"root",r,"data",t.node(e),r);const i=t.children(e)||[];e!==r&&i.push(e),d.l.warn("Copying (nodes) clusterId",e,"nodes",i),i.forEach(( [...]
\ No newline at end of file
diff --git a/assets/js/6141.9fb9cab6.js b/assets/js/6141.9fb9cab6.js
new file mode 100644
index 000000000..514951003
--- /dev/null
+++ b/assets/js/6141.9fb9cab6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6141],{86141:(t,e,s)=>{s.d(e,{d:()=>D,p:()=>r,s:()=>_});var n=s(74094),i=s(6979),u=function(){var t=function(t,e,s,n){for(s=s||{},n=t.length;n--;s[t[n]]=e);return s},e=[1,17],s=[1,18],n=[1,19],i=[1,39],u=[1,40],r=[1,25],a=[1,23],c=[1,24],o=[1,31],l=[1,32],h=[1,33],A=[1,34],p=[1,35],d=[1,36],y=[1,26],E=[1,27],C=[1,28],m=[1,29],f=[1,43],b=[1,30],F=[1,42],g=[1,44],k=[1,41],T=[1,45],B=[1,9],D=[1,8,9],_=[1,56],S=[1, [...]
\ No newline at end of file
diff --git a/assets/js/61ca30ba.18d0f2a0.js b/assets/js/61ca30ba.18d0f2a0.js
new file mode 100644
index 000000000..48614aa35
--- /dev/null
+++ b/assets/js/61ca30ba.18d0f2a0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6842],{14351:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"administrator-guide/operations/s3-multi-tenancy/overview","title":"S3 Multi-Tenancy Overview","description":"Before Ozone multi-tenancy, all S3 access to Ozone (via S3 Gateway) were confined to a single designated S3 volume (that is volume s3v, by default).", [...]
\ No newline at end of file
diff --git a/assets/js/621db11d.cc321e96.js b/assets/js/621db11d.cc321e96.js
new file mode 100644
index 000000000..17a5619ce
--- /dev/null
+++ b/assets/js/621db11d.cc321e96.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4212],{64951:(t,e,s)=>{s.r(e),s.d(e,{default:()=>m});s(30758);var a=s(13526),o=s(76150),r=s(69697),l=s(99531),u=s(89157),n=s(83551),i=s(18358),c=s(32604);const h={authorListItem:"authorListItem__9xc"};var g=s(86070);function p(t){let{author:e}=t;return(0,g.jsx)("li",{className:h.authorListItem,children:(0,g.jsx)(c.A,{as:"h2",author:e,count:e.count})})}function d(t){let{authors:e}=t;return(0,g.jsx)("section",{cl [...]
\ No newline at end of file
diff --git a/assets/js/62a24fd2.5bda60a9.js b/assets/js/62a24fd2.5bda60a9.js
new file mode 100644
index 000000000..dfbd9571d
--- /dev/null
+++ b/assets/js/62a24fd2.5bda60a9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9294],{7847:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>a,frontMatter:()=>i,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"system-internals/network-protocols/client","title":"Network Protocols Used By Ozone Clients","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/06-network-protocols/02-client.md","so [...]
\ No newline at end of file
diff --git a/assets/js/633c79eb.831ce03b.js b/assets/js/633c79eb.831ce03b.js
new file mode 100644
index 000000000..59352d3d0
--- /dev/null
+++ b/assets/js/633c79eb.831ce03b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6237],{2047:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>o,contentTitle:()=>c,default:()=>a,frontMatter:()=>d,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"core-concepts/comparison","title":"Comparison with Other Storage Technologies","description":"This document provides a high-level comparison of Apache Ozone with other storage technologies.","source":"@site/docs/03-core-concepts/06-comparison.md","sourceDirNam [...]
\ No newline at end of file
diff --git a/assets/js/639b7917.972f0eb5.js b/assets/js/639b7917.972f0eb5.js
new file mode 100644
index 000000000..39359b582
--- /dev/null
+++ b/assets/js/639b7917.972f0eb5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9131],{62392:(e,t,s)=>{s.d(t,{R:()=>c,x:()=>a});var n=s(30758);const i={},r=n.createContext(i);function c(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),n.createElement(r.Provider,{value:t},e.children)}},64846:(e,t,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/6493c59b.34afe7bd.js b/assets/js/6493c59b.34afe7bd.js
new file mode 100644
index 000000000..ce8cd82d4
--- /dev/null
+++ b/assets/js/6493c59b.34afe7bd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5784],{35010:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>l,frontMatter:()=>r,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"system-internals/components/datanode/in-memory-storage","title":"Datanode In-Memory Storage","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/03-datanode/03-in-memor [...]
\ No newline at end of file
diff --git a/assets/js/64a473ad.ba702374.js b/assets/js/64a473ad.ba702374.js
new file mode 100644
index 000000000..97cbe3340
--- /dev/null
+++ b/assets/js/64a473ad.ba702374.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[467],{62392:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>d});var s=t(30758);const o={},r=s.createContext(o);function i(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:n},e.children)}},79555:(e,n,t)=>{t [...]
\ No newline at end of file
diff --git a/assets/js/650d9d88.b7031010.js b/assets/js/650d9d88.b7031010.js
new file mode 100644
index 000000000..ae2b4b771
--- /dev/null
+++ b/assets/js/650d9d88.b7031010.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8663],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var r=n(30758),s=n(84324);const o=["zero","one","two","few","many","other"];function a(e){return o.filter((t=>e.includes(t)))}const i={locale:"en",pluralForms:a(["one","other"]),select:e=>1===e?"one":"other"};function c(){const{i18n:{currentLocale:e}}=(0,s.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:a(t [...]
\ No newline at end of file
diff --git a/assets/js/6561.4e1df2cf.js b/assets/js/6561.4e1df2cf.js
new file mode 100644
index 000000000..4f7bbe09a
--- /dev/null
+++ b/assets/js/6561.4e1df2cf.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6561],{16561:(n,t,e)=>{e.r(t),e.d(t,{Workbox:()=>p,WorkboxEvent:()=>f,messageSW:()=>r});try{self["workbox:window:7.2.0"]&&_()}catch(r){}function r(n,t){return new Promise((function(e){var r=new MessageChannel;r.port1.onmessage=function(n){e(n.data)},n.postMessage(t,[r.port2])}))}function o(n){var t=function(n){if("object"!=typeof n||!n)return n;var t=n[Symbol.toPrimitive];if(void 0!==t){var e=t.call(n,"string") [...]
\ No newline at end of file
diff --git a/assets/js/6634.3fe7dcaa.js b/assets/js/6634.3fe7dcaa.js
new file mode 100644
index 000000000..3dd525f6c
--- /dev/null
+++ b/assets/js/6634.3fe7dcaa.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6634],{19984:(t,e,a)=>{a.d(e,{a:()=>n,b:()=>l,c:()=>c,d:()=>i,e:()=>h,f:()=>o,g:()=>d});var r=a(48488),s=a(6979);const i=(t,e)=>{const a=t.append("rect");if(a.attr("x",e.x),a.attr("y",e.y),a.attr("fill",e.fill),a.attr("stroke",e.stroke),a.attr("width",e.width),a.attr("height",e.height),e.name&&a.attr("name",e.name),void 0!==e.rx&&a.attr("rx",e.rx),void 0!==e.ry&&a.attr("ry",e.ry),void 0!==e.attrs)for(const r in [...]
\ No newline at end of file
diff --git a/assets/js/667eab11.9b4ee00c.js b/assets/js/667eab11.9b4ee00c.js
new file mode 100644
index 000000000..364b09664
--- /dev/null
+++ b/assets/js/667eab11.9b4ee00c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9780],{39462:(e,t,c)=>{c.r(t),c.d(t,{assets:()=>i,contentTitle:()=>r,default:()=>u,frontMatter:()=>a,metadata:()=>n,toc:()=>p});const n=JSON.parse('{"id":"core-concepts/namespace/buckets/replication","title":"Bucket Level Default Replication Type","description":"TODO: File a subtask under HDDS-9857 and complete this page or section.","source":"@site/docs/03-core-concepts/03-namespace/02-buckets/05-replication.m [...]
\ No newline at end of file
diff --git a/assets/js/6742.61ef2ae3.js b/assets/js/6742.61ef2ae3.js
new file mode 100644
index 000000000..238ce7c9a
--- /dev/null
+++ b/assets/js/6742.61ef2ae3.js
@@ -0,0 +1 @@
+(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6742],{34373:(n,t,e)=>{n.exports=function(){function n(t,e,i){function r(a,o){if(!e[a]){if(!t[a]){if(c)return c(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var s=e[a]={exports:{}};t[a][0].call(s.exports,(function(n){return r(t[a][1][n]||n)}),s,s.exports,n,t,e,i)}return e[a].exports}for(var c=void 0,a=0;a<i.length;a++)r(i[a]);return r}return n}()({1:[function(n,t,e){"use strict";Obje [...]
\ No newline at end of file
diff --git a/assets/js/67ca202b.b1168fcb.js b/assets/js/67ca202b.b1168fcb.js
new file mode 100644
index 000000000..af47a2dc0
--- /dev/null
+++ b/assets/js/67ca202b.b1168fcb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5576],{27055:(e,n,i)=>{i.d(n,{A:()=>t});const t=i.p+"assets/images/StorageContainerManager-989fad39f0a68b94e8614e86f0f7abab.png"},48630:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"core-concepts/architecture/storage-container-manager","title":"Storage Container Manager","description":"Storage Container Manager (SCM) [...]
\ No newline at end of file
diff --git a/assets/js/6811.5271b5fe.js b/assets/js/6811.5271b5fe.js
new file mode 100644
index 000000000..c0af2bb8c
--- /dev/null
+++ b/assets/js/6811.5271b5fe.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6811],{66811:(t,e,r)=>{r.d(e,{diagram:()=>D});var i=r(6979),a=r(89219),n=r(74094),s=r(69982);const o=[];for(let S=0;S<256;++S)o.push((S+256).toString(16).slice(1));function c(t,e=0){return o[t[e+0]]+o[t[e+1]]+o[t[e+2]]+o[t[e+3]]+"-"+o[t[e+4]]+o[t[e+5]]+"-"+o[t[e+6]]+o[t[e+7]]+"-"+o[t[e+8]]+o[t[e+9]]+"-"+o[t[e+10]]+o[t[e+11]]+o[t[e+12]]+o[t[e+13]]+o[t[e+14]]+o[t[e+15]]}const l=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][ [...]
\ No newline at end of file
diff --git a/assets/js/6875c492.50ffdac0.js b/assets/js/6875c492.50ffdac0.js
new file mode 100644
index 000000000..59bb952c9
--- /dev/null
+++ b/assets/js/6875c492.50ffdac0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4813],{12908:(e,t,n)=>{n.d(t,{A:()=>r});n(30758);var a=n(55598),s=n(63368),i=n(86070);function r(e){let{items:t,component:n=s.A}=e;return(0,i.jsx)(i.Fragment,{children:t.map((e=>{let{content:t}=e;return(0,i.jsx)(a.in,{content:t,children:(0,i.jsx)(n,{children:(0,i.jsx)(t,{})})},t.metadata.permalink)}))})}},15618:(e,t,n)=>{n.d(t,{A:()=>c});n(30758);var a=n(13526),s=n(48862),i=n(69697),r=n(10868),l=n(86070);functi [...]
\ No newline at end of file
diff --git a/assets/js/6889d740.d2629c1e.js b/assets/js/6889d740.d2629c1e.js
new file mode 100644
index 000000000..75beb02d7
--- /dev/null
+++ b/assets/js/6889d740.d2629c1e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7999],{47801:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>i,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"administrator-guide/configuration/basic/network/storage-container-manager","title":"Network Configuration for Storage Container Manager","description":"TODO: File a subtask under HDDS-9859 and complete this page or section.","source":"@site/docs/05-administra [...]
\ No newline at end of file
diff --git a/assets/js/6897.062c3534.js b/assets/js/6897.062c3534.js
new file mode 100644
index 000000000..452c518b1
--- /dev/null
+++ b/assets/js/6897.062c3534.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6897],{66897:(t,e,a)=>{a.d(e,{diagram:()=>b});var i=a(70913),n=a(74094),d=a(69982),r=a(89219),s=a(6979);a(56287),a(48488),a(62829);const o={},c=(t,e)=>{o[t]=e},g=(t,e)=>{const a=t.append("text").attr("x",2*(0,s.c)().state.padding).attr("y",(0,s.c)().state.textHeight+1.3*(0,s.c)().state.padding).attr("font-size",(0,s.c)().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),i=a.he [...]
\ No newline at end of file
diff --git a/assets/js/6a15a39b.6335fba0.js b/assets/js/6a15a39b.6335fba0.js
new file mode 100644
index 000000000..e1e76603b
--- /dev/null
+++ b/assets/js/6a15a39b.6335fba0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2807],{62392:(e,t,r)=>{r.d(t,{R:()=>a,x:()=>c});var s=r(30758);const o={},n=s.createContext(o);function a(e){const t=s.useContext(n);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),s.createElement(n.Provider,{value:t},e.children)}},62968:(e,t,r)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/6a46f4bd.bb912b2a.js b/assets/js/6a46f4bd.bb912b2a.js
new file mode 100644
index 000000000..a2e63dc7d
--- /dev/null
+++ b/assets/js/6a46f4bd.bb912b2a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2574],{29183:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"user-guide/integrations/impala","title":"Impala","description":"Starting with version 4.2.0, Apache Impala provides full support for querying data stored in Apache Ozone. To utilize this functionality, ensure that your Ozone version is 1.4.0 or later.","sourc [...]
\ No newline at end of file
diff --git a/assets/js/6a77d54b.63f9cca1.js b/assets/js/6a77d54b.63f9cca1.js
new file mode 100644
index 000000000..419a072ef
--- /dev/null
+++ b/assets/js/6a77d54b.63f9cca1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3365],{46423:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>u,contentTitle:()=>c,default:()=>m,frontMatter:()=>i,metadata:()=>n,toc:()=>r});const n=JSON.parse('{"id":"core-concepts/namespace/volumes/quotas","title":"Volume Quotas","description":"What are Volume Quotas?","source":"@site/docs/03-core-concepts/03-namespace/01-volumes/03-quotas.md","sourceDirName":"03-core-concepts/03-namespace/01-volumes","slug":"/core-concep [...]
\ No newline at end of file
diff --git a/assets/js/6a7b8dd1.ff71fe74.js b/assets/js/6a7b8dd1.ff71fe74.js
new file mode 100644
index 000000000..436abf6de
--- /dev/null
+++ b/assets/js/6a7b8dd1.ff71fe74.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[430],{19317:(e,a,o)=>{o.r(a),o.d(a,{assets:()=>i,contentTitle:()=>d,default:()=>l,frontMatter:()=>t,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"administrator-guide/operations/observability/grafana","title":"Dashboarding With Grafana","description":"Once Prometheus is up and running, Grana can be configured to monitor and","source":"@site/docs/05-administrator-guide/03-operations/09-observability/05-gr [...]
\ No newline at end of file
diff --git a/assets/js/6c8c855e.d309ccfa.js b/assets/js/6c8c855e.d309ccfa.js
new file mode 100644
index 000000000..4f785a13e
--- /dev/null
+++ b/assets/js/6c8c855e.d309ccfa.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2222],{42624:e=>{e.exports=JSON.parse('{"tag":{"label":"ozone-2.0.0","permalink":"/blog/tags/ozone-2-0-0","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/ozone-2-0-0","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/6d3e07c7.1e435c8b.js b/assets/js/6d3e07c7.1e435c8b.js
new file mode 100644
index 000000000..62360916f
--- /dev/null
+++ b/assets/js/6d3e07c7.1e435c8b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4900],{3961:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>d,contentTitle:()=>s,default:()=>l,frontMatter:()=>r,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"administrator-guide/operations/tools/ozone-debug/debug-om","title":"Debug OM","description":"Debug commands related to OM.","source":"@site/docs/05-administrator-guide/03-operations/11-tools/03-ozone-debug/02-debug-om.md","sourceDirName":"05-administrator-guid [...]
\ No newline at end of file
diff --git a/assets/js/6da13527.152db8a0.js b/assets/js/6da13527.152db8a0.js
new file mode 100644
index 000000000..e567c6b10
--- /dev/null
+++ b/assets/js/6da13527.152db8a0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8206],{62392:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>i});var t=s(30758);const a={},r=t.createContext(a);function o(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),t.createElement(r.Provider,{value:n},e.children)}},96546:(e,n,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/6f66b5d0.90a944e5.js b/assets/js/6f66b5d0.90a944e5.js
new file mode 100644
index 000000000..1413a1489
--- /dev/null
+++ b/assets/js/6f66b5d0.90a944e5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3164],{21235:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>m,frontMatter:()=>a,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"administrator-guide/operations/observability/README","title":"Observability","description":"This section documents tools that can be used to monitor or inspect the state of a running Ozone cluster.","source":"@site/docs/05-administrator-guide/03-operations/09 [...]
\ No newline at end of file
diff --git a/assets/js/70555442.fde6a094.js b/assets/js/70555442.fde6a094.js
new file mode 100644
index 000000000..8c4a6289b
--- /dev/null
+++ b/assets/js/70555442.fde6a094.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5509],{62392:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>o});var n=s(30758);const r={},a=n.createContext(r);function i(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(a.Provider,{value:t},e.children)}},82821:(e,t,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/7168.e437de75.js b/assets/js/7168.e437de75.js
new file mode 100644
index 000000000..e38d445fb
--- /dev/null
+++ b/assets/js/7168.e437de75.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7168],{47168:(t,e,a)=>{a.d(e,{a:()=>l,b:()=>B,c:()=>d,d:()=>I,e:()=>M,f:()=>j,g:()=>C,h:()=>A,i:()=>x,j:()=>N,k:()=>R,l:()=>o,m:()=>Y,p:()=>_,s:()=>T,u:()=>h});var r=a(6979),n=a(74094),i=a(7597);const s={extension:(t,e,a)=>{r.l.trace("Making markers for ",a),t.append("defs").append("marker").attr("id",a+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth [...]
\ No newline at end of file
diff --git a/assets/js/7380.68e92350.js b/assets/js/7380.68e92350.js
new file mode 100644
index 000000000..e25e62346
--- /dev/null
+++ b/assets/js/7380.68e92350.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7380],{57380:(t,e,a)=>{a.d(e,{diagram:()=>y});var r=a(86141),i=a(74094),n=a(69982),d=a(89219),o=a(6979);a(56287),a(48488),a(62829);let s=0;const l=function(t){let e=t.id;return t.type&&(e+="<"+(0,o.x)(t.type)+">"),e},p=function(t,e,a,r){const{displayText:i,cssStyle:n}=e.getDisplayDetails(),d=t.append("tspan").attr("x",r.padding).text(i);""!==n&&d.attr("style",e.cssStyle),a||d.attr("dy",r.textHeight)},c=function [...]
\ No newline at end of file
diff --git a/assets/js/73b7c255.82491923.js b/assets/js/73b7c255.82491923.js
new file mode 100644
index 000000000..dc7b309d4
--- /dev/null
+++ b/assets/js/73b7c255.82491923.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8753],{62392:(e,a,o)=>{o.d(a,{R:()=>l,x:()=>u});var n=o(30758);const t={},s=n.createContext(t);function l(e){const a=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(a):{...a,...e}}),[a,e])}function u(e){let a;return a=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),n.createElement(s.Provider,{value:a},e.children)}},65379:(e,a,o)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/74c5eee6.f944ad57.js b/assets/js/74c5eee6.f944ad57.js
new file mode 100644
index 000000000..d139e5785
--- /dev/null
+++ b/assets/js/74c5eee6.f944ad57.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2709],{10781:e=>{e.exports=JSON.parse('{"tag":{"label":"performance","permalink":"/blog/tags/performance","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/performance","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/75169831.ebcce157.js b/assets/js/75169831.ebcce157.js
new file mode 100644
index 000000000..45d24238a
--- /dev/null
+++ b/assets/js/75169831.ebcce157.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7049],{30222:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>s,default:()=>l,frontMatter:()=>i,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"administrator-guide/configuration/basic/network/datanode","title":"Network Configuration for Datanodes","description":"TODO: File a subtask under HDDS-9859 and complete this page or section.","source":"@site/docs/05-administrator-guide/02-configuration/01-bas [...]
\ No newline at end of file
diff --git a/assets/js/7597.8e8c8aa8.js b/assets/js/7597.8e8c8aa8.js
new file mode 100644
index 000000000..9f820af71
--- /dev/null
+++ b/assets/js/7597.8e8c8aa8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7597],{7597:(e,n,t)=>{t.d(n,{a:()=>dn,c:()=>an});var r={};t.r(r),t.d(r,{attentionMarkers:()=>je,contentInitial:()=>Be,disable:()=>He,document:()=>De,flow:()=>Me,flowInitial:()=>_e,insideSpan:()=>Oe,string:()=>Le,text:()=>Pe});var i=t(6979);const u={};function o(e,n,t){if(function(e){return Boolean(e&&"object"==typeof e)}(e)){if("value"in e)return"html"!==e.type||t?e.value:"";if(n&&"alt"in e&&e.alt)return e.alt; [...]
\ No newline at end of file
diff --git a/assets/js/76a21dad.2177abc1.js b/assets/js/76a21dad.2177abc1.js
new file mode 100644
index 000000000..1cfa64d36
--- /dev/null
+++ b/assets/js/76a21dad.2177abc1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9417],{73442:a=>{a.exports=JSON.parse('{"tag":{"label":"Datanode","permalink":"/blog/tags/datanode","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/datanode","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/76cb8ec1.05002251.js b/assets/js/76cb8ec1.05002251.js
new file mode 100644
index 000000000..f5c5061a7
--- /dev/null
+++ b/assets/js/76cb8ec1.05002251.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[858],{902:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"type":"mdx","permalink":"/release-notes/1.4.1","source":"@site/src/pages/release-notes/1.4.1.md","title":"Release 1.4.1 Available","description":"Apache Ozone 1.4.1 is a minor bug fix release that addresses several issues to enhance stability and reliability compared [...]
\ No newline at end of file
diff --git a/assets/js/7724993a.3d73ec8d.js b/assets/js/7724993a.3d73ec8d.js
new file mode 100644
index 000000000..3bc084892
--- /dev/null
+++ b/assets/js/7724993a.3d73ec8d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6917],{2658:e=>{e.exports=JSON.parse('{"permalink":"/blog/2025/07/02/access-ozone-via-cyberduck","editUrl":"https://github.com/apache/ozone-site/tree/master/blog/2025-07-02-access-ozone-via-cyberduck.md","source":"@site/blog/2025-07-02-access-ozone-via-cyberduck.md","title":"Accessing Ozone S3 via CyberDuck","description":"Here\'s a step\u2011by\u2011step guide to mounting and managing your Apache Ozone object [...]
\ No newline at end of file
diff --git a/assets/js/77b6d47b.a84f05c3.js b/assets/js/77b6d47b.a84f05c3.js
new file mode 100644
index 000000000..870beb93a
--- /dev/null
+++ b/assets/js/77b6d47b.a84f05c3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[778],{40788:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>d,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"administrator-guide/operations/tools/ozone-debug/debug-datanode","title":"Debug Datanode","description":"Debug commands related to Datanode. Currently, only container replica related commands are available.","source":"@site/docs/05-administrator-guide/03-opera [...]
\ No newline at end of file
diff --git a/assets/js/7855.3ed8afd4.js b/assets/js/7855.3ed8afd4.js
new file mode 100644
index 000000000..773007615
--- /dev/null
+++ b/assets/js/7855.3ed8afd4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7855],{17855:(e,c,s)=>{s.r(c),s.d(c,{DocSearchModal:()=>a.a1});var a=s(57215)}}]);
\ No newline at end of file
diff --git a/assets/js/78d5380c.e1d85a30.js b/assets/js/78d5380c.e1d85a30.js
new file mode 100644
index 000000000..1d806fe57
--- /dev/null
+++ b/assets/js/78d5380c.e1d85a30.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8713],{6121:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>i,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"developer-guide/project/README","title":"Project Guide","description":"This section documents how various aspects of the Apache Ozone project are managed.","source":"@site/docs/08-developer-guide/04-project/README.mdx","sourceDirName":"08-developer-guide/04-pr [...]
\ No newline at end of file
diff --git a/assets/js/78d918a4.0bf485ed.js b/assets/js/78d918a4.0bf485ed.js
new file mode 100644
index 000000000..fd785f2a3
--- /dev/null
+++ b/assets/js/78d918a4.0bf485ed.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2927],{13374:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>n,toc:()=>a});const n=JSON.parse('{"id":"user-guide/integrations/hbase","title":"HBase","description":"Apache Ozone supports integration with Apache HBase, allowing you to use Ozone as the underlying storage layer for HBase tables. This integration leverages the ofs:// scheme to provide a scalable a [...]
\ No newline at end of file
diff --git a/assets/js/7b9b27b6.ae824432.js b/assets/js/7b9b27b6.ae824432.js
new file mode 100644
index 000000000..1f8308f69
--- /dev/null
+++ b/assets/js/7b9b27b6.ae824432.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[216],{40936:(e,s,d)=>{d.r(s),d.d(s,{assets:()=>l,contentTitle:()=>c,default:()=>a,frontMatter:()=>i,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"user-guide/client-interfaces/ofs","title":"ofs: Hadoop Compatible Interface","description":"The Hadoop compatible file system interface allows storage backends like Ozone to be easily integrated into Hadoop eco-system. Ozone file system is a Hadoop compatible [...]
\ No newline at end of file
diff --git a/assets/js/7bc88236.a3625f16.js b/assets/js/7bc88236.a3625f16.js
new file mode 100644
index 000000000..2c9762a40
--- /dev/null
+++ b/assets/js/7bc88236.a3625f16.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4404],{54750:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"troubleshooting/storage-containers","title":"Troubleshooting Storage Containers","description":"TODO: File a subtask under HDDS-9860 and complete this page or section.","source":"@site/docs/06-troubleshooting/12-storage-containers.md","sourceDirName":"06-trou [...]
\ No newline at end of file
diff --git a/assets/js/7c03de1f.358e1cd1.js b/assets/js/7c03de1f.358e1cd1.js
new file mode 100644
index 000000000..371e5588a
--- /dev/null
+++ b/assets/js/7c03de1f.358e1cd1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2706],{23536:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>m,frontMatter:()=>i,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"core-concepts/security/README","title":"Using a Secure Ozone Cluster","description":"This section documents the primary mechanisms Ozone uses for authentication and authorization of users and administrators. To configure encryption and other security mechanis [...]
\ No newline at end of file
diff --git a/assets/js/7c056a5d.45149d39.js b/assets/js/7c056a5d.45149d39.js
new file mode 100644
index 000000000..7b938f559
--- /dev/null
+++ b/assets/js/7c056a5d.45149d39.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6888],{62392:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>i});var a=t(30758);const s={},r=a.createContext(s);function o(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),a.createElement(r.Provider,{value:n},e.children)}},64841:(e,n,t)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/7d9e994c.32410155.js b/assets/js/7d9e994c.32410155.js
new file mode 100644
index 000000000..b8875beb8
--- /dev/null
+++ b/assets/js/7d9e994c.32410155.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6469],{19187:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>s,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"administrator-guide/configuration/basic/directories/recon","title":"Directory Configurations for Recon","description":"TODO: File a subtask under HDDS-9859 and complete this page or section.","source":"@site/docs/05-administrator-guide/02-configuration/01-bas [...]
\ No newline at end of file
diff --git a/assets/js/7e0e20a4.dd31ce96.js b/assets/js/7e0e20a4.dd31ce96.js
new file mode 100644
index 000000000..49b5c13b1
--- /dev/null
+++ b/assets/js/7e0e20a4.dd31ce96.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5575],{18826:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"user-guide/integrations/hadoop-distcp","title":"Hadoop DistCp","description":"Hadoop DistCp is a command-line, MapReduce-based tool for bulk data copying.","source":"@site/docs/04-user-guide/03-integrations/08-hadoop-distcp.md","sourceDirName":"04-user-guide/ [...]
\ No newline at end of file
diff --git a/assets/js/7e36553e.42eec6af.js b/assets/js/7e36553e.42eec6af.js
new file mode 100644
index 000000000..941a75b4e
--- /dev/null
+++ b/assets/js/7e36553e.42eec6af.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[378],{34901:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"user-guide/integrations/hive","title":"Hive","description":"Apache Hive has supported Apache Ozone since Hive 4.0. To enable Hive to work with Ozone paths, ensure that the ozone-filesystem-hadoop3 JAR is added to the Hive classpath.","source":"@site/docs/04-us [...]
\ No newline at end of file
diff --git a/assets/js/7e890041.9e611dc3.js b/assets/js/7e890041.9e611dc3.js
new file mode 100644
index 000000000..6a77967e0
--- /dev/null
+++ b/assets/js/7e890041.9e611dc3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2455],{4002:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>l,frontMatter:()=>i,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"administrator-guide/configuration/security/ranger","title":"Configuring Apache Ranger","description":"Apache Ranger\u2122 is a framework to enable, monitor and manage comprehensive data security across the Hadoop platform and beyond. Apache Ranger has supporte [...]
\ No newline at end of file
diff --git a/assets/js/7f1fe63b.dc42c418.js b/assets/js/7f1fe63b.dc42c418.js
new file mode 100644
index 000000000..2442474be
--- /dev/null
+++ b/assets/js/7f1fe63b.dc42c418.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7563],{15373:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>o,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"user-guide/integrations/trino","title":"Trino","description":"TODO: File a subtask under HDDS-9858 and complete this page or section.","source":"@site/docs/04-user-guide/03-integrations/07-trino.md","sourceDirName":"04-user-guide/03-integrations","slug":"/use [...]
\ No newline at end of file
diff --git a/assets/js/7f634e4b.3d1ce1d2.js b/assets/js/7f634e4b.3d1ce1d2.js
new file mode 100644
index 000000000..f330cc18e
--- /dev/null
+++ b/assets/js/7f634e4b.3d1ce1d2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7694],{14732:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>l,frontMatter:()=>r,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"system-internals/components/recon/syncing-data-from-datanodes","title":"How Recon Syncs Data From Datanodes","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/04-reco [...]
\ No newline at end of file
diff --git a/assets/js/8032.e363506c.js b/assets/js/8032.e363506c.js
new file mode 100644
index 000000000..34ba2ad45
--- /dev/null
+++ b/assets/js/8032.e363506c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8032],{68032:(t,e,i)=>{i.d(e,{diagram:()=>d});var n=i(6979),s=i(74094),r=(i(56287),i(48488),i(62829),function(){var t=function(t,e,i,n){for(i=i||{},n=t.length;n--;i[t[n]]=e);return i},e=[1,3],i=[1,4],n=[1,5],s=[1,6],r=[1,10,12,14,16,18,19,20,21,22],l=[2,4],a=[1,5,10,12,14,16,18,19,20,21,22],c=[20,21,22],o=[2,7],h=[1,12],u=[1,13],y=[1,14],p=[1,15],d=[1,16],g=[1,17],_={trace:function(){},yy:{},symbols_:{error:2,s [...]
\ No newline at end of file
diff --git a/assets/js/814f3328.e22f90b2.js b/assets/js/814f3328.e22f90b2.js
new file mode 100644
index 000000000..c632a8bd9
--- /dev/null
+++ b/assets/js/814f3328.e22f90b2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7472],{55513:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Apache Ozone Best Practices at Didi: Scaling to Tens of Billions of Files","permalink":"/blog/2026/01/30/apache-ozone-best-practices-at-didi","unlisted":false,"date":"2026-01-30T00:00:00.000Z"},{"title":"No More Hotspots: Introducing the Automatic Disk Balancer in Apache Ozone","permalink":"/blog/2026/01/29/disk-balancer-preview", [...]
\ No newline at end of file
diff --git a/assets/js/81b22b86.abff2657.js b/assets/js/81b22b86.abff2657.js
new file mode 100644
index 000000000..976a60ff1
--- /dev/null
+++ b/assets/js/81b22b86.abff2657.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2176],{29776:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>l,default:()=>d,frontMatter:()=>c,metadata:()=>o,toc:()=>u});const o=JSON.parse('{"id":"troubleshooting/integrations/README","title":"Troubleshooting Ozone Integration With Other Components","description":"This section contains guides to help troubleshoot Ozone integration with other systems.","source":"@site/docs/06-troubleshooting/07-integrati [...]
\ No newline at end of file
diff --git a/assets/js/81e337af.461d9a39.js b/assets/js/81e337af.461d9a39.js
new file mode 100644
index 000000000..8e808f399
--- /dev/null
+++ b/assets/js/81e337af.461d9a39.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5145],{35099:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"system-internals/replication/data/containers/reports","title":"Container Reports","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/04-replication/02-data/02-containers/04-reports. [...]
\ No newline at end of file
diff --git a/assets/js/82241d4b.21c5dc41.js b/assets/js/82241d4b.21c5dc41.js
new file mode 100644
index 000000000..5cb6a5ca7
--- /dev/null
+++ b/assets/js/82241d4b.21c5dc41.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6450],{9284:(e,t,n)=>{n.d(t,{A:()=>a});const a=n.p+"assets/images/container-states-visualized-45bba17930c54023c2a2a2e7ab188c40.png"},15714:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});const a=JSON.parse('{"id":"system-internals/replication/data/replication-manager","title":"SCM Replication Manager","description":"The Replication Manager (RM) [...]
\ No newline at end of file
diff --git a/assets/js/8287.3f97c415.js b/assets/js/8287.3f97c415.js
new file mode 100644
index 000000000..c0df1e7af
--- /dev/null
+++ b/assets/js/8287.3f97c415.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8287],{8287:(t,i,e)=>{e.d(i,{diagram:()=>F});var s=e(6979),n=e(7597),a=e(74094),h=(e(56287),e(48488),e(62829),function(){var t=function(t,i,e,s){for(e=e||{},s=t.length;s--;e[t[s]]=i);return e},i=[1,10,12,14,16,18,19,21,23],e=[2,6],s=[1,3],n=[1,5],a=[1,6],h=[1,7],o=[1,5,10,12,14,16,18,19,21,23,34,35,36],r=[1,25],l=[1,26],c=[1,28],g=[1,29],u=[1,30],x=[1,31],d=[1,32],p=[1,33],f=[1,34],y=[1,35],m=[1,36],b=[1,37],A= [...]
\ No newline at end of file
diff --git a/assets/js/830083b0.ee49c4c5.js b/assets/js/830083b0.ee49c4c5.js
new file mode 100644
index 000000000..464d7f620
--- /dev/null
+++ b/assets/js/830083b0.ee49c4c5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4005],{27166:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>a,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"system-internals/replication/data/write-pipelines/creation","title":"Write Pipeline Creation","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/04-replication/02-data/01-write-pipe [...]
\ No newline at end of file
diff --git a/assets/js/839562c1.10691c60.js b/assets/js/839562c1.10691c60.js
new file mode 100644
index 000000000..9250e176a
--- /dev/null
+++ b/assets/js/839562c1.10691c60.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2870],{22955:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"troubleshooting/safemode","title":"Troubleshooting Storage Container Manager Safemode","description":"TODO: File a subtask under HDDS-9860 and complete this page or section.","source":"@site/docs/06-troubleshooting/02-safemode.md","sourceDirName":"06-troubles [...]
\ No newline at end of file
diff --git a/assets/js/8427fcb9.983a58b0.js b/assets/js/8427fcb9.983a58b0.js
new file mode 100644
index 000000000..27d6d48c3
--- /dev/null
+++ b/assets/js/8427fcb9.983a58b0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4596],{62392:(e,t,o)=>{o.d(t,{R:()=>i,x:()=>c});var n=o(30758);const r={},s=n.createContext(r);function i(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(s.Provider,{value:t},e.children)}},84631:(e,t,o)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/84334567.b83e47b3.js b/assets/js/84334567.b83e47b3.js
new file mode 100644
index 000000000..8b9258777
--- /dev/null
+++ b/assets/js/84334567.b83e47b3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9369],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var s=n(30758),r=n(84324);const o=["zero","one","two","few","many","other"];function c(e){return o.filter((t=>e.includes(t)))}const i={locale:"en",pluralForms:c(["one","other"]),select:e=>1===e?"one":"other"};function a(){const{i18n:{currentLocale:e}}=(0,r.A)();return(0,s.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:c(t [...]
\ No newline at end of file
diff --git a/assets/js/845118d0.a96ea1a4.js b/assets/js/845118d0.a96ea1a4.js
new file mode 100644
index 000000000..32a1844e0
--- /dev/null
+++ b/assets/js/845118d0.a96ea1a4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9862],{10349:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"developer-guide/project/branches-and-tags","title":"Git Branches and Tags","description":"TODO: File a subtask under HDDS-9861 and complete this page or section.","source":"@site/docs/08-developer-guide/04-project/01-branches-and-tags.md","sourceDirName":"08- [...]
\ No newline at end of file
diff --git a/assets/js/85164bb4.7ed3c360.js b/assets/js/85164bb4.7ed3c360.js
new file mode 100644
index 000000000..0c2ee9fac
--- /dev/null
+++ b/assets/js/85164bb4.7ed3c360.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6379],{4828:(e,i,n)=>{n.d(i,{A:()=>t});const t=n.p+"assets/images/s3g-download-latency-follower-read-goes-online-102b1f38e6b783c7401950efbbef20b0.png"},22821:e=>{e.exports=JSON.parse('{"permalink":"/blog/2026/01/30/apache-ozone-best-practices-at-didi","editUrl":"https://github.com/apache/ozone-site/tree/master/blog/2026-01-30-apache-ozone-best-practices-at-didi.md","source":"@site/blog/2026-01-30-apache-ozone-b [...]
\ No newline at end of file
diff --git a/assets/js/85de1ca4.af9f6684.js b/assets/js/85de1ca4.af9f6684.js
new file mode 100644
index 000000000..f0c2c6b69
--- /dev/null
+++ b/assets/js/85de1ca4.af9f6684.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9812],{44925:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>t,metadata:()=>o,toc:()=>a});const o=JSON.parse('{"id":"developer-guide/build/docker-images","title":"docker-images","description":"This page provides an overview of the Docker images maintained by the Apache Ozone community for developing and testing Ozone. It also describes the workflow to be followed when maki [...]
\ No newline at end of file
diff --git a/assets/js/8654.96c344ab.js b/assets/js/8654.96c344ab.js
new file mode 100644
index 000000000..802c1d04d
--- /dev/null
+++ b/assets/js/8654.96c344ab.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8654],{19984:(t,e,n)=>{n.d(e,{a:()=>a,b:()=>l,c:()=>c,d:()=>r,e:()=>y,f:()=>o,g:()=>h});var i=n(48488),s=n(6979);const r=(t,e)=>{const n=t.append("rect");if(n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),e.name&&n.attr("name",e.name),void 0!==e.rx&&n.attr("rx",e.rx),void 0!==e.ry&&n.attr("ry",e.ry),void 0!==e.attrs)for(const i in [...]
\ No newline at end of file
diff --git a/assets/js/881b0800.5f54c526.js b/assets/js/881b0800.5f54c526.js
new file mode 100644
index 000000000..1833bef50
--- /dev/null
+++ b/assets/js/881b0800.5f54c526.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4878],{62392:(e,n,s)=>{s.d(n,{R:()=>r,x:()=>c});var t=s(30758);const o={},a=t.createContext(o);function r(e){const n=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),t.createElement(a.Provider,{value:n},e.children)}},78790:(e,n,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/8934.7cbd855f.js b/assets/js/8934.7cbd855f.js
new file mode 100644
index 000000000..ac7f18802
--- /dev/null
+++ b/assets/js/8934.7cbd855f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8934],{78934:(t,e,s)=>{s.d(e,{d:()=>st,f:()=>et,p:()=>r});var u=s(74094),i=s(6979),n=function(){var t=function(t,e,s,u){for(s=s||{},u=t.length;u--;s[t[u]]=e);return s},e=[1,4],s=[1,3],u=[1,5],i=[1,8,9,10,11,27,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],n=[2,2],r=[1,13],a=[1,14],c=[1,15],o=[1,16],l=[1,23],h=[1,25],A=[1,26],d=[1,27],p=[1,49],y=[1,48],E=[1,29],f=[1,30],g=[1,31 [...]
\ No newline at end of file
diff --git a/assets/js/8999.b5307276.js b/assets/js/8999.b5307276.js
new file mode 100644
index 000000000..f9271873e
--- /dev/null
+++ b/assets/js/8999.b5307276.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8999],{38999:(e,t,i)=>{i.d(t,{diagram:()=>K});var s,n,r=i(6979),l=i(64350),o=i(80124),a=i(30941),c=i(47168),h=i(89219),u=i(74094),d=(i(56287),i(48488),i(62829),function(){var e=function(e,t,i,s){for(i=i||{},s=e.length;s--;i[e[s]]=t);return i},t=[1,7],i=[1,13],s=[1,14],n=[1,15],r=[1,19],l=[1,16],o=[1,17],a=[1,18],c=[8,30],h=[8,21,28,29,30,31,32,40,44,47],u=[1,23],d=[1,24],g=[8,15,16,21,28,29,30,31,32,40,44,47],y [...]
\ No newline at end of file
diff --git a/assets/js/8a4f0f2b.0200c7a8.js b/assets/js/8a4f0f2b.0200c7a8.js
new file mode 100644
index 000000000..32640d1d0
--- /dev/null
+++ b/assets/js/8a4f0f2b.0200c7a8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8318],{62392:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>c});var s=t(30758);const r={},i=s.createContext(r);function o(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),s.createElement(i.Provider,{value:n},e.children)}},81091:(e,n,t)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/8c863459.fda673d7.js b/assets/js/8c863459.fda673d7.js
new file mode 100644
index 000000000..e67cad89a
--- /dev/null
+++ b/assets/js/8c863459.fda673d7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3941],{49470:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"system-internals/components/storage-container-manager/roles","title":"Storage Container Manager Roles","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/02-storage-co [...]
\ No newline at end of file
diff --git a/assets/js/8cbab211.a1fa6038.js b/assets/js/8cbab211.a1fa6038.js
new file mode 100644
index 000000000..fe29d5a83
--- /dev/null
+++ b/assets/js/8cbab211.a1fa6038.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9977],{62392:(e,t,s)=>{s.d(t,{R:()=>n,x:()=>c});var o=s(30758);const i={},r=o.createContext(i);function n(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:n(e.components),o.createElement(r.Provider,{value:t},e.children)}},86492:(e,t,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/8e330ab9.ab3738cc.js b/assets/js/8e330ab9.ab3738cc.js
new file mode 100644
index 000000000..04ee3b5e9
--- /dev/null
+++ b/assets/js/8e330ab9.ab3738cc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5798],{50785:t=>{t.exports=JSON.parse('{"tag":{"label":"S3","permalink":"/blog/tags/s-3","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/s-3","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/8e7f3688.4c13fe6d.js b/assets/js/8e7f3688.4c13fe6d.js
new file mode 100644
index 000000000..b3ae7baeb
--- /dev/null
+++ b/assets/js/8e7f3688.4c13fe6d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7442],{62392:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>o});var s=n(30758);const r={},i=s.createContext(r);function a(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(i.Provider,{value:t},e.children)}},93491:(e,t,n)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/8e8b76bd.028ad944.js b/assets/js/8e8b76bd.028ad944.js
new file mode 100644
index 000000000..08607d95f
--- /dev/null
+++ b/assets/js/8e8b76bd.028ad944.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[565],{62392:(e,i,n)=>{n.d(i,{R:()=>o,x:()=>s});var t=n(30758);const a={},r=t.createContext(a);function o(e){const i=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function s(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),t.createElement(r.Provider,{value:i},e.children)}},94637:(e,i,n)=>{n [...]
\ No newline at end of file
diff --git a/assets/js/8f789fdc.b9336461.js b/assets/js/8f789fdc.b9336461.js
new file mode 100644
index 000000000..78d0a2d11
--- /dev/null
+++ b/assets/js/8f789fdc.b9336461.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4078],{43630:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>a,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"system-internals/data-operations/write","title":"Implementation of Write Operations","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/02-data-operations/01-write.md","sourceDirNam [...]
\ No newline at end of file
diff --git a/assets/js/9039.d4721e44.js b/assets/js/9039.d4721e44.js
new file mode 100644
index 000000000..2f8bacfbe
--- /dev/null
+++ b/assets/js/9039.d4721e44.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9039],{69039:(t,e,r)=>{r.d(e,{diagram:()=>z});var i=r(6979),a=r(74094),n=(r(56287),r(48488),r(62829),function(){var t=function(t,e,r,i){for(r=r||{},i=t.length;i--;r[t[i]]=e);return r},e=[1,3],r=[1,6],i=[1,4],a=[1,5],n=[2,5],c=[1,12],s=[5,7,13,19,21,23,24,26,28,31,37,40,47],o=[7,13,19,21,23,24,26,28,31,37,40],l=[7,12,13,19,21,23,24,26,28,31,37,40],h=[7,13,47],m=[1,42],y=[1,41],u=[7,13,29,32,35,38,47],p=[1,55],g= [...]
\ No newline at end of file
diff --git a/assets/js/905d7d03.721d0517.js b/assets/js/905d7d03.721d0517.js
new file mode 100644
index 000000000..995938ff2
--- /dev/null
+++ b/assets/js/905d7d03.721d0517.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1393],{1309:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"troubleshooting/write-pipelines","title":"Troubleshooting Write Pipelines","description":"TODO: File a subtask under HDDS-9860 and complete this page or section.","source":"@site/docs/06-troubleshooting/11-write-pipelines.md","sourceDirName":"06-troubleshootin [...]
\ No newline at end of file
diff --git a/assets/js/90bc9aa3.8f0acc6f.js b/assets/js/90bc9aa3.8f0acc6f.js
new file mode 100644
index 000000000..0c0a38a36
--- /dev/null
+++ b/assets/js/90bc9aa3.8f0acc6f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7127],{41416:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>l});const o=JSON.parse('{"id":"user-guide/integrations/flink","title":"Apache Flink","description":"Apache Flink is a powerful, open-source distributed processing framework designed for stateful computations over both bounded and unbounded data streams at any scale. It enables high-through [...]
\ No newline at end of file
diff --git a/assets/js/910da79e.0536945b.js b/assets/js/910da79e.0536945b.js
new file mode 100644
index 000000000..e814a0d2c
--- /dev/null
+++ b/assets/js/910da79e.0536945b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[171],{14265:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"system-internals/components/recon/disk-layout","title":"Recon Disk Layout","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/04-recon/01-disk-layout.md","sourceDirName [...]
\ No newline at end of file
diff --git a/assets/js/913.50478952.js b/assets/js/913.50478952.js
new file mode 100644
index 000000000..268357c50
--- /dev/null
+++ b/assets/js/913.50478952.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[913],{70913:(t,e,s)=>{s.d(e,{D:()=>l,S:()=>c,a:()=>h,b:()=>a,c:()=>o,d:()=>B,p:()=>r,s:()=>P});var i=s(6979),n=function(){var t=function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},e=[1,2],s=[1,3],i=[1,4],n=[2,4],r=[1,9],o=[1,11],a=[1,15],c=[1,16],l=[1,17],h=[1,18],u=[1,30],d=[1,19],p=[1,20],y=[1,21],f=[1,22],m=[1,23],g=[1,25],S=[1,26],_=[1,27],k=[1,28],T=[1,29],b=[1,32],E=[1,33],x=[1,34],C=[1,35], [...]
\ No newline at end of file
diff --git a/assets/js/915ff4b4.5faa56b8.js b/assets/js/915ff4b4.5faa56b8.js
new file mode 100644
index 000000000..7281c76a7
--- /dev/null
+++ b/assets/js/915ff4b4.5faa56b8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9724],{58220:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>a,default:()=>l,frontMatter:()=>c,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"system-internals/components/recon/startup-sequence","title":"Recon Startup Sequence","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/04-recon/05-startup-sequence.md [...]
\ No newline at end of file
diff --git a/assets/js/916338ad.157f57d3.js b/assets/js/916338ad.157f57d3.js
new file mode 100644
index 000000000..7f4e6bbfc
--- /dev/null
+++ b/assets/js/916338ad.157f57d3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9546],{36009:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>t,contentTitle:()=>l,default:()=>a,frontMatter:()=>c,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"core-concepts/security/acls/native-acls","title":"Native ACLs","description":"Ozone supports a set of native ACLs.","source":"@site/docs/03-core-concepts/04-security/02-acls/01-native-acls.md","sourceDirName":"03-core-concepts/04-security/02-acls","slug":"/co [...]
\ No newline at end of file
diff --git a/assets/js/935537b5.24363f22.js b/assets/js/935537b5.24363f22.js
new file mode 100644
index 000000000..798b530f4
--- /dev/null
+++ b/assets/js/935537b5.24363f22.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4308],{53703:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"administrator-guide/operations/disk-replacement/recon","title":"Replacing Recon Disks","description":"Audience: Cluster Administrators","source":"@site/docs/05-administrator-guide/03-operations/04-disk-replacement/04-recon.md","sourceDirName":"05-administrato [...]
\ No newline at end of file
diff --git a/assets/js/93955e5f.5b30c1c4.js b/assets/js/93955e5f.5b30c1c4.js
new file mode 100644
index 000000000..648adc3e2
--- /dev/null
+++ b/assets/js/93955e5f.5b30c1c4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8886],{18399:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>i,default:()=>l,frontMatter:()=>o,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"system-internals/features/erasure-coding","title":"Erasure Coding System Internals","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/07-features/04-erasure-coding.md","sourceDirNa [...]
\ No newline at end of file
diff --git a/assets/js/93b5677f.f108cde0.js b/assets/js/93b5677f.f108cde0.js
new file mode 100644
index 000000000..c1918a352
--- /dev/null
+++ b/assets/js/93b5677f.f108cde0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5070],{26220:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>m,frontMatter:()=>c,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"system-internals/components/datanode/README","title":"Datanode Internals","description":"This section documents the internal workings of the Datanode.","source":"@site/docs/07-system-internals/01-components/03-datanode/README.mdx","sourceDirName":"07-system-i [...]
\ No newline at end of file
diff --git a/assets/js/941b6a5c.91e3f525.js b/assets/js/941b6a5c.91e3f525.js
new file mode 100644
index 000000000..8414d7761
--- /dev/null
+++ b/assets/js/941b6a5c.91e3f525.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2686],{18234:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>a,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"system-internals/components/ozone-manager/read-request-flow","title":"Ozone Manager Read Request Flow","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/01-ozone-mana [...]
\ No newline at end of file
diff --git a/assets/js/95476a67.e6ba9385.js b/assets/js/95476a67.e6ba9385.js
new file mode 100644
index 000000000..065c92b8a
--- /dev/null
+++ b/assets/js/95476a67.e6ba9385.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[376],{62392:(e,t,a)=>{a.d(t,{R:()=>r,x:()=>s});var n=a(30758);const o={},i=n.createContext(o);function r(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(i.Provider,{value:t},e.children)}},66086:e=>{e.expor [...]
\ No newline at end of file
diff --git a/assets/js/958bcf3f.c1a94132.js b/assets/js/958bcf3f.c1a94132.js
new file mode 100644
index 000000000..a87948875
--- /dev/null
+++ b/assets/js/958bcf3f.c1a94132.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4479],{62392:(e,t,s)=>{s.d(t,{R:()=>o,x:()=>a});var n=s(30758);const r={},i=n.createContext(r);function o(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),n.createElement(i.Provider,{value:t},e.children)}},72969:(e,t,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/972a484a.fb46a77f.js b/assets/js/972a484a.fb46a77f.js
new file mode 100644
index 000000000..079ba0704
--- /dev/null
+++ b/assets/js/972a484a.fb46a77f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9329],{41191:e=>{e.exports=JSON.parse('{"tag":{"label":"CyberDuck","permalink":"/blog/tags/cyber-duck","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/cyber-duck","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/975dbdad.c8f13248.js b/assets/js/975dbdad.c8f13248.js
new file mode 100644
index 000000000..57ed22880
--- /dev/null
+++ b/assets/js/975dbdad.c8f13248.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8697],{45733:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>p,frontMatter:()=>r,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"system-internals/components/datanode/startup-sequence","title":"Datanode Startup Sequence","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/03-datanode/04-startup-se [...]
\ No newline at end of file
diff --git a/assets/js/9935caea.ca40c64b.js b/assets/js/9935caea.ca40c64b.js
new file mode 100644
index 000000000..3dc6acbc9
--- /dev/null
+++ b/assets/js/9935caea.ca40c64b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7619],{62392:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>a});var s=i(30758);const t={},r=s.createContext(t);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),s.createElement(r.Provider,{value:n},e.children)}},66378:(e,n,i)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/9982.16ba79b2.js b/assets/js/9982.16ba79b2.js
new file mode 100644
index 000000000..7b9af5d08
--- /dev/null
+++ b/assets/js/9982.16ba79b2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9982],{5237:(n,e,r)=>{r.d(e,{A:()=>c});var t=r(34713),o=r(16957),i=r(16599),u=r(96920),a=Object.prototype,d=a.hasOwnProperty;const c=(0,t.A)((function(n,e){n=Object(n);var r=-1,t=e.length,c=t>2?e[2]:void 0;for(c&&(0,i.A)(e[0],e[1],c)&&(t=1);++r<t;)for(var f=e[r],s=(0,u.A)(f),v=-1,g=s.length;++v<g;){var h=s[v],l=n[h];(void 0===l||(0,o.A)(l,a[h])&&!d.call(n,h))&&(n[h]=f[h])}return n}))},31361:(n,e,r)=>{r.d(e,{A:( [...]
\ No newline at end of file
diff --git a/assets/js/99917b89.8c639e33.js b/assets/js/99917b89.8c639e33.js
new file mode 100644
index 000000000..89a14809a
--- /dev/null
+++ b/assets/js/99917b89.8c639e33.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8729],{20852:(e,n,a)=>{a.d(n,{A:()=>s});const s=a.p+"assets/images/diskBalancer-53a3a83a7f67ee898aa3810f693e76d0.png"},41803:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>o,contentTitle:()=>t,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"administrator-guide/operations/data-balancing/disk-balancer","title":"Disk Balancer","description":"Overview","source":"@site/docs/05-administrator [...]
\ No newline at end of file
diff --git a/assets/js/9a1ec30b.31d0d845.js b/assets/js/9a1ec30b.31d0d845.js
new file mode 100644
index 000000000..c786b405f
--- /dev/null
+++ b/assets/js/9a1ec30b.31d0d845.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2091],{4505:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>m,frontMatter:()=>c,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"user-guide/README","title":"User Guide","description":"This section provides instructions for end users to read and write data to an existing Ozone system.","source":"@site/docs/04-user-guide/README.mdx","sourceDirName":"04-user-guide","slug":"/user-guide/","p [...]
\ No newline at end of file
diff --git a/assets/js/9a5d0469.b5d426a5.js b/assets/js/9a5d0469.b5d426a5.js
new file mode 100644
index 000000000..7847d5417
--- /dev/null
+++ b/assets/js/9a5d0469.b5d426a5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[69],{62392:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>o});var s=t(30758);const a={},i=s.createContext(a);function r(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),s.createElement(i.Provider,{value:n},e.children)}},66927:(e,n,t)=>{t. [...]
\ No newline at end of file
diff --git a/assets/js/9ac4a1c9.6f6be470.js b/assets/js/9ac4a1c9.6f6be470.js
new file mode 100644
index 000000000..ded79ef6a
--- /dev/null
+++ b/assets/js/9ac4a1c9.6f6be470.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3526],{43198:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"user-guide/integrations/hue","title":"Hue","description":"TODO: File a subtask under HDDS-9858 and complete this page or section.","source":"@site/docs/04-user-guide/03-integrations/02-hue.md","sourceDirName":"04-user-guide/03-integrations","slug":"/user-guid [...]
\ No newline at end of file
diff --git a/assets/js/9ba0b85e.168f780f.js b/assets/js/9ba0b85e.168f780f.js
new file mode 100644
index 000000000..832a223f4
--- /dev/null
+++ b/assets/js/9ba0b85e.168f780f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4358],{20048:(e,a,n)=>{n.r(a),n.d(a,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>i,metadata:()=>t,toc:()=>h});const t=JSON.parse('{"id":"system-internals/components/ozone-manager/high-availability","title":"Ozone Manager High Availability","description":"Ozone has two metadata-manager nodes (Ozone Manager for key space management and Storage Container Manager for block space management) and mu [...]
\ No newline at end of file
diff --git a/assets/js/9d88772c.7ba6f0e0.js b/assets/js/9d88772c.7ba6f0e0.js
new file mode 100644
index 000000000..ebb52b764
--- /dev/null
+++ b/assets/js/9d88772c.7ba6f0e0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5847],{15941:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});const a=JSON.parse('{"id":"system-internals/data-operations/read","title":"Implementation of Read Operations","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/02-data-operations/02-read.md","sourceDirName": [...]
\ No newline at end of file
diff --git a/assets/js/9dc2a457.622b2da0.js b/assets/js/9dc2a457.622b2da0.js
new file mode 100644
index 000000000..1a0720cf6
--- /dev/null
+++ b/assets/js/9dc2a457.622b2da0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1116],{12581:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>a,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"administrator-guide/configuration/basic/directories/ozone-manager","title":"Directory Configurations for Ozone Manager","description":"This section describes the directory-related configuration properties used by Ozone Manager (OM).","source":"@site/docs/05-a [...]
\ No newline at end of file
diff --git a/assets/js/9e0208fd.5ce7852f.js b/assets/js/9e0208fd.5ce7852f.js
new file mode 100644
index 000000000..8d75a8813
--- /dev/null
+++ b/assets/js/9e0208fd.5ce7852f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6073],{62392:(e,t,n)=>{n.d(t,{R:()=>a,x:()=>o});var i=n(30758);const s={},r=i.createContext(s);function a(e){const t=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),i.createElement(r.Provider,{value:t},e.children)}},94311:(e,t,n)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/9e4087bc.3725958d.js b/assets/js/9e4087bc.3725958d.js
new file mode 100644
index 000000000..252cec580
--- /dev/null
+++ b/assets/js/9e4087bc.3725958d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2711],{59440:(e,t,r)=>{r.d(t,{i:()=>n});var a=r(84324);function n(e){void 0===e&&(e={});const{i18n:{currentLocale:t}}=(0,a.A)(),r=function(){const{i18n:{currentLocale:e,localeConfigs:t}}=(0,a.A)();return t[e].calendar}();return new Intl.DateTimeFormat(t,{calendar:r,...e})}},64971:(e,t,r)=>{r.r(t),r.d(t,{default:()=>m});r(30758);var a=r(79084),n=r(2543),s=r(76150),i=r(59440),c=r(28884),l=r(18358),o=r(86070);func [...]
\ No newline at end of file
diff --git a/assets/js/9eedadc8.9fe4da5d.js b/assets/js/9eedadc8.9fe4da5d.js
new file mode 100644
index 000000000..0e7ab042a
--- /dev/null
+++ b/assets/js/9eedadc8.9fe4da5d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[452],{62392:(e,s,n)=>{n.d(s,{R:()=>c,x:()=>a});var t=n(30758);const o={},r=t.createContext(o);function c(e){const s=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),t.createElement(r.Provider,{value:s},e.children)}},85698:(e,s,n)=>{n [...]
\ No newline at end of file
diff --git a/assets/js/9f954d78.12034106.js b/assets/js/9f954d78.12034106.js
new file mode 100644
index 000000000..eebc78bb6
--- /dev/null
+++ b/assets/js/9f954d78.12034106.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5941],{28637:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>r,contentTitle:()=>d,default:()=>m,frontMatter:()=>s,metadata:()=>a,toc:()=>c});const a=JSON.parse('{"id":"administrator-guide/operations/node-decommissioning-and-maintenance/datanodes/datanode-maintenance","title":"Datanode Maintenance Mode","description":"Maintenance mode is a feature in Apache Ozone that allows you to temporarily take a Datanode offline for mai [...]
\ No newline at end of file
diff --git a/assets/js/a28b626b.b410ea13.js b/assets/js/a28b626b.b410ea13.js
new file mode 100644
index 000000000..df8c71076
--- /dev/null
+++ b/assets/js/a28b626b.b410ea13.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3524],{5024:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"system-internals/data-integrity/container-scanner","title":"Datanode Container Scanner","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/03-data-integrity/02-container-scanner.md", [...]
\ No newline at end of file
diff --git a/assets/js/a3c78e87.4e0847f5.js b/assets/js/a3c78e87.4e0847f5.js
new file mode 100644
index 000000000..bc6c6f603
--- /dev/null
+++ b/assets/js/a3c78e87.4e0847f5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3935],{9388:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>h,frontMatter:()=>s,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"administrator-guide/configuration/high-availability/README","title":"High Availability","description":"This section covers the configuration of High Availability (HA) features in Apache Ozone.","source":"@site/docs/05-administrator-guide/02-configuration/06-hi [...]
\ No newline at end of file
diff --git a/assets/js/a4017e94.934b6a04.js b/assets/js/a4017e94.934b6a04.js
new file mode 100644
index 000000000..5847cc8b0
--- /dev/null
+++ b/assets/js/a4017e94.934b6a04.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4250],{31931:(e,t,i)=>{i.d(t,{W:()=>l});var n=i(30758),r=i(84324);const s=["zero","one","two","few","many","other"];function a(e){return s.filter((t=>e.includes(t)))}const o={locale:"en",pluralForms:a(["one","other"]),select:e=>1===e?"one":"other"};function c(){const{i18n:{currentLocale:e}}=(0,r.A)();return(0,n.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:a(t [...]
\ No newline at end of file
diff --git a/assets/js/a41d09ec.1333ce01.js b/assets/js/a41d09ec.1333ce01.js
new file mode 100644
index 000000000..ecfb73801
--- /dev/null
+++ b/assets/js/a41d09ec.1333ce01.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9969],{22484:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>m,frontMatter:()=>a,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"administrator-guide/operations/disk-replacement/README","title":"Disk Replacement","description":"This section contains instructions to replace disks on Ozone nodes.","source":"@site/docs/05-administrator-guide/03-operations/04-disk-replacement/README.mdx","s [...]
\ No newline at end of file
diff --git a/assets/js/a42f4f65.bfc83331.js b/assets/js/a42f4f65.bfc83331.js
new file mode 100644
index 000000000..e2213db25
--- /dev/null
+++ b/assets/js/a42f4f65.bfc83331.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5469],{31931:(e,t,n)=>{n.d(t,{W:()=>a});var r=n(30758),s=n(84324);const o=["zero","one","two","few","many","other"];function c(e){return o.filter((t=>e.includes(t)))}const i={locale:"en",pluralForms:c(["one","other"]),select:e=>1===e?"one":"other"};function l(){const{i18n:{currentLocale:e}}=(0,s.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:c(t [...]
\ No newline at end of file
diff --git a/assets/js/a449d252.75987ebc.js b/assets/js/a449d252.75987ebc.js
new file mode 100644
index 000000000..800c3fb30
--- /dev/null
+++ b/assets/js/a449d252.75987ebc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5086],{62392:(o,e,n)=>{n.d(e,{R:()=>c,x:()=>a});var t=n(30758);const r={},i=t.createContext(r);function c(o){const e=t.useContext(i);return t.useMemo((function(){return"function"==typeof o?o(e):{...e,...o}}),[e,o])}function a(o){let e;return e=o.disableParentContext?"function"==typeof o.components?o.components(r):o.components||r:c(o.components),t.createElement(i.Provider,{value:e},o.children)}},83899:(o,e,n)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/a4a5d40b.d304cc5e.js b/assets/js/a4a5d40b.d304cc5e.js
new file mode 100644
index 000000000..f48492365
--- /dev/null
+++ b/assets/js/a4a5d40b.d304cc5e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7212],{66021:e=>{e.exports=JSON.parse('{"tag":{"label":"erasure-coding","permalink":"/blog/tags/erasure-coding","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/erasure-coding","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/a4eb0304.b6772007.js b/assets/js/a4eb0304.b6772007.js
new file mode 100644
index 000000000..629ad07ca
--- /dev/null
+++ b/assets/js/a4eb0304.b6772007.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6874],{62392:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>a});var i=s(30758);const r={},t=i.createContext(r);function o(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(t.Provider,{value:n},e.children)}},68930:(e,n,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/a619bb62.5edffb4c.js b/assets/js/a619bb62.5edffb4c.js
new file mode 100644
index 000000000..da0d8bb0c
--- /dev/null
+++ b/assets/js/a619bb62.5edffb4c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8952],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var a=n(30758),r=n(84324);const o=["zero","one","two","few","many","other"];function i(e){return o.filter((t=>e.includes(t)))}const s={locale:"en",pluralForms:i(["one","other"]),select:e=>1===e?"one":"other"};function c(){const{i18n:{currentLocale:e}}=(0,r.A)();return(0,a.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:i(t [...]
\ No newline at end of file
diff --git a/assets/js/a6aa9e1f.57bccca3.js b/assets/js/a6aa9e1f.57bccca3.js
new file mode 100644
index 000000000..871b8935f
--- /dev/null
+++ b/assets/js/a6aa9e1f.57bccca3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7643],{12908:(e,t,a)=>{a.d(t,{A:()=>i});a(30758);var n=a(55598),s=a(63368),r=a(86070);function i(e){let{items:t,component:a=s.A}=e;return(0,r.jsx)(r.Fragment,{children:t.map((e=>{let{content:t}=e;return(0,r.jsx)(n.in,{content:t,children:(0,r.jsx)(a,{children:(0,r.jsx)(t,{})})},t.metadata.permalink)}))})}},28820:(e,t,a)=>{a.d(t,{A:()=>l});a(30758);var n=a(13526),s=a(79084);const r={tag:"tag_de0C",tagRegular:"tag [...]
\ No newline at end of file
diff --git a/assets/js/a6b116bb.453e65be.js b/assets/js/a6b116bb.453e65be.js
new file mode 100644
index 000000000..792e5ac68
--- /dev/null
+++ b/assets/js/a6b116bb.453e65be.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7488],{15494:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>a,toc:()=>c});const a=JSON.parse('{"id":"administrator-guide/operations/data-balancing/container-balancer","title":"Container Balancer","description":"Overview","source":"@site/docs/05-administrator-guide/03-operations/05-data-balancing/01-container-balancer.md","sourceDirName":"05-administrator-gui [...]
\ No newline at end of file
diff --git a/assets/js/a6e5191f.0a38bf62.js b/assets/js/a6e5191f.0a38bf62.js
new file mode 100644
index 000000000..a9db1aa5a
--- /dev/null
+++ b/assets/js/a6e5191f.0a38bf62.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[31],{62392:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>o});var r=n(30758);const i={},a=r.createContext(i);function s(e){const t=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),r.createElement(a.Provider,{value:t},e.children)}},66411:(e,t,n)=>{n. [...]
\ No newline at end of file
diff --git a/assets/js/a72fc262.56bb342e.js b/assets/js/a72fc262.56bb342e.js
new file mode 100644
index 000000000..71f6127ef
--- /dev/null
+++ b/assets/js/a72fc262.56bb342e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7544],{7284:(e,n,a)=>{a.d(n,{A:()=>t});const t=a.p+"assets/files/ApacheCoCAsia2025OzoneDiskBalancer-c38d9a13bcf99baaec9391d43c166bb1.pdf"},24037:(e,n,a)=>{a.d(n,{A:()=>t});const t=a.p+"assets/files/ApacheConAsia2022_Yan_Sammi-f5ae5f952e57dda4e2d3b15b6e41ac89.pdf"},54182:(e,n,a)=>{a.d(n,{A:()=>t});const t=a.p+"assets/files/What'sNewInApacheOzone-v3-b2e3bf484b981e091157c5dc8d10059d.pdf"},56281:(e,n,a)=>{a.d(n,{A: [...]
\ No newline at end of file
diff --git a/assets/js/a7456010.239de607.js b/assets/js/a7456010.239de607.js
new file mode 100644
index 000000000..27ea34b9d
--- /dev/null
+++ b/assets/js/a7456010.239de607.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1235],{88552:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/a78af1a6.a737f94b.js b/assets/js/a78af1a6.a737f94b.js
new file mode 100644
index 000000000..f8064e2a3
--- /dev/null
+++ b/assets/js/a78af1a6.a737f94b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2296],{27519:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>i,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"core-concepts/security/acls/README","title":"Authorization With ACLs","description":"This section covers Ozone\'s ACL support, which can be used to restrict access to different portions of the namespace once a user has authenticated with Kerberos. To configur [...]
\ No newline at end of file
diff --git a/assets/js/a7bd4aaa.6d1df8fc.js b/assets/js/a7bd4aaa.6d1df8fc.js
new file mode 100644
index 000000000..f386df825
--- /dev/null
+++ b/assets/js/a7bd4aaa.6d1df8fc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7098],{11148:(n,e,s)=>{s.r(e),s.d(e,{default:()=>d});s(30758);var r=s(76150),o=s(20416),t=s(59870),i=s(70389),c=s(83551),u=s(86070);function a(n){const{version:e}=n;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(c.A,{version:e.version,tag:(0,o.k)(e.pluginId,e.version)}),(0,u.jsx)(r.be,{children:e.noIndex&&(0,u.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function l(n){const{version:e,route:s} [...]
\ No newline at end of file
diff --git a/assets/js/a8602d45.5b9a17c1.js b/assets/js/a8602d45.5b9a17c1.js
new file mode 100644
index 000000000..64e61b88a
--- /dev/null
+++ b/assets/js/a8602d45.5b9a17c1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6205],{5014:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>a});const r=JSON.parse('{"id":"developer-guide/run/intellij","title":"Running Ozone From Intellij","description":"TODO: File a subtask under HDDS-9861 and complete this page or section.","source":"@site/docs/08-developer-guide/02-run/01-intellij.md","sourceDirName":"08-developer-guide/02-ru [...]
\ No newline at end of file
diff --git a/assets/js/a943e576.0956f608.js b/assets/js/a943e576.0956f608.js
new file mode 100644
index 000000000..509a01596
--- /dev/null
+++ b/assets/js/a943e576.0956f608.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5175],{53578:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>a,toc:()=>d});const a=JSON.parse('{"id":"core-concepts/namespace/keys/overview","title":"Keys","description":"What is a Key?","source":"@site/docs/03-core-concepts/03-namespace/03-keys/01-overview.md","sourceDirName":"03-core-concepts/03-namespace/03-keys","slug":"/core-concepts/namespace/keys/overv [...]
\ No newline at end of file
diff --git a/assets/js/a94703ab.1a468acd.js b/assets/js/a94703ab.1a468acd.js
new file mode 100644
index 000000000..01a15599e
--- /dev/null
+++ b/assets/js/a94703ab.1a468acd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9048],{1835:(e,t,n)=>{n.d(t,{A:()=>r});n(30758);var a=n(13526),o=n(2543),s=n(18358),i=n(86070);function r(e){let{className:t}=e;return(0,i.jsx)("main",{className:(0,a.A)("container margin-vert--xl",t),children:(0,i.jsx)("div",{className:"row",children:(0,i.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,i.jsx)(s.A,{as:"h1",className:"hero__title",children:(0,i.jsx)(o.A,{id:"theme.NotFound.title", [...]
\ No newline at end of file
diff --git a/assets/js/aa18c9ef.952703c2.js b/assets/js/aa18c9ef.952703c2.js
new file mode 100644
index 000000000..64207732f
--- /dev/null
+++ b/assets/js/aa18c9ef.952703c2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3891],{21692:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"troubleshooting/rocksdb","title":"Troubleshooting RocksDB","description":"TODO: File a subtask under HDDS-9860 and complete this page or section.","source":"@site/docs/06-troubleshooting/14-rocksdb.md","sourceDirName":"06-troubleshooting","slug":"/troubleshoo [...]
\ No newline at end of file
diff --git a/assets/js/aa732369.3bd6cfa8.js b/assets/js/aa732369.3bd6cfa8.js
new file mode 100644
index 000000000..8299d17ef
--- /dev/null
+++ b/assets/js/aa732369.3bd6cfa8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4257],{51542:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>s,default:()=>u,frontMatter:()=>o,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"administrator-guide/operations/observability/distributed-tracing","title":"Distributed tracing","description":"Distributed tracing can help to understand performance bottleneck with visualizing end-to-end performance.","source":"@site/docs/05-administrator-gu [...]
\ No newline at end of file
diff --git a/assets/js/aacf565e.6cc7b599.js b/assets/js/aacf565e.6cc7b599.js
new file mode 100644
index 000000000..08d69fdbd
--- /dev/null
+++ b/assets/js/aacf565e.6cc7b599.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1338],{44150:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"system-internals/replication/data/containers/offline-reconstruction","title":"Container Reconstruction","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/04-replication/02-data/02- [...]
\ No newline at end of file
diff --git a/assets/js/aba21aa0.ec0bcc62.js b/assets/js/aba21aa0.ec0bcc62.js
new file mode 100644
index 000000000..e1043ff0b
--- /dev/null
+++ b/assets/js/aba21aa0.ec0bcc62.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5742],{27093:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/ac391ad5.752ebaab.js b/assets/js/ac391ad5.752ebaab.js
new file mode 100644
index 000000000..0449ada6f
--- /dev/null
+++ b/assets/js/ac391ad5.752ebaab.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7560],{3586:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>c,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"core-concepts/namespace/buckets/owners","title":"Bucket Owners","description":"1. Overview","source":"@site/docs/03-core-concepts/03-namespace/02-buckets/02-owners.md","sourceDirName":"03-core-concepts/03-namespace/02-buckets","slug":"/core-concepts/namespace/ [...]
\ No newline at end of file
diff --git a/assets/js/acecf23e.24c84ed0.js b/assets/js/acecf23e.24c84ed0.js
new file mode 100644
index 000000000..608b76421
--- /dev/null
+++ b/assets/js/acecf23e.24c84ed0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1903],{1912:s=>{s.exports=JSON.parse('{"blogBasePath":"/blog","blogTitle":"Blog","authorsListPath":"/blog/authors"}')}}]);
\ No newline at end of file
diff --git a/assets/js/ad3cb989.a04ccdd1.js b/assets/js/ad3cb989.a04ccdd1.js
new file mode 100644
index 000000000..1b8953abb
--- /dev/null
+++ b/assets/js/ad3cb989.a04ccdd1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5916],{62392:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>i});var s=n(30758);const a={},r=s.createContext(a);function o(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),s.createElement(r.Provider,{value:t},e.children)}},87111:(e,t,n)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/ad4e1843.67e529cd.js b/assets/js/ad4e1843.67e529cd.js
new file mode 100644
index 000000000..464584c4e
--- /dev/null
+++ b/assets/js/ad4e1843.67e529cd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2113],{21483:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/ReconHighLevelDesign-2616251c073fa1d9c9e8ec7d07c9da5b.png"},38790:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"core-concepts/architecture/recon","title":"Recon","description":"Recon serves as a management and monitoring console for Ozone. It gives a [...]
\ No newline at end of file
diff --git a/assets/js/adb89cc2.21240e05.js b/assets/js/adb89cc2.21240e05.js
new file mode 100644
index 000000000..dacedd045
--- /dev/null
+++ b/assets/js/adb89cc2.21240e05.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5221],{24580:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>a,contentTitle:()=>i,default:()=>d,frontMatter:()=>c,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"core-concepts/security/kerberos","title":"Authentication with Kerberos","description":"TODO: File a subtask under HDDS-9857 and complete this page or section.","source":"@site/docs/03-core-concepts/04-security/01-kerberos.md","sourceDirName":"03-core-concepts [...]
\ No newline at end of file
diff --git a/assets/js/ae1695c8.f87a8907.js b/assets/js/ae1695c8.f87a8907.js
new file mode 100644
index 000000000..d13f529f7
--- /dev/null
+++ b/assets/js/ae1695c8.f87a8907.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8003],{31931:(e,t,n)=>{n.d(t,{W:()=>a});var s=n(30758),r=n(84324);const o=["zero","one","two","few","many","other"];function i(e){return o.filter((t=>e.includes(t)))}const c={locale:"en",pluralForms:i(["one","other"]),select:e=>1===e?"one":"other"};function l(){const{i18n:{currentLocale:e}}=(0,r.A)();return(0,s.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:i(t [...]
\ No newline at end of file
diff --git a/assets/js/ae6e62f6.ec1361ef.js b/assets/js/ae6e62f6.ec1361ef.js
new file mode 100644
index 000000000..72002cb18
--- /dev/null
+++ b/assets/js/ae6e62f6.ec1361ef.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4822],{28947:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>p,frontMatter:()=>l,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"developer-guide/build/maven","title":"Building Ozone With Maven","description":"This guide explains how to build Apache Ozone from source using Maven and prepare it for deployment.","source":"@site/docs/08-developer-guide/01-build/01-maven.md","sourceDirName" [...]
\ No newline at end of file
diff --git a/assets/js/af6e0c44.f9b30ef0.js b/assets/js/af6e0c44.f9b30ef0.js
new file mode 100644
index 000000000..84c76ad2e
--- /dev/null
+++ b/assets/js/af6e0c44.f9b30ef0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7958],{10674:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>d,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"system-internals/security/kerberos","title":"How Ozone Uses Kerberos","description":"1. Kerberos","source":"@site/docs/07-system-internals/05-security/01-kerberos.md","sourceDirName":"07-system-internals/05-security","slug":"/system-internals/security/kerbero [...]
\ No newline at end of file
diff --git a/assets/js/afe08b72.cde1aa81.js b/assets/js/afe08b72.cde1aa81.js
new file mode 100644
index 000000000..6caa43520
--- /dev/null
+++ b/assets/js/afe08b72.cde1aa81.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3784],{47111:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>h,frontMatter:()=>o,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"administrator-guide/installation/initializing-cluster","title":"Initializing Cluster","description":"After installing the binaries, the next step is to initialize the cluster. This section provides instructions on how to initialize a new Ozone cluster.","sour [...]
\ No newline at end of file
diff --git a/assets/js/b05a4210.9a7a0d75.js b/assets/js/b05a4210.9a7a0d75.js
new file mode 100644
index 000000000..ebbad43b9
--- /dev/null
+++ b/assets/js/b05a4210.9a7a0d75.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3550],{62392:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var r=t(30758);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}},63617:(e,n,t)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/b0c41062.95d75ba9.js b/assets/js/b0c41062.95d75ba9.js
new file mode 100644
index 000000000..c692a2ef8
--- /dev/null
+++ b/assets/js/b0c41062.95d75ba9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6199],{49047:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>t,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"administrator-guide/operations/leader-transfer/ozone-manager","title":"Ozone Manager Leader Transfer","description":"The ozone admin om transfer command allows you to manually transfer the leadership of the Ozone Manager (OM) Raft group to a specific OM node [...]
\ No newline at end of file
diff --git a/assets/js/b1024aea.c63c77c5.js b/assets/js/b1024aea.c63c77c5.js
new file mode 100644
index 000000000..fbda79df1
--- /dev/null
+++ b/assets/js/b1024aea.c63c77c5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1293],{45974:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>s,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"administrator-guide/operations/observability/cli","title":"CLI","description":"ozone insight","source":"@site/docs/05-administrator-guide/03-operations/09-observability/01-cli.md","sourceDirName":"05-administrator-guide/03-operations/09-observability","slug": [...]
\ No newline at end of file
diff --git a/assets/js/b13b3b2b.3062ba3a.js b/assets/js/b13b3b2b.3062ba3a.js
new file mode 100644
index 000000000..ce8bbff87
--- /dev/null
+++ b/assets/js/b13b3b2b.3062ba3a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2252],{62392:(e,t,n)=>{n.d(t,{R:()=>c,x:()=>i});var s=n(30758);const r={},o=s.createContext(r);function c(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),s.createElement(o.Provider,{value:t},e.children)}},74197:(e,t,n)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/b2f4eabe.ec019a1f.js b/assets/js/b2f4eabe.ec019a1f.js
new file mode 100644
index 000000000..bf286b2fc
--- /dev/null
+++ b/assets/js/b2f4eabe.ec019a1f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3664],{37880:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"developer-guide/test/integration-tests","title":"Integration Tests","description":"TODO: File a subtask under HDDS-9861 and complete this page or section.","source":"@site/docs/08-developer-guide/03-test/02-integration-tests.md","sourceDirName":"08-developer- [...]
\ No newline at end of file
diff --git a/assets/js/b48a78fc.9becf1d0.js b/assets/js/b48a78fc.9becf1d0.js
new file mode 100644
index 000000000..7c07a42bb
--- /dev/null
+++ b/assets/js/b48a78fc.9becf1d0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7632],{62392:(e,t,o)=>{o.d(t,{R:()=>a,x:()=>r});var n=o(30758);const s={},i=n.createContext(s);function a(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),n.createElement(i.Provider,{value:t},e.children)}},72239:(e,t,o)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/b4e94af8.99b69895.js b/assets/js/b4e94af8.99b69895.js
new file mode 100644
index 000000000..10fe261ad
--- /dev/null
+++ b/assets/js/b4e94af8.99b69895.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8908],{4398:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>a,default:()=>c,frontMatter:()=>i,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"type":"mdx","permalink":"/roadmap","source":"@site/src/pages/roadmap.md","title":"Roadmap","description":"These release names are based on US national parks, and for every minor release, we also move to the next letter for the release code name.","frontMatter":{}," [...]
\ No newline at end of file
diff --git a/assets/js/b72f7105.2ac442bd.js b/assets/js/b72f7105.2ac442bd.js
new file mode 100644
index 000000000..d62d3f432
--- /dev/null
+++ b/assets/js/b72f7105.2ac442bd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[359],{26980:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>r,metadata:()=>a,toc:()=>l});const a=JSON.parse('{"id":"user-guide/client-interfaces/java-client-api","title":"Java Client API","description":"The Apache Ozone Java Client API provides programmatic access to Ozone storage.","source":"@site/docs/04-user-guide/01-client-interfaces/06-java-client-api.md","sourceDirNam [...]
\ No newline at end of file
diff --git a/assets/js/b9495bc0.705c3e6c.js b/assets/js/b9495bc0.705c3e6c.js
new file mode 100644
index 000000000..e06a28471
--- /dev/null
+++ b/assets/js/b9495bc0.705c3e6c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2089],{31931:(e,t,r)=>{r.d(t,{W:()=>l});var n=r(30758),s=r(84324);const o=["zero","one","two","few","many","other"];function i(e){return o.filter((t=>e.includes(t)))}const a={locale:"en",pluralForms:i(["one","other"]),select:e=>1===e?"one":"other"};function c(){const{i18n:{currentLocale:e}}=(0,s.A)();return(0,n.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:i(t [...]
\ No newline at end of file
diff --git a/assets/js/b9c121dc.05758913.js b/assets/js/b9c121dc.05758913.js
new file mode 100644
index 000000000..34edd7fd1
--- /dev/null
+++ b/assets/js/b9c121dc.05758913.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2524],{56262:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>c,frontMatter:()=>r,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"administrator-guide/operations/upgrade-and-downgrade","title":"Upgrade and Downgrade","description":"Ozone supports non-rolling upgrades and downgrades, where all components are stopped first, and then restarted with the upgraded or downgraded versions.","sou [...]
\ No newline at end of file
diff --git a/assets/js/bb0ddf3e.e6cf28e5.js b/assets/js/bb0ddf3e.e6cf28e5.js
new file mode 100644
index 000000000..7f3e5d165
--- /dev/null
+++ b/assets/js/bb0ddf3e.e6cf28e5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7877],{61181:s=>{s.exports=JSON.parse('{"tag":{"label":"user-stories","permalink":"/blog/tags/user-stories","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/user-stories","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/bc642695.65393d1e.js b/assets/js/bc642695.65393d1e.js
new file mode 100644
index 000000000..a43986bde
--- /dev/null
+++ b/assets/js/bc642695.65393d1e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9750],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var r=n(30758),s=n(84324);const o=["zero","one","two","few","many","other"];function i(e){return o.filter((t=>e.includes(t)))}const a={locale:"en",pluralForms:i(["one","other"]),select:e=>1===e?"one":"other"};function c(){const{i18n:{currentLocale:e}}=(0,s.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:i(t [...]
\ No newline at end of file
diff --git a/assets/js/bf390970.7dda1a04.js b/assets/js/bf390970.7dda1a04.js
new file mode 100644
index 000000000..b102ef86a
--- /dev/null
+++ b/assets/js/bf390970.7dda1a04.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6743],{17196:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>m,frontMatter:()=>o,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"system-internals/components/storage-container-manager/startup-sequence","title":"Storage Container Manager Startup Sequence","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-co [...]
\ No newline at end of file
diff --git a/assets/js/c043e62a.02614b4d.js b/assets/js/c043e62a.02614b4d.js
new file mode 100644
index 000000000..9be94f9b2
--- /dev/null
+++ b/assets/js/c043e62a.02614b4d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5271],{62392:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>c});var s=n(30758);const i={},o=s.createContext(i);function r(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:t},e.children)}},74676:(e,t,n)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/c141421f.e437406c.js b/assets/js/c141421f.e437406c.js
new file mode 100644
index 000000000..016816183
--- /dev/null
+++ b/assets/js/c141421f.e437406c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[957],{18555:e=>{e.exports=JSON.parse('{"name":"docusaurus-theme-search-algolia","id":"default"}')}}]);
\ No newline at end of file
diff --git a/assets/js/c15d9823.edd1c34a.js b/assets/js/c15d9823.edd1c34a.js
new file mode 100644
index 000000000..dd3b28d3e
--- /dev/null
+++ b/assets/js/c15d9823.edd1c34a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8146],{29328:e=>{e.exports=JSON.parse('{"metadata":{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":1,"totalCount":4,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/c1cc9167.7d38f54a.js b/assets/js/c1cc9167.7d38f54a.js
new file mode 100644
index 000000000..b6ce544b2
--- /dev/null
+++ b/assets/js/c1cc9167.7d38f54a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1090],{62392:(e,r,a)=>{a.d(r,{R:()=>s,x:()=>i});var n=a(30758);const t={},o=n.createContext(t);function s(e){const r=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function i(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),n.createElement(o.Provider,{value:r},e.children)}},90932:(e,r,a)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/c1de0536.b0cdcd5e.js b/assets/js/c1de0536.b0cdcd5e.js
new file mode 100644
index 000000000..bbbb006ea
--- /dev/null
+++ b/assets/js/c1de0536.b0cdcd5e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5876],{33704:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>r,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"user-guide/client-interfaces/s3a","title":"s3a and Ozone","description":"Ozone exposes an S3-compatible REST interface via the S3 Gateway. Hadoop\'s S3A filesystem (s3a://) is a cloud connector that translates the AWS S3 API into a Hadoop-compatible file syst [...]
\ No newline at end of file
diff --git a/assets/js/c3e3ddca.a15e9703.js b/assets/js/c3e3ddca.a15e9703.js
new file mode 100644
index 000000000..53b837a2f
--- /dev/null
+++ b/assets/js/c3e3ddca.a15e9703.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9737],{60172:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>a,contentTitle:()=>c,default:()=>u,frontMatter:()=>i,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"troubleshooting/docker","title":"Troubleshooting Ozone in Docker","description":"TODO: File a subtask under HDDS-9860 and complete this page or section.","source":"@site/docs/06-troubleshooting/15-docker.md","sourceDirName":"06-troubleshooting","slug":"/troub [...]
\ No newline at end of file
diff --git a/assets/js/c4168ebf.cda9180d.js b/assets/js/c4168ebf.cda9180d.js
new file mode 100644
index 000000000..73af1cb9d
--- /dev/null
+++ b/assets/js/c4168ebf.cda9180d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9490],{62392:(e,n,t)=>{t.d(n,{R:()=>c,x:()=>a});var r=t(30758);const i={},o=r.createContext(i);function c(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),r.createElement(o.Provider,{value:n},e.children)}},70793:(e,n,t)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/c451e248.53d809fb.js b/assets/js/c451e248.53d809fb.js
new file mode 100644
index 000000000..73f26dbcb
--- /dev/null
+++ b/assets/js/c451e248.53d809fb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6733],{55996:(e,s,r)=>{r.r(s),r.d(s,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>a,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"core-concepts/namespace/overview","title":"Overview of Ozone\'s Namespace","description":"Apache Ozone organizes data in a three-level hierarchy: Volumes, Buckets, and Keys. This structure provides a flexible and scalable way to manage large datasets, similar [...]
\ No newline at end of file
diff --git a/assets/js/c4f5d8e4.5b8562a6.js b/assets/js/c4f5d8e4.5b8562a6.js
new file mode 100644
index 000000000..78ac278d4
--- /dev/null
+++ b/assets/js/c4f5d8e4.5b8562a6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2634],{442:(i,e,t)=>{t.r(e),t.d(e,{default:()=>j});var o,g,a=t(30758),s=t(84324),n=t(28884);function A(){return A=Object.assign?Object.assign.bind():function(i){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var o in t)({}).hasOwnProperty.call(t,o)&&(i[o]=t[o])}return i},A.apply(null,arguments)}const c=i=>{let{title:e,titleId:t,...s}=i;return a.createElement("svg",A({xmlns:"http://www.w3.org/2000/sv [...]
\ No newline at end of file
diff --git a/assets/js/c4f6336c.8ca51bf7.js b/assets/js/c4f6336c.8ca51bf7.js
new file mode 100644
index 000000000..0ab5cfabd
--- /dev/null
+++ b/assets/js/c4f6336c.8ca51bf7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4933],{62392:(e,s,n)=>{n.d(s,{R:()=>c,x:()=>a});var t=n(30758);const r={},i=t.createContext(r);function c(e){const s=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),t.createElement(i.Provider,{value:s},e.children)}},69886:(e,s,n)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/c598a0a7.112a4d9e.js b/assets/js/c598a0a7.112a4d9e.js
new file mode 100644
index 000000000..cd20fea88
--- /dev/null
+++ b/assets/js/c598a0a7.112a4d9e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3547],{62392:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>r});var o=s(30758);const t={},a=o.createContext(t);function i(e){const n=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),o.createElement(a.Provider,{value:n},e.children)}},63186:(e,n,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/c60c2d34.10e2f11f.js b/assets/js/c60c2d34.10e2f11f.js
new file mode 100644
index 000000000..879a4e723
--- /dev/null
+++ b/assets/js/c60c2d34.10e2f11f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[660],{40475:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>t,toc:()=>l});const t=JSON.parse('{"id":"system-internals/replication/data/containers/replication","title":"Container Replication","description":"Overview","source":"@site/docs/07-system-internals/04-replication/02-data/02-containers/08-replication.md","sourceDirName":"07-system-internals/04-replicat [...]
\ No newline at end of file
diff --git a/assets/js/c851fb37.35c3c38b.js b/assets/js/c851fb37.35c3c38b.js
new file mode 100644
index 000000000..65f536c49
--- /dev/null
+++ b/assets/js/c851fb37.35c3c38b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[574],{62392:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>c});var s=t(30758);const o={},r=s.createContext(o);function a(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),s.createElement(r.Provider,{value:n},e.children)}},96858:(e,n,t)=>{t [...]
\ No newline at end of file
diff --git a/assets/js/c87c95f9.9392dc5b.js b/assets/js/c87c95f9.9392dc5b.js
new file mode 100644
index 000000000..ef3d1599f
--- /dev/null
+++ b/assets/js/c87c95f9.9392dc5b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3101],{30055:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"system-internals/components/client/jars","title":"Client Jars","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/06-client/03-jars.md","sourceDirName":"07-system-inte [...]
\ No newline at end of file
diff --git a/assets/js/c914fcd3.07416afe.js b/assets/js/c914fcd3.07416afe.js
new file mode 100644
index 000000000..79560b827
--- /dev/null
+++ b/assets/js/c914fcd3.07416afe.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9818],{62392:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>o});var s=n(30758);const r={},a=s.createContext(r);function i(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),s.createElement(a.Provider,{value:t},e.children)}},97051:(e,t,n)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/c9cac9d9.df71a81e.js b/assets/js/c9cac9d9.df71a81e.js
new file mode 100644
index 000000000..4851cabf7
--- /dev/null
+++ b/assets/js/c9cac9d9.df71a81e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4918],{10371:e=>{e.exports=JSON.parse('{"tag":{"label":"release","permalink":"/blog/tags/release","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/release","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/c9d58a7e.72d69da4.js b/assets/js/c9d58a7e.72d69da4.js
new file mode 100644
index 000000000..ce107a5b6
--- /dev/null
+++ b/assets/js/c9d58a7e.72d69da4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9159],{26907:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>l,frontMatter:()=>o,metadata:()=>n,toc:()=>h});const n=JSON.parse('{"type":"mdx","permalink":"/community/who-uses-ozone","source":"@site/src/pages/community/who-uses-ozone.md","title":"Who Uses Ozone?","description":"This page lists organizations that are using Apache Ozone in production or for significant projects. If your organiz [...]
\ No newline at end of file
diff --git a/assets/js/ca9e37bc.d84350d3.js b/assets/js/ca9e37bc.d84350d3.js
new file mode 100644
index 000000000..8efdc2630
--- /dev/null
+++ b/assets/js/ca9e37bc.d84350d3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7026],{3529:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>p,frontMatter:()=>r,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"administrator-guide/operations/tools/ozone-admin","title":"Ozone Admin","description":"ozone admin command is a collection of tools intended to be used only by admins.","source":"@site/docs/05-administrator-guide/03-operations/11-tools/02-ozone-admin.md","sour [...]
\ No newline at end of file
diff --git a/assets/js/cac6b926.38afd68f.js b/assets/js/cac6b926.38afd68f.js
new file mode 100644
index 000000000..84350a2b7
--- /dev/null
+++ b/assets/js/cac6b926.38afd68f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4715],{46838:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>u,frontMatter:()=>r,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"system-internals/components/datanode/disk-layout","title":"Datanode Disk Layout","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/03-datanode/01-disk-layout.md","sou [...]
\ No newline at end of file
diff --git a/assets/js/cb5fd5c7.394eb532.js b/assets/js/cb5fd5c7.394eb532.js
new file mode 100644
index 000000000..bf726c187
--- /dev/null
+++ b/assets/js/cb5fd5c7.394eb532.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4438],{39994:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"administrator-guide/operations/tools/ozone-debug/debug-replicas","title":"Debug Replicas","description":"Debug commands for retrieving information and performing various checks on the key replicas in Datanodes.","source":"@site/docs/05-administrator-guide/03- [...]
\ No newline at end of file
diff --git a/assets/js/ccb5e6de.e7b2a2d2.js b/assets/js/ccb5e6de.e7b2a2d2.js
new file mode 100644
index 000000000..c4a195da8
--- /dev/null
+++ b/assets/js/ccb5e6de.e7b2a2d2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5650],{55193:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"administrator-guide/operations/tools/ozone-debug/container-replica-debugger-tool","title":"Container Replica Debugger Tool","description":"The tool processes container log files from Ozone Datanodes to track state transitions. It provides CLI commands for que [...]
\ No newline at end of file
diff --git a/assets/js/ccb77ba8.8b42196e.js b/assets/js/ccb77ba8.8b42196e.js
new file mode 100644
index 000000000..0805bc1de
--- /dev/null
+++ b/assets/js/ccb77ba8.8b42196e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2816],{62392:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>s});var i=t(30758);const r={},a=i.createContext(r);function o(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(a.Provider,{value:n},e.children)}},93964:(e,n,t)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/ccc49370.590bd82f.js b/assets/js/ccc49370.590bd82f.js
new file mode 100644
index 000000000..a43f5c2fb
--- /dev/null
+++ b/assets/js/ccc49370.590bd82f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3249],{15618:(e,t,n)=>{n.d(t,{A:()=>c});n(30758);var a=n(13526),s=n(48862),i=n(69697),r=n(10868),l=n(86070);function o(e){let{className:t}=e;return(0,l.jsx)(r.A,{type:"caution",title:(0,l.jsx)(s.Rc,{}),className:(0,a.A)(t,i.G.common.unlistedBanner),children:(0,l.jsx)(s.Uh,{})})}function c(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.AE,{}),(0,l.jsx)(o,{...e})]})}},25846:(e,t,n)=>{n.d(t,{A:()=>x});var a [...]
\ No newline at end of file
diff --git a/assets/js/cfcf96c5.3498fa1a.js b/assets/js/cfcf96c5.3498fa1a.js
new file mode 100644
index 000000000..f682fae7e
--- /dev/null
+++ b/assets/js/cfcf96c5.3498fa1a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5230],{62392:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>c});var s=t(30758);const o={},i=s.createContext(o);function r(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(i.Provider,{value:n},e.children)}},71154:(e,n,t)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/cfda822c.65cd7e4a.js b/assets/js/cfda822c.65cd7e4a.js
new file mode 100644
index 000000000..b538c9d44
--- /dev/null
+++ b/assets/js/cfda822c.65cd7e4a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8266],{11238:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>c,frontMatter:()=>a,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"administrator-guide/operations/tools/ozone-debug/ratis-log-parser","title":"Ratis Log Parser","description":"The Ratis log parser tool takes a segment file as input and gives a human-readable output.","source":"@site/docs/05-administrator-guide/03-operations/ [...]
\ No newline at end of file
diff --git a/assets/js/d062734b.c5f21e2f.js b/assets/js/d062734b.c5f21e2f.js
new file mode 100644
index 000000000..b706312db
--- /dev/null
+++ b/assets/js/d062734b.c5f21e2f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9027],{3168:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>m,frontMatter:()=>c,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"administrator-guide/configuration/basic/README","title":"Basic Ozone Configuration","description":"This section documents the minimal set of configurations required for Ozone to run.","source":"@site/docs/05-administrator-guide/02-configuration/01-basic/README [...]
\ No newline at end of file
diff --git a/assets/js/d27179cb.6d0ef49a.js b/assets/js/d27179cb.6d0ef49a.js
new file mode 100644
index 000000000..78a78e757
--- /dev/null
+++ b/assets/js/d27179cb.6d0ef49a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7034],{8264:(e,i,n)=>{n.d(i,{A:()=>t});const t="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJJY29ucyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKICAgICB2aWV3Qm94PSIwIDAgMjguOCAyOC44IiB3aWR0aD0iOTAiIGhlaWdodD0iOTAiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxs [...]
\ No newline at end of file
diff --git a/assets/js/d28084b4.86a6be4a.js b/assets/js/d28084b4.86a6be4a.js
new file mode 100644
index 000000000..8e47a5a72
--- /dev/null
+++ b/assets/js/d28084b4.86a6be4a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8651],{18563:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/releases-2.1.0-68b6a727871557b86b2c96dad9100d98.jpg"},62392:(e,s,n)=>{n.d(s,{R:()=>o,x:()=>t});var i=n(30758);const r={},a=i.createContext(r);function o(e){const s=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function t(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e [...]
\ No newline at end of file
diff --git a/assets/js/d28c1238.4474da8b.js b/assets/js/d28c1238.4474da8b.js
new file mode 100644
index 000000000..8c92796db
--- /dev/null
+++ b/assets/js/d28c1238.4474da8b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4010],{11726:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"administrator-guide/operations/node-decommissioning-and-maintenance/datanodes/datanode-decommission","title":"Datanode Decommission","description":"The Datanode decommission is the process that removes the existing Datanode from the Ozone cluster while ensuri [...]
\ No newline at end of file
diff --git a/assets/js/d426dfb0.30581de6.js b/assets/js/d426dfb0.30581de6.js
new file mode 100644
index 000000000..bd0406869
--- /dev/null
+++ b/assets/js/d426dfb0.30581de6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4043],{25261:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"system-internals/replication/data/containers/destruction","title":"Container Deletion","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/04-replication/02-data/02-containers/07-des [...]
\ No newline at end of file
diff --git a/assets/js/d4a76a9e.bd2372b5.js b/assets/js/d4a76a9e.bd2372b5.js
new file mode 100644
index 000000000..ac684162c
--- /dev/null
+++ b/assets/js/d4a76a9e.bd2372b5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1194],{802:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>i,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"troubleshooting/integrations/placeholder","title":"PLACEHOLDER","description":"TODO: File a subtask under HDDS-9860 and complete this page or section.","source":"@site/docs/06-troubleshooting/07-integrations/01-placeholder.md","sourceDirName":"06-troubleshootin [...]
\ No newline at end of file
diff --git a/assets/js/d4e1b2cd.e41bbccf.js b/assets/js/d4e1b2cd.e41bbccf.js
new file mode 100644
index 000000000..6805bc2de
--- /dev/null
+++ b/assets/js/d4e1b2cd.e41bbccf.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2980],{31708:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>t,toc:()=>c});var t=o(82813),a=o(86070),r=o(62392);const s={title:"Apache Ozone 2.0.0 Release",date:new Date("2025-04-30T00:00:00.000Z"),authors:["apache-ozone-community"],tags:["release","ozone-2.0.0"]},i=void 0,l={authorsImageUrls:[void 0]},c=[];function p(e){const n={a:"a",li:"li",p:"p",ul:"ul",. [...]
\ No newline at end of file
diff --git a/assets/js/d5269aa9.9e67bb92.js b/assets/js/d5269aa9.9e67bb92.js
new file mode 100644
index 000000000..4001a6a26
--- /dev/null
+++ b/assets/js/d5269aa9.9e67bb92.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9018],{62392:(e,t,i)=>{i.d(t,{R:()=>r,x:()=>c});var n=i(30758);const s={},o=n.createContext(s);function r(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),n.createElement(o.Provider,{value:t},e.children)}},66716:(e,t,i)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/d58885c7.b72296de.js b/assets/js/d58885c7.b72296de.js
new file mode 100644
index 000000000..5b84c63c5
--- /dev/null
+++ b/assets/js/d58885c7.b72296de.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6441],{49144:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>t,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});const a=JSON.parse('{"id":"administrator-guide/configuration/high-availability/om-ha","title":"Ozone Manager High Availability","description":"Ozone Manager (OM) High Availability ensures that there is no single point of failure for the metadata-manager node responsible for key space m [...]
\ No newline at end of file
diff --git a/assets/js/d5a63f77.61eab06e.js b/assets/js/d5a63f77.61eab06e.js
new file mode 100644
index 000000000..c2aaa24cd
--- /dev/null
+++ b/assets/js/d5a63f77.61eab06e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4830],{24570:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>d,default:()=>u,frontMatter:()=>o,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"developer-guide/test/unit-tests","title":"Unit Tests","description":"TODO: File a subtask under HDDS-9861 and complete this page or section.","source":"@site/docs/08-developer-guide/03-test/01-unit-tests.md","sourceDirName":"08-developer-guide/03-test","slug" [...]
\ No newline at end of file
diff --git a/assets/js/d6b065ff.dd707a36.js b/assets/js/d6b065ff.dd707a36.js
new file mode 100644
index 000000000..a72492ae4
--- /dev/null
+++ b/assets/js/d6b065ff.dd707a36.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9728],{62392:(t,e,i)=>{i.d(e,{R:()=>r,x:()=>s});var n=i(30758);const a={},o=n.createContext(a);function r(t){const e=n.useContext(o);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:r(t.components),n.createElement(o.Provider,{value:e},t.children)}},88335:(t,e,i)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/d70d497d.5332dca2.js b/assets/js/d70d497d.5332dca2.js
new file mode 100644
index 000000000..f7e341266
--- /dev/null
+++ b/assets/js/d70d497d.5332dca2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5756],{40913:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var s=a(66086),i=a(86070),t=a(62392);const o={title:"No More Hotspots: Introducing the Automatic Disk Balancer in Apache Ozone",authors:["apache-ozone-community","jojochuang","0lai0","Gargi-jais11"],date:new Date("2026-01-29T00:00:00.000Z"),tags:["Ozone","Disk Balancer","Ozone 2.2","Da [...]
\ No newline at end of file
diff --git a/assets/js/d833f931.8623a72a.js b/assets/js/d833f931.8623a72a.js
new file mode 100644
index 000000000..55ec410b8
--- /dev/null
+++ b/assets/js/d833f931.8623a72a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6638],{3223:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>c,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"user-guide/integrations/README","title":"Integrating Ozone Storage With Other Systems","description":"This section provides instructions to configure other systems to use Ozone for storage.","source":"@site/docs/04-user-guide/03-integrations/README.mdx","sourc [...]
\ No newline at end of file
diff --git a/assets/js/d9dd3c84.8c4ec4ee.js b/assets/js/d9dd3c84.8c4ec4ee.js
new file mode 100644
index 000000000..2f8b67bf4
--- /dev/null
+++ b/assets/js/d9dd3c84.8c4ec4ee.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9e3],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var r=n(30758),a=n(84324);const i=["zero","one","two","few","many","other"];function s(e){return i.filter((t=>e.includes(t)))}const o={locale:"en",pluralForms:s(["one","other"]),select:e=>1===e?"one":"other"};function c(){const{i18n:{currentLocale:e}}=(0,a.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:s(t. [...]
\ No newline at end of file
diff --git a/assets/js/dd0cb4d0.03ad0ef1.js b/assets/js/dd0cb4d0.03ad0ef1.js
new file mode 100644
index 000000000..f730f2bbb
--- /dev/null
+++ b/assets/js/dd0cb4d0.03ad0ef1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6338],{29768:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>p,frontMatter:()=>a,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"core-concepts/replication/README","title":"Data and Metadata Replication","description":"This section describes how data and metadata are replicated consistently within Ozone.","source":"@site/docs/03-core-concepts/02-replication/README.mdx","sourceDirName":" [...]
\ No newline at end of file
diff --git a/assets/js/dd7af807.658fe970.js b/assets/js/dd7af807.658fe970.js
new file mode 100644
index 000000000..590bb5176
--- /dev/null
+++ b/assets/js/dd7af807.658fe970.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7742],{47348:(e,n,o)=>{o.d(n,{A:()=>t});const t=o.p+"assets/images/ContainerMetadata-0e1d6fbd9172fdd064e4b1623db13b28.png"},50128:(e,n,o)=>{o.d(n,{A:()=>t});const t="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJ4AAAB+CAYAAADVwaj5AAAABGdBTUEAALGPC/xhBQAAAVlpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi [...]
\ No newline at end of file
diff --git a/assets/js/ddb4e1f1.813d3ebf.js b/assets/js/ddb4e1f1.813d3ebf.js
new file mode 100644
index 000000000..909876509
--- /dev/null
+++ b/assets/js/ddb4e1f1.813d3ebf.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7948],{62392:(e,n,s)=>{s.d(n,{R:()=>r,x:()=>o});var i=s(30758);const t={},a=i.createContext(t);function r(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),i.createElement(a.Provider,{value:n},e.children)}},99171:(e,n,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/deb48bc9.21a8f31c.js b/assets/js/deb48bc9.21a8f31c.js
new file mode 100644
index 000000000..725818911
--- /dev/null
+++ b/assets/js/deb48bc9.21a8f31c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6866],{62392:(e,n,s)=>{s.d(n,{R:()=>r,x:()=>a});var t=s(30758);const o={},i=t.createContext(o);function r(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),t.createElement(i.Provider,{value:n},e.children)}},76552:(e,n,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/decea48b.1adf6115.js b/assets/js/decea48b.1adf6115.js
new file mode 100644
index 000000000..539a62790
--- /dev/null
+++ b/assets/js/decea48b.1adf6115.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6791],{31931:(e,t,n)=>{n.d(t,{W:()=>a});var r=n(30758),o=n(84324);const i=["zero","one","two","few","many","other"];function s(e){return i.filter((t=>e.includes(t)))}const l={locale:"en",pluralForms:s(["one","other"]),select:e=>1===e?"one":"other"};function c(){const{i18n:{currentLocale:e}}=(0,o.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:s(t [...]
\ No newline at end of file
diff --git a/assets/js/df761b7f.f55c3235.js b/assets/js/df761b7f.f55c3235.js
new file mode 100644
index 000000000..0a8fabab2
--- /dev/null
+++ b/assets/js/df761b7f.f55c3235.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5660],{4913:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>m,frontMatter:()=>o,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"system-internals/features/filesystem-optimization","title":"File System Optimization (FSO) System Internals","description":"The prefix-based File System Optimization feature supports atomic rename and delete of any directory at any level in the","source":"@sit [...]
\ No newline at end of file
diff --git a/assets/js/df8b7c40.34eaea68.js b/assets/js/df8b7c40.34eaea68.js
new file mode 100644
index 000000000..ce1b991f6
--- /dev/null
+++ b/assets/js/df8b7c40.34eaea68.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5241],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var r=n(30758),i=n(84324);const o=["zero","one","two","few","many","other"];function s(e){return o.filter((t=>e.includes(t)))}const c={locale:"en",pluralForms:s(["one","other"]),select:e=>1===e?"one":"other"};function a(){const{i18n:{currentLocale:e}}=(0,i.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:s(t [...]
\ No newline at end of file
diff --git a/assets/js/e0171ab9.97f7fe24.js b/assets/js/e0171ab9.97f7fe24.js
new file mode 100644
index 000000000..214b2cb1f
--- /dev/null
+++ b/assets/js/e0171ab9.97f7fe24.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1134],{43215:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>l,frontMatter:()=>a,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"administrator-guide/configuration/basic/directories/datanode","title":"Directory Configurations for Datanodes","description":"TODO: File a subtask under HDDS-9859 and complete this page or section.","source":"@site/docs/05-administrator-guide/02-configuration [...]
\ No newline at end of file
diff --git a/assets/js/e0422aba.08548689.js b/assets/js/e0422aba.08548689.js
new file mode 100644
index 000000000..013744d3d
--- /dev/null
+++ b/assets/js/e0422aba.08548689.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2858],{62392:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>s});var o=t(30758);const r={},a=o.createContext(r);function i(e){const n=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),o.createElement(a.Provider,{value:n},e.children)}},68613:(e,n,t)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/e26b272f.43ff0cd7.js b/assets/js/e26b272f.43ff0cd7.js
new file mode 100644
index 000000000..c53b67a87
--- /dev/null
+++ b/assets/js/e26b272f.43ff0cd7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8103],{38801:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>h,default:()=>u,frontMatter:()=>l,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"developer-guide/project/release-guide","title":"Apache Release Manager Guide","description":"This document describes the process to release Apache Ozone. The process is not yet scripted, and the documentation is a work in progress.","source":"@site/docs/08-de [...]
\ No newline at end of file
diff --git a/assets/js/e2d0a228.b3132674.js b/assets/js/e2d0a228.b3132674.js
new file mode 100644
index 000000000..214f1ad00
--- /dev/null
+++ b/assets/js/e2d0a228.b3132674.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4681],{5695:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"troubleshooting/ratis","title":"Troubleshooting Ratis","description":"TODO: File a subtask under HDDS-9860 and complete this page or section.","source":"@site/docs/06-troubleshooting/13-ratis.md","sourceDirName":"06-troubleshooting","slug":"/troubleshooting/ra [...]
\ No newline at end of file
diff --git a/assets/js/e2d365cf.812831e4.js b/assets/js/e2d365cf.812831e4.js
new file mode 100644
index 000000000..0dd2874f5
--- /dev/null
+++ b/assets/js/e2d365cf.812831e4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3557],{31464:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>o,default:()=>u,frontMatter:()=>a,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"system-internals/security/sasl","title":"SASL Within Ozone","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/05-security/06-sasl.md","sourceDirName":"07-system-internals/05-securi [...]
\ No newline at end of file
diff --git a/assets/js/e3026fec.a46346b5.js b/assets/js/e3026fec.a46346b5.js
new file mode 100644
index 000000000..769c7d038
--- /dev/null
+++ b/assets/js/e3026fec.a46346b5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6617],{42205:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>s,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"administrator-guide/operations/observability/recon/recon-rest-api","title":"Recon REST API","description":"TODO: HDDS-10684 Embed a Swagger API spec into this page.","source":"@site/docs/05-administrator-guide/03-operations/09-observability/02-recon/02-recon- [...]
\ No newline at end of file
diff --git a/assets/js/e30cbb44.5ab0d763.js b/assets/js/e30cbb44.5ab0d763.js
new file mode 100644
index 000000000..cfc562ff5
--- /dev/null
+++ b/assets/js/e30cbb44.5ab0d763.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4052],{53557:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>o,contentTitle:()=>a,default:()=>u,frontMatter:()=>t,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"developer-guide/test/static-analysis","title":"Static Code Analysis","description":"Apache Ozone uses static code analysis tools to identify potential bugs, code smells, security vulnerabilities, and other issues before they make it into production. SonarQube [...]
\ No newline at end of file
diff --git a/assets/js/e32aa822.cffd06f8.js b/assets/js/e32aa822.cffd06f8.js
new file mode 100644
index 000000000..25d263a48
--- /dev/null
+++ b/assets/js/e32aa822.cffd06f8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7187],{13013:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>s,metadata:()=>i,toc:()=>l});var i=o(22821),n=o(86070),a=o(62392);const s={title:"Apache Ozone Best Practices at Didi: Scaling to Tens of Billions of Files",date:new Date("2026-01-30T00:00:00.000Z"),authors:["rich7420","jojochuang","apache-ozone-community"],tags:["user-stories","performance","erasure-coding","scal [...]
\ No newline at end of file
diff --git a/assets/js/e444076e.405fc64f.js b/assets/js/e444076e.405fc64f.js
new file mode 100644
index 000000000..6ff553cc3
--- /dev/null
+++ b/assets/js/e444076e.405fc64f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5968],{23160:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>m,frontMatter:()=>a,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"system-internals/replication/data/containers/README","title":"Storage Container Implementation","description":"This section documents the implementation of storage containers: Ozone\'s unit of data replication.","source":"@site/docs/07-system-internals/04-rep [...]
\ No newline at end of file
diff --git a/assets/js/e4697b8f.87670ae1.js b/assets/js/e4697b8f.87670ae1.js
new file mode 100644
index 000000000..a89370fba
--- /dev/null
+++ b/assets/js/e4697b8f.87670ae1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3082],{55223:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>u,frontMatter:()=>s,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"administrator-guide/operations/observability/prometheus","title":"Tracking Metrics With Prometheus","description":"Ozone has native support for Prometheus integration. All internal metrics (collected by Hadoop metrics framework) are published under the /prom [...]
\ No newline at end of file
diff --git a/assets/js/e4abdefd.3bc1d88f.js b/assets/js/e4abdefd.3bc1d88f.js
new file mode 100644
index 000000000..d793d350b
--- /dev/null
+++ b/assets/js/e4abdefd.3bc1d88f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7242],{62392:(e,i,t)=>{t.d(i,{R:()=>a,x:()=>l});var n=t(30758);const r={},o=n.createContext(r);function a(e){const i=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function l(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),n.createElement(o.Provider,{value:i},e.children)}},96144:(e,i,t)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/e6302cf2.8d4faeb1.js b/assets/js/e6302cf2.8d4faeb1.js
new file mode 100644
index 000000000..726407f8f
--- /dev/null
+++ b/assets/js/e6302cf2.8d4faeb1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9138],{62392:(e,n,a)=>{a.d(n,{R:()=>s,x:()=>l});var o=a(30758);const t={},i=o.createContext(t);function s(e){const n=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),o.createElement(i.Provider,{value:n},e.children)}},80325:(e,n,a)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/e66180b6.6b819f85.js b/assets/js/e66180b6.6b819f85.js
new file mode 100644
index 000000000..ee061222f
--- /dev/null
+++ b/assets/js/e66180b6.6b819f85.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2833],{15266:(e,t,s)=>{s.d(t,{A:()=>r});var i=s(30758);const n={formContainer:"formContainer_bS8P",formTitle:"formTitle_mK1r",formDescription:"formDescription_raGT",form:"form_tbrA",formGroup:"formGroup_J89E",label:"label_wdvG",input:"input__NZ2",textarea:"textarea_V2uA",button:"button_K3PC",submitGroup:"submitGroup_rNbj",submitNote:"submitNote_VJEZ"};var o=s(86070);function r(){const[e,t]=(0,i.useState)(""),[s [...]
\ No newline at end of file
diff --git a/assets/js/e74aaaaf.b7a8ccbe.js b/assets/js/e74aaaaf.b7a8ccbe.js
new file mode 100644
index 000000000..da7135654
--- /dev/null
+++ b/assets/js/e74aaaaf.b7a8ccbe.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9414],{62392:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>c});var n=s(30758);const r={},a=n.createContext(r);function i(e){const t=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(a.Provider,{value:t},e.children)}},67926:(e,t,s)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/e8b30a51.7e112de0.js b/assets/js/e8b30a51.7e112de0.js
new file mode 100644
index 000000000..d2dbc581e
--- /dev/null
+++ b/assets/js/e8b30a51.7e112de0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9706],{31359:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>i,contentTitle:()=>c,default:()=>l,frontMatter:()=>o,metadata:()=>s,toc:()=>m});const s=JSON.parse('{"id":"system-internals/components/storage-container-manager/rocksdb-schema","title":"Storage Container Manager RocksDB Schema","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-compon [...]
\ No newline at end of file
diff --git a/assets/js/e92c0479.385ca556.js b/assets/js/e92c0479.385ca556.js
new file mode 100644
index 000000000..d0f486d47
--- /dev/null
+++ b/assets/js/e92c0479.385ca556.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[5088],{31410:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/persistent-volume-test-web-ui-ed045555932611e659ff699bd29746ac.png"},62392:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>c});var s=n(30758);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof [...]
\ No newline at end of file
diff --git a/assets/js/ebd6064d.474783a4.js b/assets/js/ebd6064d.474783a4.js
new file mode 100644
index 000000000..7a1d3b0bd
--- /dev/null
+++ b/assets/js/ebd6064d.474783a4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2614],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var s=n(30758),r=n(84324);const o=["zero","one","two","few","many","other"];function i(e){return o.filter((t=>e.includes(t)))}const a={locale:"en",pluralForms:i(["one","other"]),select:e=>1===e?"one":"other"};function c(){const{i18n:{currentLocale:e}}=(0,r.A)();return(0,s.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:i(t [...]
\ No newline at end of file
diff --git a/assets/js/ed14cf75.382c9eb3.js b/assets/js/ed14cf75.382c9eb3.js
new file mode 100644
index 000000000..b20f80a52
--- /dev/null
+++ b/assets/js/ed14cf75.382c9eb3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4824],{11989:(n,e,t)=>{t.r(e),t.d(e,{assets:()=>i,contentTitle:()=>c,default:()=>l,frontMatter:()=>r,metadata:()=>s,toc:()=>m});const s=JSON.parse('{"id":"system-internals/components/recon/syncing-data-from-scm","title":"How Recon Syncs Data From Storage Container Manager","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-componen [...]
\ No newline at end of file
diff --git a/assets/js/edf73588.74600e84.js b/assets/js/edf73588.74600e84.js
new file mode 100644
index 000000000..dad712d2f
--- /dev/null
+++ b/assets/js/edf73588.74600e84.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1565],{62392:(e,t,o)=>{o.d(t,{R:()=>i,x:()=>a});var r=o(30758);const s={},n=r.createContext(s);function i(e){const t=r.useContext(n);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(n.Provider,{value:t},e.children)}},85607:(e,t,o)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/eed272e6.4f480602.js b/assets/js/eed272e6.4f480602.js
new file mode 100644
index 000000000..53167c1ce
--- /dev/null
+++ b/assets/js/eed272e6.4f480602.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6985],{7519:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"system-internals/components/s3-gateway/request-flow","title":"S3 Gateway Request flow","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/01-components/05-s3-gateway/02-request-flow. [...]
\ No newline at end of file
diff --git a/assets/js/ef8b811a.8674e68f.js b/assets/js/ef8b811a.8674e68f.js
new file mode 100644
index 000000000..2edba96ab
--- /dev/null
+++ b/assets/js/ef8b811a.8674e68f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8947],{56600:t=>{t.exports=JSON.parse('{"authors":[{"name":"The Apache Ozone Community","title":"Apache Ozone Project","url":"https://ozone.apache.org","imageURL":"/img/ozone-logo.svg","key":"apache-ozone-community","page":null,"count":4},{"name":"Wei-Chiu Chuang","title":"Apache Ozone PMC","url":"https://github.com/jojochuang","imageURL":"https://github.com/jojochuang.png","key":"jojochuang","page":null,"count [...]
\ No newline at end of file
diff --git a/assets/js/f0ca1847.7332fba3.js b/assets/js/f0ca1847.7332fba3.js
new file mode 100644
index 000000000..36e1d76d4
--- /dev/null
+++ b/assets/js/f0ca1847.7332fba3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4253],{35123:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>o,contentTitle:()=>a,default:()=>h,frontMatter:()=>s,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"administrator-guide/installation/reference-architecture","title":"Reference Architecture","description":"Several hardware and software vendors publish reference architectures for Apache Ozone. The Apache Ozone project does not endorse any of the vendors but w [...]
\ No newline at end of file
diff --git a/assets/js/f19f22e0.59fbce1b.js b/assets/js/f19f22e0.59fbce1b.js
new file mode 100644
index 000000000..ac841e95f
--- /dev/null
+++ b/assets/js/f19f22e0.59fbce1b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3742],{49378:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>h,frontMatter:()=>t,metadata:()=>a,toc:()=>o});const a=JSON.parse('{"id":"administrator-guide/operations/disk-replacement/datanodes","title":"Replacing Datanode Disks","description":"Overview","source":"@site/docs/05-administrator-guide/03-operations/04-disk-replacement/03-datanodes.md","sourceDirName":"05-administrator-guide/03-op [...]
\ No newline at end of file
diff --git a/assets/js/f294ca1c.96d0e6ae.js b/assets/js/f294ca1c.96d0e6ae.js
new file mode 100644
index 000000000..9ac3a4073
--- /dev/null
+++ b/assets/js/f294ca1c.96d0e6ae.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[372],{16910:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>u,contentTitle:()=>i,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"troubleshooting/startup","title":"Troubleshooting Startup","description":"TODO: File a subtask under HDDS-9860 and complete this page or section.","source":"@site/docs/06-troubleshooting/01-startup.md","sourceDirName":"06-troubleshooting","slug":"/troubleshoot [...]
\ No newline at end of file
diff --git a/assets/js/f325e07c.072b6f75.js b/assets/js/f325e07c.072b6f75.js
new file mode 100644
index 000000000..f5abe3fdb
--- /dev/null
+++ b/assets/js/f325e07c.072b6f75.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[384],{53056:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>l,frontMatter:()=>o,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"system-internals/features/bucket-snapshots","title":"Bucket Snapshot System Internals","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/07-features/03-bucket-snapshots.md","sourceD [...]
\ No newline at end of file
diff --git a/assets/js/f3637e5b.be9f05de.js b/assets/js/f3637e5b.be9f05de.js
new file mode 100644
index 000000000..da2dd49c5
--- /dev/null
+++ b/assets/js/f3637e5b.be9f05de.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3522],{10359:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>o,contentTitle:()=>t,default:()=>a,frontMatter:()=>c,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"core-concepts/security/acls/ranger-acls","title":"Ranger authorization policies","description":"Ozone supports two authorization models: Native ACLs and Apache Ranger policies.","source":"@site/docs/03-core-concepts/04-security/02-acls/02-ranger-acls.md","sou [...]
\ No newline at end of file
diff --git a/assets/js/f3691cb3.4c06eec7.js b/assets/js/f3691cb3.4c06eec7.js
new file mode 100644
index 000000000..733f9b2d5
--- /dev/null
+++ b/assets/js/f3691cb3.4c06eec7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7796],{143:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"system-internals/replication/data/containers/states","title":"Container States","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/04-replication/02-data/02-containers/03-states.md"," [...]
\ No newline at end of file
diff --git a/assets/js/f4208ca8.24e62b37.js b/assets/js/f4208ca8.24e62b37.js
new file mode 100644
index 000000000..ad50af248
--- /dev/null
+++ b/assets/js/f4208ca8.24e62b37.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8399],{11102:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>u,frontMatter:()=>o,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"system-internals/security/tls","title":"TLS Within Ozone","description":"TODO: File a subtask under HDDS-9862 and complete this page or section.","source":"@site/docs/07-system-internals/05-security/05-tls.md","sourceDirName":"07-system-internals/05-security" [...]
\ No newline at end of file
diff --git a/assets/js/f59a295b.b152130a.js b/assets/js/f59a295b.b152130a.js
new file mode 100644
index 000000000..68bc4b10c
--- /dev/null
+++ b/assets/js/f59a295b.b152130a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7160],{53883:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>c,metadata:()=>i,toc:()=>a});const i=JSON.parse('{"id":"core-concepts/namespace/buckets/layouts/object-store","title":"Object Store Buckets (OBS)","description":"1. Overview","source":"@site/docs/03-core-concepts/03-namespace/02-buckets/04-layouts/01-object-store.md","sourceDirName":"03-core-concepts/03-namespace/ [...]
\ No newline at end of file
diff --git a/assets/js/f6c2a2ed.9b8b9bd9.js b/assets/js/f6c2a2ed.9b8b9bd9.js
new file mode 100644
index 000000000..efd4d72a4
--- /dev/null
+++ b/assets/js/f6c2a2ed.9b8b9bd9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7902],{31931:(e,t,n)=>{n.d(t,{W:()=>a});var r=n(30758),s=n(84324);const i=["zero","one","two","few","many","other"];function o(e){return i.filter((t=>e.includes(t)))}const c={locale:"en",pluralForms:o(["one","other"]),select:e=>1===e?"one":"other"};function l(){const{i18n:{currentLocale:e}}=(0,s.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:o(t [...]
\ No newline at end of file
diff --git a/assets/js/f6cbf94f.5cca401a.js b/assets/js/f6cbf94f.5cca401a.js
new file mode 100644
index 000000000..9a9d3aef9
--- /dev/null
+++ b/assets/js/f6cbf94f.5cca401a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1689],{62392:(e,n,i)=>{i.d(n,{R:()=>a,x:()=>o});var t=i(30758);const r={},s=t.createContext(r);function a(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),t.createElement(s.Provider,{value:n},e.children)}},64290:(e,n,i)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/f6d9e6b3.5646cdce.js b/assets/js/f6d9e6b3.5646cdce.js
new file mode 100644
index 000000000..b0a52eb2d
--- /dev/null
+++ b/assets/js/f6d9e6b3.5646cdce.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[4494],{31931:(e,n,s)=>{s.d(n,{W:()=>a});var t=s(30758),o=s(84324);const r=["zero","one","two","few","many","other"];function i(e){return r.filter((n=>e.includes(n)))}const l={locale:"en",pluralForms:i(["one","other"]),select:e=>1===e?"one":"other"};function c(){const{i18n:{currentLocale:e}}=(0,o.A)();return(0,t.useMemo)((()=>{try{return function(e){const n=new Intl.PluralRules(e);return{locale:e,pluralForms:i(n [...]
\ No newline at end of file
diff --git a/assets/js/f81c1134.6d1187c6.js b/assets/js/f81c1134.6d1187c6.js
new file mode 100644
index 000000000..54fc6e0db
--- /dev/null
+++ b/assets/js/f81c1134.6d1187c6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8130],{77735:e=>{e.exports=JSON.parse('{"archive":{"blogPosts":[{"id":"/2026/01/30/apache-ozone-best-practices-at-didi","metadata":{"permalink":"/blog/2026/01/30/apache-ozone-best-practices-at-didi","editUrl":"https://github.com/apache/ozone-site/tree/master/blog/2026-01-30-apache-ozone-best-practices-at-didi.md","source":"@site/blog/2026-01-30-apache-ozone-best-practices-at-didi.md","title":"Apache Ozone Best [...]
\ No newline at end of file
diff --git a/assets/js/f94dbc4c.e861f4be.js b/assets/js/f94dbc4c.e861f4be.js
new file mode 100644
index 000000000..904b7075b
--- /dev/null
+++ b/assets/js/f94dbc4c.e861f4be.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3434],{6684:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>l,default:()=>m,frontMatter:()=>o,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"user-guide/client-interfaces/README","title":"Client Interfaces","description":"This section documents the interfaces that clients can use to communicate with Ozone.","source":"@site/docs/04-user-guide/01-client-interfaces/README.mdx","sourceDirName":"04-user- [...]
\ No newline at end of file
diff --git a/assets/js/f9701530.0c1a679f.js b/assets/js/f9701530.0c1a679f.js
new file mode 100644
index 000000000..46efac881
--- /dev/null
+++ b/assets/js/f9701530.0c1a679f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[9994],{62392:(e,n,r)=>{r.d(n,{R:()=>i,x:()=>l});var s=r(30758);const t={},o=s.createContext(t);function i(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),s.createElement(o.Provider,{value:n},e.children)}},64838:(e,n,r)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/fc9567a5.7e25faf6.js b/assets/js/fc9567a5.7e25faf6.js
new file mode 100644
index 000000000..ff2fd3268
--- /dev/null
+++ b/assets/js/fc9567a5.7e25faf6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[6135],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var r=n(30758),i=n(84324);const s=["zero","one","two","few","many","other"];function o(e){return s.filter((t=>e.includes(t)))}const a={locale:"en",pluralForms:o(["one","other"]),select:e=>1===e?"one":"other"};function c(){const{i18n:{currentLocale:e}}=(0,i.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:o(t [...]
\ No newline at end of file
diff --git a/assets/js/fcc2d8b4.f36a408e.js b/assets/js/fcc2d8b4.f36a408e.js
new file mode 100644
index 000000000..71048a9b2
--- /dev/null
+++ b/assets/js/fcc2d8b4.f36a408e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7943],{31931:(e,t,r)=>{r.d(t,{W:()=>l});var n=r(30758),i=r(84324);const o=["zero","one","two","few","many","other"];function s(e){return o.filter((t=>e.includes(t)))}const c={locale:"en",pluralForms:s(["one","other"]),select:e=>1===e?"one":"other"};function a(){const{i18n:{currentLocale:e}}=(0,i.A)();return(0,n.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:s(t [...]
\ No newline at end of file
diff --git a/assets/js/fd2b3ec7.52e8566c.js b/assets/js/fd2b3ec7.52e8566c.js
new file mode 100644
index 000000000..d9d49eeb9
--- /dev/null
+++ b/assets/js/fd2b3ec7.52e8566c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[119],{31931:(e,t,n)=>{n.d(t,{W:()=>a});var r=n(30758),s=n(84324);const c=["zero","one","two","few","many","other"];function i(e){return c.filter((t=>e.includes(t)))}const o={locale:"en",pluralForms:i(["one","other"]),select:e=>1===e?"one":"other"};function l(){const{i18n:{currentLocale:e}}=(0,s.A)();return(0,r.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:i(t. [...]
\ No newline at end of file
diff --git a/assets/js/fe21dcba.1f6c2097.js b/assets/js/fe21dcba.1f6c2097.js
new file mode 100644
index 000000000..5ea7da9f9
--- /dev/null
+++ b/assets/js/fe21dcba.1f6c2097.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[1043],{31931:(e,t,n)=>{n.d(t,{W:()=>l});var s=n(30758),c=n(84324);const r=["zero","one","two","few","many","other"];function o(e){return r.filter((t=>e.includes(t)))}const a={locale:"en",pluralForms:o(["one","other"]),select:e=>1===e?"one":"other"};function i(){const{i18n:{currentLocale:e}}=(0,c.A)();return(0,s.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:o(t [...]
\ No newline at end of file
diff --git a/assets/js/fe612d60.e37ecd64.js b/assets/js/fe612d60.e37ecd64.js
new file mode 100644
index 000000000..5f1922a09
--- /dev/null
+++ b/assets/js/fe612d60.e37ecd64.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[2775],{11350:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"core-concepts/replication/storage-containers","title":"Storage Containers","description":"Storage Containers, or Containers (not to be confused with Docker containers) are the fundamental replication unit of Ozone, they are managed by the Storage Container Ma [...]
\ No newline at end of file
diff --git a/assets/js/fed66378.9cbf4007.js b/assets/js/fed66378.9cbf4007.js
new file mode 100644
index 000000000..8b0285087
--- /dev/null
+++ b/assets/js/fed66378.9cbf4007.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[7750],{62392:(e,n,o)=>{o.d(n,{R:()=>t,x:()=>l});var s=o(30758);const r={},i=s.createContext(r);function t(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),s.createElement(i.Provider,{value:n},e.children)}},62973:(e,n,o)=>{ [...]
\ No newline at end of file
diff --git a/assets/js/ff5a59f6.1dd1ecc8.js b/assets/js/ff5a59f6.1dd1ecc8.js
new file mode 100644
index 000000000..f191be010
--- /dev/null
+++ b/assets/js/ff5a59f6.1dd1ecc8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[3139],{15266:(e,t,o)=>{o.d(t,{A:()=>r});var s=o(30758);const i={formContainer:"formContainer_bS8P",formTitle:"formTitle_mK1r",formDescription:"formDescription_raGT",form:"form_tbrA",formGroup:"formGroup_J89E",label:"label_wdvG",input:"input__NZ2",textarea:"textarea_V2uA",button:"button_K3PC",submitGroup:"submitGroup_rNbj",submitNote:"submitNote_VJEZ"};var n=o(86070);function r(){const[e,t]=(0,s.useState)(""),[o [...]
\ No newline at end of file
diff --git a/assets/js/main.cd201a6c.js b/assets/js/main.cd201a6c.js
new file mode 100644
index 000000000..a4b35739a
--- /dev/null
+++ b/assets/js/main.cd201a6c.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.cd201a6c.js.LICENSE.txt */
+(self.webpackChunkdoc_site=self.webpackChunkdoc_site||[]).push([[8792],{1773:(e,t,n)=>{"use strict";n.d(t,{b:()=>s,w:()=>c});var r=n(30758),a=n(84324),o=n(95535);const i="q";function s(){return(0,o.l)(i)}function c(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,a.A)(),{algolia:{searchPagePath:n}}=t;return(0,r.useCallback)((t=>`${e}${n}?${i}=${encodeURIComponent(t)}`),[e,n])}},1808:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=function e(t){ [...]
\ No newline at end of file
diff --git a/assets/js/main.cd201a6c.js.LICENSE.txt b/assets/js/main.cd201a6c.js.LICENSE.txt
new file mode 100644
index 000000000..91dc89499
--- /dev/null
+++ b/assets/js/main.cd201a6c.js.LICENSE.txt
@@ -0,0 +1,64 @@
+/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
+ * @license MIT */
+
+/*! Bundled license information:
+
+prismjs/prism.js:
+ (**
+ * Prism: Lightweight, robust, elegant syntax highlighting
+ *
+ * @license MIT <https://opensource.org/licenses/MIT>
+ * @author Lea Verou <https://lea.verou.me>
+ * @namespace
+ * @public
+ *)
+*/
+
+/**
+ * @license React
+ * react-dom.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react-jsx-runtime.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * react.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/**
+ * @license React
+ * scheduler.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+/** @license React v16.13.1
+ * react-is.production.min.js
+ *
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
diff --git a/assets/js/runtime~main.dc044eab.js b/assets/js/runtime~main.dc044eab.js
new file mode 100644
index 000000000..8f5354c9c
--- /dev/null
+++ b/assets/js/runtime~main.dc044eab.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,a,c,b,f,d={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={exports:{}};return d[e].call(c.exports,c,c.exports,r),c.exports}r.m=d,e=[],r.O=(a,c,b,f)=>{if(!c){var d=1/0;for(i=0;i<e.length;i++){c=e[i][0],b=e[i][1],f=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&f||d>=f)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,f<d&&(d=f));if(t){e.splice(i--,1);var n=b();void 0!==n&&(a=n)}}return a}f=f||0;for(var i=e.length;i>0&&e[i-1] [...]
\ No newline at end of file
diff --git a/blog/2025/04/30/ozone-2.0.0-release/index.html b/blog/2025/04/30/ozone-2.0.0-release/index.html
new file mode 100644
index 000000000..3e7de896b
--- /dev/null
+++ b/blog/2025/04/30/ozone-2.0.0-release/index.html
@@ -0,0 +1,68 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">Apache Ozone 2.0.0 Release | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozone.apache.org/bl [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+<p>Notable features in this release include:</p>
+<ul>
+<li>Supporting HSync and lease recovery (HDDS-7593).</li>
+<li>SCM Decommissioning Support (HDDS-7852).</li>
+<li>Symmetric Keys for Delegation Tokens (HDDS-8829).</li>
+<li>Atomic Key Overwrite and Key Replacement (HDDS-10656).</li>
+</ul>
+<p>Other noteworthy changes include:</p>
+<ul>
+<li>ARM64 support (HDDS-6263).</li>
+<li>Java 11/17/21 Support and Testing (HDDS-8246).</li>
+<li>AWS SDK v2 client support (HDDS-12488).</li>
+</ul>
+<p>Observability improvements are:</p>
+<ul>
+<li>Ozone performance and operational dashboards (HDDS-9307).</li>
+<li>Recon UI Improvements (HDDS-11153).</li>
+<li>Support for interactive mode for Ozone CLI (HDDS-11825).</li>
+</ul>
+<p>Developer-focused changes include:</p>
+<ul>
+<li>JUnit 4 to 5 upgrade (HDDS-6729).</li>
+<li>Dropped Hadoop 2.7 ~ 2.9 support (HDDS-8113).</li>
+<li>Publish SBOM artifacts (HDDS-10986).</li>
+<li>Hadoop dependency updated to 3.4.1 (HDDS-11617).</li>
+</ul>
+<p>Incompatible changes are:</p>
+<ul>
+<li>Move S3 Gateway web admin to separate port (HDDS-7307).</li>
+<li>Deprecate file per chunk layout from Datanode code (HDDS-11753).</li>
+<li>Drop support for non-Ratis OM and SCM (HDDS-11754).</li>
+<li>Remove LegacyReplicationManager (HDDS-11759).</li>
+</ul>
+<p>Detailed release notes are available at <a href="https://ozone.apache.org/release/2.0.0/" target="_blank" rel="noopener noreferrer">https://ozone.apache.org/release/2.0.0/</a>.
+Downloads can be found at <a href="https://ozone.apache.org/downloads/" target="_blank" rel="noopener noreferrer">https://ozone.apache.org/downloads/</a>.
+Documentation for this release is available at <a href="https://ozone.apache.org/docs/2.0.0/" target="_blank" rel="noopener noreferrer">https://ozone.apache.org/docs/2.0.0/</a>.</p></div><footer class="docusaurus-mt-lg"><div class="row margin-top--sm theme-blog-footer-edit-meta-row"><div class="col"><b>Tags:</b><ul class="tags_Sgtu padding--none margin-left--sm"><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/blog/tags/release">release</a></li><li class="tag_ZUEm"><a clas [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/2025/07/02/access-ozone-via-cyberduck/index.html b/blog/2025/07/02/access-ozone-via-cyberduck/index.html
new file mode 100644
index 000000000..7ce414d02
--- /dev/null
+++ b/blog/2025/07/02/access-ozone-via-cyberduck/index.html
@@ -0,0 +1,119 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">Accessing Ozone S3 via CyberDuck | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozone.apache. [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="prerequisites">Prerequisites<a href="#prerequisites" class="hash-link" aria-label="Direct link to Prerequisites" title="Direct link to Prerequisites"></a></h2>
+<ol>
+<li>
+<p><strong>Running Ozone S3 Gateway</strong>
+Make sure your Ozone cluster is up and the S3 Gateway (s3g) is running. By default it listens on port <strong>9878</strong> over HTTP (and 9879 for HTTPS) at the host where you started it.</p>
+</li>
+<li>
+<p><strong>Credentials</strong></p>
+<ul>
+<li>
+<p><strong>No security:</strong> You can use any values for AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY.</p>
+</li>
+<li>
+<p><strong>With Kerberos security enabled:</strong></p>
+<div class="language-bash codeBlockContainer_mZR4 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_rIoO"><pre tabindex="0" class="prism-code language-bash codeBlock_kDDR thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_SQL2"><span class="token-line" style="color:#393A34"><span class="token plain">kinit </span><span class="token parameter variable" style="color:#36acaa">-kt</span><span c [...]
+</li>
+</ul>
+<p>These exports give you the Access Key ID and Secret you'll plug into CyberDuck.</p>
+</li>
+</ol>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="1-install-cyberduck">1. Install CyberDuck<a href="#1-install-cyberduck" class="hash-link" aria-label="Direct link to 1. Install CyberDuck" title="Direct link to 1. Install CyberDuck"></a></h2>
+<ol>
+<li>Download CyberDuck from <a href="https://cyberduck.io" target="_blank" rel="noopener noreferrer">https://cyberduck.io</a> and install it on your Mac or Windows machine.</li>
+<li>Launch CyberDuck.</li>
+</ol>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="2-create-a-new-s3-connection">2. Create a New S3 Connection<a href="#2-create-a-new-s3-connection" class="hash-link" aria-label="Direct link to 2. Create a New S3 Connection" title="Direct link to 2. Create a New S3 Connection"></a></h2>
+<ol>
+<li>The bundled S3 profile in CyberDuck does not permit a custom network port, and does not allow HTTP. You may need to install additional profiles to allow those.<!-- -->
+<ol>
+<li>Select a profile from <a href="https://gist.github.com/jojochuang/9e15acee99b528ee879f7a280b8f79f7#file-ozone-s3-cyberduck-profiles-md" target="_blank" rel="noopener noreferrer">Ozone S3 CyberDuck profiles</a>.</li>
+<li>For example, download the <strong><a href="https://gist.github.com/jojochuang/9e15acee99b528ee879f7a280b8f79f7#file-ozone-s3-http-cyberduckprofile" target="_blank" rel="noopener noreferrer">Ozone S3 <code>HTTP.cyberduckprofile</code></a></strong> if your gateway is HTTP.</li>
+<li>Or download the <strong><a href="https://gist.github.com/jojochuang/9e15acee99b528ee879f7a280b8f79f7#file-ozone-s3-http-with-path-style-addressing-cyberduckprofile" target="_blank" rel="noopener noreferrer">Ozone S3 (HTTP) with path-style <code>addressing.cyberduckprofile</code></a></strong>.</li>
+<li>Installing the file by double-clicking a <code>.cyberduckprofile</code> file</li>
+<li>Check out the <a href="https://docs.cyberduck.io/protocols/s3" target="_blank" rel="noopener noreferrer">CyberDuck user documentation</a> for more details.</li>
+</ol>
+</li>
+<li>In CyberDuck, click <strong>Open Connection</strong> (or press ⌘ N).</li>
+<li>From the <strong>Protocol</strong> dropdown choose <strong>Ozone S3 (HTTP)</strong> if your gateway is configured for HTTP), or <strong>Apache Ozone S3 HTTP path style</strong> if the gateway is configured with Path-Style Addressing.</li>
+<li>Fill in the fields:<!-- -->
+<ul>
+<li><strong>Server:</strong> <code><ozone‑s3‑host></code> (e.g. <code>ozone.example.com</code>)</li>
+<li><strong>Port:</strong> <code>9878</code> (or <code>9879</code> for HTTPS)</li>
+<li><strong>Access Key ID:</strong> the <code>awsAccessKey</code> you obtained</li>
+<li><strong>Secret Access Key:</strong> the <code>awsSecret</code> you obtained</li>
+</ul>
+</li>
+<li>Click the little <strong>▶</strong> triangle next to <strong>More Options</strong> and ensure <strong>Use SSL</strong> is unchecked if you're connecting over plain HTTP.</li>
+<li><strong>Path‑Style Addressing</strong> (default) vs <strong>Virtual‑Host Style</strong>:<!-- -->
+<ul>
+<li>By default Ozone uses <strong>path‑style</strong> (<code>http://host:9878/bucket</code>).</li>
+<li>If you've set <code>ozone.s3g.domain.name</code> in your <code>ozone-site.xml</code>, you can switch to virtual‑host style and CyberDuck will use <code>bucket.host:9878</code> URLs.</li>
+</ul>
+</li>
+</ol>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="3-save-as-a-bookmark-optional">3. Save as a Bookmark (Optional)<a href="#3-save-as-a-bookmark-optional" class="hash-link" aria-label="Direct link to 3. Save as a Bookmark (Optional)" title="Direct link to 3. Save as a Bookmark (Optional)"></a></h2>
+<ol>
+<li>Click the dropdown arrow next to the <strong>Connect</strong> button and choose <strong>Bookmark</strong> ▶ <strong>Add Bookmark</strong>.</li>
+<li>Give it a name like "Ozone S3" so you can reconnect quickly.</li>
+</ol>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="4-browsing-and-basic-operations">4. Browsing and Basic Operations<a href="#4-browsing-and-basic-operations" class="hash-link" aria-label="Direct link to 4. Browsing and Basic Operations" title="Direct link to 4. Browsing and Basic Operations"></a></h2>
+<p>Once connected, your CyberDuck window will list all buckets in the default <code>/s3v</code> volume as top‑level entries.</p>
+<ul>
+<li><strong>List Buckets:</strong> All existing buckets appear as folders.</li>
+<li><strong>Create Bucket:</strong> Click the "+" (New Folder) icon, enter a bucket name, and press <strong>Return</strong>.</li>
+<li><strong>Upload Files:</strong> Drag‑and‑drop files from your desktop into a bucket folder.</li>
+<li><strong>Download Files:</strong> Right‑click an object and choose <strong>Download To…</strong></li>
+<li><strong>Delete Objects/Buckets:</strong> Select the file or bucket, press the <strong>Delete</strong> key, and confirm.</li>
+</ul>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="5-working-with-other-volumes">5. Working with Other Volumes<a href="#5-working-with-other-volumes" class="hash-link" aria-label="Direct link to 5. Working with Other Volumes" title="Direct link to 5. Working with Other Volumes"></a></h2>
+<p>Ozone's namespace includes volumes beyond <code>/s3v</code>. To expose a bucket from another volume:</p>
+<div class="language-shell codeBlockContainer_mZR4 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_rIoO"><pre tabindex="0" class="prism-code language-shell codeBlock_kDDR thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_SQL2"><span class="token-line" style="color:#393A34"><span class="token plain">ozone </span><span class="token function" style="color:#d73a49">sh</span><span class="tok [...]
+<p>After linking, you'll see <code>common-bucket</code> in CyberDuck and can manage it just like any other S3 bucket.</p>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="6-tips--troubleshooting">6. Tips & Troubleshooting<a href="#6-tips--troubleshooting" class="hash-link" aria-label="Direct link to 6. Tips & Troubleshooting" title="Direct link to 6. Tips & Troubleshooting"></a></h2>
+<ul>
+<li><strong>Permissions:</strong> If you get "Access Denied," double‑check that you've generated or revoked/re‑generated your S3 secret correctly.</li>
+<li><strong>SSL Errors:</strong> If you enable HTTPS on the gateway, make sure you either trust the certificate in CyberDuck or use a CA‑signed cert.</li>
+<li><strong>Firewall/Network:</strong> Ensure your machine can reach <code><ozone‑s3‑host>:9878</code> (e.g. <code>telnet hostname 9878</code>).</li>
+<li><strong>Bookmarks Sync:</strong> CyberDuck can sync bookmarks via Dropbox or iCloud so you can share connections across devices.</li>
+</ul>
+<hr>
+<p>You're all set! Enjoy browsing and managing your Ozone object store through a familiar S3 GUI.</p></div><footer class="docusaurus-mt-lg"><div class="row margin-top--sm theme-blog-footer-edit-meta-row"><div class="col"><b>Tags:</b><ul class="tags_Sgtu padding--none margin-left--sm"><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/blog/tags/ozone">Ozone</a></li><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/blog/tags/s-3">S3</a></li><li class="tag_ZU [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/2026/01/29/disk-balancer-preview/index.html b/blog/2026/01/29/disk-balancer-preview/index.html
new file mode 100644
index 000000000..9c963fc4c
--- /dev/null
+++ b/blog/2026/01/29/disk-balancer-preview/index.html
@@ -0,0 +1,110 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">No More Hotspots: Introducing the Automatic Disk Balancer in Apache Ozone | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" propert [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+Or seen one disk hit 95% usage while others on the same machine sit idle?
+These imbalances create performance bottlenecks and increase failure risk.
+Apache Ozone's new intra-node Disk Balancer is designed to fix this—automatically.</p>
+<p>Cluster-wide balancing in Ozone already ensures replicas are evenly spread across Datanodes. But inside a single Datanode, disks can still drift out of balance over time — for example after adding new disks, replacing hardware, or performing large deletions. This leads to I/O hotspots and uneven wear.</p>
+<p>Disk Balancer closes that gap.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="why-disk-balancer">Why Disk Balancer?<a href="#why-disk-balancer" class="hash-link" aria-label="Direct link to Why Disk Balancer?" title="Direct link to Why Disk Balancer?"></a></h2>
+<ul>
+<li>
+<p><strong>Disks fill unevenly</strong> when nodes gain or lose volumes.</p>
+</li>
+<li>
+<p><strong>Large deletes</strong> can empty some disks disproportionately.</p>
+</li>
+<li>
+<p><strong>Hot disks degrade performance</strong> and become failure risks.</p>
+</li>
+</ul>
+<p>Even if the cluster is balanced, the node itself may not be. Disk Balancer fixes this automatically.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="how-it-works">How it works<a href="#how-it-works" class="hash-link" aria-label="Direct link to How it works" title="Direct link to How it works"></a></h2>
+<p>The design (<a href="https://issues.apache.org/jira/browse/HDDS-5713" target="_blank" rel="noopener noreferrer">HDDS-5713</a>) introduces a simple metric: <strong>Volume Data Density</strong> — how much a disk's utilization deviates from the node's average. If the deviation exceeds a threshold, the node begins balancing.</p>
+<p>Balancing is local and safe:</p>
+<ul>
+<li>Only <strong>closed containers</strong> are moved.</li>
+<li>Moves happen entirely <strong>within the same Datanode.</strong></li>
+<li>A scheduler periodically checks for imbalance and dispatches copy-and-import tasks.</li>
+<li>Bandwidth and concurrency are <strong>operator-tunable</strong> to avoid interfering with production I/O.</li>
+</ul>
+<p>This runs independently on each Datanode. To use it, first enable the feature by setting <code>hdds.datanode.disk.balancer.enabled = true</code> in <code>ozone-site.xml</code> on your Datanodes. Once enabled, clients use <code>ozone admin datanode diskbalancer</code> commands to talk directly to Datanodes, with SCM only used to discover IN_SERVICE Datanodes when running batch operations with <code>--in-service-datanodes</code>.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="how-diskbalancer-decides-what-to-move">How DiskBalancer Decides What to Move<a href="#how-diskbalancer-decides-what-to-move" class="hash-link" aria-label="Direct link to How DiskBalancer Decides What to Move" title="Direct link to How DiskBalancer Decides What to Move"></a></h2>
+<p>DiskBalancer uses simple but robust policies to decide <strong>which disks to balance</strong> and <strong>which containers to move</strong> (see the design doc for details: <code>diskbalancer.md</code> in <a href="https://issues.apache.org/jira/browse/HDDS-5713" target="_blank" rel="noopener noreferrer">HDDS-5713</a>).</p>
+<ul>
+<li><strong>Default Volume Choosing Policy</strong>: Picks the most over‑utilized volume as the source and the most under‑utilized volume as the destination, based on each disk’s <strong>Volume Data Density</strong> and the Datanode’s average utilization.</li>
+<li><strong>Default Container Choosing Policy</strong>: Scans containers on the source volume and moves only <strong>CLOSED</strong> containers that are not already being moved. To avoid repeatedly scanning the same list, it caches container metadata with automatic expiry.</li>
+</ul>
+<p>These defaults aim to make safe, incremental moves that converge the disks toward an even utilization state.</p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="container-move-process">Container Move Process<a href="#container-move-process" class="hash-link" aria-label="Direct link to Container Move Process" title="Direct link to Container Move Process"></a></h3>
+<p>When DiskBalancer moves a container from one disk to another on the <strong>same Datanode</strong>, it follows a careful <strong>"Copy-Validate-Replace"</strong> flow (summarized from the design doc for <a href="https://issues.apache.org/jira/browse/HDDS-5713" target="_blank" rel="noopener noreferrer">HDDS-5713</a>):</p>
+<ol>
+<li>Create a temporary copy of the CLOSED container on the destination disk.</li>
+<li>Transition that copy into a <strong>RECOVERING</strong> state and import it as a new container on the destination.</li>
+<li>Once import and metadata updates succeed, delete the original CLOSED container from the source disk.</li>
+</ol>
+<p>This ensures that data is always consistent: the destination copy is fully validated before the original is removed, minimizing risk during balancing.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="using-disk-balancer">Using Disk Balancer<a href="#using-disk-balancer" class="hash-link" aria-label="Direct link to Using Disk Balancer" title="Direct link to Using Disk Balancer"></a></h2>
+<p>First, enable the Disk Balancer feature on each Datanode by setting the following in <code>ozone-site.xml</code>:</p>
+<ul>
+<li><code>hdds.datanode.disk.balancer.enabled = true</code></li>
+</ul>
+<p>The Disk Balancer CLI supports two command patterns:</p>
+<ul>
+<li><code>ozone admin datanode diskbalancer <command> --in-service-datanodes</code> - Operate on all <strong>IN_SERVICE and HEALTHY</strong> Datanodes</li>
+<li><code>ozone admin datanode diskbalancer <command> <dn-hostname/dn-ipaddress:port></code> - Operate on a specific Datanode</li>
+</ul>
+<p>Available commands:</p>
+<ul>
+<li><strong>start</strong> - Start the Disk Balancer on the target Datanode(s)</li>
+<li><strong>stop</strong> - Stop the Disk Balancer on the target Datanode(s)</li>
+<li><strong>status</strong> - Check the current Disk Balancer status</li>
+<li><strong>report</strong> - Get a volume density report showing imbalance across disks</li>
+<li><strong>update</strong> - Update Disk Balancer configuration settings</li>
+</ul>
+<p>Examples:</p>
+<div class="language-bash codeBlockContainer_mZR4 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_rIoO"><pre tabindex="0" class="prism-code language-bash codeBlock_kDDR thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_SQL2"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Start Disk Balancer</span><span class="token pl [...]
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="configuration-parameters">Configuration Parameters<a href="#configuration-parameters" class="hash-link" aria-label="Direct link to Configuration Parameters" title="Direct link to Configuration Parameters"></a></h3>
+<p>The following parameters can be specified during <strong>start</strong> or <strong>update configuration</strong> Disk Balancer:</p>
+<table><thead><tr><th>Parameter</th><th>Short Flag</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td><code>--threshold</code></td><td><code>-t</code></td><td><code>10.0</code></td><td>Percentage deviation from average utilization of the disks after which a Datanode will be rebalanced.</td></tr><tr><td><code>--bandwidth-in-mb</code></td><td><code>-b</code></td><td><code>10</code></td><td>Maximum bandwidth for DiskBalancer per second.</td></tr><tr><td><code>--parall [...]
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="benefits-for-operators">Benefits for operators<a href="#benefits-for-operators" class="hash-link" aria-label="Direct link to Benefits for operators" title="Direct link to Benefits for operators"></a></h2>
+<ul>
+<li><strong>Even I/O load</strong> across disks → more stable performance.</li>
+<li><strong>Smooth ops after hardware changes</strong> (new or replaced disks).</li>
+<li><strong>Hands-off balancing</strong> once enabled.</li>
+<li><strong>Clear metrics</strong> for observability and troubleshooting.</li>
+</ul>
+<p>It complements the existing Container Balancer: one works across nodes, the other within nodes.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="closing-thoughts">Closing Thoughts<a href="#closing-thoughts" class="hash-link" aria-label="Direct link to Closing Thoughts" title="Direct link to Closing Thoughts"></a></h2>
+<p>Disk Balancer is small but impactful. It brings Ozone closer to being a fully self-healing, self-balancing object store — reducing hotspots, simplifying maintenance, and improving cluster longevity.</p>
+<p>Ozone 2.2 will ship with this feature available via simple CLI controls and safe defaults. If you run long-lived clusters, this is a feature to watch.</p>
+<p>For more information, check out <a href="https://issues.apache.org/jira/browse/HDDS-5713" target="_blank" rel="noopener noreferrer">HDDS-5713</a>.</p></div><footer class="docusaurus-mt-lg"><div class="row margin-top--sm theme-blog-footer-edit-meta-row"><div class="col"><b>Tags:</b><ul class="tags_Sgtu padding--none margin-left--sm"><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/blog/tags/ozone">Ozone</a></li><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" hre [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/2026/01/30/apache-ozone-best-practices-at-didi/index.html b/blog/2026/01/30/apache-ozone-best-practices-at-didi/index.html
new file mode 100644
index 000000000..93db912bf
--- /dev/null
+++ b/blog/2026/01/30/apache-ozone-best-practices-at-didi/index.html
@@ -0,0 +1,94 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">Apache Ozone Best Practices at Didi: Scaling to Tens of Billions of Files | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" propert [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+<p>As Didi's volume of unstructured data surged into the hundreds of petabytes, comprising tens of billions of files, their traditional storage architecture faced severe scalability bottlenecks. This post summarizes how they migrated from HDFS to Apache Ozone, the optimizations they implemented for high-performance reads, and their journey in contributing these improvements back to the community.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="the-challenge-hdfs-at-scale">The Challenge: HDFS at Scale<a href="#the-challenge-hdfs-at-scale" class="hash-link" aria-label="Direct link to The Challenge: HDFS at Scale" title="Direct link to The Challenge: HDFS at Scale"></a></h2>
+<p>Like many data-driven enterprises, Didi relied heavily on HDFS. However, as their data scale grew, they hit the classic "NameNode Limit."</p>
+<ul>
+<li><strong>Metadata Pressure:</strong> Storing hundreds of millions of files put immense pressure on the HDFS NameNode memory.</li>
+<li><strong>Block Reporting Storms:</strong> With massive file counts, block reporting became a significant overhead.</li>
+<li><strong>Scalability Ceiling:</strong> They needed a solution that could handle tens of billions of files without partitioning their clusters into unmanageable silos.</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="why-ozone">Why Ozone?<a href="#why-ozone" class="hash-link" aria-label="Direct link to Why Ozone?" title="Direct link to Why Ozone?"></a></h2>
+<p>They chose Apache Ozone as their next-generation storage engine because it addresses these limitations architecturally:</p>
+<ul>
+<li><strong>Decoupled Metadata:</strong> By separating the Ozone Manager (OM) for namespace and Storage Container Manager (SCM) for block management, Ozone scales significantly better than HDFS.</li>
+<li><strong>RocksDB-based Metadata:</strong> Unlike HDFS, which relies entirely on heap memory, Ozone stores metadata in RocksDB, removing the memory bottleneck.</li>
+<li><strong>Container Logic:</strong> Managing data in "containers" rather than individual blocks reduces the reporting overhead on the SCM.</li>
+</ul>
+<p>Today, Ozone has been running in production at Didi for over two years, managing hundreds of PB of storage.</p>
+<p><img decoding="async" loading="lazy" alt="Figure 1: Ozone Cluster Scale at Didi" src="/assets/images/ozone-cluster-scale-at-didi-bff8e63e93ed0f503b50d7350756bef4.png" width="1856" height="842" class="img_zmyy"></p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="architecture--key-optimizations">Architecture & Key Optimizations<a href="#architecture--key-optimizations" class="hash-link" aria-label="Direct link to Architecture & Key Optimizations" title="Direct link to Architecture & Key Optimizations"></a></h2>
+<p>Migrating was just the first step. To meet Didi's strict latency requirements (especially for "first-frame" read access), they engineered several critical optimizations.</p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="1-multi-cluster-routing-with-viewfs">1. Multi-Cluster Routing with ViewFs<a href="#1-multi-cluster-routing-with-viewfs" class="hash-link" aria-label="Direct link to 1. Multi-Cluster Routing with ViewFs" title="Direct link to 1. Multi-Cluster Routing with ViewFs"></a></h3>
+<p>To manage the sheer volume of data, they utilized a client-side routing mechanism inspired by HDFS ViewFs. By mapping paths to specific clusters (e.g., <code>vol/bucket/prefix1</code> → cluster1), they effectively balanced the load and kept the file count in each cluster under 5 billion, alleviating RPC pressure on individual Ozone Managers.</p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="2-boosting-read-performance-s3g-follower-reads">2. Boosting Read Performance: S3G Follower Reads<a href="#2-boosting-read-performance-s3g-follower-reads" class="hash-link" aria-label="Direct link to 2. Boosting Read Performance: S3G Follower Reads" title="Direct link to 2. Boosting Read Performance: S3G Follower Reads"></a></h3>
+<p>They observed that the Leader OM often became a bottleneck for S3 Gateway (S3G) requests. To solve this, they implemented a Follower Read strategy.</p>
+<p>They introduced a "probe task" in the client (e.g. every 3 seconds) that evaluates:</p>
+<ul>
+<li><strong>Latency:</strong> Selects the OM node with the lowest response time.</li>
+<li><strong>Freshness:</strong> Checks the lastAppliedIndex to ensure the Follower isn't serving stale data.</li>
+</ul>
+<p><strong>Result:</strong> The P90 latency for S3G metadata requests (GetMetaLatency) dropped from a weekly average of ~90ms to ~17ms; in best cases, from tens of milliseconds to under 3ms.</p>
+<p><img decoding="async" loading="lazy" alt="Figure 6-2. S3G Download Latency Monitoring After FollowerRead Goes Online" src="/assets/images/s3g-download-latency-follower-read-goes-online-102b1f38e6b783c7401950efbbef20b0.png" width="2310" height="1772" class="img_zmyy"></p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="3-heterogeneous-caching-hdd--nvme">3. Heterogeneous Caching (HDD + NVMe)<a href="#3-heterogeneous-caching-hdd--nvme" class="hash-link" aria-label="Direct link to 3. Heterogeneous Caching (HDD + NVMe)" title="Direct link to 3. Heterogeneous Caching (HDD + NVMe)"></a></h3>
+<p>Didi's clusters use cost-effective hard disk drives, but random reads on small files (tens of MBs) suffered from disk latency. They designed a heterogeneous caching layer:</p>
+<ul>
+<li><strong>Strategy:</strong> They cache the first Chunk (1MB) of each block on high-speed NVMe SSDs; for EC (e.g. RS-6-3-1024k) they cache the first stripe (9MB: 6 data + 3 parity) to cover first-frame needs.</li>
+<li><strong>Impact:</strong> The 6MB of actual data in that stripe is sufficient for most first-frame requests, dramatically improving read speeds without the cost of all-flash storage.</li>
+<li><strong>Implementation:</strong> A custom LRU cache on the Datanode manages this hot data, ensuring efficient space utilization. This caching optimization brought at least 100ms latency improvement in first-frame reads.</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="4-concurrency--lock-optimization">4. Concurrency & Lock Optimization<a href="#4-concurrency--lock-optimization" class="hash-link" aria-label="Direct link to 4. Concurrency & Lock Optimization" title="Direct link to 4. Concurrency & Lock Optimization"></a></h3>
+<p>During high-concurrency testing, they identified thread contention issues. Specifically, a spin lock in <code>ChunkUtils#processFileExclusive</code> was causing CPU spikes.</p>
+<p>They contributed a fix (see <a href="https://issues.apache.org/jira/browse/HDDS-11281" target="_blank" rel="noopener noreferrer">HDDS-11281</a>) that replaced the global lock with a <code>Striped<ReadWriteLock></code>. This granular locking mechanism reduced lock contention and improved system throughput, yielding a performance gain of at least 50ms per operation in contended scenarios.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="cost-efficiency-erasure-coding-ec">Cost Efficiency: Erasure Coding (EC)<a href="#cost-efficiency-erasure-coding-ec" class="hash-link" aria-label="Direct link to Cost Efficiency: Erasure Coding (EC)" title="Direct link to Cost Efficiency: Erasure Coding (EC)"></a></h2>
+<p>With data growing at >1PB per day, the 3-replica cost model was unsustainable. They transitioned to Erasure Coding (EC) using the RS-6-3-1024k policy.</p>
+<ul>
+<li><strong>Storage Savings:</strong> Reduced replication factor from 3x to ~1.5x, saving 50% on hardware.</li>
+<li><strong>Challenges Solved:</strong> They encountered and fixed issues with deletion backlogs (<a href="https://issues.apache.org/jira/browse/HDDS-11498" target="_blank" rel="noopener noreferrer">HDDS-11498</a>), insufficient EC pipelines (<a href="https://issues.apache.org/jira/browse/HDDS-11209" target="_blank" rel="noopener noreferrer">HDDS-11209</a>), and Safe Mode logic for EC containers (<a href="https://issues.apache.org/jira/browse/HDDS-11243" target="_blank" rel="noopener nor [...]
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="community-contributions">Community Contributions<a href="#community-contributions" class="hash-link" aria-label="Direct link to Community Contributions" title="Direct link to Community Contributions"></a></h2>
+<p>Didi's journey with Ozone has been deeply collaborative. We are proud to highlight that Didi's contributors have brought several key fixes and improvements back to the Apache Ozone community:</p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/HDDS-11483" target="_blank" rel="noopener noreferrer">HDDS-11483</a>: Increased S3G buffer size (e.g. to 4MB) to reduce network I/O and improve first-frame latency.</li>
+<li><a href="https://issues.apache.org/jira/browse/HDDS-11209" target="_blank" rel="noopener noreferrer">HDDS-11209</a>: Avoid insufficient EC pipelines in the container pipeline cache (OM must not cache EC pipelines with incomplete Datanodes).</li>
+<li><a href="https://issues.apache.org/jira/browse/HDDS-9342" target="_blank" rel="noopener noreferrer">HDDS-9342</a>: Fixed OM HA crash and restart failure caused by timing inconsistency between applyTransactionMap and double-buffer.</li>
+<li><a href="https://issues.apache.org/jira/browse/HDDS-10985" target="_blank" rel="noopener noreferrer">HDDS-10985</a>: EC Reconstruction failed because the size of currentChunks was not equal to checksumBlockDataChunks.</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="summary--future-work">Summary & Future Work<a href="#summary--future-work" class="hash-link" aria-label="Direct link to Summary & Future Work" title="Direct link to Summary & Future Work"></a></h2>
+<p>Apache Ozone has successfully enabled Didi to scale its storage infrastructure to hundreds of petabytes while maintaining high performance and lowering costs.</p>
+<p>Looking ahead, Didi is exploring:</p>
+<ul>
+<li><strong>IO_URING:</strong> To further enhance asynchronous I/O efficiency.</li>
+<li><strong>SPDK:</strong> To accelerate access to RocksDB on NVMe drives for OM and SCM.</li>
+</ul>
+<p>Didi thanks the Apache Ozone community for their support and vibrant collaboration. The transition to Ozone has been a game-changer for Didi's big data infrastructure.</p></div><footer class="docusaurus-mt-lg"><div class="row margin-top--sm theme-blog-footer-edit-meta-row"><div class="col"><b>Tags:</b><ul class="tags_Sgtu padding--none margin-left--sm"><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/blog/tags/user-stories">user-stories</a></li><li class="tag_ZUEm" [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/archive/index.html b/blog/archive/index.html
new file mode 100644
index 000000000..a71ad7166
--- /dev/null
+++ b/blog/archive/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">Archive | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozone.apache.org/blog/archive"><meta d [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/atom.xml b/blog/atom.xml
new file mode 100644
index 000000000..8a508dc27
--- /dev/null
+++ b/blog/atom.xml
@@ -0,0 +1,353 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom">
+ <id>https://ozone.apache.org/blog</id>
+ <title>Apache Ozone Blog</title>
+ <updated>2026-01-30T00:00:00.000Z</updated>
+ <generator>https://github.com/jpmonette/feed</generator>
+ <link rel="alternate" href="https://ozone.apache.org/blog"/>
+ <subtitle>Apache Ozone Blog</subtitle>
+ <entry>
+ <title type="html"><![CDATA[Apache Ozone Best Practices at Didi: Scaling to Tens of Billions of Files]]></title>
+ <id>https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi</id>
+ <link href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi"/>
+ <updated>2026-01-30T00:00:00.000Z</updated>
+ <summary type="html"><![CDATA[Guest post by the Didi Engineering Team. For the full story with detailed slides, see Apache Ozone Best Practices at Didi (PDF).]]></summary>
+ <content type="html"><![CDATA[<p>Guest post by the Didi Engineering Team. For the full story with detailed slides, see <a href="https://ozone.apache.org/assets/ApacheOzoneBestPracticesAtDidi.pdf" target="_blank" rel="noopener noreferrer">Apache Ozone Best Practices at Didi (PDF)</a>.</p>
+<p>As Didi's volume of unstructured data surged into the hundreds of petabytes, comprising tens of billions of files, their traditional storage architecture faced severe scalability bottlenecks. This post summarizes how they migrated from HDFS to Apache Ozone, the optimizations they implemented for high-performance reads, and their journey in contributing these improvements back to the community.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="the-challenge-hdfs-at-scale">The Challenge: HDFS at Scale<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#the-challenge-hdfs-at-scale" class="hash-link" aria-label="Direct link to The Challenge: HDFS at Scale" title="Direct link to The Challenge: HDFS at Scale"></a></h2>
+<p>Like many data-driven enterprises, Didi relied heavily on HDFS. However, as their data scale grew, they hit the classic "NameNode Limit."</p>
+<ul>
+<li><strong>Metadata Pressure:</strong> Storing hundreds of millions of files put immense pressure on the HDFS NameNode memory.</li>
+<li><strong>Block Reporting Storms:</strong> With massive file counts, block reporting became a significant overhead.</li>
+<li><strong>Scalability Ceiling:</strong> They needed a solution that could handle tens of billions of files without partitioning their clusters into unmanageable silos.</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="why-ozone">Why Ozone?<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#why-ozone" class="hash-link" aria-label="Direct link to Why Ozone?" title="Direct link to Why Ozone?"></a></h2>
+<p>They chose Apache Ozone as their next-generation storage engine because it addresses these limitations architecturally:</p>
+<ul>
+<li><strong>Decoupled Metadata:</strong> By separating the Ozone Manager (OM) for namespace and Storage Container Manager (SCM) for block management, Ozone scales significantly better than HDFS.</li>
+<li><strong>RocksDB-based Metadata:</strong> Unlike HDFS, which relies entirely on heap memory, Ozone stores metadata in RocksDB, removing the memory bottleneck.</li>
+<li><strong>Container Logic:</strong> Managing data in "containers" rather than individual blocks reduces the reporting overhead on the SCM.</li>
+</ul>
+<p>Today, Ozone has been running in production at Didi for over two years, managing hundreds of PB of storage.</p>
+<p><img decoding="async" loading="lazy" alt="Figure 1: Ozone Cluster Scale at Didi" src="https://ozone.apache.org/assets/images/ozone-cluster-scale-at-didi-bff8e63e93ed0f503b50d7350756bef4.png" width="1856" height="842" class="img_zmyy"></p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="architecture--key-optimizations">Architecture & Key Optimizations<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#architecture--key-optimizations" class="hash-link" aria-label="Direct link to Architecture & Key Optimizations" title="Direct link to Architecture & Key Optimizations"></a></h2>
+<p>Migrating was just the first step. To meet Didi's strict latency requirements (especially for "first-frame" read access), they engineered several critical optimizations.</p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="1-multi-cluster-routing-with-viewfs">1. Multi-Cluster Routing with ViewFs<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#1-multi-cluster-routing-with-viewfs" class="hash-link" aria-label="Direct link to 1. Multi-Cluster Routing with ViewFs" title="Direct link to 1. Multi-Cluster Routing with ViewFs"></a></h3>
+<p>To manage the sheer volume of data, they utilized a client-side routing mechanism inspired by HDFS ViewFs. By mapping paths to specific clusters (e.g., <code>vol/bucket/prefix1</code> → cluster1), they effectively balanced the load and kept the file count in each cluster under 5 billion, alleviating RPC pressure on individual Ozone Managers.</p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="2-boosting-read-performance-s3g-follower-reads">2. Boosting Read Performance: S3G Follower Reads<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#2-boosting-read-performance-s3g-follower-reads" class="hash-link" aria-label="Direct link to 2. Boosting Read Performance: S3G Follower Reads" title="Direct link to 2. Boosting Read Performance: S3G Follower Reads"></a></h3>
+<p>They observed that the Leader OM often became a bottleneck for S3 Gateway (S3G) requests. To solve this, they implemented a Follower Read strategy.</p>
+<p>They introduced a "probe task" in the client (e.g. every 3 seconds) that evaluates:</p>
+<ul>
+<li><strong>Latency:</strong> Selects the OM node with the lowest response time.</li>
+<li><strong>Freshness:</strong> Checks the lastAppliedIndex to ensure the Follower isn't serving stale data.</li>
+</ul>
+<p><strong>Result:</strong> The P90 latency for S3G metadata requests (GetMetaLatency) dropped from a weekly average of ~90ms to ~17ms; in best cases, from tens of milliseconds to under 3ms.</p>
+<p><img decoding="async" loading="lazy" alt="Figure 6-2. S3G Download Latency Monitoring After FollowerRead Goes Online" src="https://ozone.apache.org/assets/images/s3g-download-latency-follower-read-goes-online-102b1f38e6b783c7401950efbbef20b0.png" width="2310" height="1772" class="img_zmyy"></p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="3-heterogeneous-caching-hdd--nvme">3. Heterogeneous Caching (HDD + NVMe)<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#3-heterogeneous-caching-hdd--nvme" class="hash-link" aria-label="Direct link to 3. Heterogeneous Caching (HDD + NVMe)" title="Direct link to 3. Heterogeneous Caching (HDD + NVMe)"></a></h3>
+<p>Didi's clusters use cost-effective hard disk drives, but random reads on small files (tens of MBs) suffered from disk latency. They designed a heterogeneous caching layer:</p>
+<ul>
+<li><strong>Strategy:</strong> They cache the first Chunk (1MB) of each block on high-speed NVMe SSDs; for EC (e.g. RS-6-3-1024k) they cache the first stripe (9MB: 6 data + 3 parity) to cover first-frame needs.</li>
+<li><strong>Impact:</strong> The 6MB of actual data in that stripe is sufficient for most first-frame requests, dramatically improving read speeds without the cost of all-flash storage.</li>
+<li><strong>Implementation:</strong> A custom LRU cache on the Datanode manages this hot data, ensuring efficient space utilization. This caching optimization brought at least 100ms latency improvement in first-frame reads.</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="4-concurrency--lock-optimization">4. Concurrency & Lock Optimization<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#4-concurrency--lock-optimization" class="hash-link" aria-label="Direct link to 4. Concurrency & Lock Optimization" title="Direct link to 4. Concurrency & Lock Optimization"></a></h3>
+<p>During high-concurrency testing, they identified thread contention issues. Specifically, a spin lock in <code>ChunkUtils#processFileExclusive</code> was causing CPU spikes.</p>
+<p>They contributed a fix (see <a href="https://issues.apache.org/jira/browse/HDDS-11281" target="_blank" rel="noopener noreferrer">HDDS-11281</a>) that replaced the global lock with a <code>Striped<ReadWriteLock></code>. This granular locking mechanism reduced lock contention and improved system throughput, yielding a performance gain of at least 50ms per operation in contended scenarios.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="cost-efficiency-erasure-coding-ec">Cost Efficiency: Erasure Coding (EC)<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#cost-efficiency-erasure-coding-ec" class="hash-link" aria-label="Direct link to Cost Efficiency: Erasure Coding (EC)" title="Direct link to Cost Efficiency: Erasure Coding (EC)"></a></h2>
+<p>With data growing at >1PB per day, the 3-replica cost model was unsustainable. They transitioned to Erasure Coding (EC) using the RS-6-3-1024k policy.</p>
+<ul>
+<li><strong>Storage Savings:</strong> Reduced replication factor from 3x to ~1.5x, saving 50% on hardware.</li>
+<li><strong>Challenges Solved:</strong> They encountered and fixed issues with deletion backlogs (<a href="https://issues.apache.org/jira/browse/HDDS-11498" target="_blank" rel="noopener noreferrer">HDDS-11498</a>), insufficient EC pipelines (<a href="https://issues.apache.org/jira/browse/HDDS-11209" target="_blank" rel="noopener noreferrer">HDDS-11209</a>), and Safe Mode logic for EC containers (<a href="https://issues.apache.org/jira/browse/HDDS-11243" target="_blank" rel="noopener nor [...]
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="community-contributions">Community Contributions<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#community-contributions" class="hash-link" aria-label="Direct link to Community Contributions" title="Direct link to Community Contributions"></a></h2>
+<p>Didi's journey with Ozone has been deeply collaborative. We are proud to highlight that Didi's contributors have brought several key fixes and improvements back to the Apache Ozone community:</p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/HDDS-11483" target="_blank" rel="noopener noreferrer">HDDS-11483</a>: Increased S3G buffer size (e.g. to 4MB) to reduce network I/O and improve first-frame latency.</li>
+<li><a href="https://issues.apache.org/jira/browse/HDDS-11209" target="_blank" rel="noopener noreferrer">HDDS-11209</a>: Avoid insufficient EC pipelines in the container pipeline cache (OM must not cache EC pipelines with incomplete Datanodes).</li>
+<li><a href="https://issues.apache.org/jira/browse/HDDS-9342" target="_blank" rel="noopener noreferrer">HDDS-9342</a>: Fixed OM HA crash and restart failure caused by timing inconsistency between applyTransactionMap and double-buffer.</li>
+<li><a href="https://issues.apache.org/jira/browse/HDDS-10985" target="_blank" rel="noopener noreferrer">HDDS-10985</a>: EC Reconstruction failed because the size of currentChunks was not equal to checksumBlockDataChunks.</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="summary--future-work">Summary & Future Work<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#summary--future-work" class="hash-link" aria-label="Direct link to Summary & Future Work" title="Direct link to Summary & Future Work"></a></h2>
+<p>Apache Ozone has successfully enabled Didi to scale its storage infrastructure to hundreds of petabytes while maintaining high performance and lowering costs.</p>
+<p>Looking ahead, Didi is exploring:</p>
+<ul>
+<li><strong>IO_URING:</strong> To further enhance asynchronous I/O efficiency.</li>
+<li><strong>SPDK:</strong> To accelerate access to RocksDB on NVMe drives for OM and SCM.</li>
+</ul>
+<p>Didi thanks the Apache Ozone community for their support and vibrant collaboration. The transition to Ozone has been a game-changer for Didi's big data infrastructure.</p>]]></content>
+ <author>
+ <name>Kaun-Hung (Rich) Huang</name>
+ <uri>https://github.com/rich7420</uri>
+ </author>
+ <author>
+ <name>Wei-Chiu Chuang</name>
+ <uri>https://github.com/jojochuang</uri>
+ </author>
+ <author>
+ <name>The Apache Ozone Community</name>
+ <uri>https://ozone.apache.org</uri>
+ </author>
+ <category label="user-stories" term="user-stories"/>
+ <category label="performance" term="performance"/>
+ <category label="erasure-coding" term="erasure-coding"/>
+ <category label="scale" term="scale"/>
+ </entry>
+ <entry>
+ <title type="html"><![CDATA[No More Hotspots: Introducing the Automatic Disk Balancer in Apache Ozone]]></title>
+ <id>https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview</id>
+ <link href="https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview"/>
+ <updated>2026-01-29T00:00:00.000Z</updated>
+ <summary type="html"><![CDATA[Ever replaced a drive on a Datanode only to watch it become an I/O hotspot?]]></summary>
+ <content type="html"><![CDATA[<p>Ever replaced a drive on a Datanode only to watch it become an I/O hotspot?
+Or seen one disk hit 95% usage while others on the same machine sit idle?
+These imbalances create performance bottlenecks and increase failure risk.
+Apache Ozone's new intra-node Disk Balancer is designed to fix this—automatically.</p>
+<p>Cluster-wide balancing in Ozone already ensures replicas are evenly spread across Datanodes. But inside a single Datanode, disks can still drift out of balance over time — for example after adding new disks, replacing hardware, or performing large deletions. This leads to I/O hotspots and uneven wear.</p>
+<p>Disk Balancer closes that gap.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="why-disk-balancer">Why Disk Balancer?<a href="https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview#why-disk-balancer" class="hash-link" aria-label="Direct link to Why Disk Balancer?" title="Direct link to Why Disk Balancer?"></a></h2>
+<ul>
+<li>
+<p><strong>Disks fill unevenly</strong> when nodes gain or lose volumes.</p>
+</li>
+<li>
+<p><strong>Large deletes</strong> can empty some disks disproportionately.</p>
+</li>
+<li>
+<p><strong>Hot disks degrade performance</strong> and become failure risks.</p>
+</li>
+</ul>
+<p>Even if the cluster is balanced, the node itself may not be. Disk Balancer fixes this automatically.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="how-it-works">How it works<a href="https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview#how-it-works" class="hash-link" aria-label="Direct link to How it works" title="Direct link to How it works"></a></h2>
+<p>The design (<a href="https://issues.apache.org/jira/browse/HDDS-5713" target="_blank" rel="noopener noreferrer">HDDS-5713</a>) introduces a simple metric: <strong>Volume Data Density</strong> — how much a disk's utilization deviates from the node's average. If the deviation exceeds a threshold, the node begins balancing.</p>
+<p>Balancing is local and safe:</p>
+<ul>
+<li>Only <strong>closed containers</strong> are moved.</li>
+<li>Moves happen entirely <strong>within the same Datanode.</strong></li>
+<li>A scheduler periodically checks for imbalance and dispatches copy-and-import tasks.</li>
+<li>Bandwidth and concurrency are <strong>operator-tunable</strong> to avoid interfering with production I/O.</li>
+</ul>
+<p>This runs independently on each Datanode. To use it, first enable the feature by setting <code>hdds.datanode.disk.balancer.enabled = true</code> in <code>ozone-site.xml</code> on your Datanodes. Once enabled, clients use <code>ozone admin datanode diskbalancer</code> commands to talk directly to Datanodes, with SCM only used to discover IN_SERVICE Datanodes when running batch operations with <code>--in-service-datanodes</code>.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="how-diskbalancer-decides-what-to-move">How DiskBalancer Decides What to Move<a href="https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview#how-diskbalancer-decides-what-to-move" class="hash-link" aria-label="Direct link to How DiskBalancer Decides What to Move" title="Direct link to How DiskBalancer Decides What to Move"></a></h2>
+<p>DiskBalancer uses simple but robust policies to decide <strong>which disks to balance</strong> and <strong>which containers to move</strong> (see the design doc for details: <code>diskbalancer.md</code> in <a href="https://issues.apache.org/jira/browse/HDDS-5713" target="_blank" rel="noopener noreferrer">HDDS-5713</a>).</p>
+<ul>
+<li><strong>Default Volume Choosing Policy</strong>: Picks the most over‑utilized volume as the source and the most under‑utilized volume as the destination, based on each disk’s <strong>Volume Data Density</strong> and the Datanode’s average utilization.</li>
+<li><strong>Default Container Choosing Policy</strong>: Scans containers on the source volume and moves only <strong>CLOSED</strong> containers that are not already being moved. To avoid repeatedly scanning the same list, it caches container metadata with automatic expiry.</li>
+</ul>
+<p>These defaults aim to make safe, incremental moves that converge the disks toward an even utilization state.</p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="container-move-process">Container Move Process<a href="https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview#container-move-process" class="hash-link" aria-label="Direct link to Container Move Process" title="Direct link to Container Move Process"></a></h3>
+<p>When DiskBalancer moves a container from one disk to another on the <strong>same Datanode</strong>, it follows a careful <strong>"Copy-Validate-Replace"</strong> flow (summarized from the design doc for <a href="https://issues.apache.org/jira/browse/HDDS-5713" target="_blank" rel="noopener noreferrer">HDDS-5713</a>):</p>
+<ol>
+<li>Create a temporary copy of the CLOSED container on the destination disk.</li>
+<li>Transition that copy into a <strong>RECOVERING</strong> state and import it as a new container on the destination.</li>
+<li>Once import and metadata updates succeed, delete the original CLOSED container from the source disk.</li>
+</ol>
+<p>This ensures that data is always consistent: the destination copy is fully validated before the original is removed, minimizing risk during balancing.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="using-disk-balancer">Using Disk Balancer<a href="https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview#using-disk-balancer" class="hash-link" aria-label="Direct link to Using Disk Balancer" title="Direct link to Using Disk Balancer"></a></h2>
+<p>First, enable the Disk Balancer feature on each Datanode by setting the following in <code>ozone-site.xml</code>:</p>
+<ul>
+<li><code>hdds.datanode.disk.balancer.enabled = true</code></li>
+</ul>
+<p>The Disk Balancer CLI supports two command patterns:</p>
+<ul>
+<li><code>ozone admin datanode diskbalancer <command> --in-service-datanodes</code> - Operate on all <strong>IN_SERVICE and HEALTHY</strong> Datanodes</li>
+<li><code>ozone admin datanode diskbalancer <command> <dn-hostname/dn-ipaddress:port></code> - Operate on a specific Datanode</li>
+</ul>
+<p>Available commands:</p>
+<ul>
+<li><strong>start</strong> - Start the Disk Balancer on the target Datanode(s)</li>
+<li><strong>stop</strong> - Stop the Disk Balancer on the target Datanode(s)</li>
+<li><strong>status</strong> - Check the current Disk Balancer status</li>
+<li><strong>report</strong> - Get a volume density report showing imbalance across disks</li>
+<li><strong>update</strong> - Update Disk Balancer configuration settings</li>
+</ul>
+<p>Examples:</p>
+<div class="language-bash codeBlockContainer_mZR4 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_rIoO"><pre tabindex="0" class="prism-code language-bash codeBlock_kDDR thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_SQL2"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Start Disk Balancer</span><span class="token pl [...]
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="configuration-parameters">Configuration Parameters<a href="https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview#configuration-parameters" class="hash-link" aria-label="Direct link to Configuration Parameters" title="Direct link to Configuration Parameters"></a></h3>
+<p>The following parameters can be specified during <strong>start</strong> or <strong>update configuration</strong> Disk Balancer:</p>
+<table><thead><tr><th>Parameter</th><th>Short Flag</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td><code>--threshold</code></td><td><code>-t</code></td><td><code>10.0</code></td><td>Percentage deviation from average utilization of the disks after which a Datanode will be rebalanced.</td></tr><tr><td><code>--bandwidth-in-mb</code></td><td><code>-b</code></td><td><code>10</code></td><td>Maximum bandwidth for DiskBalancer per second.</td></tr><tr><td><code>--parall [...]
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="benefits-for-operators">Benefits for operators<a href="https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview#benefits-for-operators" class="hash-link" aria-label="Direct link to Benefits for operators" title="Direct link to Benefits for operators"></a></h2>
+<ul>
+<li><strong>Even I/O load</strong> across disks → more stable performance.</li>
+<li><strong>Smooth ops after hardware changes</strong> (new or replaced disks).</li>
+<li><strong>Hands-off balancing</strong> once enabled.</li>
+<li><strong>Clear metrics</strong> for observability and troubleshooting.</li>
+</ul>
+<p>It complements the existing Container Balancer: one works across nodes, the other within nodes.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="closing-thoughts">Closing Thoughts<a href="https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview#closing-thoughts" class="hash-link" aria-label="Direct link to Closing Thoughts" title="Direct link to Closing Thoughts"></a></h2>
+<p>Disk Balancer is small but impactful. It brings Ozone closer to being a fully self-healing, self-balancing object store — reducing hotspots, simplifying maintenance, and improving cluster longevity.</p>
+<p>Ozone 2.2 will ship with this feature available via simple CLI controls and safe defaults. If you run long-lived clusters, this is a feature to watch.</p>
+<p>For more information, check out <a href="https://issues.apache.org/jira/browse/HDDS-5713" target="_blank" rel="noopener noreferrer">HDDS-5713</a>.</p>]]></content>
+ <author>
+ <name>The Apache Ozone Community</name>
+ <uri>https://ozone.apache.org</uri>
+ </author>
+ <author>
+ <name>Wei-Chiu Chuang</name>
+ <uri>https://github.com/jojochuang</uri>
+ </author>
+ <author>
+ <name>Yu-Chen Lai</name>
+ <uri>https://github.com/0lai0</uri>
+ </author>
+ <author>
+ <name>Gargi Jaiswal</name>
+ <uri>https://github.com/Gargi-jais11</uri>
+ </author>
+ <category label="Ozone" term="Ozone"/>
+ <category label="Disk Balancer" term="Disk Balancer"/>
+ <category label="Ozone 2.2" term="Ozone 2.2"/>
+ <category label="Datanode" term="Datanode"/>
+ </entry>
+ <entry>
+ <title type="html"><![CDATA[Accessing Ozone S3 via CyberDuck]]></title>
+ <id>https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck</id>
+ <link href="https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck"/>
+ <updated>2025-07-02T00:00:00.000Z</updated>
+ <summary type="html"><![CDATA[Here's a step‑by‑step guide to mounting and managing your Apache Ozone object store's S3 interface using CyberDuck.]]></summary>
+ <content type="html"><![CDATA[<p>Here's a step‑by‑step guide to mounting and managing your Apache Ozone object store's S3 interface using CyberDuck.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="prerequisites">Prerequisites<a href="https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck#prerequisites" class="hash-link" aria-label="Direct link to Prerequisites" title="Direct link to Prerequisites"></a></h2>
+<ol>
+<li>
+<p><strong>Running Ozone S3 Gateway</strong>
+Make sure your Ozone cluster is up and the S3 Gateway (s3g) is running. By default it listens on port <strong>9878</strong> over HTTP (and 9879 for HTTPS) at the host where you started it.</p>
+</li>
+<li>
+<p><strong>Credentials</strong></p>
+<ul>
+<li>
+<p><strong>No security:</strong> You can use any values for AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY.</p>
+</li>
+<li>
+<p><strong>With Kerberos security enabled:</strong></p>
+<div class="language-bash codeBlockContainer_mZR4 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_rIoO"><pre tabindex="0" class="prism-code language-bash codeBlock_kDDR thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_SQL2"><span class="token-line" style="color:#393A34"><span class="token plain">kinit </span><span class="token parameter variable" style="color:#36acaa">-kt</span><span c [...]
+</li>
+</ul>
+<p>These exports give you the Access Key ID and Secret you'll plug into CyberDuck.</p>
+</li>
+</ol>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="1-install-cyberduck">1. Install CyberDuck<a href="https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck#1-install-cyberduck" class="hash-link" aria-label="Direct link to 1. Install CyberDuck" title="Direct link to 1. Install CyberDuck"></a></h2>
+<ol>
+<li>Download CyberDuck from <a href="https://cyberduck.io/" target="_blank" rel="noopener noreferrer">https://cyberduck.io</a> and install it on your Mac or Windows machine.</li>
+<li>Launch CyberDuck.</li>
+</ol>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="2-create-a-new-s3-connection">2. Create a New S3 Connection<a href="https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck#2-create-a-new-s3-connection" class="hash-link" aria-label="Direct link to 2. Create a New S3 Connection" title="Direct link to 2. Create a New S3 Connection"></a></h2>
+<ol>
+<li>The bundled S3 profile in CyberDuck does not permit a custom network port, and does not allow HTTP. You may need to install additional profiles to allow those.<!-- -->
+<ol>
+<li>Select a profile from <a href="https://gist.github.com/jojochuang/9e15acee99b528ee879f7a280b8f79f7#file-ozone-s3-cyberduck-profiles-md" target="_blank" rel="noopener noreferrer">Ozone S3 CyberDuck profiles</a>.</li>
+<li>For example, download the <strong><a href="https://gist.github.com/jojochuang/9e15acee99b528ee879f7a280b8f79f7#file-ozone-s3-http-cyberduckprofile" target="_blank" rel="noopener noreferrer">Ozone S3 <code>HTTP.cyberduckprofile</code></a></strong> if your gateway is HTTP.</li>
+<li>Or download the <strong><a href="https://gist.github.com/jojochuang/9e15acee99b528ee879f7a280b8f79f7#file-ozone-s3-http-with-path-style-addressing-cyberduckprofile" target="_blank" rel="noopener noreferrer">Ozone S3 (HTTP) with path-style <code>addressing.cyberduckprofile</code></a></strong>.</li>
+<li>Installing the file by double-clicking a <code>.cyberduckprofile</code> file</li>
+<li>Check out the <a href="https://docs.cyberduck.io/protocols/s3" target="_blank" rel="noopener noreferrer">CyberDuck user documentation</a> for more details.</li>
+</ol>
+</li>
+<li>In CyberDuck, click <strong>Open Connection</strong> (or press ⌘ N).</li>
+<li>From the <strong>Protocol</strong> dropdown choose <strong>Ozone S3 (HTTP)</strong> if your gateway is configured for HTTP), or <strong>Apache Ozone S3 HTTP path style</strong> if the gateway is configured with Path-Style Addressing.</li>
+<li>Fill in the fields:<!-- -->
+<ul>
+<li><strong>Server:</strong> <code><ozone‑s3‑host></code> (e.g. <code>ozone.example.com</code>)</li>
+<li><strong>Port:</strong> <code>9878</code> (or <code>9879</code> for HTTPS)</li>
+<li><strong>Access Key ID:</strong> the <code>awsAccessKey</code> you obtained</li>
+<li><strong>Secret Access Key:</strong> the <code>awsSecret</code> you obtained</li>
+</ul>
+</li>
+<li>Click the little <strong>▶</strong> triangle next to <strong>More Options</strong> and ensure <strong>Use SSL</strong> is unchecked if you're connecting over plain HTTP.</li>
+<li><strong>Path‑Style Addressing</strong> (default) vs <strong>Virtual‑Host Style</strong>:<!-- -->
+<ul>
+<li>By default Ozone uses <strong>path‑style</strong> (<code>http://host:9878/bucket</code>).</li>
+<li>If you've set <code>ozone.s3g.domain.name</code> in your <code>ozone-site.xml</code>, you can switch to virtual‑host style and CyberDuck will use <code>bucket.host:9878</code> URLs.</li>
+</ul>
+</li>
+</ol>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="3-save-as-a-bookmark-optional">3. Save as a Bookmark (Optional)<a href="https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck#3-save-as-a-bookmark-optional" class="hash-link" aria-label="Direct link to 3. Save as a Bookmark (Optional)" title="Direct link to 3. Save as a Bookmark (Optional)"></a></h2>
+<ol>
+<li>Click the dropdown arrow next to the <strong>Connect</strong> button and choose <strong>Bookmark</strong> ▶ <strong>Add Bookmark</strong>.</li>
+<li>Give it a name like "Ozone S3" so you can reconnect quickly.</li>
+</ol>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="4-browsing-and-basic-operations">4. Browsing and Basic Operations<a href="https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck#4-browsing-and-basic-operations" class="hash-link" aria-label="Direct link to 4. Browsing and Basic Operations" title="Direct link to 4. Browsing and Basic Operations"></a></h2>
+<p>Once connected, your CyberDuck window will list all buckets in the default <code>/s3v</code> volume as top‑level entries.</p>
+<ul>
+<li><strong>List Buckets:</strong> All existing buckets appear as folders.</li>
+<li><strong>Create Bucket:</strong> Click the "+" (New Folder) icon, enter a bucket name, and press <strong>Return</strong>.</li>
+<li><strong>Upload Files:</strong> Drag‑and‑drop files from your desktop into a bucket folder.</li>
+<li><strong>Download Files:</strong> Right‑click an object and choose <strong>Download To…</strong></li>
+<li><strong>Delete Objects/Buckets:</strong> Select the file or bucket, press the <strong>Delete</strong> key, and confirm.</li>
+</ul>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="5-working-with-other-volumes">5. Working with Other Volumes<a href="https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck#5-working-with-other-volumes" class="hash-link" aria-label="Direct link to 5. Working with Other Volumes" title="Direct link to 5. Working with Other Volumes"></a></h2>
+<p>Ozone's namespace includes volumes beyond <code>/s3v</code>. To expose a bucket from another volume:</p>
+<div class="language-shell codeBlockContainer_mZR4 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_rIoO"><pre tabindex="0" class="prism-code language-shell codeBlock_kDDR thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_SQL2"><span class="token-line" style="color:#393A34"><span class="token plain">ozone </span><span class="token function" style="color:#d73a49">sh</span><span class="tok [...]
+<p>After linking, you'll see <code>common-bucket</code> in CyberDuck and can manage it just like any other S3 bucket.</p>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="6-tips--troubleshooting">6. Tips & Troubleshooting<a href="https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck#6-tips--troubleshooting" class="hash-link" aria-label="Direct link to 6. Tips & Troubleshooting" title="Direct link to 6. Tips & Troubleshooting"></a></h2>
+<ul>
+<li><strong>Permissions:</strong> If you get "Access Denied," double‑check that you've generated or revoked/re‑generated your S3 secret correctly.</li>
+<li><strong>SSL Errors:</strong> If you enable HTTPS on the gateway, make sure you either trust the certificate in CyberDuck or use a CA‑signed cert.</li>
+<li><strong>Firewall/Network:</strong> Ensure your machine can reach <code><ozone‑s3‑host>:9878</code> (e.g. <code>telnet hostname 9878</code>).</li>
+<li><strong>Bookmarks Sync:</strong> CyberDuck can sync bookmarks via Dropbox or iCloud so you can share connections across devices.</li>
+</ul>
+<hr>
+<p>You're all set! Enjoy browsing and managing your Ozone object store through a familiar S3 GUI.</p>]]></content>
+ <author>
+ <name>The Apache Ozone Community</name>
+ <uri>https://ozone.apache.org</uri>
+ </author>
+ <category label="Ozone" term="Ozone"/>
+ <category label="S3" term="S3"/>
+ <category label="CyberDuck" term="CyberDuck"/>
+ </entry>
+ <entry>
+ <title type="html"><![CDATA[Apache Ozone 2.0.0 Release]]></title>
+ <id>https://ozone.apache.org/blog/2025/04/30/ozone-2.0.0-release</id>
+ <link href="https://ozone.apache.org/blog/2025/04/30/ozone-2.0.0-release"/>
+ <updated>2025-04-30T00:00:00.000Z</updated>
+ <summary type="html"><![CDATA[Apache Ozone 2.0.0 was released on April 30th, 2025. This release includes 1700 new features, improvements, and bug fixes on top of Ozone 1.4.]]></summary>
+ <content type="html"><![CDATA[<p>Apache Ozone 2.0.0 was released on April 30th, 2025. This release includes 1700 new features, improvements, and bug fixes on top of Ozone 1.4.</p>
+<p>Notable features in this release include:</p>
+<ul>
+<li>Supporting HSync and lease recovery (HDDS-7593).</li>
+<li>SCM Decommissioning Support (HDDS-7852).</li>
+<li>Symmetric Keys for Delegation Tokens (HDDS-8829).</li>
+<li>Atomic Key Overwrite and Key Replacement (HDDS-10656).</li>
+</ul>
+<p>Other noteworthy changes include:</p>
+<ul>
+<li>ARM64 support (HDDS-6263).</li>
+<li>Java 11/17/21 Support and Testing (HDDS-8246).</li>
+<li>AWS SDK v2 client support (HDDS-12488).</li>
+</ul>
+<p>Observability improvements are:</p>
+<ul>
+<li>Ozone performance and operational dashboards (HDDS-9307).</li>
+<li>Recon UI Improvements (HDDS-11153).</li>
+<li>Support for interactive mode for Ozone CLI (HDDS-11825).</li>
+</ul>
+<p>Developer-focused changes include:</p>
+<ul>
+<li>JUnit 4 to 5 upgrade (HDDS-6729).</li>
+<li>Dropped Hadoop 2.7 ~ 2.9 support (HDDS-8113).</li>
+<li>Publish SBOM artifacts (HDDS-10986).</li>
+<li>Hadoop dependency updated to 3.4.1 (HDDS-11617).</li>
+</ul>
+<p>Incompatible changes are:</p>
+<ul>
+<li>Move S3 Gateway web admin to separate port (HDDS-7307).</li>
+<li>Deprecate file per chunk layout from Datanode code (HDDS-11753).</li>
+<li>Drop support for non-Ratis OM and SCM (HDDS-11754).</li>
+<li>Remove LegacyReplicationManager (HDDS-11759).</li>
+</ul>
+<p>Detailed release notes are available at <a href="https://ozone.apache.org/release/2.0.0/" target="_blank" rel="noopener noreferrer">https://ozone.apache.org/release/2.0.0/</a>.
+Downloads can be found at <a href="https://ozone.apache.org/downloads/" target="_blank" rel="noopener noreferrer">https://ozone.apache.org/downloads/</a>.
+Documentation for this release is available at <a href="https://ozone.apache.org/docs/2.0.0/" target="_blank" rel="noopener noreferrer">https://ozone.apache.org/docs/2.0.0/</a>.</p>]]></content>
+ <author>
+ <name>The Apache Ozone Community</name>
+ <uri>https://ozone.apache.org</uri>
+ </author>
+ <category label="release" term="release"/>
+ <category label="ozone-2.0.0" term="ozone-2.0.0"/>
+ </entry>
+</feed>
\ No newline at end of file
diff --git a/blog/authors/index.html b/blog/authors/index.html
new file mode 100644
index 000000000..5601f37e2
--- /dev/null
+++ b/blog/authors/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-authors-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">Authors | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozone.apache.org/blog/authors"><meta d [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
new file mode 100644
index 000000000..5948eac19
--- /dev/null
+++ b/blog/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">Blog | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozone.apache.org/blog"><meta data-rh="tru [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+<p>As Didi's volume of unstructured data surged into the hundreds of petabytes, comprising tens of billions of files, their traditional storage architecture faced severe scalability bottlenecks. This post summarizes how they migrated from HDFS to Apache Ozone, the optimizations they implemented for high-performance reads, and their journey in contributing these improvements back to the community.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul c [...]
+Or seen one disk hit 95% usage while others on the same machine sit idle?
+These imbalances create performance bottlenecks and increase failure risk.
+Apache Ozone's new intra-node Disk Balancer is designed to fix this—automatically.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_Sgtu padding--none margin-left--sm"><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/blog/tags/ozone">Ozone</a></li><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/blog/tags/disk-balancer">Disk Balancer</a></li><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/ [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/rss.xml b/blog/rss.xml
new file mode 100644
index 000000000..fd49c71d1
--- /dev/null
+++ b/blog/rss.xml
@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
+ <channel>
+ <title>Apache Ozone Blog</title>
+ <link>https://ozone.apache.org/blog</link>
+ <description>Apache Ozone Blog</description>
+ <lastBuildDate>Fri, 30 Jan 2026 00:00:00 GMT</lastBuildDate>
+ <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
+ <generator>https://github.com/jpmonette/feed</generator>
+ <language>en</language>
+ <item>
+ <title><![CDATA[Apache Ozone Best Practices at Didi: Scaling to Tens of Billions of Files]]></title>
+ <link>https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi</link>
+ <guid>https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi</guid>
+ <pubDate>Fri, 30 Jan 2026 00:00:00 GMT</pubDate>
+ <description><![CDATA[Guest post by the Didi Engineering Team. For the full story with detailed slides, see Apache Ozone Best Practices at Didi (PDF).]]></description>
+ <content:encoded><![CDATA[<p>Guest post by the Didi Engineering Team. For the full story with detailed slides, see <a href="https://ozone.apache.org/assets/ApacheOzoneBestPracticesAtDidi.pdf" target="_blank" rel="noopener noreferrer">Apache Ozone Best Practices at Didi (PDF)</a>.</p>
+<p>As Didi's volume of unstructured data surged into the hundreds of petabytes, comprising tens of billions of files, their traditional storage architecture faced severe scalability bottlenecks. This post summarizes how they migrated from HDFS to Apache Ozone, the optimizations they implemented for high-performance reads, and their journey in contributing these improvements back to the community.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="the-challenge-hdfs-at-scale">The Challenge: HDFS at Scale<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#the-challenge-hdfs-at-scale" class="hash-link" aria-label="Direct link to The Challenge: HDFS at Scale" title="Direct link to The Challenge: HDFS at Scale"></a></h2>
+<p>Like many data-driven enterprises, Didi relied heavily on HDFS. However, as their data scale grew, they hit the classic "NameNode Limit."</p>
+<ul>
+<li><strong>Metadata Pressure:</strong> Storing hundreds of millions of files put immense pressure on the HDFS NameNode memory.</li>
+<li><strong>Block Reporting Storms:</strong> With massive file counts, block reporting became a significant overhead.</li>
+<li><strong>Scalability Ceiling:</strong> They needed a solution that could handle tens of billions of files without partitioning their clusters into unmanageable silos.</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="why-ozone">Why Ozone?<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#why-ozone" class="hash-link" aria-label="Direct link to Why Ozone?" title="Direct link to Why Ozone?"></a></h2>
+<p>They chose Apache Ozone as their next-generation storage engine because it addresses these limitations architecturally:</p>
+<ul>
+<li><strong>Decoupled Metadata:</strong> By separating the Ozone Manager (OM) for namespace and Storage Container Manager (SCM) for block management, Ozone scales significantly better than HDFS.</li>
+<li><strong>RocksDB-based Metadata:</strong> Unlike HDFS, which relies entirely on heap memory, Ozone stores metadata in RocksDB, removing the memory bottleneck.</li>
+<li><strong>Container Logic:</strong> Managing data in "containers" rather than individual blocks reduces the reporting overhead on the SCM.</li>
+</ul>
+<p>Today, Ozone has been running in production at Didi for over two years, managing hundreds of PB of storage.</p>
+<p><img decoding="async" loading="lazy" alt="Figure 1: Ozone Cluster Scale at Didi" src="https://ozone.apache.org/assets/images/ozone-cluster-scale-at-didi-bff8e63e93ed0f503b50d7350756bef4.png" width="1856" height="842" class="img_zmyy"></p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="architecture--key-optimizations">Architecture & Key Optimizations<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#architecture--key-optimizations" class="hash-link" aria-label="Direct link to Architecture & Key Optimizations" title="Direct link to Architecture & Key Optimizations"></a></h2>
+<p>Migrating was just the first step. To meet Didi's strict latency requirements (especially for "first-frame" read access), they engineered several critical optimizations.</p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="1-multi-cluster-routing-with-viewfs">1. Multi-Cluster Routing with ViewFs<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#1-multi-cluster-routing-with-viewfs" class="hash-link" aria-label="Direct link to 1. Multi-Cluster Routing with ViewFs" title="Direct link to 1. Multi-Cluster Routing with ViewFs"></a></h3>
+<p>To manage the sheer volume of data, they utilized a client-side routing mechanism inspired by HDFS ViewFs. By mapping paths to specific clusters (e.g., <code>vol/bucket/prefix1</code> → cluster1), they effectively balanced the load and kept the file count in each cluster under 5 billion, alleviating RPC pressure on individual Ozone Managers.</p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="2-boosting-read-performance-s3g-follower-reads">2. Boosting Read Performance: S3G Follower Reads<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#2-boosting-read-performance-s3g-follower-reads" class="hash-link" aria-label="Direct link to 2. Boosting Read Performance: S3G Follower Reads" title="Direct link to 2. Boosting Read Performance: S3G Follower Reads"></a></h3>
+<p>They observed that the Leader OM often became a bottleneck for S3 Gateway (S3G) requests. To solve this, they implemented a Follower Read strategy.</p>
+<p>They introduced a "probe task" in the client (e.g. every 3 seconds) that evaluates:</p>
+<ul>
+<li><strong>Latency:</strong> Selects the OM node with the lowest response time.</li>
+<li><strong>Freshness:</strong> Checks the lastAppliedIndex to ensure the Follower isn't serving stale data.</li>
+</ul>
+<p><strong>Result:</strong> The P90 latency for S3G metadata requests (GetMetaLatency) dropped from a weekly average of ~90ms to ~17ms; in best cases, from tens of milliseconds to under 3ms.</p>
+<p><img decoding="async" loading="lazy" alt="Figure 6-2. S3G Download Latency Monitoring After FollowerRead Goes Online" src="https://ozone.apache.org/assets/images/s3g-download-latency-follower-read-goes-online-102b1f38e6b783c7401950efbbef20b0.png" width="2310" height="1772" class="img_zmyy"></p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="3-heterogeneous-caching-hdd--nvme">3. Heterogeneous Caching (HDD + NVMe)<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#3-heterogeneous-caching-hdd--nvme" class="hash-link" aria-label="Direct link to 3. Heterogeneous Caching (HDD + NVMe)" title="Direct link to 3. Heterogeneous Caching (HDD + NVMe)"></a></h3>
+<p>Didi's clusters use cost-effective hard disk drives, but random reads on small files (tens of MBs) suffered from disk latency. They designed a heterogeneous caching layer:</p>
+<ul>
+<li><strong>Strategy:</strong> They cache the first Chunk (1MB) of each block on high-speed NVMe SSDs; for EC (e.g. RS-6-3-1024k) they cache the first stripe (9MB: 6 data + 3 parity) to cover first-frame needs.</li>
+<li><strong>Impact:</strong> The 6MB of actual data in that stripe is sufficient for most first-frame requests, dramatically improving read speeds without the cost of all-flash storage.</li>
+<li><strong>Implementation:</strong> A custom LRU cache on the Datanode manages this hot data, ensuring efficient space utilization. This caching optimization brought at least 100ms latency improvement in first-frame reads.</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="4-concurrency--lock-optimization">4. Concurrency & Lock Optimization<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#4-concurrency--lock-optimization" class="hash-link" aria-label="Direct link to 4. Concurrency & Lock Optimization" title="Direct link to 4. Concurrency & Lock Optimization"></a></h3>
+<p>During high-concurrency testing, they identified thread contention issues. Specifically, a spin lock in <code>ChunkUtils#processFileExclusive</code> was causing CPU spikes.</p>
+<p>They contributed a fix (see <a href="https://issues.apache.org/jira/browse/HDDS-11281" target="_blank" rel="noopener noreferrer">HDDS-11281</a>) that replaced the global lock with a <code>Striped<ReadWriteLock></code>. This granular locking mechanism reduced lock contention and improved system throughput, yielding a performance gain of at least 50ms per operation in contended scenarios.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="cost-efficiency-erasure-coding-ec">Cost Efficiency: Erasure Coding (EC)<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#cost-efficiency-erasure-coding-ec" class="hash-link" aria-label="Direct link to Cost Efficiency: Erasure Coding (EC)" title="Direct link to Cost Efficiency: Erasure Coding (EC)"></a></h2>
+<p>With data growing at >1PB per day, the 3-replica cost model was unsustainable. They transitioned to Erasure Coding (EC) using the RS-6-3-1024k policy.</p>
+<ul>
+<li><strong>Storage Savings:</strong> Reduced replication factor from 3x to ~1.5x, saving 50% on hardware.</li>
+<li><strong>Challenges Solved:</strong> They encountered and fixed issues with deletion backlogs (<a href="https://issues.apache.org/jira/browse/HDDS-11498" target="_blank" rel="noopener noreferrer">HDDS-11498</a>), insufficient EC pipelines (<a href="https://issues.apache.org/jira/browse/HDDS-11209" target="_blank" rel="noopener noreferrer">HDDS-11209</a>), and Safe Mode logic for EC containers (<a href="https://issues.apache.org/jira/browse/HDDS-11243" target="_blank" rel="noopener nor [...]
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="community-contributions">Community Contributions<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#community-contributions" class="hash-link" aria-label="Direct link to Community Contributions" title="Direct link to Community Contributions"></a></h2>
+<p>Didi's journey with Ozone has been deeply collaborative. We are proud to highlight that Didi's contributors have brought several key fixes and improvements back to the Apache Ozone community:</p>
+<ul>
+<li><a href="https://issues.apache.org/jira/browse/HDDS-11483" target="_blank" rel="noopener noreferrer">HDDS-11483</a>: Increased S3G buffer size (e.g. to 4MB) to reduce network I/O and improve first-frame latency.</li>
+<li><a href="https://issues.apache.org/jira/browse/HDDS-11209" target="_blank" rel="noopener noreferrer">HDDS-11209</a>: Avoid insufficient EC pipelines in the container pipeline cache (OM must not cache EC pipelines with incomplete Datanodes).</li>
+<li><a href="https://issues.apache.org/jira/browse/HDDS-9342" target="_blank" rel="noopener noreferrer">HDDS-9342</a>: Fixed OM HA crash and restart failure caused by timing inconsistency between applyTransactionMap and double-buffer.</li>
+<li><a href="https://issues.apache.org/jira/browse/HDDS-10985" target="_blank" rel="noopener noreferrer">HDDS-10985</a>: EC Reconstruction failed because the size of currentChunks was not equal to checksumBlockDataChunks.</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="summary--future-work">Summary & Future Work<a href="https://ozone.apache.org/blog/2026/01/30/apache-ozone-best-practices-at-didi#summary--future-work" class="hash-link" aria-label="Direct link to Summary & Future Work" title="Direct link to Summary & Future Work"></a></h2>
+<p>Apache Ozone has successfully enabled Didi to scale its storage infrastructure to hundreds of petabytes while maintaining high performance and lowering costs.</p>
+<p>Looking ahead, Didi is exploring:</p>
+<ul>
+<li><strong>IO_URING:</strong> To further enhance asynchronous I/O efficiency.</li>
+<li><strong>SPDK:</strong> To accelerate access to RocksDB on NVMe drives for OM and SCM.</li>
+</ul>
+<p>Didi thanks the Apache Ozone community for their support and vibrant collaboration. The transition to Ozone has been a game-changer for Didi's big data infrastructure.</p>]]></content:encoded>
+ <category>user-stories</category>
+ <category>performance</category>
+ <category>erasure-coding</category>
+ <category>scale</category>
+ </item>
+ <item>
+ <title><![CDATA[No More Hotspots: Introducing the Automatic Disk Balancer in Apache Ozone]]></title>
+ <link>https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview</link>
+ <guid>https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview</guid>
+ <pubDate>Thu, 29 Jan 2026 00:00:00 GMT</pubDate>
+ <description><![CDATA[Ever replaced a drive on a Datanode only to watch it become an I/O hotspot?]]></description>
+ <content:encoded><![CDATA[<p>Ever replaced a drive on a Datanode only to watch it become an I/O hotspot?
+Or seen one disk hit 95% usage while others on the same machine sit idle?
+These imbalances create performance bottlenecks and increase failure risk.
+Apache Ozone's new intra-node Disk Balancer is designed to fix this—automatically.</p>
+<p>Cluster-wide balancing in Ozone already ensures replicas are evenly spread across Datanodes. But inside a single Datanode, disks can still drift out of balance over time — for example after adding new disks, replacing hardware, or performing large deletions. This leads to I/O hotspots and uneven wear.</p>
+<p>Disk Balancer closes that gap.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="why-disk-balancer">Why Disk Balancer?<a href="https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview#why-disk-balancer" class="hash-link" aria-label="Direct link to Why Disk Balancer?" title="Direct link to Why Disk Balancer?"></a></h2>
+<ul>
+<li>
+<p><strong>Disks fill unevenly</strong> when nodes gain or lose volumes.</p>
+</li>
+<li>
+<p><strong>Large deletes</strong> can empty some disks disproportionately.</p>
+</li>
+<li>
+<p><strong>Hot disks degrade performance</strong> and become failure risks.</p>
+</li>
+</ul>
+<p>Even if the cluster is balanced, the node itself may not be. Disk Balancer fixes this automatically.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="how-it-works">How it works<a href="https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview#how-it-works" class="hash-link" aria-label="Direct link to How it works" title="Direct link to How it works"></a></h2>
+<p>The design (<a href="https://issues.apache.org/jira/browse/HDDS-5713" target="_blank" rel="noopener noreferrer">HDDS-5713</a>) introduces a simple metric: <strong>Volume Data Density</strong> — how much a disk's utilization deviates from the node's average. If the deviation exceeds a threshold, the node begins balancing.</p>
+<p>Balancing is local and safe:</p>
+<ul>
+<li>Only <strong>closed containers</strong> are moved.</li>
+<li>Moves happen entirely <strong>within the same Datanode.</strong></li>
+<li>A scheduler periodically checks for imbalance and dispatches copy-and-import tasks.</li>
+<li>Bandwidth and concurrency are <strong>operator-tunable</strong> to avoid interfering with production I/O.</li>
+</ul>
+<p>This runs independently on each Datanode. To use it, first enable the feature by setting <code>hdds.datanode.disk.balancer.enabled = true</code> in <code>ozone-site.xml</code> on your Datanodes. Once enabled, clients use <code>ozone admin datanode diskbalancer</code> commands to talk directly to Datanodes, with SCM only used to discover IN_SERVICE Datanodes when running batch operations with <code>--in-service-datanodes</code>.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="how-diskbalancer-decides-what-to-move">How DiskBalancer Decides What to Move<a href="https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview#how-diskbalancer-decides-what-to-move" class="hash-link" aria-label="Direct link to How DiskBalancer Decides What to Move" title="Direct link to How DiskBalancer Decides What to Move"></a></h2>
+<p>DiskBalancer uses simple but robust policies to decide <strong>which disks to balance</strong> and <strong>which containers to move</strong> (see the design doc for details: <code>diskbalancer.md</code> in <a href="https://issues.apache.org/jira/browse/HDDS-5713" target="_blank" rel="noopener noreferrer">HDDS-5713</a>).</p>
+<ul>
+<li><strong>Default Volume Choosing Policy</strong>: Picks the most over‑utilized volume as the source and the most under‑utilized volume as the destination, based on each disk’s <strong>Volume Data Density</strong> and the Datanode’s average utilization.</li>
+<li><strong>Default Container Choosing Policy</strong>: Scans containers on the source volume and moves only <strong>CLOSED</strong> containers that are not already being moved. To avoid repeatedly scanning the same list, it caches container metadata with automatic expiry.</li>
+</ul>
+<p>These defaults aim to make safe, incremental moves that converge the disks toward an even utilization state.</p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="container-move-process">Container Move Process<a href="https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview#container-move-process" class="hash-link" aria-label="Direct link to Container Move Process" title="Direct link to Container Move Process"></a></h3>
+<p>When DiskBalancer moves a container from one disk to another on the <strong>same Datanode</strong>, it follows a careful <strong>"Copy-Validate-Replace"</strong> flow (summarized from the design doc for <a href="https://issues.apache.org/jira/browse/HDDS-5713" target="_blank" rel="noopener noreferrer">HDDS-5713</a>):</p>
+<ol>
+<li>Create a temporary copy of the CLOSED container on the destination disk.</li>
+<li>Transition that copy into a <strong>RECOVERING</strong> state and import it as a new container on the destination.</li>
+<li>Once import and metadata updates succeed, delete the original CLOSED container from the source disk.</li>
+</ol>
+<p>This ensures that data is always consistent: the destination copy is fully validated before the original is removed, minimizing risk during balancing.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="using-disk-balancer">Using Disk Balancer<a href="https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview#using-disk-balancer" class="hash-link" aria-label="Direct link to Using Disk Balancer" title="Direct link to Using Disk Balancer"></a></h2>
+<p>First, enable the Disk Balancer feature on each Datanode by setting the following in <code>ozone-site.xml</code>:</p>
+<ul>
+<li><code>hdds.datanode.disk.balancer.enabled = true</code></li>
+</ul>
+<p>The Disk Balancer CLI supports two command patterns:</p>
+<ul>
+<li><code>ozone admin datanode diskbalancer <command> --in-service-datanodes</code> - Operate on all <strong>IN_SERVICE and HEALTHY</strong> Datanodes</li>
+<li><code>ozone admin datanode diskbalancer <command> <dn-hostname/dn-ipaddress:port></code> - Operate on a specific Datanode</li>
+</ul>
+<p>Available commands:</p>
+<ul>
+<li><strong>start</strong> - Start the Disk Balancer on the target Datanode(s)</li>
+<li><strong>stop</strong> - Stop the Disk Balancer on the target Datanode(s)</li>
+<li><strong>status</strong> - Check the current Disk Balancer status</li>
+<li><strong>report</strong> - Get a volume density report showing imbalance across disks</li>
+<li><strong>update</strong> - Update Disk Balancer configuration settings</li>
+</ul>
+<p>Examples:</p>
+<div class="language-bash codeBlockContainer_mZR4 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_rIoO"><pre tabindex="0" class="prism-code language-bash codeBlock_kDDR thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_SQL2"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Start Disk Balancer</span><span class="token pl [...]
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="configuration-parameters">Configuration Parameters<a href="https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview#configuration-parameters" class="hash-link" aria-label="Direct link to Configuration Parameters" title="Direct link to Configuration Parameters"></a></h3>
+<p>The following parameters can be specified during <strong>start</strong> or <strong>update configuration</strong> Disk Balancer:</p>
+<table><thead><tr><th>Parameter</th><th>Short Flag</th><th>Default Value</th><th>Description</th></tr></thead><tbody><tr><td><code>--threshold</code></td><td><code>-t</code></td><td><code>10.0</code></td><td>Percentage deviation from average utilization of the disks after which a Datanode will be rebalanced.</td></tr><tr><td><code>--bandwidth-in-mb</code></td><td><code>-b</code></td><td><code>10</code></td><td>Maximum bandwidth for DiskBalancer per second.</td></tr><tr><td><code>--parall [...]
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="benefits-for-operators">Benefits for operators<a href="https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview#benefits-for-operators" class="hash-link" aria-label="Direct link to Benefits for operators" title="Direct link to Benefits for operators"></a></h2>
+<ul>
+<li><strong>Even I/O load</strong> across disks → more stable performance.</li>
+<li><strong>Smooth ops after hardware changes</strong> (new or replaced disks).</li>
+<li><strong>Hands-off balancing</strong> once enabled.</li>
+<li><strong>Clear metrics</strong> for observability and troubleshooting.</li>
+</ul>
+<p>It complements the existing Container Balancer: one works across nodes, the other within nodes.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="closing-thoughts">Closing Thoughts<a href="https://ozone.apache.org/blog/2026/01/29/disk-balancer-preview#closing-thoughts" class="hash-link" aria-label="Direct link to Closing Thoughts" title="Direct link to Closing Thoughts"></a></h2>
+<p>Disk Balancer is small but impactful. It brings Ozone closer to being a fully self-healing, self-balancing object store — reducing hotspots, simplifying maintenance, and improving cluster longevity.</p>
+<p>Ozone 2.2 will ship with this feature available via simple CLI controls and safe defaults. If you run long-lived clusters, this is a feature to watch.</p>
+<p>For more information, check out <a href="https://issues.apache.org/jira/browse/HDDS-5713" target="_blank" rel="noopener noreferrer">HDDS-5713</a>.</p>]]></content:encoded>
+ <category>Ozone</category>
+ <category>Disk Balancer</category>
+ <category>Ozone 2.2</category>
+ <category>Datanode</category>
+ </item>
+ <item>
+ <title><![CDATA[Accessing Ozone S3 via CyberDuck]]></title>
+ <link>https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck</link>
+ <guid>https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck</guid>
+ <pubDate>Wed, 02 Jul 2025 00:00:00 GMT</pubDate>
+ <description><![CDATA[Here's a step‑by‑step guide to mounting and managing your Apache Ozone object store's S3 interface using CyberDuck.]]></description>
+ <content:encoded><![CDATA[<p>Here's a step‑by‑step guide to mounting and managing your Apache Ozone object store's S3 interface using CyberDuck.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="prerequisites">Prerequisites<a href="https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck#prerequisites" class="hash-link" aria-label="Direct link to Prerequisites" title="Direct link to Prerequisites"></a></h2>
+<ol>
+<li>
+<p><strong>Running Ozone S3 Gateway</strong>
+Make sure your Ozone cluster is up and the S3 Gateway (s3g) is running. By default it listens on port <strong>9878</strong> over HTTP (and 9879 for HTTPS) at the host where you started it.</p>
+</li>
+<li>
+<p><strong>Credentials</strong></p>
+<ul>
+<li>
+<p><strong>No security:</strong> You can use any values for AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY.</p>
+</li>
+<li>
+<p><strong>With Kerberos security enabled:</strong></p>
+<div class="language-bash codeBlockContainer_mZR4 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_rIoO"><pre tabindex="0" class="prism-code language-bash codeBlock_kDDR thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_SQL2"><span class="token-line" style="color:#393A34"><span class="token plain">kinit </span><span class="token parameter variable" style="color:#36acaa">-kt</span><span c [...]
+</li>
+</ul>
+<p>These exports give you the Access Key ID and Secret you'll plug into CyberDuck.</p>
+</li>
+</ol>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="1-install-cyberduck">1. Install CyberDuck<a href="https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck#1-install-cyberduck" class="hash-link" aria-label="Direct link to 1. Install CyberDuck" title="Direct link to 1. Install CyberDuck"></a></h2>
+<ol>
+<li>Download CyberDuck from <a href="https://cyberduck.io/" target="_blank" rel="noopener noreferrer">https://cyberduck.io</a> and install it on your Mac or Windows machine.</li>
+<li>Launch CyberDuck.</li>
+</ol>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="2-create-a-new-s3-connection">2. Create a New S3 Connection<a href="https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck#2-create-a-new-s3-connection" class="hash-link" aria-label="Direct link to 2. Create a New S3 Connection" title="Direct link to 2. Create a New S3 Connection"></a></h2>
+<ol>
+<li>The bundled S3 profile in CyberDuck does not permit a custom network port, and does not allow HTTP. You may need to install additional profiles to allow those.<!-- -->
+<ol>
+<li>Select a profile from <a href="https://gist.github.com/jojochuang/9e15acee99b528ee879f7a280b8f79f7#file-ozone-s3-cyberduck-profiles-md" target="_blank" rel="noopener noreferrer">Ozone S3 CyberDuck profiles</a>.</li>
+<li>For example, download the <strong><a href="https://gist.github.com/jojochuang/9e15acee99b528ee879f7a280b8f79f7#file-ozone-s3-http-cyberduckprofile" target="_blank" rel="noopener noreferrer">Ozone S3 <code>HTTP.cyberduckprofile</code></a></strong> if your gateway is HTTP.</li>
+<li>Or download the <strong><a href="https://gist.github.com/jojochuang/9e15acee99b528ee879f7a280b8f79f7#file-ozone-s3-http-with-path-style-addressing-cyberduckprofile" target="_blank" rel="noopener noreferrer">Ozone S3 (HTTP) with path-style <code>addressing.cyberduckprofile</code></a></strong>.</li>
+<li>Installing the file by double-clicking a <code>.cyberduckprofile</code> file</li>
+<li>Check out the <a href="https://docs.cyberduck.io/protocols/s3" target="_blank" rel="noopener noreferrer">CyberDuck user documentation</a> for more details.</li>
+</ol>
+</li>
+<li>In CyberDuck, click <strong>Open Connection</strong> (or press ⌘ N).</li>
+<li>From the <strong>Protocol</strong> dropdown choose <strong>Ozone S3 (HTTP)</strong> if your gateway is configured for HTTP), or <strong>Apache Ozone S3 HTTP path style</strong> if the gateway is configured with Path-Style Addressing.</li>
+<li>Fill in the fields:<!-- -->
+<ul>
+<li><strong>Server:</strong> <code><ozone‑s3‑host></code> (e.g. <code>ozone.example.com</code>)</li>
+<li><strong>Port:</strong> <code>9878</code> (or <code>9879</code> for HTTPS)</li>
+<li><strong>Access Key ID:</strong> the <code>awsAccessKey</code> you obtained</li>
+<li><strong>Secret Access Key:</strong> the <code>awsSecret</code> you obtained</li>
+</ul>
+</li>
+<li>Click the little <strong>▶</strong> triangle next to <strong>More Options</strong> and ensure <strong>Use SSL</strong> is unchecked if you're connecting over plain HTTP.</li>
+<li><strong>Path‑Style Addressing</strong> (default) vs <strong>Virtual‑Host Style</strong>:<!-- -->
+<ul>
+<li>By default Ozone uses <strong>path‑style</strong> (<code>http://host:9878/bucket</code>).</li>
+<li>If you've set <code>ozone.s3g.domain.name</code> in your <code>ozone-site.xml</code>, you can switch to virtual‑host style and CyberDuck will use <code>bucket.host:9878</code> URLs.</li>
+</ul>
+</li>
+</ol>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="3-save-as-a-bookmark-optional">3. Save as a Bookmark (Optional)<a href="https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck#3-save-as-a-bookmark-optional" class="hash-link" aria-label="Direct link to 3. Save as a Bookmark (Optional)" title="Direct link to 3. Save as a Bookmark (Optional)"></a></h2>
+<ol>
+<li>Click the dropdown arrow next to the <strong>Connect</strong> button and choose <strong>Bookmark</strong> ▶ <strong>Add Bookmark</strong>.</li>
+<li>Give it a name like "Ozone S3" so you can reconnect quickly.</li>
+</ol>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="4-browsing-and-basic-operations">4. Browsing and Basic Operations<a href="https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck#4-browsing-and-basic-operations" class="hash-link" aria-label="Direct link to 4. Browsing and Basic Operations" title="Direct link to 4. Browsing and Basic Operations"></a></h2>
+<p>Once connected, your CyberDuck window will list all buckets in the default <code>/s3v</code> volume as top‑level entries.</p>
+<ul>
+<li><strong>List Buckets:</strong> All existing buckets appear as folders.</li>
+<li><strong>Create Bucket:</strong> Click the "+" (New Folder) icon, enter a bucket name, and press <strong>Return</strong>.</li>
+<li><strong>Upload Files:</strong> Drag‑and‑drop files from your desktop into a bucket folder.</li>
+<li><strong>Download Files:</strong> Right‑click an object and choose <strong>Download To…</strong></li>
+<li><strong>Delete Objects/Buckets:</strong> Select the file or bucket, press the <strong>Delete</strong> key, and confirm.</li>
+</ul>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="5-working-with-other-volumes">5. Working with Other Volumes<a href="https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck#5-working-with-other-volumes" class="hash-link" aria-label="Direct link to 5. Working with Other Volumes" title="Direct link to 5. Working with Other Volumes"></a></h2>
+<p>Ozone's namespace includes volumes beyond <code>/s3v</code>. To expose a bucket from another volume:</p>
+<div class="language-shell codeBlockContainer_mZR4 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_rIoO"><pre tabindex="0" class="prism-code language-shell codeBlock_kDDR thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_SQL2"><span class="token-line" style="color:#393A34"><span class="token plain">ozone </span><span class="token function" style="color:#d73a49">sh</span><span class="tok [...]
+<p>After linking, you'll see <code>common-bucket</code> in CyberDuck and can manage it just like any other S3 bucket.</p>
+<hr>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="6-tips--troubleshooting">6. Tips & Troubleshooting<a href="https://ozone.apache.org/blog/2025/07/02/access-ozone-via-cyberduck#6-tips--troubleshooting" class="hash-link" aria-label="Direct link to 6. Tips & Troubleshooting" title="Direct link to 6. Tips & Troubleshooting"></a></h2>
+<ul>
+<li><strong>Permissions:</strong> If you get "Access Denied," double‑check that you've generated or revoked/re‑generated your S3 secret correctly.</li>
+<li><strong>SSL Errors:</strong> If you enable HTTPS on the gateway, make sure you either trust the certificate in CyberDuck or use a CA‑signed cert.</li>
+<li><strong>Firewall/Network:</strong> Ensure your machine can reach <code><ozone‑s3‑host>:9878</code> (e.g. <code>telnet hostname 9878</code>).</li>
+<li><strong>Bookmarks Sync:</strong> CyberDuck can sync bookmarks via Dropbox or iCloud so you can share connections across devices.</li>
+</ul>
+<hr>
+<p>You're all set! Enjoy browsing and managing your Ozone object store through a familiar S3 GUI.</p>]]></content:encoded>
+ <category>Ozone</category>
+ <category>S3</category>
+ <category>CyberDuck</category>
+ </item>
+ <item>
+ <title><![CDATA[Apache Ozone 2.0.0 Release]]></title>
+ <link>https://ozone.apache.org/blog/2025/04/30/ozone-2.0.0-release</link>
+ <guid>https://ozone.apache.org/blog/2025/04/30/ozone-2.0.0-release</guid>
+ <pubDate>Wed, 30 Apr 2025 00:00:00 GMT</pubDate>
+ <description><![CDATA[Apache Ozone 2.0.0 was released on April 30th, 2025. This release includes 1700 new features, improvements, and bug fixes on top of Ozone 1.4.]]></description>
+ <content:encoded><![CDATA[<p>Apache Ozone 2.0.0 was released on April 30th, 2025. This release includes 1700 new features, improvements, and bug fixes on top of Ozone 1.4.</p>
+<p>Notable features in this release include:</p>
+<ul>
+<li>Supporting HSync and lease recovery (HDDS-7593).</li>
+<li>SCM Decommissioning Support (HDDS-7852).</li>
+<li>Symmetric Keys for Delegation Tokens (HDDS-8829).</li>
+<li>Atomic Key Overwrite and Key Replacement (HDDS-10656).</li>
+</ul>
+<p>Other noteworthy changes include:</p>
+<ul>
+<li>ARM64 support (HDDS-6263).</li>
+<li>Java 11/17/21 Support and Testing (HDDS-8246).</li>
+<li>AWS SDK v2 client support (HDDS-12488).</li>
+</ul>
+<p>Observability improvements are:</p>
+<ul>
+<li>Ozone performance and operational dashboards (HDDS-9307).</li>
+<li>Recon UI Improvements (HDDS-11153).</li>
+<li>Support for interactive mode for Ozone CLI (HDDS-11825).</li>
+</ul>
+<p>Developer-focused changes include:</p>
+<ul>
+<li>JUnit 4 to 5 upgrade (HDDS-6729).</li>
+<li>Dropped Hadoop 2.7 ~ 2.9 support (HDDS-8113).</li>
+<li>Publish SBOM artifacts (HDDS-10986).</li>
+<li>Hadoop dependency updated to 3.4.1 (HDDS-11617).</li>
+</ul>
+<p>Incompatible changes are:</p>
+<ul>
+<li>Move S3 Gateway web admin to separate port (HDDS-7307).</li>
+<li>Deprecate file per chunk layout from Datanode code (HDDS-11753).</li>
+<li>Drop support for non-Ratis OM and SCM (HDDS-11754).</li>
+<li>Remove LegacyReplicationManager (HDDS-11759).</li>
+</ul>
+<p>Detailed release notes are available at <a href="https://ozone.apache.org/release/2.0.0/" target="_blank" rel="noopener noreferrer">https://ozone.apache.org/release/2.0.0/</a>.
+Downloads can be found at <a href="https://ozone.apache.org/downloads/" target="_blank" rel="noopener noreferrer">https://ozone.apache.org/downloads/</a>.
+Documentation for this release is available at <a href="https://ozone.apache.org/docs/2.0.0/" target="_blank" rel="noopener noreferrer">https://ozone.apache.org/docs/2.0.0/</a>.</p>]]></content:encoded>
+ <category>release</category>
+ <category>ozone-2.0.0</category>
+ </item>
+ </channel>
+</rss>
\ No newline at end of file
diff --git a/blog/tags/cyber-duck/index.html b/blog/tags/cyber-duck/index.html
new file mode 100644
index 000000000..311ecf0bb
--- /dev/null
+++ b/blog/tags/cyber-duck/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">One post tagged with "CyberDuck" | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozo [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/datanode/index.html b/blog/tags/datanode/index.html
new file mode 100644
index 000000000..0fe2dc252
--- /dev/null
+++ b/blog/tags/datanode/index.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">One post tagged with "Datanode" | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozon [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+Or seen one disk hit 95% usage while others on the same machine sit idle?
+These imbalances create performance bottlenecks and increase failure risk.
+Apache Ozone's new intra-node Disk Balancer is designed to fix this—automatically.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_Sgtu padding--none margin-left--sm"><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/blog/tags/ozone">Ozone</a></li><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/blog/tags/disk-balancer">Disk Balancer</a></li><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/ [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/disk-balancer/index.html b/blog/tags/disk-balancer/index.html
new file mode 100644
index 000000000..9fc5f2d4c
--- /dev/null
+++ b/blog/tags/disk-balancer/index.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">One post tagged with "Disk Balancer" | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https:/ [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+Or seen one disk hit 95% usage while others on the same machine sit idle?
+These imbalances create performance bottlenecks and increase failure risk.
+Apache Ozone's new intra-node Disk Balancer is designed to fix this—automatically.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_Sgtu padding--none margin-left--sm"><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/blog/tags/ozone">Ozone</a></li><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/blog/tags/disk-balancer">Disk Balancer</a></li><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/ [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/erasure-coding/index.html b/blog/tags/erasure-coding/index.html
new file mode 100644
index 000000000..de2524ebc
--- /dev/null
+++ b/blog/tags/erasure-coding/index.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">One post tagged with "erasure-coding" | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https: [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+<p>As Didi's volume of unstructured data surged into the hundreds of petabytes, comprising tens of billions of files, their traditional storage architecture faced severe scalability bottlenecks. This post summarizes how they migrated from HDFS to Apache Ozone, the optimizations they implemented for high-performance reads, and their journey in contributing these improvements back to the community.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul c [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/index.html b/blog/tags/index.html
new file mode 100644
index 000000000..f3089bf37
--- /dev/null
+++ b/blog/tags/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">Tags | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozone.apache.org/blog/tags"><meta data-rh [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/ozone-2-0-0/index.html b/blog/tags/ozone-2-0-0/index.html
new file mode 100644
index 000000000..48be15b45
--- /dev/null
+++ b/blog/tags/ozone-2-0-0/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">One post tagged with "ozone-2.0.0" | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://o [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/ozone-2-2/index.html b/blog/tags/ozone-2-2/index.html
new file mode 100644
index 000000000..3e6e8fecd
--- /dev/null
+++ b/blog/tags/ozone-2-2/index.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">One post tagged with "Ozone 2.2" | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozo [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+Or seen one disk hit 95% usage while others on the same machine sit idle?
+These imbalances create performance bottlenecks and increase failure risk.
+Apache Ozone's new intra-node Disk Balancer is designed to fix this—automatically.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_Sgtu padding--none margin-left--sm"><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/blog/tags/ozone">Ozone</a></li><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/blog/tags/disk-balancer">Disk Balancer</a></li><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/ [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/ozone/index.html b/blog/tags/ozone/index.html
new file mode 100644
index 000000000..28472adea
--- /dev/null
+++ b/blog/tags/ozone/index.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">2 posts tagged with "Ozone" | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozone.ap [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+Or seen one disk hit 95% usage while others on the same machine sit idle?
+These imbalances create performance bottlenecks and increase failure risk.
+Apache Ozone's new intra-node Disk Balancer is designed to fix this—automatically.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_Sgtu padding--none margin-left--sm"><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/blog/tags/ozone">Ozone</a></li><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/blog/tags/disk-balancer">Disk Balancer</a></li><li class="tag_ZUEm"><a class="tag_de0C tagRegular_Y72n" href="/ [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/performance/index.html b/blog/tags/performance/index.html
new file mode 100644
index 000000000..b75579ef3
--- /dev/null
+++ b/blog/tags/performance/index.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">One post tagged with "performance" | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://o [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+<p>As Didi's volume of unstructured data surged into the hundreds of petabytes, comprising tens of billions of files, their traditional storage architecture faced severe scalability bottlenecks. This post summarizes how they migrated from HDFS to Apache Ozone, the optimizations they implemented for high-performance reads, and their journey in contributing these improvements back to the community.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul c [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/release/index.html b/blog/tags/release/index.html
new file mode 100644
index 000000000..e16b43533
--- /dev/null
+++ b/blog/tags/release/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">One post tagged with "release" | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozone [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/s-3/index.html b/blog/tags/s-3/index.html
new file mode 100644
index 000000000..a4b93db35
--- /dev/null
+++ b/blog/tags/s-3/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">One post tagged with "S3" | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozone.apac [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/scale/index.html b/blog/tags/scale/index.html
new file mode 100644
index 000000000..57f7d709e
--- /dev/null
+++ b/blog/tags/scale/index.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">One post tagged with "scale" | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozone.a [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+<p>As Didi's volume of unstructured data surged into the hundreds of petabytes, comprising tens of billions of files, their traditional storage architecture faced severe scalability bottlenecks. This post summarizes how they migrated from HDFS to Apache Ozone, the optimizations they implemented for high-performance reads, and their journey in contributing these improvements back to the community.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul c [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/tags/user-stories/index.html b/blog/tags/user-stories/index.html
new file mode 100644
index 000000000..01008b2db
--- /dev/null
+++ b/blog/tags/user-stories/index.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-tags-post-list-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">One post tagged with "user-stories" | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https:// [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+<p>As Didi's volume of unstructured data surged into the hundreds of petabytes, comprising tens of billions of files, their traditional storage architecture faced severe scalability bottlenecks. This post summarizes how they migrated from HDFS to Apache Ozone, the optimizations they implemented for high-performance reads, and their journey in contributing these improvements back to the community.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul c [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blogs/index.html b/blogs/index.html
deleted file mode 100644
index 1fd479146..000000000
--- a/blogs/index.html
+++ /dev/null
@@ -1,152 +0,0 @@
-
-<!DOCTYPE html>
-
-<html>
-
-<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="Object store for Hadoop">
- <meta name="keywords" content="hadoop, ozone, hdds, objectstore, scale"/>
- <meta name="robots" content="index,follow"/>
- <meta name="language" content="en"/>
-
- <title>Apache Ozone</title>
-
- <base href="https://ozone.apache.org/">
-
- <link rel="canonical" href="https://ozone.apache.org">
-
- <link rel="stylesheet" href="bootstrap.min.css">
- <link rel="stylesheet" href="style.css">
-
- <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
- <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
- <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
- <link rel="manifest" href="/site.webmanifest">
- <link rel="mask-icon" href="/safari-pinned-tab.svg">
- <link rel="shortcut icon" href="/favicon.ico">
- <meta name="msapplication-TileColor" content="#da532c">
- <meta name="theme-color" content="#ffffff">
-
-
- <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>
-
-
-<div class="topnav">
- <div class="container">
- <ul class="breadcrumb col-md-4">
- <li>
- <img class="asf-logo" src="asf_feather.png"/>
- <a href="https://www.apache.org">Apache Software Foundation</a>
- </li>
- </ul>
- <div class="col-md-8">
- <ul class="pull-right breadcrumb">
- <li><a href="https://www.apache.org/licenses/">License</a></li>
- <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
- <li><a href="https://www.apache.org/events/current-event">Events</a></li>
- <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
- <li><a href="https://www.apache.org/security/">Security</a></li>
- <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a></li>
- </ul>
- </div>
- </div>
-
- <nav class="navbar navbar-default navbar-static-top" role="navigation">
- <div class="container">
- <div class="navbar-header">
- <ul class="nav navbar-nav navbar-brand">
- <li>
- <img src="ozone-logo.png" alt="Ozone logo"/>
- <a href="https://ozone.apache.org/">Apache Ozone™</a>
- </li>
- </ul>
- <button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
- data-target="#ozone-menu" aria-expanded="false">
- <span class="sr-only">Toggle navigation</span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </button>
- </div>
-
- <div id="ozone-menu" class="collapse navbar-collapse">
- <ul class="nav navbar-nav navbar-right">
- <li><a href="faq">FAQ</a></li>
- <li><a href="downloads">Download</a></li>
- <li><a href="docs">Documentation</a></li>
- <li class="dropdown">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Community <span class="caret"></span></a>
- <ul class="dropdown-menu">
- <li><a href="community">Get involved</a></li>
- <li><a href="events">Events</a></li>
- <li><a href="blogs">Blogs</a></li>
- </ul>
- </li>
- <li><a href="https://github.com/apache/ozone">Source</a></li>
- <li><a href="https://cwiki.apache.org/confluence/display/OZONE">Wiki</a></li>
- </ul>
- </div>
-
- </nav>
-
- <div style="max-height: 200px; overflow: hidden;">
- <img src="sunrise-ozone.jpg" style="width: 100%; left:0px;"/>
- </div>
-
-</div>
-
-</div>
-
-<div class="container">
-<h1>Ozone Blogs</h1>
-<ul>
-<li>Apache Ozone Best Practices at Didi. Hongbing Wang, Shilun Fan, and Wei Ming. <a href="/assets/ApacheOzoneBestPracticesAtDidi.pdf">Blog</a></li>
-</ul>
-
-</div>
-
-<footer>
- <div class="container">
-
- <div class="col-md-12 trademark">
- <p>© 2026 The Apache Software Foundation <a href="http://apache.org">The Apache Software Foundation</a>,<br/>
- Apache, Apache Hadoop, Apache Ozone, the Apache feather logo, are trademarks of The Apache Software Foundation.
- <p>
- </div>
- </div>
-</footer>
-
-
-<script src="jquery.min.js"></script>
-<script src="bootstrap.min.js"></script>
-
-
-</body>
-</html>
-
diff --git a/bootstrap.min.css b/bootstrap.min.css
deleted file mode 100644
index ed3905e0e..000000000
--- a/bootstrap.min.css
+++ /dev/null
@@ -1,6 +0,0 @@
-/*!
- * Bootstrap v3.3.7 (http://getbootstrap.com)
- * Copyright 2011-2016 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr [...]
-/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/bootstrap.min.js b/bootstrap.min.js
deleted file mode 100644
index 9bcd2fcca..000000000
--- a/bootstrap.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*!
- * Bootstrap v3.3.7 (http://getbootstrap.com)
- * Copyright 2011-2016 Twitter, Inc.
- * Licensed under the MIT license
- */
-if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:" [...]
-this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return [...]
\ No newline at end of file
diff --git a/browserconfig.xml b/browserconfig.xml
deleted file mode 100644
index 991b343d1..000000000
--- a/browserconfig.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<browserconfig>
- <msapplication>
- <tile>
- <square150x150logo src="/mstile-150x150.png?v=1"/>
- <TileColor>#da532c</TileColor>
- </tile>
- </msapplication>
-</browserconfig>
diff --git a/categories/index.html b/categories/index.html
deleted file mode 100644
index 24dbac64c..000000000
--- a/categories/index.html
+++ /dev/null
@@ -1,159 +0,0 @@
-
-<!DOCTYPE html>
-
-<html>
-
-<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="Object store for Hadoop">
- <meta name="keywords" content="hadoop, ozone, hdds, objectstore, scale"/>
- <meta name="robots" content="index,follow"/>
- <meta name="language" content="en"/>
-
- <title>Apache Ozone</title>
-
- <base href="https://ozone.apache.org/">
-
- <link rel="canonical" href="https://ozone.apache.org">
-
- <link rel="stylesheet" href="bootstrap.min.css">
- <link rel="stylesheet" href="style.css">
-
- <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
- <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
- <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
- <link rel="manifest" href="/site.webmanifest">
- <link rel="mask-icon" href="/safari-pinned-tab.svg">
- <link rel="shortcut icon" href="/favicon.ico">
- <meta name="msapplication-TileColor" content="#da532c">
- <meta name="theme-color" content="#ffffff">
-
-
- <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>
-
-
-<div class="topnav">
- <div class="container">
- <ul class="breadcrumb col-md-4">
- <li>
- <img class="asf-logo" src="asf_feather.png"/>
- <a href="https://www.apache.org">Apache Software Foundation</a>
- </li>
- </ul>
- <div class="col-md-8">
- <ul class="pull-right breadcrumb">
- <li><a href="https://www.apache.org/licenses/">License</a></li>
- <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
- <li><a href="https://www.apache.org/events/current-event">Events</a></li>
- <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
- <li><a href="https://www.apache.org/security/">Security</a></li>
- <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a></li>
- </ul>
- </div>
- </div>
-
- <nav class="navbar navbar-default navbar-static-top" role="navigation">
- <div class="container">
- <div class="navbar-header">
- <ul class="nav navbar-nav navbar-brand">
- <li>
- <img src="ozone-logo.png" alt="Ozone logo"/>
- <a href="https://ozone.apache.org/">Apache Ozone™</a>
- </li>
- </ul>
- <button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
- data-target="#ozone-menu" aria-expanded="false">
- <span class="sr-only">Toggle navigation</span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </button>
- </div>
-
- <div id="ozone-menu" class="collapse navbar-collapse">
- <ul class="nav navbar-nav navbar-right">
- <li><a href="faq">FAQ</a></li>
- <li><a href="downloads">Download</a></li>
- <li><a href="docs">Documentation</a></li>
- <li class="dropdown">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Community <span class="caret"></span></a>
- <ul class="dropdown-menu">
- <li><a href="community">Get involved</a></li>
- <li><a href="events">Events</a></li>
- <li><a href="blogs">Blogs</a></li>
- </ul>
- </li>
- <li><a href="https://github.com/apache/ozone">Source</a></li>
- <li><a href="https://cwiki.apache.org/confluence/display/OZONE">Wiki</a></li>
- </ul>
- </div>
-
- </nav>
-
- <div style="max-height: 200px; overflow: hidden;">
- <img src="sunrise-ozone.jpg" style="width: 100%; left:0px;"/>
- </div>
-
-</div>
-
-</div>
-
-<div class="container">
-
-<section id="main">
- <div>
- <h1 id="title">Categories Archive</h1>
- <ul id="list">
-
- </ul>
- </div>
-
-
-
-</section>
-</div>
-
-<footer>
- <div class="container">
-
- <div class="col-md-12 trademark">
- <p>© 2026 The Apache Software Foundation <a href="http://apache.org">The Apache Software Foundation</a>,<br/>
- Apache, Apache Hadoop, Apache Ozone, the Apache feather logo, are trademarks of The Apache Software Foundation.
- <p>
- </div>
- </div>
-</footer>
-
-
-<script src="jquery.min.js"></script>
-<script src="bootstrap.min.js"></script>
-
-
-</body>
-</html>
-
diff --git a/categories/index.xml b/categories/index.xml
deleted file mode 100644
index 3de8dc5a5..000000000
--- a/categories/index.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
- <channel>
- <title>Categories on Apache Ozone</title>
- <link>https://ozone.apache.org/categories/</link>
- <description>Recent content in Categories on Apache Ozone</description>
- <generator>Hugo -- gohugo.io</generator>
- <language>en-us</language>
- <copyright>© {year} The Apache Software Foundation</copyright><atom:link href="https://ozone.apache.org/categories/index.xml" rel="self" type="application/rss+xml" />
- </channel>
-</rss>
diff --git a/categories/page/1/index.html b/categories/page/1/index.html
deleted file mode 100644
index 8c0a49445..000000000
--- a/categories/page/1/index.html
+++ /dev/null
@@ -1 +0,0 @@
-<!DOCTYPE html><html><head><title>https://ozone.apache.org/categories/</title><link rel="canonical" href="https://ozone.apache.org/categories/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://ozone.apache.org/categories/" /></head></html>
\ No newline at end of file
diff --git a/cloud.png b/cloud.png
deleted file mode 100644
index 4690b258c..000000000
Binary files a/cloud.png and /dev/null differ
diff --git a/community/ask-a-question/index.html b/community/ask-a-question/index.html
new file mode 100644
index 000000000..00104779e
--- /dev/null
+++ b/community/ask-a-question/index.html
@@ -0,0 +1,44 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="mdx-wrapper mdx-page plugin-pages plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">Ask a Question About Apache Ozone | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozone.apache [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+<!-- -->
+<p>Have a question about Apache Ozone? Use the form below to submit your question to our GitHub Discussions. The form will redirect you to GitHub with your question pre-filled.</p>
+<div class="formContainer_bS8P"><h2 class="formTitle_mK1r">Ask a Question</h2><p class="formDescription_raGT">Have a question about Apache Ozone? Fill out this form and we'll redirect you to GitHub Discussions with your question pre-filled.</p><form class="form_tbrA"><div class="formGroup_J89E"><label for="title" class="label_wdvG">Question Title:</label><input type="text" id="title" placeholder="Enter a title for your question" required="" class="input__NZ2" value=""></div><div cla [...]
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="about-github-discussions">About GitHub Discussions<a href="#about-github-discussions" class="hash-link" aria-label="Direct link to About GitHub Discussions" title="Direct link to About GitHub Discussions"></a></h2>
+<p><a href="https://github.com/apache/ozone/discussions" target="_blank" rel="noopener noreferrer">GitHub Discussions</a> is where our community comes together to ask and answer questions, share ideas, and discuss Apache Ozone. It's a great place to:</p>
+<ul>
+<li>Get help with using Apache Ozone</li>
+<li>Share your experiences with the community</li>
+<li>Discuss ideas for improving Ozone</li>
+<li>Connect with other Ozone users and contributors</li>
+</ul>
+<p>After submitting your question through this form, you'll be redirected to GitHub where you can track responses and engage with the community. You'll need a GitHub account to participate in discussions.</p></article></div><div class="col col--2"><div class="tableOfContents_reur thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#about-github-discussions" class="table-of-contents__link toc-highlight">About GitHub Discussions</a></li></ul> [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/community/communication-channels/index.html b/community/communication-channels/index.html
new file mode 100644
index 000000000..50c6f6a5e
--- /dev/null
+++ b/community/communication-channels/index.html
@@ -0,0 +1,154 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="mdx-wrapper mdx-page plugin-pages plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">Communication Channels | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozone.apache.org/commun [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+<p>Apache Ozone offers several ways to connect with the community. Whether you have questions, want to contribute, or just follow project discussions, here's how to get involved.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="quick-links">Quick Links<a href="#quick-links" class="hash-link" aria-label="Direct link to Quick Links" title="Direct link to Quick Links"></a></h2>
+<ul>
+<li><a href="#mailing-lists">Mailing Lists</a>: Primary communication for development discussions and decisions</li>
+<li><a href="#github-discussions">GitHub Discussions</a>: Q&A and community discussions</li>
+<li><a href="#slack">Slack</a>: Real-time chat with community members</li>
+<li><a href="#jira">Jira</a>: Issue tracking and project management</li>
+<li><a href="#community-meetings">Community Meetings</a>: Regular video calls with the community</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="mailing-lists">Mailing Lists<a href="#mailing-lists" class="hash-link" aria-label="Direct link to Mailing Lists" title="Direct link to Mailing Lists"></a></h2>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="dev-mailing-list">Dev Mailing List<a href="#dev-mailing-list" class="hash-link" aria-label="Direct link to Dev Mailing List" title="Direct link to Dev Mailing List"></a></h3>
+<p>For development discussions, design proposals, and community decisions:</p>
+<ul>
+<li><strong>Subscribe</strong>: Send an empty email to <a href="mailto:dev-subscribe@ozone.apache.org" target="_blank" rel="noopener noreferrer">dev-subscribe@ozone.apache.org</a></li>
+<li><strong>Post messages</strong>: <a href="mailto:dev@ozone.apache.org" target="_blank" rel="noopener noreferrer">dev@ozone.apache.org</a> (only after subscribing)</li>
+<li><strong>Unsubscribe</strong>: Send an email to <a href="mailto:dev-unsubscribe@ozone.apache.org" target="_blank" rel="noopener noreferrer">dev-unsubscribe@ozone.apache.org</a></li>
+<li><strong>Archives</strong>: <a href="https://lists.apache.org/list.html?dev@ozone.apache.org" target="_blank" rel="noopener noreferrer">Dev List Archives</a></li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="user-mailing-list">User Mailing List<a href="#user-mailing-list" class="hash-link" aria-label="Direct link to User Mailing List" title="Direct link to User Mailing List"></a></h3>
+<p>For user questions and discussions:</p>
+<ul>
+<li><strong>Subscribe</strong>: Send an empty email to <a href="mailto:user-subscribe@ozone.apache.org" target="_blank" rel="noopener noreferrer">user-subscribe@ozone.apache.org</a></li>
+<li><strong>Post messages</strong>: <a href="mailto:user@ozone.apache.org" target="_blank" rel="noopener noreferrer">user@ozone.apache.org</a> (only after subscribing)</li>
+<li><strong>Unsubscribe</strong>: Send an email to <a href="mailto:user-unsubscribe@ozone.apache.org" target="_blank" rel="noopener noreferrer">user-unsubscribe@ozone.apache.org</a></li>
+<li><strong>Archives</strong>: <a href="https://lists.apache.org/list.html?user@ozone.apache.org" target="_blank" rel="noopener noreferrer">User List Archives</a></li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="best-practices-for-mailing-lists">Best Practices for Mailing Lists<a href="#best-practices-for-mailing-lists" class="hash-link" aria-label="Direct link to Best Practices for Mailing Lists" title="Direct link to Best Practices for Mailing Lists"></a></h3>
+<ul>
+<li>Include a descriptive subject line</li>
+<li>Search the archives before asking a question</li>
+<li>For technical questions, provide your Ozone version and environment details</li>
+<li>For code snippets, use proper formatting (indent with 4 spaces)</li>
+<li>Respond inline to long emails with multiple points</li>
+<li>Follow the <a href="https://www.apache.org/foundation/policies/conduct.html" target="_blank" rel="noopener noreferrer">Apache Code of Conduct</a></li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="github-discussions">GitHub Discussions<a href="#github-discussions" class="hash-link" aria-label="Direct link to GitHub Discussions" title="Direct link to GitHub Discussions"></a></h2>
+<p><a href="https://github.com/apache/ozone/discussions" target="_blank" rel="noopener noreferrer">GitHub Discussions</a> is perfect for Q&A, sharing ideas, and community conversations.</p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="how-to-use-github-discussions">How to Use GitHub Discussions<a href="#how-to-use-github-discussions" class="hash-link" aria-label="Direct link to How to Use GitHub Discussions" title="Direct link to How to Use GitHub Discussions"></a></h3>
+<ol>
+<li>Visit the <a href="https://github.com/apache/ozone/discussions" target="_blank" rel="noopener noreferrer">Ozone Discussions page</a></li>
+<li>Sign in with your GitHub account (or create one if needed)</li>
+<li>Browse existing discussions by category:<!-- -->
+<ul>
+<li><strong>Q&A</strong>: Technical questions about using Ozone</li>
+<li><strong>FAQ</strong>: Frequently asked questions</li>
+<li><strong>Ideas</strong>: Suggestions for new features or improvements</li>
+<li><strong>Show and Tell</strong>: Share your projects built with Ozone</li>
+<li><strong>General</strong>: Other discussions about Ozone</li>
+</ul>
+</li>
+</ol>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="slack">Slack<a href="#slack" class="hash-link" aria-label="Direct link to Slack" title="Direct link to Slack"></a></h2>
+<p>The Ozone community uses Apache Slack for real-time communication and quick questions.</p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="how-to-join-ozone-on-slack">How to Join Ozone on Slack<a href="#how-to-join-ozone-on-slack" class="hash-link" aria-label="Direct link to How to Join Ozone on Slack" title="Direct link to How to Join Ozone on Slack"></a></h3>
+<ol>
+<li>Get an invitation to the ASF Slack workspace by visiting <a href="http://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer">s.apache.org/slack-invite</a></li>
+<li>After joining, find and join the <code>#ozone</code> channel</li>
+<li>Introduce yourself to the community!</li>
+</ol>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="slack-best-practices">Slack Best Practices<a href="#slack-best-practices" class="hash-link" aria-label="Direct link to Slack Best Practices" title="Direct link to Slack Best Practices"></a></h3>
+<ul>
+<li>For complex questions, consider using the mailing list or GitHub Discussions</li>
+<li>Be aware that not all community members are online at the same time due to different time zones</li>
+<li>Important discussions and decisions should be moved to the mailing list</li>
+<li>Slack history might not be permanently archived, so don't rely on it for important information</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="jira">Jira<a href="#jira" class="hash-link" aria-label="Direct link to Jira" title="Direct link to Jira"></a></h2>
+<p><a href="https://issues.apache.org/jira/projects/HDDS/" target="_blank" rel="noopener noreferrer">Apache Jira</a> is used for tracking issues, bugs, and feature requests for Ozone.</p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="how-to-use-jira">How to Use Jira<a href="#how-to-use-jira" class="hash-link" aria-label="Direct link to How to Use Jira" title="Direct link to How to Use Jira"></a></h3>
+<ol>
+<li>
+<p><strong>Request an account</strong>: Visit <a href="https://selfserve.apache.org/jira-account.html" target="_blank" rel="noopener noreferrer">Jira account creation page</a>. Choose <code>ozone</code> as the project and fill in the fields. An Ozone PMC will review and approve.</p>
+</li>
+<li>
+<p><strong>Browse issues</strong>: Go to the <a href="https://issues.apache.org/jira/projects/HDDS/" target="_blank" rel="noopener noreferrer">Ozone Jira project (HDDS)</a></p>
+</li>
+<li>
+<p><strong>Report a new issue</strong>:</p>
+<ul>
+<li>Click "Create" in the top menu</li>
+<li>Use a clear, descriptive title</li>
+<li>Include detailed steps to reproduce bugs</li>
+<li>For feature requests, explain the use case and desired outcome</li>
+<li>Add relevant labels (e.g., "newbie" for beginner-friendly issues)</li>
+<li>Set the issue type (Bug, Improvement, New Feature, etc.)</li>
+</ul>
+</li>
+<li>
+<p><strong>Work on an issue</strong>:</p>
+<ul>
+<li>Comment on the issue to express your interest</li>
+<li>Assign it to yourself if you plan to work on it</li>
+<li>Follow the <a href="/community/how-to-contribute">contribution guidelines</a> to submit a fix</li>
+<li>Update the Jira status as you make progress</li>
+</ul>
+</li>
+</ol>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="community-meetings">Community Meetings<a href="#community-meetings" class="hash-link" aria-label="Direct link to Community Meetings" title="Direct link to Community Meetings"></a></h2>
+<p>The Ozone community holds regular video calls to discuss project progress, make decisions, and welcome new contributors.</p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="meeting-details">Meeting Details<a href="#meeting-details" class="hash-link" aria-label="Direct link to Meeting Details" title="Direct link to Meeting Details"></a></h3>
+<ul>
+<li><strong>Schedule</strong>: <a href="https://cwiki.apache.org/confluence/display/OZONE/Ozone+Community+Calls" target="_blank" rel="noopener noreferrer">Check the wiki for the latest schedule</a></li>
+<li><strong>Platform</strong>: Usually held on Zoom or Google Meet</li>
+<li><strong>Calendar</strong>: Subscribe to the <a href="https://calendar.google.com/calendar/embed?src=0h8p6160kkv57mvv0gahqpnr5c%40group.calendar.google.com" target="_blank" rel="noopener noreferrer">Apache Ozone community calendar</a></li>
+<li><strong>Notes</strong>: <a href="https://github.com/apache/ozone/discussions/categories/community-sync-meetings" target="_blank" rel="noopener noreferrer">Meeting notes are typically shared</a> afterward</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="participating-in-meetings">Participating in Meetings<a href="#participating-in-meetings" class="hash-link" aria-label="Direct link to Participating in Meetings" title="Direct link to Participating in Meetings"></a></h3>
+<ul>
+<li>Meetings are open to everyone interested in Ozone</li>
+<li>Feel free to introduce yourself if you're new</li>
+<li>You can suggest topics for discussion on the mailing list before the meeting</li>
+<li>Don't hesitate to ask questions during the call</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="choosing-the-right-channel">Choosing the Right Channel<a href="#choosing-the-right-channel" class="hash-link" aria-label="Direct link to Choosing the Right Channel" title="Direct link to Choosing the Right Channel"></a></h2>
+<ul>
+<li><strong>Mailing Lists</strong>: For official discussions, design proposals, community decisions</li>
+<li><strong>GitHub Discussions</strong>: For Q&A, ideas, and general conversations about Ozone</li>
+<li><strong>Slack</strong>: For quick questions and real-time chat</li>
+<li><strong>Jira</strong>: For tracking specific bugs, improvements, and feature requests</li>
+<li><strong>Community Meetings</strong>: For synchronous discussions and getting to know the community</li>
+</ul>
+<p>All community channels follow the <a href="https://www.apache.org/foundation/policies/conduct.html" target="_blank" rel="noopener noreferrer">Apache Code of Conduct</a> to ensure a welcoming and productive environment for everyone.</p></article></div><div class="col col--2"><div class="tableOfContents_reur thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#quick-links" class="table-of-contents__link toc-highlight">Quick Links</a></li><li><a href [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/community/events-and-media/index.html b/community/events-and-media/index.html
new file mode 100644
index 000000000..87ae846ee
--- /dev/null
+++ b/community/events-and-media/index.html
@@ -0,0 +1,139 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="mdx-wrapper mdx-page plugin-pages plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">Ozone Events | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozone.apache.org/community/events [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+<!-- -->
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="past-meetups">Past Meetups<a href="#past-meetups" class="hash-link" aria-label="Direct link to Past Meetups" title="Direct link to Past Meetups"></a></h2>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="november-20-2025">November 20, 2025<a href="#november-20-2025" class="hash-link" aria-label="Direct link to November 20, 2025" title="Direct link to November 20, 2025"></a></h3>
+<p>Another Ozone meetup was held on November 20, 2025. <a href="https://www.meetup.com/futureofdata-siliconvalley/events/311673631/" target="_blank" rel="noopener noreferrer">Meetup link</a> <a href="https://www.youtube.com/watch?v=RK68AiYdMqw" target="_blank" rel="noopener noreferrer">YouTube recording</a></p>
+<p>The following was the list of agenda:</p>
+<ul>
+<li><strong>Apache Ozone Adoption Growth</strong> - Shiv Moorthy: Insights into Ozone’s growing adoption and impact.</li>
+<li><strong>Apache Ozone Best Practices at Shopee</strong> - Yiyang Zhou: Learn how Shopee manages billions of objects in Ozone production environments with lifecycle and storage class optimization.</li>
+<li><strong>Event Notifications for Distributed Storage (Ozone)</strong> - Paul Scott-Murphy: Exploring design choices, optimizations, and downstream use cases for event-driven storage systems.</li>
+<li><strong>AWS STS Design for Ozone S3</strong> - Fabian Morgan & Madhan Neethiraj: Learn how Ozone’s STS design enables scalable and secure data sharing.</li>
+<li><strong>GenAI: S3Vector Buckets API Support in Ozone</strong> - Swaminathan Balachandran & Saketa Chandra Chalamchala: Discover how Ozone delivers fast vector-store backend capabilities with S3Vector compatibility.</li>
+<li><strong>Apache Ozone State of the Union</strong> - Rishabh Patel & Sammi Chen: Highlights of new features, releases, and roadmap updates.</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="october-24-2024">October 24, 2024<a href="#october-24-2024" class="hash-link" aria-label="Direct link to October 24, 2024" title="Direct link to October 24, 2024"></a></h3>
+<p>An Ozone meetup was held on October 24, 2024. <a href="https://www.meetup.com/futureofdata-siliconvalley/events/304006267/" target="_blank" rel="noopener noreferrer">Meetup link</a> <a href="https://www.youtube.com/watch?v=u9GncxfMG5M" target="_blank" rel="noopener noreferrer">YouTube recording</a></p>
+<p>The following was the list of agenda:</p>
+<ul>
+<li><strong>Ozone + GenAI Applications</strong> - Swaminathan Balachandran (Cloudera): In this talk, we will explore how GenAI applications can be beneficial with the Apache Ozone's unique potential in object storage space.</li>
+<li><strong>Simplifying Orchestration of GenAI Applications Across Multi-Cluster Kubernetes Environments</strong> - Selvi Kadirvel (Elotl): Running Gen-AI applications at scale is operationally complex - it requires the management of application workloads; infrastructure services, data pipelines and datasets across a multi-cluster, multi-cloud environment.</li>
+<li><strong>Scaling Multi-GPU Multi-Node Deployments with Triton Inference Server</strong> - Ryan McCormick (Nvidia): NVIDIA Triton Inference Server is an open-source inference serving solution that simplifies the production deployment of AI models at scale.</li>
+<li><strong>Ozone CSI Primer</strong> - Prashant Pogde (Cloudera): This talk covers how Apache Ozone would be an option for read-write-many semantic persistent volume claims in Kubernetes environments.</li>
+<li><strong>Ozone Performance and Scale</strong> - Ritesh Shukla & Duong Nguyen (Cloudera): Architectural benefits of Ozone for scale and performance over other S3/HDFS Object Stores.</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="october-25-2023">October 25, 2023<a href="#october-25-2023" class="hash-link" aria-label="Direct link to October 25, 2023" title="Direct link to October 25, 2023"></a></h3>
+<p>An Ozone meetup was held on October 25, 2023. <a href="https://www.meetup.com/futureofdata-sanfrancisco/events/295917033/" target="_blank" rel="noopener noreferrer">Meetup link</a> <a href="https://www.youtube.com/watch?v=DgzEZFlkvco&list=PLogLR070z-lDkgyoGu51bZ7MHDhVa59pK" target="_blank" rel="noopener noreferrer">YouTube recording</a></p>
+<p>The following was the list of agenda:</p>
+<ul>
+<li><strong>Apache Ozone User adoptions</strong> - Shiv Moorthy, Cloudera</li>
+<li><strong>Apache Ozone State of the Union</strong> - Aswin Shakil Balasubramanian, Cloudera</li>
+<li><strong>Optimizing HDFS with Datanode Local Cache for High-Density HDD Adoption</strong> - Fengnan Li, Jing Zhao from Uber</li>
+<li><strong>Snapshots new innovations</strong> - Swaminathan Balachandran, Dave Teng from Cloudera</li>
+<li><strong>Apache Iceberg on Ozone</strong> - Vince Kulandaisamy, Prashant Pogde from Cloudera</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="nov-10-2022">Nov 10, 2022<a href="#nov-10-2022" class="hash-link" aria-label="Direct link to Nov 10, 2022" title="Direct link to Nov 10, 2022"></a></h3>
+<p>The first ever Apache Ozone User Group Summit was held at Cloudera's headquarter on Nov 10, 2022. This event was live streamed on LinkedIn and on YouTube. <a href="https://www.meetup.com/futureofdata-siliconvalley/events/289201001/" target="_blank" rel="noopener noreferrer">Meetup link</a> <a href="https://www.youtube.com/watch?v=3aEpeSXMMzw" target="_blank" rel="noopener noreferrer">YouTube recording</a> <a href="/assets/files/Ozone_meetup_Nov102022-7215fdb825c62e9b8cb0925e9962d [...]
+<p>The following was the list of agenda:</p>
+<ul>
+<li>Opening, Karthik Krishnamoorthy <a href="https://youtu.be/3aEpeSXMMzw?t=8" target="_blank" rel="noopener noreferrer">Recording</a></li>
+<li>Apache Ozone - Scalable, redundant distributed object store <a href="https://youtu.be/3aEpeSXMMzw?t=583" target="_blank" rel="noopener noreferrer">Recording</a></li>
+<li>Bucket types and FSO improvements, Ethan Rose <a href="https://youtu.be/3aEpeSXMMzw?t=1220" target="_blank" rel="noopener noreferrer">Recording</a></li>
+<li>Apache Ozone snapshots - new design, Prashant Pogde, Siyao Meng <a href="https://youtu.be/3aEpeSXMMzw?t=3128" target="_blank" rel="noopener noreferrer">Recording</a></li>
+<li>Apache Ozone Performance, Ritesh Shukla, <a href="https://youtu.be/3aEpeSXMMzw?t=5474" target="_blank" rel="noopener noreferrer">Recording</a></li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="feb-20-2019">Feb 20, 2019<a href="#feb-20-2019" class="hash-link" aria-label="Direct link to Feb 20, 2019" title="Direct link to Feb 20, 2019"></a></h3>
+<p>A Hadoop community meetup was held on January 30, 2019. <a href="https://www.youtube.com/watch?v=3aX6yu1LZlI" target="_blank" rel="noopener noreferrer">YouTube recording</a> <a href="https://www.slideshare.net/slideshow/hadoop-meetup-jan-2019-overview-of-ozone/130161688" target="_blank" rel="noopener noreferrer">Slide deck</a></p>
+<ul>
+<li><strong>Overview of Ozone</strong> - Anu Engineer</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="past-conference-talks">Past Conference Talks<a href="#past-conference-talks" class="hash-link" aria-label="Direct link to Past Conference Talks" title="Direct link to Past Conference Talks"></a></h2>
+<div class="tabs-container tabList_fNUd"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_d6dp tabs__item--active">2025</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_d6dp">2024</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_d6dp">2023</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_d6dp">2022</li><li [...]
+<li>Apache CoC North America 2025: Apache Ozone 2.0. Wei-Chiu Chuang <a href="/assets/files/Ozone2-c80007ff224036a0f45d2e15499cb74d.pdf" target="_blank">Slides</a></li>
+<li>Apache CoC Asia 2025: Apache Ozone: Balance Data Through Disk Balancer. Sammi Chen, Yiyang Zhou. <a href="/assets/files/ApacheCoCAsia2025OzoneDiskBalancer-c38d9a13bcf99baaec9391d43c166bb1.pdf" target="_blank">Slides</a> <a href="https://www.youtube.com/watch?v=1h6jULeB368" target="_blank" rel="noopener noreferrer">Recording</a></li>
+<li>Apache CoC Asia 2025: Apache Ozone Best Practices at Shopee. Hui Fei. <a href="/assets/files/ApacheOzoneBestPracticesAtShopee-2a36eb1d89674cb28eb6523ad52b1bc8.pdf" target="_blank">Slides</a> <a href="https://www.youtube.com/watch?v=AiuWz5dkcS8" target="_blank" rel="noopener noreferrer">Recording</a></li>
+</ul></div><div role="tabpanel" class="tabItem_dCa7" hidden=""><ul>
+<li>Apache CoC North America 2024: Overview of tools, techniques and tips - Scaling Ozone performance to max out CPU, Network and Disk. Ritesh Shukla, Tanvi Penumudy</li>
+<li>Apache CoC North America 2024: Recognize, Reconcile, Repeat: The Path to Uniform Replicas in Apache Ozone. Ethan Rose, Ritesh Shukla</li>
+<li>Apache CoC North America 2024: Ozone Replication - Bringing Ozone Closer to Enterprise Adoption. István Gansperger, Zsuzsanna Szabó, Andras Piros</li>
+<li>Apache CoC North America 2024: Enhancing Data Processing Efficiency in GenAI RAG Applications using Apache Ozone Snapshots. Uma Maheswara Rao Gangumalla, Swaminathan Balachandran</li>
+<li>Apache CoC 2024 Asia: Overview of tools, techniques and tips - Scaling Ozone performance to max out CPU, Network and Disk. Ritesh Shukla, Tanvi Penumudy</li>
+<li>Apache CoC 2024 Asia: Apache HBase on Ozone. Sammi Chen. <a href="https://www.youtube.com/watch?v=1jkO8QM7yOo&list=PLU2OcwpQkYCw-J71WjgmeD9BYOK67xjG2" target="_blank" rel="noopener noreferrer">Recording</a></li>
+<li>Apache CoC EU 2024: Elevating Scalable Object Storage: A Comprehensive Exploration of Ozone’s Trailblazing Capabilities. Ritesh Shukla, Uma Maheswara Rao Gangumalla. <a href="https://www.youtube.com/watch?v=0emawKJGtRM" target="_blank" rel="noopener noreferrer">Recording</a></li>
+</ul></div><div role="tabpanel" class="tabItem_dCa7" hidden=""><ul>
+<li>Apache CoC 2023 North America: Data Integrity Guarantees in Erasure Coding Storage Systems. Aswin Shakil Balasubramanian, Uma Maheswara Rao Gangumalla. <a href="https://communityovercode.org/wp-content/uploads/2023/10/tuesdayoctober102023_bigdata_storage_track_data_integrity_guarantees_in_erasure_coding_storage_systems_by_uma_gangumalla_aswin_swami-uma-maheswara-rao-gangumalla.pdf" target="_blank" rel="noopener noreferrer">Slides</a></li>
+<li>Apache CoC 2023 North America: Improving concurrency for a Hadoop Compatible Filesystem. Ritesh Shukla, Duong Nguyen, Tanvi Penumudy</li>
+<li>Apache CoC 2023 North America: When Hardware Fails, Ozone Prevails. Ethan Rose. <a href="https://communityovercode.org/wp-content/uploads/2023/10/sun_bigdata_rose-ethan-rose.pdf" target="_blank" rel="noopener noreferrer">Slides</a> <a href="https://www.youtube.com/watch?v=qRpDF7Bl45A" target="_blank" rel="noopener noreferrer">Recording</a></li>
+<li>Apache CoC 2023 North America: The making of an Exabyte-scale Data Lakehouse. Saketa Chalamchala <a href="https://www.youtube.com/watch?v=RfzjBDliINE" target="_blank" rel="noopener noreferrer">Recording</a></li>
+<li>Apache CoC North America 2023: Starting my career The Apache Way. Zita Dombi. <a href="https://communityovercode.org/wp-content/uploads/2023/10/mon_community_dombi-zita-dombi.pdf" target="_blank" rel="noopener noreferrer">Slide deck</a></li>
+<li>Apache CoC 2023 North America: Compatibility witchcraft in distributed systems. Istvan Fajth</li>
+<li>Apache CoC 2023 North America: Forget about that certificate. Istvan Fajth</li>
+<li>Apache CoC 2023 North America: Design patterns and then the road to realize billions of objects, and exabytes of capacity, while preserving performance in Apache Ozone. Ritesh H Shukla, Duong Nguyen, Tanvi Penumudy</li>
+<li>Apache CoC Asia 2023: Deep dive into resource manageability in Ozone storage. Sumit Agrawal. <a href="https://www.youtube.com/watch?v=HfEH8eeNN-I" target="_blank" rel="noopener noreferrer">Recording</a></li>
+<li>Apache CoC Asia 2023: Resilient Data: Exploring Replication and Recovery in Apache Ozone. Sadanand Shenoy. <a href="https://www.youtube.com/watch?v=0_9voSeFnbc" target="_blank" rel="noopener noreferrer">Recording</a></li>
+<li>Apache CoC Asia 2023: Data Security: How Apache Ozone Ensures Storage and Access Security of Data. Sammi Chen. <a href="https://www.youtube.com/watch?v=1lQcsYQpEBA" target="_blank" rel="noopener noreferrer">Recording</a></li>
+</ul></div><div role="tabpanel" class="tabItem_dCa7" hidden=""><ul>
+<li>ApacheCon North America 2022: Reduce Your Storage Footprint with Apache Ozone Erasure Coding. Uma Maheswara Rao Gangumalla. <a href="/assets/files/Apache Ozone Erasure Coding(EC)-e2b2167bd29f218b073bb8c60828a5b1.pdf" target="_blank">Slides</a></li>
+<li>ApacheCon North America 2022: Inside an Apache Ozone Upgrade. Ethan Rose. <a href="https://www.apachecon.com/acna2022/slides/01_Rose_Inside_Ozone_Upgrade.pdf" target="_blank" rel="noopener noreferrer">Slides</a></li>
+<li>ApacheCon North America 2022: Apache Ozone - State of the Union. Siyao Meng, Ethan Rose. <a href="https://www.apachecon.com/acna2022/slides/02_Meng_Rose_Apache_Ozone_SOTU.pdf" target="_blank" rel="noopener noreferrer">Slides</a></li>
+<li>ApacheCon North America 2022: Performance of Apache Ozone on NVMe. Wei-Chiu Chuang, Ritesh Shukla. <a href="/assets/files/04_Chuang_Performance_of_Apache-b4f6319cdd1eddbb3d9d62809a91d0c2.pdf" target="_blank">Slides</a></li>
+<li>China Apache Hadoop Meetup 2022: What's new in Apache Ozone 1.3. Sammi Chen. <a href="/assets/files/What'sNewInApacheOzone-v3-b2e3bf484b981e091157c5dc8d10059d.pdf" target="_blank">Slides</a></li>
+<li>ApacheCon Asia 2022: <a href="https://www.youtube.com/watch?v=SB4lgATn-s8" target="_blank" rel="noopener noreferrer">Sharing Of Recent Progress And Practices In Apache Ozone</a>. Yan Liu, Sammi Chen. <a href="/assets/files/ApacheConAsia2022_Yan_Sammi-f5ae5f952e57dda4e2d3b15b6e41ac89.pdf" target="_blank">Slides</a></li>
+<li>ApacheCon Asia 2022: <a href="https://www.youtube.com/watch?v=E97fYFZJ2LQ" target="_blank" rel="noopener noreferrer">Disaster Recovery In Apache Ozone</a>. Sadanand Shenoy, Rakesh Radhakrishnan.</li>
+<li>ApacheCon Asia 2022: <a href="https://www.youtube.com/watch?v=EmpHluBOesg" target="_blank" rel="noopener noreferrer">Apache Ozone Behind Simulation And Ai Industries</a>. Kota Uenishi. <a href="https://speakerdeck.com/kuenishi/apache-ozone-behind-simulation-and-ai-industries" target="_blank" rel="noopener noreferrer">Slides</a></li>
+<li>ApacheCon Asia 2022: <a href="https://www.youtube.com/watch?v=HN7PWX9TdAE" target="_blank" rel="noopener noreferrer">Apache Ozone: Multi-Protocol Aware System Handles Both Files And Objects Efficiently</a>. Radhakrishnan Rakesh, Singh Mukul Kumar.</li>
+<li>SDC India 2022: <a href="https://www.youtube.com/watch?v=lzPrL2I_2VU" target="_blank" rel="noopener noreferrer">Apache Ozone: Multi-protocol aware system handles both files and objects efficiently</a>. Radhakrishnan Rakesh, Singh Mukul Kumar.</li>
+</ul></div><div role="tabpanel" class="tabItem_dCa7" hidden=""><ul>
+<li>ApacheCon@Home 2021: <a href="https://www.youtube.com/watch?v=tGEjS4lSbbY" target="_blank" rel="noopener noreferrer">Secure Apache Ozone with High Availability</a>. Bharat Viswanadham, Xiaoyu Yao.</li>
+<li>ApacheCon@Home 2021: <a href="https://www.youtube.com/watch?v=O0u4p_PlwDU" target="_blank" rel="noopener noreferrer">Apache Ozone - State of the Union</a>. Dinesh Chitlangia, Aravindan Vijayan</li>
+<li>ApacheCon@Home 2021: <a href="https://www.youtube.com/watch?v=l6L3E6q0dpk" target="_blank" rel="noopener noreferrer">Balancing data in Apache Ozone</a>. Lokesh Jain, Siddhant Sangwan.</li>
+<li>ApacheCon@Home 2021: <a href="https://www.youtube.com/watch?v=xAAMWyE0cpg" target="_blank" rel="noopener noreferrer">Ozone - Performance at billions’ scale</a>. Lokesh Jain.</li>
+<li>ApacheCon Asia 2021: <a href="https://www.youtube.com/watch?v=yw3HoM57168" target="_blank" rel="noopener noreferrer">How Security Is Implemented In Apache Ozone</a>. Bharat Viswanadham, Shashikant Banerjee.</li>
+<li>ApacheCon Asia 2021: <a href="https://www.youtube.com/watch?v=dXrDhe8h7gQ" target="_blank" rel="noopener noreferrer">Apache Ozone: A High Performance Object Store For Analytics Workloads</a>. Rakesh Radhakrishnan, Mukul Kumar Singh.</li>
+<li>ApacheCon Asia 2021: <a href="https://www.youtube.com/watch?v=jeJ519NTVHo" target="_blank" rel="noopener noreferrer">How Apache Ozone Builds Up High Availablity With Raft Protocol</a>. Shashikant Banerjee, Nandakumar Vadivelu, Li Cheng.</li>
+<li>SDC India 2021: <a href="https://www.youtube.com/watch?v=riRbSbmxFQE" target="_blank" rel="noopener noreferrer">Apache Ozone: A High Performance Object Store For Analytics Workloads</a>. Rakesh Radhakrishnan, Mukul Kumar Singh.</li>
+<li>SDC India 2021: <a href="https://www.youtube.com/watch?v=BccR07ChxtA" target="_blank" rel="noopener noreferrer">Apache Ozone - Balancing and Deleting Data At Scale</a>. Lokesh Jain. <a href="https://www.snia.org/educational-library/apache-ozone-balancing-and-deleting-data-scale-2021" target="_blank" rel="noopener noreferrer">Link</a></li>
+<li>SDC India 2021: <a href="https://www.youtube.com/watch?v=PHYcExPv8W4" target="_blank" rel="noopener noreferrer">Architecture and Performance at billions’ scale</a>. Lokesh Jain. <a href="https://www.snia.org/educational-library/ozone-architecture-and-performance-billions%E2%80%99-scale-2021" target="_blank" rel="noopener noreferrer">Link</a></li>
+<li>COSCUP Taiwan 2021: <a href="https://www.youtube.com/watch?v=DZq6Pz7RLj8" target="_blank" rel="noopener noreferrer">My Journey with Apache Ozone</a>. Yi-Sheng Lien.</li>
+</ul></div><div role="tabpanel" class="tabItem_dCa7" hidden=""><ul>
+<li>Dataworks Summit - San Jose 2018: <a href="https://www.youtube.com/watch?v=WvEu6d76EIw" target="_blank" rel="noopener noreferrer">Ozone: scaling HDFS to trillions of objects</a></li>
+<li>Dataworks summit - Berlin 2018: <a href="https://www.youtube.com/watch?v=3A9caebey1s" target="_blank" rel="noopener noreferrer">Ozone and HDFS’s evolution</a></li>
+</ul></div></div></div>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="external-blog-posts">External Blog Posts<a href="#external-blog-posts" class="hash-link" aria-label="Direct link to External Blog Posts" title="Direct link to External Blog Posts"></a></h2>
+<ul>
+<li>October 2018 - <a href="https://www.cloudera.com/blog/technical/apache-hadoop-ozone-object-store-architecture.html" target="_blank" rel="noopener noreferrer">Apache Hadoop Ozone – Object Store Architecture</a></li>
+<li>October 2018 - <a href="https://www.cloudera.com/blog/technical/apache-hadoop-ozone-object-store-overview.html" target="_blank" rel="noopener noreferrer">Apache Hadoop Ozone – Object Store Overview</a></li>
+<li>October 2018 - <a href="https://www.cloudera.com/blog/technical/introducing-apache-hadoop-ozone-object-store-apache-hadoop.html" target="_blank" rel="noopener noreferrer">Introducing Apache Hadoop Ozone: An Object Store for Apache Hadoop</a></li>
+<li>October 2021 - <a href="https://www.cloudera.com/blog/technical/apache-ozone-a-high-performance-object-store-for-cdp-private-cloud.html" target="_blank" rel="noopener noreferrer">Apache Ozone – A High Performance Object Store for Private Cloud</a></li>
+</ul></article></div><div class="col col--2"><div class="tableOfContents_reur thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#past-meetups" class="table-of-contents__link toc-highlight">Past Meetups</a><ul><li><a href="#november-20-2025" class="table-of-contents__link toc-highlight">November 20, 2025</a></li><li><a href="#october-24-2024" class="table-of-contents__link toc-highlight">October 24, 2024</a></li><li><a href="#october-25-2023" class= [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/community/how-to-contribute/index.html b/community/how-to-contribute/index.html
new file mode 100644
index 000000000..eb3226e23
--- /dev/null
+++ b/community/how-to-contribute/index.html
@@ -0,0 +1,147 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="mdx-wrapper mdx-page plugin-pages plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">How to Contribute to Apache Ozone | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozone.apache [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+<p>Thank you for your interest in contributing to Apache Ozone! This guide will help you understand the various ways you can contribute to the project and how to get started.</p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="quick-links">Quick Links<a href="#quick-links" class="hash-link" aria-label="Direct link to Quick Links" title="Direct link to Quick Links"></a></h2>
+<ul>
+<li><a href="https://github.com/apache/ozone" target="_blank" rel="noopener noreferrer">GitHub Repository</a></li>
+<li><a href="https://github.com/apache/ozone/blob/master/CONTRIBUTING.md" target="_blank" rel="noopener noreferrer">CONTRIBUTING.md</a> - Detailed contribution guidelines</li>
+<li><a href="https://issues.apache.org/jira/issues/?jql=labels%20%3D%20newbie%20AND%20project%20%3D%20%22Apache%20Ozone%22%20AND%20status%20%3D%20open%20ORDER%20BY%20created" target="_blank" rel="noopener noreferrer">Newbie Jira Issues</a> - Good first issues for new contributors</li>
+<li><a href="https://github.com/apache/ozone/discussions" target="_blank" rel="noopener noreferrer">GitHub Discussions</a> - Engage with the community</li>
+<li><a href="https://ozone.apache.org/" target="_blank" rel="noopener noreferrer">Ozone Website</a> - Project documentation</li>
+<li><a href="http://s.apache.org/slack-invite" target="_blank" rel="noopener noreferrer">Slack Channel</a> - Join #ozone on ASF Slack</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="ways-to-contribute">Ways to Contribute<a href="#ways-to-contribute" class="hash-link" aria-label="Direct link to Ways to Contribute" title="Direct link to Ways to Contribute"></a></h2>
+<p>Apache Ozone welcomes contributions in many forms, not just code. Here are various ways you can contribute:</p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="code-contributions">Code Contributions<a href="#code-contributions" class="hash-link" aria-label="Direct link to Code Contributions" title="Direct link to Code Contributions"></a></h3>
+<h4 class="anchor anchorWithStickyNavbar_e_9H" id="finding-issues-to-work-on">Finding Issues to Work On<a href="#finding-issues-to-work-on" class="hash-link" aria-label="Direct link to Finding Issues to Work On" title="Direct link to Finding Issues to Work On"></a></h4>
+<ul>
+<li><strong>Newbie Issues</strong>: Start with <a href="https://issues.apache.org/jira/browse/HDDS-12179?jql=labels%20%3D%20newbie%20AND%20project%20%3D%20%22Apache%20Ozone%22%20AND%20status%20%3D%20open%20ORDER%20BY%20created" target="_blank" rel="noopener noreferrer">beginner-friendly issues</a> that are good entry points</li>
+<li><strong>All Open Issues</strong>: Browse <a href="https://issues.apache.org/jira/browse/HDDS-12179?jql=labels%20%3D%20newbie%20AND%20project%20%3D%20%22Apache%20Ozone%22%20AND%20status%20%3D%20open%20ORDER%20BY%20created" target="_blank" rel="noopener noreferrer">unassigned Jira issues</a> to find something that matches your interests and skills</li>
+</ul>
+<h4 class="anchor anchorWithStickyNavbar_e_9H" id="making-code-changes">Making Code Changes<a href="#making-code-changes" class="hash-link" aria-label="Direct link to Making Code Changes" title="Direct link to Making Code Changes"></a></h4>
+<ol>
+<li>
+<p><strong>Set Up Development Environment</strong></p>
+<ul>
+<li>Fork and clone the repository</li>
+<li>Enable the <code>build-branch</code> GitHub Actions workflow in your fork</li>
+</ul>
+</li>
+<li>
+<p><strong>Create a Branch</strong></p>
+<ul>
+<li>Ensure a Jira issue exists for your task (e.g., HDDS-1234)</li>
+<li>Create a branch for your work: <code>git checkout -b HDDS-1234</code></li>
+</ul>
+</li>
+<li>
+<p><strong>Develop Your Changes</strong></p>
+<ul>
+<li><a href="https://github.com/apache/ozone/blob/master/CONTRIBUTING.md#code-convention-and-tests" target="_blank" rel="noopener noreferrer">Follow code style guidelines</a></li>
+<li>Write tests for your changes</li>
+<li>Run relevant checks from <code>hadoop-ozone/dev-support/checks/</code> directory</li>
+</ul>
+</li>
+<li>
+<p><strong>Submit Your Contribution</strong></p>
+<ul>
+<li>Push changes to your fork</li>
+<li>Wait for the <code>build-branch</code> workflow to complete</li>
+<li>Create a pull request following the template used. (PRs pushed to master first and then if needed to a release branch)</li>
+<li>Update the Jira issue status to "Patch Available"</li>
+<li>Once the PR is merged close the Jira if completely resolved.</li>
+</ul>
+</li>
+</ol>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="reviewing-code-and-design">Reviewing Code and Design<a href="#reviewing-code-and-design" class="hash-link" aria-label="Direct link to Reviewing Code and Design" title="Direct link to Reviewing Code and Design"></a></h3>
+<p>Code reviews are a crucial part of the Apache Ozone development process. Reviewing others' code not only helps maintain quality but is also an excellent way to learn about the codebase.</p>
+<h4 class="anchor anchorWithStickyNavbar_e_9H" id="how-to-review-pull-requests">How to Review Pull Requests<a href="#how-to-review-pull-requests" class="hash-link" aria-label="Direct link to How to Review Pull Requests" title="Direct link to How to Review Pull Requests"></a></h4>
+<ol>
+<li><strong>Browse Open PRs</strong>: Visit the <a href="https://github.com/apache/ozone/pulls" target="_blank" rel="noopener noreferrer">open pull requests</a> on GitHub</li>
+<li><strong>Choose PRs to Review</strong>: Start with PRs in areas you're familiar with or interested in learning</li>
+<li><strong>Run the Code</strong>: When possible, check out the PR branch and test it locally</li>
+<li><strong>Review Checklist</strong>:<!-- -->
+<ul>
+<li>Does the code follow project style guidelines?</li>
+<li>Are there sufficient tests for the new functionality?</li>
+<li>Is the documentation updated?</li>
+<li>Is the design sound and consistent with the rest of the codebase?</li>
+<li>Does the code address the issue described in the linked Jira?</li>
+</ul>
+</li>
+</ol>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="documentation">Documentation<a href="#documentation" class="hash-link" aria-label="Direct link to Documentation" title="Direct link to Documentation"></a></h3>
+<ul>
+<li><strong>Website Improvements</strong>: Contribute to the <a href="https://ozone.apache.org/" target="_blank" rel="noopener noreferrer">Ozone website</a></li>
+<li><strong>Developer Docs</strong>: Enhance the <a href="https://github.com/apache/ozone/tree/master/hadoop-hdds/docs/content" target="_blank" rel="noopener noreferrer">markdown documentation</a> in the source tree</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="testing">Testing<a href="#testing" class="hash-link" aria-label="Direct link to Testing" title="Direct link to Testing"></a></h3>
+<ul>
+<li><strong>Unit Tests</strong>: Write JUnit tests for Java code</li>
+<li><strong>Acceptance Tests</strong>: Create Docker + Robot Framework tests</li>
+<li><strong>Application integration test</strong>: Report any issues integrating with third party applications.</li>
+<li><strong>Performance Testing</strong>: Run benchmarks with <code>ozone freon</code> and report findings</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="visual-design--art">Visual Design & Art<a href="#visual-design--art" class="hash-link" aria-label="Direct link to Visual Design & Art" title="Direct link to Visual Design & Art"></a></h3>
+<p>Ozone welcomes contributions in design and visual arts:</p>
+<ul>
+<li><strong>Logos and Icons</strong>: Create variations of the Ozone logo for different contexts</li>
+<li><strong>Diagrams</strong>: Design architectural and conceptual diagrams for documentation</li>
+<li><strong>Website Design</strong>: Improve the look and feel of the Ozone website</li>
+<li><strong>Slide Decks</strong>: Design templates for presentations about Ozone</li>
+</ul>
+<p>Share your artwork through the <a href="https://github.com/apache/ozone/discussions" target="_blank" rel="noopener noreferrer">GitHub Discussions</a> or on the dev mailing list <a href="mailto:dev@ozone.apache.org" target="_blank" rel="noopener noreferrer">dev@ozone.apache.org</a>.</p>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="bug-reports-and-feature-requests">Bug Reports and Feature Requests<a href="#bug-reports-and-feature-requests" class="hash-link" aria-label="Direct link to Bug Reports and Feature Requests" title="Direct link to Bug Reports and Feature Requests"></a></h3>
+<ul>
+<li>Report bugs or suggest features through <a href="https://issues.apache.org/jira/projects/HDDS/" target="_blank" rel="noopener noreferrer">Jira</a></li>
+<li>Search existing issues before creating a new one</li>
+<li>Provide detailed steps to reproduce bugs</li>
+</ul>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="community-support">Community Support<a href="#community-support" class="hash-link" aria-label="Direct link to Community Support" title="Direct link to Community Support"></a></h3>
+<ul>
+<li>Answer questions on <a href="https://github.com/apache/ozone/discussions" target="_blank" rel="noopener noreferrer">GitHub Discussions</a></li>
+<li>Help review <a href="https://github.com/apache/ozone/pulls" target="_blank" rel="noopener noreferrer">pull requests</a></li>
+<li>Join community calls and discussions</li>
+</ul>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="getting-help">Getting Help<a href="#getting-help" class="hash-link" aria-label="Direct link to Getting Help" title="Direct link to Getting Help"></a></h2>
+<p>Details for how to <a href="/community/communication-channels">reach the community can be found here</a></p>
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="recognition">Recognition<a href="#recognition" class="hash-link" aria-label="Direct link to Recognition" title="Direct link to Recognition"></a></h2>
+<p>All contributions are recognized in Apache Ozone:</p>
+<ul>
+<li>Code contributions are recorded in Git history</li>
+<li>Documentation improvements help the entire community</li>
+<li>Testing helps ensure project quality</li>
+<li>Bug reports guide project improvement</li>
+<li>Evangelism: write blog posts, submit talks at conferences, commenting on social media</li>
+</ul>
+<p>Your contributions, large or small, are valued and appreciated by the Ozone community!</p></article></div><div class="col col--2"><div class="tableOfContents_reur thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#quick-links" class="table-of-contents__link toc-highlight">Quick Links</a></li><li><a href="#ways-to-contribute" class="table-of-contents__link toc-highlight">Ways to Contribute</a><ul><li><a href="#code-contributions" class="table-of- [...]
+ <div>
+ Copyright © 2026 <a href="https://www.apache.org/" class="copyright-link">The Apache Software Foundation</a>. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0" class="copyright-link">Apache License, Version 2.0</a>. <br>
+ <div>
+ <p>The Apache Software Foundation, Apache Ozone, Ozone, Apache, the Apache Feather, and the Apache Ozone project logo are either registered trademarks or trademarks of the Apache Software Foundation.</p>
+ </div>
+ </div></div></div></div></footer></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/community/index.html b/community/index.html
deleted file mode 100644
index 6508d3ef2..000000000
--- a/community/index.html
+++ /dev/null
@@ -1,187 +0,0 @@
-
-<!DOCTYPE html>
-
-<html>
-
-<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="Object store for Hadoop">
- <meta name="keywords" content="hadoop, ozone, hdds, objectstore, scale"/>
- <meta name="robots" content="index,follow"/>
- <meta name="language" content="en"/>
-
- <title>Apache Ozone</title>
-
- <base href="https://ozone.apache.org/">
-
- <link rel="canonical" href="https://ozone.apache.org">
-
- <link rel="stylesheet" href="bootstrap.min.css">
- <link rel="stylesheet" href="style.css">
-
- <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
- <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
- <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
- <link rel="manifest" href="/site.webmanifest">
- <link rel="mask-icon" href="/safari-pinned-tab.svg">
- <link rel="shortcut icon" href="/favicon.ico">
- <meta name="msapplication-TileColor" content="#da532c">
- <meta name="theme-color" content="#ffffff">
-
-
- <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>
-
-
-<div class="topnav">
- <div class="container">
- <ul class="breadcrumb col-md-4">
- <li>
- <img class="asf-logo" src="asf_feather.png"/>
- <a href="https://www.apache.org">Apache Software Foundation</a>
- </li>
- </ul>
- <div class="col-md-8">
- <ul class="pull-right breadcrumb">
- <li><a href="https://www.apache.org/licenses/">License</a></li>
- <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
- <li><a href="https://www.apache.org/events/current-event">Events</a></li>
- <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
- <li><a href="https://www.apache.org/security/">Security</a></li>
- <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a></li>
- </ul>
- </div>
- </div>
-
- <nav class="navbar navbar-default navbar-static-top" role="navigation">
- <div class="container">
- <div class="navbar-header">
- <ul class="nav navbar-nav navbar-brand">
- <li>
- <img src="ozone-logo.png" alt="Ozone logo"/>
- <a href="https://ozone.apache.org/">Apache Ozone™</a>
- </li>
- </ul>
- <button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
- data-target="#ozone-menu" aria-expanded="false">
- <span class="sr-only">Toggle navigation</span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- <span class="icon-bar"></span>
- </button>
- </div>
-
- <div id="ozone-menu" class="collapse navbar-collapse">
- <ul class="nav navbar-nav navbar-right">
- <li><a href="faq">FAQ</a></li>
- <li><a href="downloads">Download</a></li>
- <li><a href="docs">Documentation</a></li>
- <li class="dropdown">
- <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Community <span class="caret"></span></a>
- <ul class="dropdown-menu">
- <li><a href="community">Get involved</a></li>
- <li><a href="events">Events</a></li>
- <li><a href="blogs">Blogs</a></li>
- </ul>
- </li>
- <li><a href="https://github.com/apache/ozone">Source</a></li>
- <li><a href="https://cwiki.apache.org/confluence/display/OZONE">Wiki</a></li>
- </ul>
- </div>
-
- </nav>
-
- <div style="max-height: 200px; overflow: hidden;">
- <img src="sunrise-ozone.jpg" style="width: 100%; left:0px;"/>
- </div>
-
-</div>
-
-</div>
-
-<div class="container">
-<h1>Ozone Community</h1>
-<h2 id="ozone-mailing-lists">Ozone Mailing Lists</h2>
-<h3 id="developers">Developers</h3>
-<p>If you’d like to contribute to Ozone, please subscribe to the Ozone developer mailing list.</p>
-<p>The Ozone developer mailing list is: <a href="mailto:dev@ozone.apache.org">dev@ozone.apache.org</a>.</p>
-<ul>
-<li><a href="mailto:dev-subscribe@ozone.apache.org">Subscribe to List</a></li>
-<li><a href="mailto:dev-unsubscribe@ozone.apache.org">Unsubscribe from List</a></li>
-<li><a href="https://mail-archives.apache.org/mod_mbox/ozone-dev/">Archives</a></li>
-</ul>
-<h3 id="commits">Commits</h3>
-<p>If you’d like to see changes made in the Ozone version control system, please subscribe to the Ozone commits mailing list.</p>
-<p>The Ozone commits mailing list is: <a href="mailto:commits@ozone.apache.org">commits@ozone.apache.org</a>.</p>
-<ul>
-<li><a href="mailto:commits-subscribe@ozone.apache.org">Subscribe to List</a></li>
-<li><a href="mailto:commits-unsubscribe@ozone.apache.org">Unsubscribe from List</a></li>
-<li><a href="https://mail-archives.apache.org/mod_mbox/ozone-commits/">Archives</a></li>
-</ul>
-<h3 id="issues">Issues</h3>
-<p>If you’d like to see changes made in the Ozone issue tracking system, please subscribe to the Ozone issues mailing list.</p>
-<p>The Ozone issues mailing list is: <a href="mailto:issues@ozone.apache.org">issues@ozone.apache.org</a>.</p>
-<ul>
-<li><a href="mailto:issues-subscribe@ozone.apache.org">Subscribe to List</a></li>
-<li><a href="mailto:issues-unsubscribe@ozone.apache.org">Unsubscribe from List</a></li>
-<li><a href="https://mail-archives.apache.org/mod_mbox/ozone-issues/">Archives</a></li>
-</ul>
-<h3 id="older-archives">Older Archives</h3>
-<p>Ozone was approved as a separate Apache project in Oct. 2020, and the previous mailing list archives can be found here.</p>
-<ul>
-<li><a href="https://mail-archives.apache.org/mod_mbox/hadoop-ozone-dev/">Developers</a></li>
-<li><a href="https://mail-archives.apache.org/mod_mbox/hadoop-ozone-commits/">Commits</a></li>
-<li><a href="https://mail-archives.apache.org/mod_mbox/hadoop-ozone-issues/">Issues</a></li>
-</ul>
-<h2 id="ozone-slack">Ozone Slack</h2>
-<p>If you would like to join the Ozone Slack Channel, please use this link to get self-invited <a href="https://s.apache.org/slack-invite">https://s.apache.org/slack-invite</a> and join the <strong>#ozone</strong> channel.</p>
-<h2 id="github-discussions">GitHub Discussions</h2>
-<p><a href="https://github.com/apache/ozone/discussions">GitHub Discussions</a> is an alternative to Slack and only needs a GitHub account to interact with the community.</p>
-<h2 id="ozone-community-calls">Ozone Community Calls</h2>
-<p>Please refer to <a href="https://cwiki.apache.org/confluence/display/OZONE/Ozone+Community+Calls">this page</a> to get more information.</p>
-
-</div>
-
-<footer>
- <div class="container">
-
- <div class="col-md-12 trademark">
- <p>© 2026 The Apache Software Foundation <a href="http://apache.org">The Apache Software Foundation</a>,<br/>
- Apache, Apache Hadoop, Apache Ozone, the Apache feather logo, are trademarks of The Apache Software Foundation.
- <p>
- </div>
- </div>
-</footer>
-
-
-<script src="jquery.min.js"></script>
-<script src="bootstrap.min.js"></script>
-
-
-</body>
-</html>
-
diff --git a/community/report-an-issue/index.html b/community/report-an-issue/index.html
new file mode 100644
index 000000000..b1fba97d1
--- /dev/null
+++ b/community/report-an-issue/index.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="mdx-wrapper mdx-page plugin-pages plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.7.0">
+<title data-rh="true">Report an Issue or Ask a Question | Apache Ozone</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" name="twitter:image" content="https://ozone.apache.org/img/social-card.png"><meta data-rh="true" property="og:url" content="https://ozone.apache [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Ozone Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Ozone" href="/opensearch.xml">
+<link rel="manifest" href="/pwa/manifest.json">
+
+<link rel="icon" href="favicon.ico" sizes="32x32">
+<link rel="icon" href="favicon.svg" type="image/svg+xml">
+<link rel="apple-touch-icon" href="apple-touch-icon.png">
+<meta name="google-site-verification" content="fXhAWQ_Jb1fOk6QlN9a7Zs_Xsj-E2U0Q8oFqTNVclaE">
+<script src="/script/matomo.js"></script><link rel="stylesheet" href="/assets/css/styles.27c88cdc.css">
+<script src="/assets/js/runtime~main.dc044eab.js" defer="defer"></script>
+<script src="/assets/js/main.cd201a6c.js" defer="defer"></script>
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();null!==e?t(e):window.matchMedia("(prefers-color-scheme: dark)").matches?t("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,t("light"))}(),function(){try{const c=new URLSearchParams(window.location.sear [...]
+<!-- -->
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="have-a-question">Have a Question?<a href="#have-a-question" class="hash-link" aria-label="Direct link to Have a Question?" title="Direct link to Have a Question?"></a></h2>
+<p>If you have a question about Apache Ozone, you can use the form below to submit it to our GitHub Discussions. This will redirect you to GitHub where you can continue the conversation with the community.</p>
+<!-- -->
+<div class="formContainer_bS8P"><h2 class="formTitle_mK1r">Ask a Question</h2><p class="formDescription_raGT">Have a question about Apache Ozone? Fill out this form and we'll redirect you to GitHub Discussions with your question pre-filled.</p><form class="form_tbrA"><div class="formGroup_J89E"><label for="title" class="label_wdvG">Question Title:</label><input type="text" id="title" placeholder="Enter a title for your question" required="" class="input__NZ2" value=""></div><div cla [...]
+<h2 class="anchor anchorWithStickyNavbar_e_9H" id="report-a-bug">Report a Bug<a href="#report-a-bug" class="hash-link" aria-label="Direct link to Report a Bug" title="Direct link to Report a Bug"></a></h2>
+<p>If you've found a bug in Apache Ozone, please report it in our issue tracker. Before filing a new issue, please search for existing issues to avoid duplicates.</p>
+<ol>
+<li>Create a <a href="https://issues.apache.org/jira/secure/Signup!default.jspa" target="_blank" rel="noopener noreferrer">Jira account</a> if you don't have one</li>
+<li>Go to the <a href="https://issues.apache.org/jira/projects/HDDS/issues" target="_blank" rel="noopener noreferrer">Ozone Jira project</a></li>
+<li>Click "Create" to report a new issue</li>
+</ol>
+<h3 class="anchor anchorWithStickyNavbar_e_9H" id="best-practices-for-reporting-issues">Best Practices for Reporting Issues<a href="#best-practices-for-reporting-issues" class="hash-link" aria-label="Direct link to Best Practices for Reporting Issues" title="Direct link to Best Practices for Reporting Issues">