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

qiaojialin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iotdb-docs.git


The following commit(s) were added to refs/heads/main by this push:
     new ec7036a  Add "Environmental Requirements" document and archive the old 
version… (#254)
ec7036a is described below

commit ec7036a59a957e2f901a629964513ee64398e214
Author: majialin <[email protected]>
AuthorDate: Wed Jun 19 16:32:02 2024 +0800

    Add "Environmental Requirements" document and archive the old version… 
(#254)
---
 src/.vuepress/sidebar/V1.3.x/en.ts                 |   2 +-
 src/.vuepress/sidebar/V1.3.x/zh.ts                 |   2 +-
 src/.vuepress/sidebar_timecho/V1.3.x/en.ts         |   2 +-
 src/.vuepress/sidebar_timecho/V1.3.x/zh.ts         |   2 +-
 .../Deployment-Recommendation.md                   | 182 ---------------------
 .../Environment-Requirements.md                    | 109 ++++++++++++
 .../Environmental-Requirement.md                   |   0
 .../Deployment-Recommendation.md                   | 182 ---------------------
 .../Environment-Requirements.md                    | 109 ++++++++++++
 .../Environmental-Requirement.md                   |   0
 .../Deployment-Recommendation.md                   | 178 --------------------
 .../Environment-Requirements.md                    | 109 ++++++++++++
 .../Deployment-Preparation.md                      |   0
 .../Deployment-Recommendation.md                   | 178 --------------------
 .../Environment-Requirements.md                    | 109 ++++++++++++
 .../Deployment-Preparation.md                      |   0
 16 files changed, 440 insertions(+), 724 deletions(-)

diff --git a/src/.vuepress/sidebar/V1.3.x/en.ts 
b/src/.vuepress/sidebar/V1.3.x/en.ts
index cadee7a..ed41ec7 100644
--- a/src/.vuepress/sidebar/V1.3.x/en.ts
+++ b/src/.vuepress/sidebar/V1.3.x/en.ts
@@ -68,7 +68,7 @@ export const enSidebar = {
       children: [
         { text: 'Package Acquisition', link: 'IoTDB-Package' },
         { text: 'Database Resources', link: 'Database-Resources' },
-        { text: 'Environmental Requirement', link: 'Environmental-Requirement' 
},
+        { text: 'Environment Requirements', link: 'Environment-Requirements' },
         { text: 'Deployment Guide', link: 'Deployment-Guide' },
         { text: 'Docker Install', link: 'Docker-Install' },
       ],
diff --git a/src/.vuepress/sidebar/V1.3.x/zh.ts 
b/src/.vuepress/sidebar/V1.3.x/zh.ts
index bfb6e08..5611284 100644
--- a/src/.vuepress/sidebar/V1.3.x/zh.ts
+++ b/src/.vuepress/sidebar/V1.3.x/zh.ts
@@ -68,7 +68,7 @@ export const zhSidebar = {
       children: [
         { text: '安装包获取', link: 'IoTDB-Package' },
         { text: '资源规划', link: 'Database-Resources' },
-        { text: '部署准备', link: 'Deployment-Preparation' },
+        { text: '环境要求', link: 'Environment-Requirements' },
         { text: '部署指导', link: 'Deployment-Guide' },
         { text: 'docker部署', link: 'Docker-Install' },
       ],
diff --git a/src/.vuepress/sidebar_timecho/V1.3.x/en.ts 
b/src/.vuepress/sidebar_timecho/V1.3.x/en.ts
index 5bbc620..20ee437 100644
--- a/src/.vuepress/sidebar_timecho/V1.3.x/en.ts
+++ b/src/.vuepress/sidebar_timecho/V1.3.x/en.ts
@@ -68,7 +68,7 @@ export const enSidebar = {
       children: [
         { text: 'Package Acquisition', link: 'IoTDB-Package_timecho' },
         { text: 'Database Resources', link: 'Database-Resources' },
-        { text: 'Environmental Requirement', link: 'Environmental-Requirement' 
},
+        { text: 'Environment Requirements', link: 'Environment-Requirements' },
         { text: 'Deployment Guide', link: 'Deployment-Guide_timecho' },
         { text: 'Docker Install', link: 'Docker-Install' },
         { text: 'Monitoring-Board-Install-and-Deploy', link: 
'Monitoring-Board-Install-and-Deploy' },
diff --git a/src/.vuepress/sidebar_timecho/V1.3.x/zh.ts 
b/src/.vuepress/sidebar_timecho/V1.3.x/zh.ts
index 805ec33..487c01a 100644
--- a/src/.vuepress/sidebar_timecho/V1.3.x/zh.ts
+++ b/src/.vuepress/sidebar_timecho/V1.3.x/zh.ts
@@ -68,7 +68,7 @@ export const zhSidebar = {
       children: [
         { text: '安装包获取', link: 'IoTDB-Package_timecho' },
         { text: '资源规划', link: 'Database-Resources' },
-        { text: '部署准备', link: 'Deployment-Preparation' },
+        { text: '环境要求', link: 'Environment-Requirements' },
         { text: '部署指导', link: 'Deployment-Guide_timecho' },
         { text: 'docker部署', link: 'Docker-Install' },
         { text: '监控面板安装部署', link: 'Monitoring-Board-Install-and-Deploy' },
diff --git 
a/src/UserGuide/Master/Deployment-and-Maintenance/Deployment-Recommendation.md 
b/src/UserGuide/Master/Deployment-and-Maintenance/Deployment-Recommendation.md
deleted file mode 100644
index 5fd59f9..0000000
--- 
a/src/UserGuide/Master/Deployment-and-Maintenance/Deployment-Recommendation.md
+++ /dev/null
@@ -1,182 +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.
-
--->
-
-# IoTDB Deployment Recommendation
-## Backgrounds
-
-System Abilities
-- Performance: writing and reading performance, compression ratio
-- Extensibility: system has the ability to manage data with multiple nodes, 
and is essentially that data can be managed by partitions
-- High availability(HA): system has the ability to tolerate the nodes 
disconnected, and is essentially that the data has replicas
-- Consistency:when data is with multiple copies, whether the replicas are 
consistent, and is essentially that the system treats the whole database as a 
single node
-
-Abbreviations
-- C: ConfigNode
-- D: DataNode
-- nCmD:cluster with n ConfigNodes and m DataNodes
-
-## Deployment mode
-
-|                  mode                   | Performance    | Extensibility | 
HA     | Consistency |
-|:---------------------------------------:|:---------------|:--------------|:-------|:------------|
-|       Lightweight standalone mode       | Extremely High | None          | 
None   | High        |
-|   Scalable standalone mode (default)    | High           | High          | 
Medium | High        |
-|      High performance cluster mode      | High           | High          | 
High   | Medium      |
-|     Strong consistency cluster mode     | Medium         | High          | 
High   | High        | 
-
-
-|                 Config                 | Lightweight standalone mode | 
Scalable single node mode | High performance mode | strong consistency cluster 
mode |
-|:--------------------------------------:|:----------------------------|:--------------------------|:----------------------|:--------------------------------|
-|           ConfigNode number            | 1                           | ≥1 
(odd number)           | ≥1 (odd number)       | ≥1 (odd number)                
 |
-|            DataNode number             | 1                           | ≥1    
                    | ≥3                    | ≥3                              |
-|       schema_replication_factor        | 1                           | 1     
                    | 3                     | 3                               |
-|        data_replication_factor         | 1                           | 1     
                    | 2                     | 3                               |
-|  config_node_consensus_protocol_class  | Simple                      | Ratis 
                    | Ratis                 | Ratis                           |
-| schema_region_consensus_protocol_class | Simple                      | Ratis 
                    | Ratis                 | Ratis                           |
-|  data_region_consensus_protocol_class  | Simple                      | IoT   
                    | IoT                   | Ratis                           |
-
-
-## Deployment Recommendation
-
-### Upgrade from v0.13 to v1.0
-
-Scenario:
-Already has some data under v0.13, hope to upgrade to v1.0.
-
-Options:
-1. Upgrade to 1C1D standalone mode, allocate 2GB memory to ConfigNode, 
allocate same memory size with v0.13 to DataNode.
-2. Upgrade to 3C3D cluster mode, allocate 2GB memory to ConfigNode, allocate 
same memory size with v0.13 to DataNode.
-
-Configuration modification:
-
-- Do not point v1.0 data directory to v0.13 data directory
-- region_group_extension_strategy=COSTOM
-- data_region_group_per_database
-    - for 3C3D cluster mode: Cluster CPU total core num / 
data_replication_factor
-    - for 1C1D standalone mode: use virtual_storage_group_num in v0.13
-
-Data migration:
-After modifying the configuration, use load-tsfile tool to load the TsFiles of 
v0.13 to v1.0.
-
-### Use v1.0 directly
-
-**Recommend to use 1 Database only**
-
-#### Memory estimation
-
-##### Use active series number to estimate memory size
-
-Cluster DataNode total heap size(GB) = active series number / 100000 * 
data_replication_factor
-
-Heap size of each DataNode (GB) = Cluster DataNode total heap size / DataNode 
number
-
-> Example: use 3C3D to manage 1 million timeseries, use 3 data replicas
-> - Cluster DataNode total heap size: 1,000,000 / 100,000 * 3 = 30G
-> - 每Heap size of each DataNode: 30 / 3 = 10G
-
-##### Use total series number to estimate memory size
-
-Cluster DataNode total heap size(B) = 20 * (180 + 2 * average character num of 
the series full path) * total series number * schema_replication_factor
-
-Heap size of each DataNode = Cluster DataNode total heap size / DataNode number
-
-> Example: use 3C3D to manage 1 million timeseries, use 3 schema replicas, 
series name such as root.sg_1.d_10.s_100(20 chars)
-> - Cluster DataNode total heap size: 20 * (180 + 2 * 20) * 1,000,000 * 3 = 
13.2 GB
-> - Heap size of each DataNode: 13.2 GB / 3 = 4.4 GB
-
-#### Disk estimation
-
-IoTDB storage size = data storage size + schema storage size + temp storage 
size
-
-##### Data storage size
-
-Series number * Sampling frequency * Data point size * Storage duration * 
data_replication_factor /  10 (compression ratio)
-
-| Data Type \ Data point size | Timestamp (Byte) | Value (Byte) | Total (Byte) 
|
-|:---------------------------:|:-----------------|:-------------|:-------------|
-|           Boolean           | 8                | 1            | 9            
|
-|        INT32 / FLOAT        | 8                | 4            | 12           
|
-|       INT64)/ DOUBLE        | 8                | 8            | 16           
|
-|            TEXT             | 8                | Assuming a   | 8+a          
| 
-
-
-> Example: 1000 devices, 100 sensors for one device, 100,000 series total, 
INT32 data type, 1Hz sampling frequency, 1 year storage duration, 3 replicas, 
compression ratio is 10
-> Data storage size = 1000 * 100 * 12 * 86400 * 365 * 3 / 10 = 11T
-
-##### Schema storage size
-
-One series uses the path character byte size + 20 bytes.
-If the series has tag, add the tag character byte size.
-
-##### Temp storage size
-
-Temp storage size = WAL storage size  + Consensus storage size + Compaction 
temp storage size
-
-1. WAL
-
-max wal storage size = memtable memory size ÷ wal_min_effective_info_ratio
-- memtable memory size is decided by datanode_memory_proportion, 
storage_engine_memory_proportion and write_memory_proportion
-- wal_min_effective_info_ratio is decided by wal_min_effective_info_ratio 
configuration
-
-> Example: allocate 16G memory for DataNode, config is as below:
->  datanode_memory_proportion=3:3:1:1:1:1
->  storage_engine_memory_proportion=8:2
->  write_memory_proportion=19:1
->  wal_min_effective_info_ratio=0.1
->  max wal storage size = 16 * (3 / 10) * (8 / 10) * (19 / 20)  ÷ 0.1 = 36.48G
-
-2. Consensus
-
-Ratis consensus
-
-When using ratis consensus protocol, we need extra storage for Raft Log, which 
will be deleted after the state machine takes snapshot.
-We can adjust `trigger_snapshot_threshold` to control the maximum Raft Log 
disk usage.
-
-
-Raft Log disk size in each Region = average * trigger_snapshot_threshold
-
-The total Raft Log storage space is proportional to the data replica number
-
-> Example: DataRegion, 20kB data for one request, 
data_region_trigger_snapshot_threshold = 400,000, then max Raft Log disk size = 
20K * 400,000 = 8G.
-Raft Log increases from 0 to 8GB, and then turns to 0 after snapshot. Average 
size will be 4GB.
-When replica number is 3, max Raft log size will be 3 * 8G = 24G.
- 
-What's more, we can configure data_region_ratis_log_max_size to limit max log 
size of a single DataRegion.
-By default, data_region_ratis_log_max_size=20G, which guarantees that Raft Log 
size would not exceed 20G.
-
-3. Compaction
-
-- Inner space compaction
-  Disk space for temporary files = Total Disk space of origin files
-
-  > Example: 10 origin files, 100MB for each file
-  > Disk space for temporary files = 10 * 100 = 1000M
-
-
-- Outer space compaction
-  The overlap of out-of-order data = overlapped data amount  / total 
out-of-order data amount
-
-  Disk space for temporary file = Total ordered Disk space of origin files + 
Total out-of-order disk space of origin files *(1 - overlap)
-  > Example: 10 ordered files, 10 out-of-order files, 100M for each ordered 
file, 50M for each out-of-order file, half of data is overlapped with sequence 
file
-  > The overlap of out-of-order data = 25M/50M * 100% = 50%
-  > Disk space for temporary files = 10 * 100 + 10 * 50 * 50% = 1250M
-
-
diff --git 
a/src/UserGuide/Master/Deployment-and-Maintenance/Environment-Requirements.md 
b/src/UserGuide/Master/Deployment-and-Maintenance/Environment-Requirements.md
new file mode 100644
index 0000000..5d442ed
--- /dev/null
+++ 
b/src/UserGuide/Master/Deployment-and-Maintenance/Environment-Requirements.md
@@ -0,0 +1,109 @@
+<!--
+
+    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.
+
+-->
+# Environment Requirements
+
+## Operating System Requirements
+
+IoTDB supports operating systems such as Linux, Windows, and MacOS, while the 
enterprise version supports domestic CPUs such as Loongson, Phytium, and 
Kunpeng. It also supports domestic server operating systems such as Neokylin, 
KylinOS, UOS, and Linx.
+
+
+
+## System Environment Preparation
+
+### Important Reminder
+
+Whether in Linux or Windows, please ensure that the installation path of IoTDB 
does not contain spaces or Chinese characters to avoid software running 
abnormally.
+
+
+
+### Environmental Preparation
+
+To use IoTDB, the system environment needs to meet the following conditions 
(using the centos7 command as an example):
+
+1. Install Java runtime environment, Java version>=1.8, please ensure that the 
jdk environment variable is set.
+
+```shell
+ # Taking JDK-17 installation in Centos7 as an example:
+ tar  -zxvf  jdk-17_linux-x64_bin.tar     # Unzip JDK file
+ Vim  ~/.bashrc                           # Configure JDK environment
+ {  export JAVA_HOME=/usr/lib/jvm/jdk-17.0.9
+    export PATH=$JAVA_HOME/bin:$PATH     
+ }  # Add JDK environment variables
+ source  ~/.bashrc                        # Configuration environment takes 
effect
+ java -version                            # Check JDK environment
+```
+
+2. Turn off system swap memory
+
+```shell
+echo "vm.swappiness = 0">> /etc/sysctl.conf
+# Executing the swapoff - a and swapon - a commands together is to dump the 
data in swap back into memory and clear the data in swap.
+# Do not omit the swap business setting and only execute swap off - a; 
Otherwise, after restarting, swap will automatically open again, causing the 
operation to fail.
+swapoff -a && swapon -a
+# Enable configuration to take effect without restarting.
+sysctl -p
+# Check memory allocation, expected swap to be 0
+free -m
+```
+
+3. Set the maximum number of open files in the system to 65535 to avoid the 
error of "too many open files".
+
+```shell
+# View current restrictions
+ulimit -n
+# Temporary modifications
+ulimit -n 65535
+# Permanent modification
+echo "* soft nofile 65535" >>  /etc/security/limits.conf
+echo "* hard nofile 65535" >>  /etc/security/limits.conf
+# After exiting the current terminal session, the expected display is 65535
+ulimit -n
+```
+
+4. Turn off firewall
+
+```shell
+# View firewall
+systemctl status firewalld
+# Turn off firewall
+systemctl stop firewalld
+# Permanently disable firewall
+systemctl disable firewalld
+```
+
+5. Ensure that the required ports are not occupied
+
+  - Check for cluster occupied ports: In the default configuration of the 
cluster, ConfigNode will occupy ports 10710 and 10720, while DataNode will 
occupy ports 6667, 10730, 10740, 10750, 1076090919091903000. Please ensure that 
these ports are not occupied. The inspection method is as follows:
+
+     ```Bash
+     lsof -i:6667  or  netstat -tunp | grep 6667
+     lsof -i:10710  or  netstat -tunp | grep 10710
+     lsof -i:10720  or  netstat -tunp | grep 10720
+     # If the command has output, it indicates that the port is already 
occupied.
+     ```
+
+- Check for port occupancy by cluster deployment tool: When installing and 
deploying a cluster using the cluster management tool opskit, it is necessary 
to open the SSH remote connection service configuration and open port 22.
+
+     ```Bash
+     yum install openssh-server            # Install SSH service
+     systemctl start sshd                  # Enable Port 22           
+     ```
+
diff --git 
a/src/UserGuide/Master/Deployment-and-Maintenance/Environmental-Requirement.md 
b/src/UserGuide/Master/stage/Environmental-Requirement.md
similarity index 100%
rename from 
src/UserGuide/Master/Deployment-and-Maintenance/Environmental-Requirement.md
rename to src/UserGuide/Master/stage/Environmental-Requirement.md
diff --git 
a/src/UserGuide/latest/Deployment-and-Maintenance/Deployment-Recommendation.md 
b/src/UserGuide/latest/Deployment-and-Maintenance/Deployment-Recommendation.md
deleted file mode 100644
index 5fd59f9..0000000
--- 
a/src/UserGuide/latest/Deployment-and-Maintenance/Deployment-Recommendation.md
+++ /dev/null
@@ -1,182 +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.
-
--->
-
-# IoTDB Deployment Recommendation
-## Backgrounds
-
-System Abilities
-- Performance: writing and reading performance, compression ratio
-- Extensibility: system has the ability to manage data with multiple nodes, 
and is essentially that data can be managed by partitions
-- High availability(HA): system has the ability to tolerate the nodes 
disconnected, and is essentially that the data has replicas
-- Consistency:when data is with multiple copies, whether the replicas are 
consistent, and is essentially that the system treats the whole database as a 
single node
-
-Abbreviations
-- C: ConfigNode
-- D: DataNode
-- nCmD:cluster with n ConfigNodes and m DataNodes
-
-## Deployment mode
-
-|                  mode                   | Performance    | Extensibility | 
HA     | Consistency |
-|:---------------------------------------:|:---------------|:--------------|:-------|:------------|
-|       Lightweight standalone mode       | Extremely High | None          | 
None   | High        |
-|   Scalable standalone mode (default)    | High           | High          | 
Medium | High        |
-|      High performance cluster mode      | High           | High          | 
High   | Medium      |
-|     Strong consistency cluster mode     | Medium         | High          | 
High   | High        | 
-
-
-|                 Config                 | Lightweight standalone mode | 
Scalable single node mode | High performance mode | strong consistency cluster 
mode |
-|:--------------------------------------:|:----------------------------|:--------------------------|:----------------------|:--------------------------------|
-|           ConfigNode number            | 1                           | ≥1 
(odd number)           | ≥1 (odd number)       | ≥1 (odd number)                
 |
-|            DataNode number             | 1                           | ≥1    
                    | ≥3                    | ≥3                              |
-|       schema_replication_factor        | 1                           | 1     
                    | 3                     | 3                               |
-|        data_replication_factor         | 1                           | 1     
                    | 2                     | 3                               |
-|  config_node_consensus_protocol_class  | Simple                      | Ratis 
                    | Ratis                 | Ratis                           |
-| schema_region_consensus_protocol_class | Simple                      | Ratis 
                    | Ratis                 | Ratis                           |
-|  data_region_consensus_protocol_class  | Simple                      | IoT   
                    | IoT                   | Ratis                           |
-
-
-## Deployment Recommendation
-
-### Upgrade from v0.13 to v1.0
-
-Scenario:
-Already has some data under v0.13, hope to upgrade to v1.0.
-
-Options:
-1. Upgrade to 1C1D standalone mode, allocate 2GB memory to ConfigNode, 
allocate same memory size with v0.13 to DataNode.
-2. Upgrade to 3C3D cluster mode, allocate 2GB memory to ConfigNode, allocate 
same memory size with v0.13 to DataNode.
-
-Configuration modification:
-
-- Do not point v1.0 data directory to v0.13 data directory
-- region_group_extension_strategy=COSTOM
-- data_region_group_per_database
-    - for 3C3D cluster mode: Cluster CPU total core num / 
data_replication_factor
-    - for 1C1D standalone mode: use virtual_storage_group_num in v0.13
-
-Data migration:
-After modifying the configuration, use load-tsfile tool to load the TsFiles of 
v0.13 to v1.0.
-
-### Use v1.0 directly
-
-**Recommend to use 1 Database only**
-
-#### Memory estimation
-
-##### Use active series number to estimate memory size
-
-Cluster DataNode total heap size(GB) = active series number / 100000 * 
data_replication_factor
-
-Heap size of each DataNode (GB) = Cluster DataNode total heap size / DataNode 
number
-
-> Example: use 3C3D to manage 1 million timeseries, use 3 data replicas
-> - Cluster DataNode total heap size: 1,000,000 / 100,000 * 3 = 30G
-> - 每Heap size of each DataNode: 30 / 3 = 10G
-
-##### Use total series number to estimate memory size
-
-Cluster DataNode total heap size(B) = 20 * (180 + 2 * average character num of 
the series full path) * total series number * schema_replication_factor
-
-Heap size of each DataNode = Cluster DataNode total heap size / DataNode number
-
-> Example: use 3C3D to manage 1 million timeseries, use 3 schema replicas, 
series name such as root.sg_1.d_10.s_100(20 chars)
-> - Cluster DataNode total heap size: 20 * (180 + 2 * 20) * 1,000,000 * 3 = 
13.2 GB
-> - Heap size of each DataNode: 13.2 GB / 3 = 4.4 GB
-
-#### Disk estimation
-
-IoTDB storage size = data storage size + schema storage size + temp storage 
size
-
-##### Data storage size
-
-Series number * Sampling frequency * Data point size * Storage duration * 
data_replication_factor /  10 (compression ratio)
-
-| Data Type \ Data point size | Timestamp (Byte) | Value (Byte) | Total (Byte) 
|
-|:---------------------------:|:-----------------|:-------------|:-------------|
-|           Boolean           | 8                | 1            | 9            
|
-|        INT32 / FLOAT        | 8                | 4            | 12           
|
-|       INT64)/ DOUBLE        | 8                | 8            | 16           
|
-|            TEXT             | 8                | Assuming a   | 8+a          
| 
-
-
-> Example: 1000 devices, 100 sensors for one device, 100,000 series total, 
INT32 data type, 1Hz sampling frequency, 1 year storage duration, 3 replicas, 
compression ratio is 10
-> Data storage size = 1000 * 100 * 12 * 86400 * 365 * 3 / 10 = 11T
-
-##### Schema storage size
-
-One series uses the path character byte size + 20 bytes.
-If the series has tag, add the tag character byte size.
-
-##### Temp storage size
-
-Temp storage size = WAL storage size  + Consensus storage size + Compaction 
temp storage size
-
-1. WAL
-
-max wal storage size = memtable memory size ÷ wal_min_effective_info_ratio
-- memtable memory size is decided by datanode_memory_proportion, 
storage_engine_memory_proportion and write_memory_proportion
-- wal_min_effective_info_ratio is decided by wal_min_effective_info_ratio 
configuration
-
-> Example: allocate 16G memory for DataNode, config is as below:
->  datanode_memory_proportion=3:3:1:1:1:1
->  storage_engine_memory_proportion=8:2
->  write_memory_proportion=19:1
->  wal_min_effective_info_ratio=0.1
->  max wal storage size = 16 * (3 / 10) * (8 / 10) * (19 / 20)  ÷ 0.1 = 36.48G
-
-2. Consensus
-
-Ratis consensus
-
-When using ratis consensus protocol, we need extra storage for Raft Log, which 
will be deleted after the state machine takes snapshot.
-We can adjust `trigger_snapshot_threshold` to control the maximum Raft Log 
disk usage.
-
-
-Raft Log disk size in each Region = average * trigger_snapshot_threshold
-
-The total Raft Log storage space is proportional to the data replica number
-
-> Example: DataRegion, 20kB data for one request, 
data_region_trigger_snapshot_threshold = 400,000, then max Raft Log disk size = 
20K * 400,000 = 8G.
-Raft Log increases from 0 to 8GB, and then turns to 0 after snapshot. Average 
size will be 4GB.
-When replica number is 3, max Raft log size will be 3 * 8G = 24G.
- 
-What's more, we can configure data_region_ratis_log_max_size to limit max log 
size of a single DataRegion.
-By default, data_region_ratis_log_max_size=20G, which guarantees that Raft Log 
size would not exceed 20G.
-
-3. Compaction
-
-- Inner space compaction
-  Disk space for temporary files = Total Disk space of origin files
-
-  > Example: 10 origin files, 100MB for each file
-  > Disk space for temporary files = 10 * 100 = 1000M
-
-
-- Outer space compaction
-  The overlap of out-of-order data = overlapped data amount  / total 
out-of-order data amount
-
-  Disk space for temporary file = Total ordered Disk space of origin files + 
Total out-of-order disk space of origin files *(1 - overlap)
-  > Example: 10 ordered files, 10 out-of-order files, 100M for each ordered 
file, 50M for each out-of-order file, half of data is overlapped with sequence 
file
-  > The overlap of out-of-order data = 25M/50M * 100% = 50%
-  > Disk space for temporary files = 10 * 100 + 10 * 50 * 50% = 1250M
-
-
diff --git 
a/src/UserGuide/latest/Deployment-and-Maintenance/Environment-Requirements.md 
b/src/UserGuide/latest/Deployment-and-Maintenance/Environment-Requirements.md
new file mode 100644
index 0000000..5d442ed
--- /dev/null
+++ 
b/src/UserGuide/latest/Deployment-and-Maintenance/Environment-Requirements.md
@@ -0,0 +1,109 @@
+<!--
+
+    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.
+
+-->
+# Environment Requirements
+
+## Operating System Requirements
+
+IoTDB supports operating systems such as Linux, Windows, and MacOS, while the 
enterprise version supports domestic CPUs such as Loongson, Phytium, and 
Kunpeng. It also supports domestic server operating systems such as Neokylin, 
KylinOS, UOS, and Linx.
+
+
+
+## System Environment Preparation
+
+### Important Reminder
+
+Whether in Linux or Windows, please ensure that the installation path of IoTDB 
does not contain spaces or Chinese characters to avoid software running 
abnormally.
+
+
+
+### Environmental Preparation
+
+To use IoTDB, the system environment needs to meet the following conditions 
(using the centos7 command as an example):
+
+1. Install Java runtime environment, Java version>=1.8, please ensure that the 
jdk environment variable is set.
+
+```shell
+ # Taking JDK-17 installation in Centos7 as an example:
+ tar  -zxvf  jdk-17_linux-x64_bin.tar     # Unzip JDK file
+ Vim  ~/.bashrc                           # Configure JDK environment
+ {  export JAVA_HOME=/usr/lib/jvm/jdk-17.0.9
+    export PATH=$JAVA_HOME/bin:$PATH     
+ }  # Add JDK environment variables
+ source  ~/.bashrc                        # Configuration environment takes 
effect
+ java -version                            # Check JDK environment
+```
+
+2. Turn off system swap memory
+
+```shell
+echo "vm.swappiness = 0">> /etc/sysctl.conf
+# Executing the swapoff - a and swapon - a commands together is to dump the 
data in swap back into memory and clear the data in swap.
+# Do not omit the swap business setting and only execute swap off - a; 
Otherwise, after restarting, swap will automatically open again, causing the 
operation to fail.
+swapoff -a && swapon -a
+# Enable configuration to take effect without restarting.
+sysctl -p
+# Check memory allocation, expected swap to be 0
+free -m
+```
+
+3. Set the maximum number of open files in the system to 65535 to avoid the 
error of "too many open files".
+
+```shell
+# View current restrictions
+ulimit -n
+# Temporary modifications
+ulimit -n 65535
+# Permanent modification
+echo "* soft nofile 65535" >>  /etc/security/limits.conf
+echo "* hard nofile 65535" >>  /etc/security/limits.conf
+# After exiting the current terminal session, the expected display is 65535
+ulimit -n
+```
+
+4. Turn off firewall
+
+```shell
+# View firewall
+systemctl status firewalld
+# Turn off firewall
+systemctl stop firewalld
+# Permanently disable firewall
+systemctl disable firewalld
+```
+
+5. Ensure that the required ports are not occupied
+
+  - Check for cluster occupied ports: In the default configuration of the 
cluster, ConfigNode will occupy ports 10710 and 10720, while DataNode will 
occupy ports 6667, 10730, 10740, 10750, 1076090919091903000. Please ensure that 
these ports are not occupied. The inspection method is as follows:
+
+     ```Bash
+     lsof -i:6667  or  netstat -tunp | grep 6667
+     lsof -i:10710  or  netstat -tunp | grep 10710
+     lsof -i:10720  or  netstat -tunp | grep 10720
+     # If the command has output, it indicates that the port is already 
occupied.
+     ```
+
+- Check for port occupancy by cluster deployment tool: When installing and 
deploying a cluster using the cluster management tool opskit, it is necessary 
to open the SSH remote connection service configuration and open port 22.
+
+     ```Bash
+     yum install openssh-server            # Install SSH service
+     systemctl start sshd                  # Enable Port 22           
+     ```
+
diff --git 
a/src/UserGuide/latest/Deployment-and-Maintenance/Environmental-Requirement.md 
b/src/UserGuide/latest/stage/Environmental-Requirement.md
similarity index 100%
rename from 
src/UserGuide/latest/Deployment-and-Maintenance/Environmental-Requirement.md
rename to src/UserGuide/latest/stage/Environmental-Requirement.md
diff --git 
a/src/zh/UserGuide/Master/Deployment-and-Maintenance/Deployment-Recommendation.md
 
b/src/zh/UserGuide/Master/Deployment-and-Maintenance/Deployment-Recommendation.md
deleted file mode 100644
index 6710c79..0000000
--- 
a/src/zh/UserGuide/Master/Deployment-and-Maintenance/Deployment-Recommendation.md
+++ /dev/null
@@ -1,178 +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.
-
--->
-
-# IoTDB 部署推荐
-## 背景
-
-系统能力
-- 性能需求:系统读写速度,压缩比
-- 扩展性:系统能够用多节点管理数据,本质上是数据是否可分区管理
-- 高可用:系统能够容忍节点失效,本质上是数据是否有副本
-- 一致性:当数据有多副本时,不同副本是否一致,本质上用户是否能将数据库当做单机看待
-
-缩写
-- C:ConfigNode
-- D:DataNode
-- aCbD:a 个 ConfigNode 和 b 个 DataNode
-
-## 部署模式选型
-
-|      模式      | 性能  | 扩展性 | 高可用 | 一致性 |
-|:------------:|:----|:----|:----|:----|
-|    轻量单机模式    | 最高  | 无   | 无   | 高   |
-|   可扩展单节点模式 (默认)  | 高   | 高   | 中   | 高   |
-| 高性能分布式模式     | 高   | 高   | 高   | 中   |
-|   强一致分布式模式   | 中   | 高   | 高   | 高   |
-
-
-|                           配置                           | 轻量单机模式 | 可扩展单节点模式 | 
高性能分布式模式 | 强一致分布式模式 |
-|:------------------------------------------------------:|:-------|:---------|:---------|:---------|
-|                     ConfigNode 个数                      | 1      | ≥1 (奇数)  | 
≥1 (奇数)  | ≥1(奇数)   |
-|                      DataNode 个数                       | 1      | ≥1       | 
≥3       | ≥3       |
-|            元数据副本 schema_replication_factor             | 1      | 1        | 
3        | 3        |
-|              数据副本 data_replication_factor              | 1      | 1        | 
2        | 3        |
-|   ConfigNode 协议 config_node_consensus_protocol_class   | Simple | Ratis    | 
Ratis    | Ratis    |
-| SchemaRegion 协议 schema_region_consensus_protocol_class | Simple | Ratis    | 
Ratis    | Ratis    |
-|   DataRegion 协议 data_region_consensus_protocol_class   | Simple | IoT      | 
IoT      | Ratis    |
-
-
-## 部署配置推荐
-
-### 从 0.13 版本升级到 1.0
-
-场景:
-已在 0.13 版本存储了部分数据,希望迁移到 1.0 版本,并且与 0.13 表现保持一致。
-
-可选方案:
-1. 升级到 1C1D 单机版,ConfigNode 分配 2G 内存,DataNode 与 0.13 一致。
-2. 升级到 3C3D 高性能分布式,ConfigNode 分配 2G 内存,DataNode 与 0.13 一致。
-
-配置修改:
-1.0 配置参数修改:
-- 数据目录不要指向0.13原有数据目录
-- region_group_extension_strategy=COSTOM
-- data_region_group_per_database
-    - 如果是 3C3D 高性能分布式:则改为:集群 CPU 总核数/ 数据副本数
-    - 如果是 1C1D,则改为:等于 0.13 的 virtual_storage_group_num 即可 ("database"一词 与 0.13 
中的 "sg" 同义)
-
-数据迁移:
-配置修改完成后,通过 load-tsfile 工具将 0.13 的 TsFile 都加载进 1.0 的 IoTDB 中,即可使用。
-
-### 直接使用 1.0
-
-**推荐用户仅设置 1 个 Database**
-
-#### 内存设置方法
-##### 根据活跃序列数估计内存
-
-集群 DataNode 总堆内内存(GB) = 活跃序列数/100000 * 数据副本数
-
-每个 DataNode 堆内内存(GB)= 集群DataNode总堆内内存 / DataNode 个数
-
-> 假设需要用3C3D管理100万条序列,数据采用3副本,则:
-> - 集群 DataNode 总堆内内存(GB):1,000,000 / 100,000 * 3 = 30G
-> - 每台 DataNode 的堆内内存配置为:30 / 3 = 10G
-
-##### 根据总序列数估计内存
-
-集群 DataNode 总堆内内存 (B) = 20 * (180 + 2 * 序列的全路径的平均字符数)* 序列总量 * 元数据副本数
-
-每个 DataNode 内存配置推荐:集群 DataNode 总堆内内存 / DataNode 数目
-
-> 假设需要用3C3D管理100万条序列,元数据采用3副本,序列名形如 root.sg_1.d_10.s_100(约20字符),则:
-> - 集群 DataNode 总堆内内存:20 * (180 + 2 * 20)* 1,000,000 * 3 = 13.2 GB
-> - 每台 DataNode 的堆内内存配置为:13.2 GB / 3 = 4.4 GB
-
-#### 磁盘估计
-
-IoTDB 存储空间=数据存储空间 + 元数据存储空间 + 临时存储空间
-
-##### 数据磁盘空间
-
-序列数量 * 采样频率 * 每个数据点大小 * 存储时长 * 副本数 /  10 倍压缩比
-
-|       数据类型 \ 数据点大小        | 时间戳(字节) | 值(字节) | 总共(字节) |
-|:-------------------------:|:--------|:------|:-------|
-|       开关量(Boolean)        | 8       | 1     | 9      |
-|  整型(INT32)/ 单精度浮点数(FLOAT)  | 8       | 4     | 12     |
-| 长整型(INT64)/ 双精度浮点数(DOUBLE) | 8       | 8     | 16     |
-|         字符串(TEXT)         | 8       | 假设为 a | 8+a    | 
-
-
-> 示例:1000设备,每个设备100 测点,共 100000 序列。整型。采样频率1Hz(每秒一次),存储1年,3副本,压缩比按 10 
算,则数据存储空间占用: 
->  * 简版:1000 * 100 * 12 * 86400 * 365 * 3 / 10 = 11T 
->  * 完整版:1000设备 * 100测点 * 12字节每数据点 * 86400秒每天 * 365天每年 * 3副本 / 10压缩比 = 11T
-
-##### 元数据磁盘空间
-
-每条序列在磁盘日志文件中大约占用 序列字符数 + 20 字节。
-若序列有tag描述信息,则仍需加上约 tag 总字符数字节的空间。
-
-##### 临时磁盘空间
-
-临时磁盘空间 = 写前日志 + 共识协议 + 合并临时空间
-
-1. 写前日志
-
-最大写前日志空间占用 = memtable 总内存占用 ÷ 最小有效信息占比
-- memtable 总内存占用和 
datanode_memory_proportion、storage_engine_memory_proportion、write_memory_proportion
 三个参数有关
-- 最小有效信息占比由 wal_min_effective_info_ratio 决定
-  
-> 示例:为 IoTDB 分配 16G 内存,配置文件如下
->  datanode_memory_proportion=3:3:1:1:1:1
->  storage_engine_memory_proportion=8:2
->  write_memory_proportion=19:1
->  wal_min_effective_info_ratio=0.1
->  最大写前日志空间占用 = 16 * (3 / 10) * (8 / 10) * (19 / 20)  ÷ 0.1 = 36.48G
-
-2. 共识协议
-
-Ratis共识协议
-采用Ratis共识协议的情况下,需要额外磁盘空间存储Raft Log。Raft Log会在每一次状态机 Snapshot 之后删除,因此可以通过调整 
trigger_snapshot_threshold 参数控制Raft Log最大空间占用。
-
-每一个 Region Raft Log占用最大空间 = 平均请求大小 * trigger_snapshot_threshold。
-集群中一个Region总的Raft Log占用空间和Raft数据副本数成正比。
-
-> 示例:DataRegion, 平均每一次插入20k数据,data_region_trigger_snapshot_threshold = 
400,000,那么Raft Log最大占用 = 20K * 400,000 = 8G。
-Raft Log会从0增长到8G,接着在snapshot之后重新变成0。平均占用为4G。
-当副本数为3时,集群中这个DataRegion总Raft Log最大占用 3 * 8G = 24G。
-
-此外,可以通过data_region_ratis_log_max_size规定每一个DataRegion的Raft Log磁盘占用最大值,
-默认为20G,能够保障运行全程中单DataRegion Raft Log总大小不超过20G。
-
-3. 合并临时空间
-
- - 空间内合并
-   临时文件的磁盘空间 = 源文件大小总和
-   
-   > 示例:10个源文件,每个文件大小为100M
-   > 临时文件的磁盘空间 = 10 * 100 = 1000M
-
-
- - 跨空间合并
-   跨空间合并的临时文件大小与源文件大小和顺乱序数据的重叠度有关,当乱序数据与顺序数据有相同的时间戳时,就认为有重叠。
-   乱序数据的重叠度 = 重叠的乱序数据量 / 总的乱序数据量
-
-   临时文件的磁盘空间 = 源顺序文件总大小 + 源乱序文件总大小 *(1 - 重叠度)
-   > 示例:10个顺序文件,10个乱序文件,每个顺序文件100M,每个乱序文件50M,每个乱序文件里有一半的数据与顺序文件有相同的时间戳 
-   > 乱序数据的重叠度 = 25M/50M * 100% = 50% 
-   > 临时文件的磁盘空间 = 10 * 100 + 10 * 50 * 50% = 1250M
-
diff --git 
a/src/zh/UserGuide/Master/Deployment-and-Maintenance/Environment-Requirements.md
 
b/src/zh/UserGuide/Master/Deployment-and-Maintenance/Environment-Requirements.md
new file mode 100644
index 0000000..8c3e4f2
--- /dev/null
+++ 
b/src/zh/UserGuide/Master/Deployment-and-Maintenance/Environment-Requirements.md
@@ -0,0 +1,109 @@
+<!--
+
+    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.
+
+-->
+# 环境要求
+
+## 操作系统要求
+
+IoTDB 支持 Linux、Windows、MacOS 等操作系统,同时企业版支持龙芯、飞腾、鲲鹏等国产 
CPU,支持中标麒麟、银河麒麟、统信、凝思等国产服务器操作系统。
+
+
+
+## 系统环境准备
+
+### 重要提示
+
+无论是在 linux 还是 windows 中,请确保 IoTDB 的安装路径中不含空格和中文,避免软件运行异常。
+
+
+
+### 环境准备
+
+要使用 IoTDB,需要系统环境具备以下条件(以 centos7 命令为例):
+
+1. 安装 Java 运行环境 ,Java 版本 >= 1.8,请确保已设置 jdk 环境变量。
+
+```shell
+ #下面以在centos7,使用JDK-17安装为例:
+ tar  -zxvf  jdk-17_linux-x64_bin.tar     #解压JDK文件
+ Vim  ~/.bashrc                           #配置JDK环境
+ {  export JAVA_HOME=/usr/lib/jvm/jdk-17.0.9
+    export PATH=$JAVA_HOME/bin:$PATH     
+ }  #添加JDK环境变量
+ source  ~/.bashrc                        #配置环境生效
+ java -version                            #检查JDK环境
+```
+
+2. 关闭系统 swap 内存
+
+```shell
+echo "vm.swappiness = 0">> /etc/sysctl.conf
+# 一起执行 swapoff -a 和 swapon -a 命令是为了将 swap 里的数据转储回内存,并清空 swap 里的数据。
+# 不可省略 swappiness 设置而只执行 swapoff -a;否则,重启后 swap 会再次自动打开,使得操作失效。
+swapoff -a && swapon -a
+# 在不重启的情况下使配置生效。
+sysctl -p
+# 检查内存分配,预期 swap 为 0
+free -m
+```
+
+3. 设置系统最大打开文件数为 65535,以避免出现 "太多的打开文件 "的错误。
+   
+```shell
+#查看当前限制
+ulimit -n
+# 临时修改
+ulimit -n 65535
+# 永久修改
+echo "* soft nofile 65535" >>  /etc/security/limits.conf
+echo "* hard nofile 65535" >>  /etc/security/limits.conf
+#退出当前终端会话后查看,预期显示65535
+ulimit -n
+```
+
+4. 关闭防火墙
+
+```shell
+# 查看防火墙
+systemctl status firewalld
+# 关闭防火墙
+systemctl stop firewalld
+# 永久关闭防火墙
+systemctl disable firewalld
+```
+
+5. 保证所需端口不被占用
+
+- 集群占用端口的检查:在集群默认配置中,ConfigNode 会占用端口 10710 和 10720,DataNode 会占用端口 
6667、10730、10740、10750 、10760,9090, 9190, 3000 请确保这些端口未被占用。检查方式如下:
+
+     ```Bash
+     lsof -i:6667  或  netstat -tunp | grep 6667
+     lsof -i:10710  或  netstat -tunp | grep 10710
+     lsof -i:10720  或  netstat -tunp | grep 10720
+     #如果命令有输出,则表示该端口已被占用。
+     ```
+
+- 集群部署工具占用端口的检查:使用集群管理工具 opskit 安装部署集群时,需打开 SSH 远程连接服务配置,并开放 22 号端口。
+
+     ```Bash
+     yum install openssh-server            #安装ssh服务
+     systemctl start sshd                  #启用22号端口           
+     ```
+
diff --git 
a/src/zh/UserGuide/Master/Deployment-and-Maintenance/Deployment-Preparation.md 
b/src/zh/UserGuide/Master/stage/Deployment-Preparation.md
similarity index 100%
rename from 
src/zh/UserGuide/Master/Deployment-and-Maintenance/Deployment-Preparation.md
rename to src/zh/UserGuide/Master/stage/Deployment-Preparation.md
diff --git 
a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Deployment-Recommendation.md
 
b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Deployment-Recommendation.md
deleted file mode 100644
index 6710c79..0000000
--- 
a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Deployment-Recommendation.md
+++ /dev/null
@@ -1,178 +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.
-
--->
-
-# IoTDB 部署推荐
-## 背景
-
-系统能力
-- 性能需求:系统读写速度,压缩比
-- 扩展性:系统能够用多节点管理数据,本质上是数据是否可分区管理
-- 高可用:系统能够容忍节点失效,本质上是数据是否有副本
-- 一致性:当数据有多副本时,不同副本是否一致,本质上用户是否能将数据库当做单机看待
-
-缩写
-- C:ConfigNode
-- D:DataNode
-- aCbD:a 个 ConfigNode 和 b 个 DataNode
-
-## 部署模式选型
-
-|      模式      | 性能  | 扩展性 | 高可用 | 一致性 |
-|:------------:|:----|:----|:----|:----|
-|    轻量单机模式    | 最高  | 无   | 无   | 高   |
-|   可扩展单节点模式 (默认)  | 高   | 高   | 中   | 高   |
-| 高性能分布式模式     | 高   | 高   | 高   | 中   |
-|   强一致分布式模式   | 中   | 高   | 高   | 高   |
-
-
-|                           配置                           | 轻量单机模式 | 可扩展单节点模式 | 
高性能分布式模式 | 强一致分布式模式 |
-|:------------------------------------------------------:|:-------|:---------|:---------|:---------|
-|                     ConfigNode 个数                      | 1      | ≥1 (奇数)  | 
≥1 (奇数)  | ≥1(奇数)   |
-|                      DataNode 个数                       | 1      | ≥1       | 
≥3       | ≥3       |
-|            元数据副本 schema_replication_factor             | 1      | 1        | 
3        | 3        |
-|              数据副本 data_replication_factor              | 1      | 1        | 
2        | 3        |
-|   ConfigNode 协议 config_node_consensus_protocol_class   | Simple | Ratis    | 
Ratis    | Ratis    |
-| SchemaRegion 协议 schema_region_consensus_protocol_class | Simple | Ratis    | 
Ratis    | Ratis    |
-|   DataRegion 协议 data_region_consensus_protocol_class   | Simple | IoT      | 
IoT      | Ratis    |
-
-
-## 部署配置推荐
-
-### 从 0.13 版本升级到 1.0
-
-场景:
-已在 0.13 版本存储了部分数据,希望迁移到 1.0 版本,并且与 0.13 表现保持一致。
-
-可选方案:
-1. 升级到 1C1D 单机版,ConfigNode 分配 2G 内存,DataNode 与 0.13 一致。
-2. 升级到 3C3D 高性能分布式,ConfigNode 分配 2G 内存,DataNode 与 0.13 一致。
-
-配置修改:
-1.0 配置参数修改:
-- 数据目录不要指向0.13原有数据目录
-- region_group_extension_strategy=COSTOM
-- data_region_group_per_database
-    - 如果是 3C3D 高性能分布式:则改为:集群 CPU 总核数/ 数据副本数
-    - 如果是 1C1D,则改为:等于 0.13 的 virtual_storage_group_num 即可 ("database"一词 与 0.13 
中的 "sg" 同义)
-
-数据迁移:
-配置修改完成后,通过 load-tsfile 工具将 0.13 的 TsFile 都加载进 1.0 的 IoTDB 中,即可使用。
-
-### 直接使用 1.0
-
-**推荐用户仅设置 1 个 Database**
-
-#### 内存设置方法
-##### 根据活跃序列数估计内存
-
-集群 DataNode 总堆内内存(GB) = 活跃序列数/100000 * 数据副本数
-
-每个 DataNode 堆内内存(GB)= 集群DataNode总堆内内存 / DataNode 个数
-
-> 假设需要用3C3D管理100万条序列,数据采用3副本,则:
-> - 集群 DataNode 总堆内内存(GB):1,000,000 / 100,000 * 3 = 30G
-> - 每台 DataNode 的堆内内存配置为:30 / 3 = 10G
-
-##### 根据总序列数估计内存
-
-集群 DataNode 总堆内内存 (B) = 20 * (180 + 2 * 序列的全路径的平均字符数)* 序列总量 * 元数据副本数
-
-每个 DataNode 内存配置推荐:集群 DataNode 总堆内内存 / DataNode 数目
-
-> 假设需要用3C3D管理100万条序列,元数据采用3副本,序列名形如 root.sg_1.d_10.s_100(约20字符),则:
-> - 集群 DataNode 总堆内内存:20 * (180 + 2 * 20)* 1,000,000 * 3 = 13.2 GB
-> - 每台 DataNode 的堆内内存配置为:13.2 GB / 3 = 4.4 GB
-
-#### 磁盘估计
-
-IoTDB 存储空间=数据存储空间 + 元数据存储空间 + 临时存储空间
-
-##### 数据磁盘空间
-
-序列数量 * 采样频率 * 每个数据点大小 * 存储时长 * 副本数 /  10 倍压缩比
-
-|       数据类型 \ 数据点大小        | 时间戳(字节) | 值(字节) | 总共(字节) |
-|:-------------------------:|:--------|:------|:-------|
-|       开关量(Boolean)        | 8       | 1     | 9      |
-|  整型(INT32)/ 单精度浮点数(FLOAT)  | 8       | 4     | 12     |
-| 长整型(INT64)/ 双精度浮点数(DOUBLE) | 8       | 8     | 16     |
-|         字符串(TEXT)         | 8       | 假设为 a | 8+a    | 
-
-
-> 示例:1000设备,每个设备100 测点,共 100000 序列。整型。采样频率1Hz(每秒一次),存储1年,3副本,压缩比按 10 
算,则数据存储空间占用: 
->  * 简版:1000 * 100 * 12 * 86400 * 365 * 3 / 10 = 11T 
->  * 完整版:1000设备 * 100测点 * 12字节每数据点 * 86400秒每天 * 365天每年 * 3副本 / 10压缩比 = 11T
-
-##### 元数据磁盘空间
-
-每条序列在磁盘日志文件中大约占用 序列字符数 + 20 字节。
-若序列有tag描述信息,则仍需加上约 tag 总字符数字节的空间。
-
-##### 临时磁盘空间
-
-临时磁盘空间 = 写前日志 + 共识协议 + 合并临时空间
-
-1. 写前日志
-
-最大写前日志空间占用 = memtable 总内存占用 ÷ 最小有效信息占比
-- memtable 总内存占用和 
datanode_memory_proportion、storage_engine_memory_proportion、write_memory_proportion
 三个参数有关
-- 最小有效信息占比由 wal_min_effective_info_ratio 决定
-  
-> 示例:为 IoTDB 分配 16G 内存,配置文件如下
->  datanode_memory_proportion=3:3:1:1:1:1
->  storage_engine_memory_proportion=8:2
->  write_memory_proportion=19:1
->  wal_min_effective_info_ratio=0.1
->  最大写前日志空间占用 = 16 * (3 / 10) * (8 / 10) * (19 / 20)  ÷ 0.1 = 36.48G
-
-2. 共识协议
-
-Ratis共识协议
-采用Ratis共识协议的情况下,需要额外磁盘空间存储Raft Log。Raft Log会在每一次状态机 Snapshot 之后删除,因此可以通过调整 
trigger_snapshot_threshold 参数控制Raft Log最大空间占用。
-
-每一个 Region Raft Log占用最大空间 = 平均请求大小 * trigger_snapshot_threshold。
-集群中一个Region总的Raft Log占用空间和Raft数据副本数成正比。
-
-> 示例:DataRegion, 平均每一次插入20k数据,data_region_trigger_snapshot_threshold = 
400,000,那么Raft Log最大占用 = 20K * 400,000 = 8G。
-Raft Log会从0增长到8G,接着在snapshot之后重新变成0。平均占用为4G。
-当副本数为3时,集群中这个DataRegion总Raft Log最大占用 3 * 8G = 24G。
-
-此外,可以通过data_region_ratis_log_max_size规定每一个DataRegion的Raft Log磁盘占用最大值,
-默认为20G,能够保障运行全程中单DataRegion Raft Log总大小不超过20G。
-
-3. 合并临时空间
-
- - 空间内合并
-   临时文件的磁盘空间 = 源文件大小总和
-   
-   > 示例:10个源文件,每个文件大小为100M
-   > 临时文件的磁盘空间 = 10 * 100 = 1000M
-
-
- - 跨空间合并
-   跨空间合并的临时文件大小与源文件大小和顺乱序数据的重叠度有关,当乱序数据与顺序数据有相同的时间戳时,就认为有重叠。
-   乱序数据的重叠度 = 重叠的乱序数据量 / 总的乱序数据量
-
-   临时文件的磁盘空间 = 源顺序文件总大小 + 源乱序文件总大小 *(1 - 重叠度)
-   > 示例:10个顺序文件,10个乱序文件,每个顺序文件100M,每个乱序文件50M,每个乱序文件里有一半的数据与顺序文件有相同的时间戳 
-   > 乱序数据的重叠度 = 25M/50M * 100% = 50% 
-   > 临时文件的磁盘空间 = 10 * 100 + 10 * 50 * 50% = 1250M
-
diff --git 
a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Environment-Requirements.md
 
b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Environment-Requirements.md
new file mode 100644
index 0000000..283b5c1
--- /dev/null
+++ 
b/src/zh/UserGuide/latest/Deployment-and-Maintenance/Environment-Requirements.md
@@ -0,0 +1,109 @@
+<!--
+
+    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.
+
+-->
+# 环境要求
+
+## 操作系统要求
+
+IoTDB 支持 Linux、Windows、MacOS 等操作系统,同时企业版支持龙芯、飞腾、鲲鹏等国产 
CPU,支持中标麒麟、银河麒麟、统信、凝思等国产服务器操作系统。
+
+
+
+## 系统环境准备
+
+### 重要提示
+
+无论是在 linux 还是 windows 中,请确保 IoTDB 的安装路径中不含空格和中文,避免软件运行异常。
+
+
+
+### 环境准备
+
+要使用 IoTDB,需要系统环境具备以下条件(以 centos7 命令为例):
+
+1. 安装 Java 运行环境 ,Java 版本 >= 1.8,请确保已设置 jdk 环境变量。
+
+```shell
+ #下面以在centos7,使用JDK-17安装为例:
+ tar  -zxvf  jdk-17_linux-x64_bin.tar     #解压JDK文件
+ Vim  ~/.bashrc                           #配置JDK环境
+ {  export JAVA_HOME=/usr/lib/jvm/jdk-17.0.9
+    export PATH=$JAVA_HOME/bin:$PATH     
+ }  #添加JDK环境变量
+ source  ~/.bashrc                        #配置环境生效
+ java -version                            #检查JDK环境
+```
+
+2. 关闭系统 swap 内存
+
+```shell
+echo "vm.swappiness = 0">> /etc/sysctl.conf
+# 一起执行 swapoff -a 和 swapon -a 命令是为了将 swap 里的数据转储回内存,并清空 swap 里的数据。
+# 不可省略 swappiness 设置而只执行 swapoff -a;否则,重启后 swap 会再次自动打开,使得操作失效。
+swapoff -a && swapon -a
+# 在不重启的情况下使配置生效。
+sysctl -p
+# 检查内存分配,预期 swap 为 0
+free -m
+```
+
+3. 设置系统最大打开文件数为 65535,以避免出现 "太多的打开文件 "的错误。
+
+```shell
+#查看当前限制
+ulimit -n
+# 临时修改
+ulimit -n 65535
+# 永久修改
+echo "* soft nofile 65535" >>  /etc/security/limits.conf
+echo "* hard nofile 65535" >>  /etc/security/limits.conf
+#退出当前终端会话后查看,预期显示65535
+ulimit -n
+```
+
+4. 关闭防火墙
+
+```shell
+# 查看防火墙
+systemctl status firewalld
+# 关闭防火墙
+systemctl stop firewalld
+# 永久关闭防火墙
+systemctl disable firewalld
+```
+
+5. 保证所需端口不被占用
+
+- 集群占用端口的检查:在集群默认配置中,ConfigNode 会占用端口 10710 和 10720,DataNode 会占用端口 
6667、10730、10740、10750 、10760,9090, 9190, 3000 请确保这些端口未被占用。检查方式如下:
+
+     ```Bash
+     lsof -i:6667  或  netstat -tunp | grep 6667
+     lsof -i:10710  或  netstat -tunp | grep 10710
+     lsof -i:10720  或  netstat -tunp | grep 10720
+     #如果命令有输出,则表示该端口已被占用。
+     ```
+
+- 集群部署工具占用端口的检查:使用集群管理工具 opskit 安装部署集群时,需打开 SSH 远程连接服务配置,并开放 22 号端口。
+
+     ```Bash
+     yum install openssh-server            #安装ssh服务
+     systemctl start sshd                  #启用22号端口           
+     ```
+
diff --git 
a/src/zh/UserGuide/latest/Deployment-and-Maintenance/Deployment-Preparation.md 
b/src/zh/UserGuide/latest/stage/Deployment-Preparation.md
similarity index 100%
rename from 
src/zh/UserGuide/latest/Deployment-and-Maintenance/Deployment-Preparation.md
rename to src/zh/UserGuide/latest/stage/Deployment-Preparation.md

Reply via email to