You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2022/10/22 03:52:25 UTC

[iotdb] branch master updated: New distribution package structure (#7672)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 81237589e8 New distribution package structure (#7672)
81237589e8 is described below

commit 81237589e8e0cf76dcab595b64b882194cfef5a4
Author: Haonan <hh...@outlook.com>
AuthorDate: Sat Oct 22 11:52:19 2022 +0800

    New distribution package structure (#7672)
---
 .github/workflows/standalone-it-for-mpp.yml        | 158 ++++++++++-----------
 confignode/src/assembly/confignode.xml             |  10 +-
 .../resources/conf/iotdb-confignode.properties     |  12 +-
 .../conf/{logback.xml => logback-confignode.xml}   |  20 +--
 .../assembly/resources/sbin/remove-confignode.bat  |   2 +-
 .../assembly/resources/sbin/remove-confignode.sh   |   2 +-
 .../assembly/resources/sbin/start-confignode.bat   |   2 +-
 .../assembly/resources/sbin/start-confignode.sh    |   2 +-
 .../iotdb/confignode/conf/ConfigNodeConstant.java  |   4 +-
 distribution/src/assembly/all.xml                  |  44 +++---
 distribution/src/assembly/confignode.xml           |  10 +-
 distribution/src/assembly/datanode.xml             |   8 +-
 .../org/apache/iotdb/it/env/ConfigNodeWrapper.java |   2 +-
 .../org/apache/iotdb/it/env/DataNodeWrapper.java   |   2 +-
 ...otdb-metric.yml => iotdb-confignode-metric.yml} |   0
 ...{iotdb-metric.yml => iotdb-datanode-metric.yml} |   0
 .../metrics/config/MetricConfigDescriptor.java     |  31 +++-
 .../iotdb/metrics/config/MetricConstant.java       |   4 +-
 .../apache/iotdb/commons/conf/IoTDBConstant.java   |   3 +-
 .../resources/conf/iotdb-datanode.properties       |  30 ++--
 .../conf/{logback.xml => logback-datanode.xml}     |  52 +++----
 .../assembly/resources/sbin/remove-datanode.bat    |   2 +-
 .../src/assembly/resources/sbin/remove-datanode.sh |   2 +-
 .../src/assembly/resources/sbin/start-datanode.bat |   2 +-
 .../src/assembly/resources/sbin/start-datanode.sh  |   2 +-
 .../assembly/resources/sbin/start-new-server.bat   |   2 +-
 .../assembly/resources/sbin/start-new-server.sh    |   2 +-
 .../src/assembly/resources/sbin/start-server.bat   |   2 +-
 server/src/assembly/resources/sbin/start-server.sh |   2 +-
 server/src/assembly/server.xml                     |  10 +-
 30 files changed, 226 insertions(+), 198 deletions(-)

diff --git a/.github/workflows/standalone-it-for-mpp.yml b/.github/workflows/standalone-it-for-mpp.yml
index 9074520c46..7821890738 100644
--- a/.github/workflows/standalone-it-for-mpp.yml
+++ b/.github/workflows/standalone-it-for-mpp.yml
@@ -1,79 +1,79 @@
-name: New Standalone IT
-
-on:
-#  push:
-#    branches:
-#    paths-ignore:
-#      - 'docs/**'
-#  pull_request:
-#    branches:
-#    paths-ignore:
-#      - 'docs/**'
-#  # allow manually run the action:
-#  workflow_dispatch:
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-env:
-  MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3
-
-jobs:
-  StandaloneMppIT:
-    strategy:
-      fail-fast: false
-      max-parallel: 20
-      matrix:
-        java: [ 8, 11, 17 ]
-        os: [ ubuntu-latest, macos-latest, windows-latest ]
-    runs-on: ${{ matrix.os }}
-
-    steps:
-      - uses: actions/checkout@v2
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v1
-        with:
-          java-version: ${{ matrix.java }}
-      - name: Cache Maven packages
-        uses: actions/cache@v2
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Check Apache Rat
-        run: mvn -B apache-rat:check -P site -P code-coverage
-      - name: Adjust network dynamic TCP ports range
-        if: ${{ runner.os == 'Windows' }}
-        shell: pwsh
-        run: |
-          netsh int ipv4 set dynamicport tcp start=32768 num=32768
-          netsh int ipv4 set dynamicport udp start=32768 num=32768
-          netsh int ipv6 set dynamicport tcp start=32768 num=32768
-          netsh int ipv6 set dynamicport udp start=32768 num=32768
-      - name: Adjust Linux kernel somaxconn
-        if: ${{ runner.os == 'Linux' }}
-        shell: bash
-        run: sudo sysctl -w net.core.somaxconn=65535
-      - name: Adjust Mac kernel somaxconn
-        if: ${{ runner.os == 'macOS' }}
-        shell: bash
-        run: sudo sysctl -w kern.ipc.somaxconn=65535
-      - name: IT/UT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in client.yml
-        # we can skip influxdb-protocol because it has been tested separately in influxdb-protocol.yml
-        run: |
-          mvn clean verify \
-          -DskipUTs \
-          -DintegrationTest.forkCount=2 \
-          -pl integration-test \
-          -am -PLocalStandaloneOnMppIT
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v3
-        with:
-          name: standalone-log-java${{ matrix.java }}-${{ runner.os }}
-          path: integration-test/target/cluster-logs
-          retention-days: 1
-
+#name: New Standalone IT
+#
+#on:
+##  push:
+##    branches:
+##    paths-ignore:
+##      - 'docs/**'
+##  pull_request:
+##    branches:
+##    paths-ignore:
+##      - 'docs/**'
+##  # allow manually run the action:
+##  workflow_dispatch:
+#
+#concurrency:
+#  group: ${{ github.workflow }}-${{ github.ref }}
+#  cancel-in-progress: true
+#
+#env:
+#  MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3
+#
+#jobs:
+#  StandaloneMppIT:
+#    strategy:
+#      fail-fast: false
+#      max-parallel: 20
+#      matrix:
+#        java: [ 8, 11, 17 ]
+#        os: [ ubuntu-latest, macos-latest, windows-latest ]
+#    runs-on: ${{ matrix.os }}
+#
+#    steps:
+#      - uses: actions/checkout@v2
+#      - name: Set up JDK ${{ matrix.java }}
+#        uses: actions/setup-java@v1
+#        with:
+#          java-version: ${{ matrix.java }}
+#      - name: Cache Maven packages
+#        uses: actions/cache@v2
+#        with:
+#          path: ~/.m2
+#          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
+#          restore-keys: ${{ runner.os }}-m2-
+#      - name: Check Apache Rat
+#        run: mvn -B apache-rat:check -P site -P code-coverage
+#      - name: Adjust network dynamic TCP ports range
+#        if: ${{ runner.os == 'Windows' }}
+#        shell: pwsh
+#        run: |
+#          netsh int ipv4 set dynamicport tcp start=32768 num=32768
+#          netsh int ipv4 set dynamicport udp start=32768 num=32768
+#          netsh int ipv6 set dynamicport tcp start=32768 num=32768
+#          netsh int ipv6 set dynamicport udp start=32768 num=32768
+#      - name: Adjust Linux kernel somaxconn
+#        if: ${{ runner.os == 'Linux' }}
+#        shell: bash
+#        run: sudo sysctl -w net.core.somaxconn=65535
+#      - name: Adjust Mac kernel somaxconn
+#        if: ${{ runner.os == 'macOS' }}
+#        shell: bash
+#        run: sudo sysctl -w kern.ipc.somaxconn=65535
+#      - name: IT/UT Test
+#        shell: bash
+#        # we do not compile client-cpp for saving time, it is tested in client.yml
+#        # we can skip influxdb-protocol because it has been tested separately in influxdb-protocol.yml
+#        run: |
+#          mvn clean verify \
+#          -DskipUTs \
+#          -DintegrationTest.forkCount=2 \
+#          -pl integration-test \
+#          -am -PLocalStandaloneOnMppIT
+#      - name: Upload Artifact
+#        if: failure()
+#        uses: actions/upload-artifact@v3
+#        with:
+#          name: standalone-log-java${{ matrix.java }}-${{ runner.os }}
+#          path: integration-test/target/cluster-logs
+#          retention-days: 1
+#
diff --git a/confignode/src/assembly/confignode.xml b/confignode/src/assembly/confignode.xml
index 68d639b8fa..4531f5b04d 100644
--- a/confignode/src/assembly/confignode.xml
+++ b/confignode/src/assembly/confignode.xml
@@ -41,9 +41,11 @@
             <outputDirectory>sbin</outputDirectory>
             <fileMode>0755</fileMode>
         </fileSet>
-        <fileSet>
-            <directory>${maven.multiModuleProjectDirectory}/metrics/interface/src/main/assembly/resources/conf</directory>
-            <outputDirectory>conf</outputDirectory>
-        </fileSet>
     </fileSets>
+    <files>
+        <file>
+            <source>${maven.multiModuleProjectDirectory}/metrics/interface/src/main/assembly/resources/conf/iotdb-confignode-metric.yml</source>
+            <destName>conf/iotdb-confignode-metric.yml</destName>
+        </file>
+    </files>
 </assembly>
diff --git a/confignode/src/assembly/resources/conf/iotdb-confignode.properties b/confignode/src/assembly/resources/conf/iotdb-confignode.properties
index 22d1906a65..a6a4f10ccf 100644
--- a/confignode/src/assembly/resources/conf/iotdb-confignode.properties
+++ b/confignode/src/assembly/resources/conf/iotdb-confignode.properties
@@ -192,28 +192,28 @@ target_config_nodes=127.0.0.1:22277
 
 
 # system dir
-# If this property is unset, system will save the data in the default relative path directory under the confignode folder(i.e., %CONFIGNODE_HOME%/data/system).
+# If this property is unset, system will save the data in the default relative path directory under the confignode folder(i.e., %CONFIGNODE_HOME%/data/confignode/system).
 # If it is absolute, system will save the data in exact location it points to.
 # If it is relative, system will save the data in the relative path directory it indicates under the confignode folder.
 # For windows platform
 # If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
-# system_dir=data\\system
+# system_dir=data\\confignode\\system
 # For Linux platform
 # If its prefix is "/", then the path is absolute. Otherwise, it is relative.
-# system_dir=data/system
+# system_dir=data/confignode/system
 
 
 # consensus dir
-# If this property is unset, system will save the data in the default relative path directory under the confignode folder(i.e., %CONFIGNODE_HOME%/data/consensus).
+# If this property is unset, system will save the data in the default relative path directory under the confignode folder(i.e., %CONFIGNODE_HOME%/data/confignode/consensus).
 # If it is absolute, system will save the data in exact location it points to.
 # If it is relative, system will save the data in the relative path directory it indicates under the confignode folder.
 # Note: If data_dir is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
 # For windows platform
 # If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
-# consensus_dir=data\\consensus
+# consensus_dir=data\\confignode\\consensus
 # For Linux platform
 # If its prefix is "/", then the path is absolute. Otherwise, it is relative.
-# consensus_dir=data/consensus
+# consensus_dir=data/confignode/consensus
 
 # UDF lib dir
 # If this property is unset, system will save the data in the default relative path directory under
diff --git a/confignode/src/assembly/resources/conf/logback.xml b/confignode/src/assembly/resources/conf/logback-confignode.xml
similarity index 86%
rename from confignode/src/assembly/resources/conf/logback.xml
rename to confignode/src/assembly/resources/conf/logback-confignode.xml
index 28d214b2a4..5c9d765772 100644
--- a/confignode/src/assembly/resources/conf/logback.xml
+++ b/confignode/src/assembly/resources/conf/logback-confignode.xml
@@ -24,9 +24,9 @@
     <!-- prevent logback from outputting its own status at the start of every log -->
     <statusListener class="ch.qos.logback.core.status.NopStatusListener"/>
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILEERROR">
-        <file>${CONFIGNODE_HOME}/logs/log_error.log</file>
+        <file>${CONFIGNODE_HOME}/logs/log_confignode_error.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${CONFIGNODE_HOME}/logs/log-error-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${CONFIGNODE_HOME}/logs/log-confignode-error-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>10MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>512MB</totalSizeCap>
@@ -43,9 +43,9 @@
         </filter>
     </appender>
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILEWARN">
-        <file>${CONFIGNODE_HOME}/logs/log_warn.log</file>
+        <file>${CONFIGNODE_HOME}/logs/log_confignode_warn.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${CONFIGNODE_HOME}/logs/log-warn-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${CONFIGNODE_HOME}/logs/log-confignode-warn-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>10MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>512MB</totalSizeCap>
@@ -62,9 +62,9 @@
         </filter>
     </appender>
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILEINFO">
-        <file>${CONFIGNODE_HOME}/logs/log_info.log</file>
+        <file>${CONFIGNODE_HOME}/logs/log_confignode_info.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${CONFIGNODE_HOME}/logs/log-info-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${CONFIGNODE_HOME}/logs/log-confignode-info-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>50MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>5GB</totalSizeCap>
@@ -81,9 +81,9 @@
         </filter>
     </appender>
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILEDEBUG">
-        <file>${CONFIGNODE_HOME}/logs/log_debug.log</file>
+        <file>${CONFIGNODE_HOME}/logs/log_confignode_debug.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${CONFIGNODE_HOME}/logs/log-debug-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${CONFIGNODE_HOME}/logs/log-confignode-debug-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>50MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>5GB</totalSizeCap>
@@ -111,9 +111,9 @@
     </appender>
     <!-- a log appender that collect all log records whose level is greater than debug-->
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILEALL">
-        <file>${CONFIGNODE_HOME}/logs/log_all.log</file>
+        <file>${CONFIGNODE_HOME}/logs/log_confignode_all.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${CONFIGNODE_HOME}/logs/log-all-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${CONFIGNODE_HOME}/logs/log-confignode-all-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>50MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>5GB</totalSizeCap>
diff --git a/confignode/src/assembly/resources/sbin/remove-confignode.bat b/confignode/src/assembly/resources/sbin/remove-confignode.bat
index 0cc7808328..67a78e1114 100644
--- a/confignode/src/assembly/resources/sbin/remove-confignode.bat
+++ b/confignode/src/assembly/resources/sbin/remove-confignode.bat
@@ -87,7 +87,7 @@ if NOT DEFINED JAVA_HOME goto :err
 @REM -----------------------------------------------------------------------------
 @REM JVM Opts we'll use in legacy run or installation
 set JAVA_OPTS=-ea^
- -Dlogback.configurationFile="%CONFIGNODE_CONF%\logback.xml"^
+ -Dlogback.configurationFile="%CONFIGNODE_CONF%\logback-confignode.xml"^
  -DCONFIGNODE_HOME="%CONFIGNODE_HOME%"^
  -DCONFIGNODE_CONF="%CONFIGNODE_CONF%"^
  -Dsun.jnu.encoding=UTF-8^
diff --git a/confignode/src/assembly/resources/sbin/remove-confignode.sh b/confignode/src/assembly/resources/sbin/remove-confignode.sh
index 4dd8b8d046..6ba7712b5c 100644
--- a/confignode/src/assembly/resources/sbin/remove-confignode.sh
+++ b/confignode/src/assembly/resources/sbin/remove-confignode.sh
@@ -70,7 +70,7 @@ classname=org.apache.iotdb.confignode.service.ConfigNode
 
 launch_service() {
   class="$1"
-  confignode_parms="-Dlogback.configurationFile=${CONFIGNODE_CONF}/logback.xml"
+  confignode_parms="-Dlogback.configurationFile=${CONFIGNODE_CONF}/logback-confignode.xml"
   confignode_parms="$confignode_parms -DCONFIGNODE_HOME=${CONFIGNODE_HOME}"
   confignode_parms="$confignode_parms -DCONFIGNODE_CONF=${CONFIGNODE_CONF}"
   exec "$JAVA" $illegal_access_params $confignode_parms $CONFIGNODE_JMX_OPTS -cp "$CLASSPATH" "$class" $CONF_PARAMS
diff --git a/confignode/src/assembly/resources/sbin/start-confignode.bat b/confignode/src/assembly/resources/sbin/start-confignode.bat
index 918c0b997e..fff33a75b7 100644
--- a/confignode/src/assembly/resources/sbin/start-confignode.bat
+++ b/confignode/src/assembly/resources/sbin/start-confignode.bat
@@ -85,7 +85,7 @@ if NOT DEFINED JAVA_HOME goto :err
 @REM -----------------------------------------------------------------------------
 @REM JVM Opts we'll use in legacy run or installation
 set JAVA_OPTS=-ea^
- -Dlogback.configurationFile="%CONFIGNODE_CONF%\logback.xml"^
+ -Dlogback.configurationFile="%CONFIGNODE_CONF%\logback-confignode.xml"^
  -DCONFIGNODE_HOME="%CONFIGNODE_HOME%"^
  -DCONFIGNODE_CONF="%CONFIGNODE_CONF%"^
  -Dsun.jnu.encoding=UTF-8^
diff --git a/confignode/src/assembly/resources/sbin/start-confignode.sh b/confignode/src/assembly/resources/sbin/start-confignode.sh
index eec139dab4..85d0c61e3c 100644
--- a/confignode/src/assembly/resources/sbin/start-confignode.sh
+++ b/confignode/src/assembly/resources/sbin/start-confignode.sh
@@ -70,7 +70,7 @@ classname=org.apache.iotdb.confignode.service.ConfigNode
 
 launch_service() {
   class="$1"
-  confignode_parms="-Dlogback.configurationFile=${CONFIGNODE_CONF}/logback.xml"
+  confignode_parms="-Dlogback.configurationFile=${CONFIGNODE_CONF}/logback-confignode.xml"
   confignode_parms="$confignode_parms -DCONFIGNODE_HOME=${CONFIGNODE_HOME}"
   confignode_parms="$confignode_parms -DCONFIGNODE_CONF=${CONFIGNODE_CONF}"
   exec "$JAVA" $illegal_access_params $confignode_parms $CONFIGNODE_JMX_OPTS -cp "$CLASSPATH" "$class" $CONF_PARAMS
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConstant.java b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConstant.java
index 940de32e5a..376e1f0caa 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConstant.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConstant.java
@@ -18,6 +18,8 @@
  */
 package org.apache.iotdb.confignode.conf;
 
+import java.io.File;
+
 public class ConfigNodeConstant {
 
   public static final String GLOBAL_NAME = "IoTDB-ConfigNode";
@@ -31,7 +33,7 @@ public class ConfigNodeConstant {
   public static final String JMX_TYPE = "type";
   public static final String CONFIGNODE_JMX_PORT = "confignode.jmx.port";
 
-  public static final String DATA_DIR = "data";
+  public static final String DATA_DIR = "data" + File.separator + "confignode";
   public static final String CONF_DIR = "conf";
   public static final String CONSENSUS_FOLDER = "consensus";
   public static final String UDF_FOLDER = "udf";
diff --git a/distribution/src/assembly/all.xml b/distribution/src/assembly/all.xml
index e5909b2415..24ba86f0a7 100644
--- a/distribution/src/assembly/all.xml
+++ b/distribution/src/assembly/all.xml
@@ -47,19 +47,19 @@
     </dependencySets>
     <fileSets>
         <fileSet>
-            <outputDirectory>datanode/conf</outputDirectory>
+            <outputDirectory>conf</outputDirectory>
             <directory>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/conf</directory>
         </fileSet>
         <fileSet>
-            <outputDirectory>confignode/conf</outputDirectory>
+            <outputDirectory>conf</outputDirectory>
             <directory>${maven.multiModuleProjectDirectory}/confignode/src/assembly/resources/conf</directory>
         </fileSet>
         <fileSet>
-            <outputDirectory>confignode/conf</outputDirectory>
+            <outputDirectory>conf</outputDirectory>
             <directory>${maven.multiModuleProjectDirectory}/metrics/interface/src/main/assembly/resources/conf</directory>
         </fileSet>
         <fileSet>
-            <outputDirectory>datanode/conf</outputDirectory>
+            <outputDirectory>conf</outputDirectory>
             <directory>${maven.multiModuleProjectDirectory}/metrics/interface/src/main/assembly/resources/conf</directory>
         </fileSet>
         <fileSet>
@@ -67,12 +67,12 @@
             <directory>${maven.multiModuleProjectDirectory}/grafana-metrics-example</directory>
         </fileSet>
         <fileSet>
-            <outputDirectory>datanode/sbin</outputDirectory>
+            <outputDirectory>sbin</outputDirectory>
             <directory>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/sbin</directory>
             <fileMode>0755</fileMode>
         </fileSet>
         <fileSet>
-            <outputDirectory>confignode/sbin</outputDirectory>
+            <outputDirectory>sbin</outputDirectory>
             <directory>${maven.multiModuleProjectDirectory}/confignode/src/assembly/resources/sbin</directory>
             <fileMode>0755</fileMode>
         </fileSet>
@@ -82,7 +82,7 @@
             <fileMode>0755</fileMode>
         </fileSet>
         <fileSet>
-            <outputDirectory>datanode/sbin</outputDirectory>
+            <outputDirectory>sbin</outputDirectory>
             <directory>${maven.multiModuleProjectDirectory}/cli/src/assembly/resources/sbin</directory>
             <fileMode>0755</fileMode>
         </fileSet>
@@ -91,26 +91,26 @@
             <directory>${maven.multiModuleProjectDirectory}/cli/src/assembly/resources/tools</directory>
             <fileMode>0755</fileMode>
         </fileSet>
-        <fileSet>
-            <outputDirectory>datanode</outputDirectory>
-            <directory>${maven.multiModuleProjectDirectory}/distribution/target/apache-iotdb-${project.version}-all-bin/apache-iotdb-${project.version}-all-bin/datanode</directory>
-        </fileSet>
-        <fileSet>
-            <outputDirectory>confignode</outputDirectory>
-            <directory>${maven.multiModuleProjectDirectory}/distribution/target/apache-iotdb-${project.version}-all-bin/apache-iotdb-${project.version}-all-bin/confignode</directory>
-        </fileSet>
+        <!--        <fileSet>-->
+        <!--            <outputDirectory>datanode</outputDirectory>-->
+        <!--            <directory>${maven.multiModuleProjectDirectory}/distribution/target/apache-iotdb-${project.version}-all-bin/apache-iotdb-${project.version}-all-bin/datanode</directory>-->
+        <!--        </fileSet>-->
+        <!--        <fileSet>-->
+        <!--            <outputDirectory>confignode</outputDirectory>-->
+        <!--            <directory>${maven.multiModuleProjectDirectory}/distribution/target/apache-iotdb-${project.version}-all-bin/apache-iotdb-${project.version}-all-bin/confignode</directory>-->
+        <!--        </fileSet>-->
         <fileSet>
             <directory>${maven.multiModuleProjectDirectory}/docs</directory>
             <outputDirectory>docs</outputDirectory>
         </fileSet>
     </fileSets>
-    <files>
-        <file>
-            <source>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/conf/datanode-env.sh</source>
-            <destName>datanode/conf/datanode-env.sh</destName>
-            <fileMode>0755</fileMode>
-        </file>
-    </files>
+    <!--    <files>-->
+    <!--        <file>-->
+    <!--            <source>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/conf/datanode-env.sh</source>-->
+    <!--            <destName>datanode/conf/datanode-env.sh</destName>-->
+    <!--            <fileMode>0755</fileMode>-->
+    <!--        </file>-->
+    <!--    </files>-->
     <componentDescriptors>
         <componentDescriptor>common-files.xml</componentDescriptor>
     </componentDescriptors>
diff --git a/distribution/src/assembly/confignode.xml b/distribution/src/assembly/confignode.xml
index a3be401300..d37257c2f6 100644
--- a/distribution/src/assembly/confignode.xml
+++ b/distribution/src/assembly/confignode.xml
@@ -37,10 +37,6 @@
         </dependencySet>
     </dependencySets>
     <fileSets>
-        <fileSet>
-            <outputDirectory>conf</outputDirectory>
-            <directory>${maven.multiModuleProjectDirectory}/metrics/interface/src/main/assembly/resources/conf</directory>
-        </fileSet>
         <fileSet>
             <directory>${maven.multiModuleProjectDirectory}/confignode/src/assembly/resources/sbin</directory>
             <outputDirectory>sbin</outputDirectory>
@@ -56,6 +52,12 @@
         <!--      <fileMode>0755</fileMode>-->
         <!--    </fileSet>-->
     </fileSets>
+    <files>
+        <file>
+            <source>${maven.multiModuleProjectDirectory}/metrics/interface/src/main/assembly/resources/conf/iotdb-confignode-metric.yml</source>
+            <destName>conf/iotdb-confignode-metric.yml</destName>
+        </file>
+    </files>
     <componentDescriptors>
         <componentDescriptor>common-files.xml</componentDescriptor>
     </componentDescriptors>
diff --git a/distribution/src/assembly/datanode.xml b/distribution/src/assembly/datanode.xml
index 0b923afa83..d67bc5f1aa 100644
--- a/distribution/src/assembly/datanode.xml
+++ b/distribution/src/assembly/datanode.xml
@@ -42,10 +42,6 @@
         <!--            <outputDirectory>conf</outputDirectory>-->
         <!--            <directory>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/conf</directory>-->
         <!--        </fileSet>-->
-        <fileSet>
-            <outputDirectory>conf</outputDirectory>
-            <directory>${maven.multiModuleProjectDirectory}/metrics/interface/src/main/assembly/resources/conf</directory>
-        </fileSet>
         <fileSet>
             <outputDirectory>grafana-metrics-example</outputDirectory>
             <directory>${maven.multiModuleProjectDirectory}/grafana-metrics-example</directory>
@@ -81,6 +77,10 @@
             <destName>conf/datanode-env.sh</destName>
             <fileMode>0755</fileMode>
         </file>
+        <file>
+            <source>${maven.multiModuleProjectDirectory}/metrics/interface/src/main/assembly/resources/conf/iotdb-datanode-metric.yml</source>
+            <destName>conf/iotdb-datanode-metric.yml</destName>
+        </file>
     </files>
     <componentDescriptors>
         <componentDescriptor>common-files.xml</componentDescriptor>
diff --git a/integration-test/src/main/java/org/apache/iotdb/it/env/ConfigNodeWrapper.java b/integration-test/src/main/java/org/apache/iotdb/it/env/ConfigNodeWrapper.java
index 5b6053227d..f0c973e94a 100644
--- a/integration-test/src/main/java/org/apache/iotdb/it/env/ConfigNodeWrapper.java
+++ b/integration-test/src/main/java/org/apache/iotdb/it/env/ConfigNodeWrapper.java
@@ -86,7 +86,7 @@ public class ConfigNodeWrapper extends AbstractNodeWrapper {
     final String confDir = workDir + File.separator + "conf";
     params.addAll(
         Arrays.asList(
-            "-Dlogback.configurationFile=" + confDir + File.separator + "logback.xml",
+            "-Dlogback.configurationFile=" + confDir + File.separator + "logback-confignode.xml",
             "-DCONFIGNODE_HOME=" + workDir,
             "-DCONFIGNODE_CONF=" + confDir,
             "org.apache.iotdb.confignode.service.ConfigNode",
diff --git a/integration-test/src/main/java/org/apache/iotdb/it/env/DataNodeWrapper.java b/integration-test/src/main/java/org/apache/iotdb/it/env/DataNodeWrapper.java
index 56a27e24e1..27f34f275b 100644
--- a/integration-test/src/main/java/org/apache/iotdb/it/env/DataNodeWrapper.java
+++ b/integration-test/src/main/java/org/apache/iotdb/it/env/DataNodeWrapper.java
@@ -78,7 +78,7 @@ public class DataNodeWrapper extends AbstractNodeWrapper {
     final String confDir = workDir + File.separator + "conf";
     params.addAll(
         Arrays.asList(
-            "-Dlogback.configurationFile=" + confDir + File.separator + "logback.xml",
+            "-Dlogback.configurationFile=" + confDir + File.separator + "logback-datanode.xml",
             "-DIOTDB_HOME=" + workDir,
             "-DTSFILE_HOME=" + workDir,
             "-DIOTDB_CONF=" + confDir,
diff --git a/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.yml b/metrics/interface/src/main/assembly/resources/conf/iotdb-confignode-metric.yml
similarity index 100%
copy from metrics/interface/src/main/assembly/resources/conf/iotdb-metric.yml
copy to metrics/interface/src/main/assembly/resources/conf/iotdb-confignode-metric.yml
diff --git a/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.yml b/metrics/interface/src/main/assembly/resources/conf/iotdb-datanode-metric.yml
similarity index 100%
rename from metrics/interface/src/main/assembly/resources/conf/iotdb-metric.yml
rename to metrics/interface/src/main/assembly/resources/conf/iotdb-datanode-metric.yml
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfigDescriptor.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfigDescriptor.java
index d729f0d02e..f27b8fb0b1 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfigDescriptor.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfigDescriptor.java
@@ -25,9 +25,10 @@ import org.yaml.snakeyaml.Yaml;
 import org.yaml.snakeyaml.constructor.Constructor;
 
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 
 /** The utils class to load configure. Read from yaml file. */
 public class MetricConfigDescriptor {
@@ -50,9 +51,9 @@ public class MetricConfigDescriptor {
     Constructor constructor = new Constructor(MetricConfig.class);
     Yaml yaml = new Yaml(constructor);
     if (url != null) {
-      try (InputStream inputStream = new FileInputStream(url)) {
+      try (InputStream inputStream = Files.newInputStream(Paths.get(url))) {
         logger.info("Start to read config file {}", url);
-        metricConfig = (MetricConfig) yaml.load(inputStream);
+        metricConfig = yaml.load(inputStream);
       } catch (IOException e) {
         logger.warn(
             "Fail to find config file : {} because of {}, use default config.",
@@ -111,7 +112,22 @@ public class MetricConfigDescriptor {
         url += File.separator + "conf";
       }
     }
-    // second, try to get conf folder of datanode
+
+    if (url == null) {
+      logger.warn(
+          "Cannot find IOTDB_CONF environment variable when loading "
+              + "config file {}, use default configuration",
+          MetricConstant.DATANODE_CONFIG_NAME);
+    } else {
+      url += (File.separatorChar + MetricConstant.DATANODE_CONFIG_NAME);
+      if (new File(url).exists()) {
+        return url;
+      } else {
+        url = null;
+      }
+    }
+
+    // second, try to get conf folder of confignode
     if (url == null) {
       url = System.getProperty(MetricConstant.CONFIGNODE_CONF, null);
       if (url == null) {
@@ -122,15 +138,16 @@ public class MetricConfigDescriptor {
         }
       }
     }
+
     // finally, return null when not find
     if (url == null) {
       logger.warn(
-          "Cannot find IOTDB_CONF and CONFIGNODE_CONF environment variable when loading "
+          "Cannot find CONFIGNODE_CONF environment variable when loading "
               + "config file {}, use default configuration",
-          MetricConstant.CONFIG_NAME);
+          MetricConstant.CONFIG_NODE_CONFIG_NAME);
       return null;
     } else {
-      url += (File.separatorChar + MetricConstant.CONFIG_NAME);
+      url += (File.separatorChar + MetricConstant.CONFIG_NODE_CONFIG_NAME);
     }
 
     return url;
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConstant.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConstant.java
index 8e5a24b56b..8398d92385 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConstant.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConstant.java
@@ -31,5 +31,7 @@ public class MetricConstant {
 
   static final String CONFIGNODE_HOME = "CONFIGNODE_HOME";
 
-  static final String CONFIG_NAME = "iotdb-metric.yml";
+  static final String DATANODE_CONFIG_NAME = "iotdb-datanode-metric.yml";
+
+  static final String CONFIG_NODE_CONFIG_NAME = "iotdb-confignode-metric.yml";
 }
diff --git a/node-commons/src/main/java/org/apache/iotdb/commons/conf/IoTDBConstant.java b/node-commons/src/main/java/org/apache/iotdb/commons/conf/IoTDBConstant.java
index a135d84907..2139843808 100644
--- a/node-commons/src/main/java/org/apache/iotdb/commons/conf/IoTDBConstant.java
+++ b/node-commons/src/main/java/org/apache/iotdb/commons/conf/IoTDBConstant.java
@@ -18,6 +18,7 @@
  */
 package org.apache.iotdb.commons.conf;
 
+import java.io.File;
 import java.util.HashSet;
 import java.util.Properties;
 import java.util.Set;
@@ -199,7 +200,7 @@ public class IoTDBConstant {
   public static final String SDT_COMP_MAX_TIME = "compmaxtime";
 
   // default base dir, stores all IoTDB runtime files
-  public static final String DEFAULT_BASE_DIR = "data";
+  public static final String DEFAULT_BASE_DIR = "data" + File.separator + "datanode";
 
   // data folder name
   public static final String DATA_FOLDER_NAME = "data";
diff --git a/server/src/assembly/resources/conf/iotdb-datanode.properties b/server/src/assembly/resources/conf/iotdb-datanode.properties
index b43262ad3f..70a8436162 100644
--- a/server/src/assembly/resources/conf/iotdb-datanode.properties
+++ b/server/src/assembly/resources/conf/iotdb-datanode.properties
@@ -125,17 +125,17 @@ target_config_nodes=127.0.0.1:22277
 # wal_mode=ASYNC
 
 # wal dirs
-# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data).
+# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/datanode).
 # If it is absolute, system will save the data in the exact location it points to.
 # If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
 # If there are more than one directory, please separate them by commas ",".
 # Note: If wal_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
 # For windows platform
 # If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
-# wal_dirs=data\\wal
+# wal_dirs=data\\datanode\\wal
 # For Linux platform
 # If its prefix is "/", then the path is absolute. Otherwise, it is relative.
-# wal_dirs=data/wal
+# wal_dirs=data/datanode/wal
 
 # Max number of wal nodes, each node corresponds to one wal directory
 # The default value 0 means twice the number of wal dirs.
@@ -204,29 +204,29 @@ target_config_nodes=127.0.0.1:22277
 ####################
 
 # system dir
-# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/system).
+# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/datanode/system).
 # If it is absolute, system will save the data in exact location it points to.
 # If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
 # For windows platform
 # If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
-# system_dir=data\\system
+# system_dir=data\\datanode\\system
 # For Linux platform
 # If its prefix is "/", then the path is absolute. Otherwise, it is relative.
-# system_dir=data/system
+# system_dir=data/datanode/system
 
 
 # data dirs
-# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/data).
+# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/datanode/data).
 # If it is absolute, system will save the data in exact location it points to.
 # If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
 # If there are more than one directory, please separate them by commas ",".
 # Note: If data_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
 # For windows platform
 # If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
-# data_dirs=data\\data
+# data_dirs=data\\datanode\\data
 # For Linux platform
 # If its prefix is "/", then the path is absolute. Otherwise, it is relative.
-# data_dirs=data/data
+# data_dirs=data/datanode/data
 
 
 # multi_dir_strategy
@@ -243,16 +243,16 @@ target_config_nodes=127.0.0.1:22277
 # multi_dir_strategy=MaxDiskUsableSpaceFirstStrategy
 
 # consensus dir
-# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data).
+# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/datanode).
 # If it is absolute, system will save the data in the exact location it points to.
 # If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
 # Note: If consensus_dir is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
 # For windows platform
 # If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
-# consensus_dir=data\\consensus
+# consensus_dir=data\\datanode\\consensus
 # For Linux platform
 # If its prefix is "/", then the path is absolute. Otherwise, it is relative.
-# consensus_dir=data/consensus
+# consensus_dir=data/datanode/consensus
 
 
 # TSFile storage file system. Currently, TsFiles are supported to be stored in LOCAL file system or HDFS.
@@ -721,10 +721,10 @@ timestamp_precision=ms
 
 # Uncomment following fields to configure the tracing root directory.
 # For Window platform, the index is as follows:
-# tracing_dir=data\\tracing
+# tracing_dir=datanode\\tracing
 # For Linux platform
 # If its prefix is "/", then the path is absolute. Otherwise, it is relative.
-# tracing_dir=data/tracing
+# tracing_dir=datanode/tracing
 
 ####################
 ### Configurations for watermark module
@@ -1057,7 +1057,7 @@ timestamp_precision=ms
 # index_root_dir=data\\index
 # For Linux platform
 # If its prefix is "/", then the path is absolute. Otherwise, it is relative.
-# index_root_dir=data/index
+# index_root_dir=datanode/index
 
 # Is index enable
 # Datatype: boolean
diff --git a/server/src/assembly/resources/conf/logback.xml b/server/src/assembly/resources/conf/logback-datanode.xml
similarity index 84%
rename from server/src/assembly/resources/conf/logback.xml
rename to server/src/assembly/resources/conf/logback-datanode.xml
index 286e99cc38..4f7373e1c2 100644
--- a/server/src/assembly/resources/conf/logback.xml
+++ b/server/src/assembly/resources/conf/logback-datanode.xml
@@ -24,9 +24,9 @@
     <!-- prevent logback from outputting its own status at the start of every log -->
     <statusListener class="ch.qos.logback.core.status.NopStatusListener"/>
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILEERROR">
-        <file>${IOTDB_HOME}/logs/log_error.log</file>
+        <file>${IOTDB_HOME}/logs/log_datanode_error.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${IOTDB_HOME}/logs/log-error-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${IOTDB_HOME}/logs/log-datanode-error-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>10MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>512MB</totalSizeCap>
@@ -43,9 +43,9 @@
         </filter>
     </appender>
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILEWARN">
-        <file>${IOTDB_HOME}/logs/log_warn.log</file>
+        <file>${IOTDB_HOME}/logs/log_datanode_warn.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${IOTDB_HOME}/logs/log-warn-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${IOTDB_HOME}/logs/log-datanode-warn-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>10MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>512MB</totalSizeCap>
@@ -62,9 +62,9 @@
         </filter>
     </appender>
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILEINFO">
-        <file>${IOTDB_HOME}/logs/log_info.log</file>
+        <file>${IOTDB_HOME}/logs/log_datanode_info.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${IOTDB_HOME}/logs/log-info-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${IOTDB_HOME}/logs/log-datanode-info-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>50MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>5GB</totalSizeCap>
@@ -81,9 +81,9 @@
         </filter>
     </appender>
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILEDEBUG">
-        <file>${IOTDB_HOME}/logs/log_debug.log</file>
+        <file>${IOTDB_HOME}/logs/log_datanode_debug.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${IOTDB_HOME}/logs/log-debug-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${IOTDB_HOME}/logs/log-datanode-debug-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>50MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>5GB</totalSizeCap>
@@ -100,9 +100,9 @@
         </filter>
     </appender>
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILETRACE">
-        <file>${IOTDB_HOME}/logs/log_trace.log</file>
+        <file>${IOTDB_HOME}/logs/log_datanode_trace.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${IOTDB_HOME}/logs/log-trace-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${IOTDB_HOME}/logs/log-datanode-trace-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>50MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>5GB</totalSizeCap>
@@ -130,9 +130,9 @@
     </appender>
     <!-- a log appender that collect all log records whose level is greater than debug-->
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILEALL">
-        <file>${IOTDB_HOME}/logs/log_all.log</file>
+        <file>${IOTDB_HOME}/logs/log_datanode_all.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${IOTDB_HOME}/logs/log-all-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${IOTDB_HOME}/logs/log-datanode-all-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>50MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>5GB</totalSizeCap>
@@ -147,9 +147,9 @@
         </filter>
     </appender>
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILE_COST_MEASURE">
-        <file>${IOTDB_HOME}/logs/log_measure.log</file>
+        <file>${IOTDB_HOME}/logs/log_datanode_measure.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${IOTDB_HOME}/logs/log-measure-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${IOTDB_HOME}/logs/log-datanode-measure-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>10MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>512MB</totalSizeCap>
@@ -164,9 +164,9 @@
         </filter>
     </appender>
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="SYNC">
-        <file>${IOTDB_HOME}/logs/log_sync.log</file>
+        <file>${IOTDB_HOME}/logs/log_datanode_sync.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${IOTDB_HOME}/logs/log-sync-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${IOTDB_HOME}/logs/log-datanode-sync-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>10MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>512MB</totalSizeCap>
@@ -181,9 +181,9 @@
         </filter>
     </appender>
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="AUDIT">
-        <file>${IOTDB_HOME}/logs/log_audit.log</file>
+        <file>${IOTDB_HOME}/logs/log_datanode_audit.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${IOTDB_HOME}/logs/log-audit-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${IOTDB_HOME}/logs/log-datanode-audit-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>10MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>512MB</totalSizeCap>
@@ -198,9 +198,9 @@
         </filter>
     </appender>
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="QUERY_DEBUG">
-        <file>${IOTDB_HOME}/logs/log_query_debug.log</file>
+        <file>${IOTDB_HOME}/logs/log_datanode_query_debug.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${IOTDB_HOME}/logs/log-query-debug-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${IOTDB_HOME}/logs/log-datanode-query-debug-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>10MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>512MB</totalSizeCap>
@@ -215,9 +215,9 @@
         </filter>
     </appender>
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="SLOW_SQL">
-        <file>${IOTDB_HOME}/logs/log_slow_sql.log</file>
+        <file>${IOTDB_HOME}/logs/log_datanode_slow_sql.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${IOTDB_HOME}/logs/log-slow-sql-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${IOTDB_HOME}/logs/log-datanode-slow-sql-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>10MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>512MB</totalSizeCap>
@@ -232,9 +232,9 @@
         </filter>
     </appender>
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="QUERY_FREQUENCY">
-        <file>${IOTDB_HOME}/logs/log_query_frequency.log</file>
+        <file>${IOTDB_HOME}/logs/log_datanode_query_frequency.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${IOTDB_HOME}/logs/log-query-frequency-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${IOTDB_HOME}/logs/log-datanode-query-frequency-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>10MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>512MB</totalSizeCap>
@@ -249,9 +249,9 @@
         </filter>
     </appender>
     <appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="COMPACTION">
-        <file>${IOTDB_HOME}/logs/log_compaction.log</file>
+        <file>${IOTDB_HOME}/logs/log_datanode_compaction.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-            <fileNamePattern>${IOTDB_HOME}/logs/log-compaction-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
+            <fileNamePattern>${IOTDB_HOME}/logs/log-datanode-compaction-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
             <maxFileSize>10MB</maxFileSize>
             <maxHistory>168</maxHistory>
             <totalSizeCap>512MB</totalSizeCap>
diff --git a/server/src/assembly/resources/sbin/remove-datanode.bat b/server/src/assembly/resources/sbin/remove-datanode.bat
index d157347756..083624b0fd 100644
--- a/server/src/assembly/resources/sbin/remove-datanode.bat
+++ b/server/src/assembly/resources/sbin/remove-datanode.bat
@@ -70,7 +70,7 @@ if NOT DEFINED JAVA_HOME goto :err
 @REM -----------------------------------------------------------------------------
 @REM JVM Opts we'll use in legacy run or installation
 set JAVA_OPTS=-ea^
- -Dlogback.configurationFile="%IOTDB_CONF%\logback.xml"^
+ -Dlogback.configurationFile="%IOTDB_CONF%\logback-datanode.xml"^
  -DIOTDB_HOME="%IOTDB_HOME%"^
  -DTSFILE_HOME="%IOTDB_HOME%"^
  -DIOTDB_CONF="%IOTDB_CONF%"
diff --git a/server/src/assembly/resources/sbin/remove-datanode.sh b/server/src/assembly/resources/sbin/remove-datanode.sh
index 8804edb173..749a8da0e3 100644
--- a/server/src/assembly/resources/sbin/remove-datanode.sh
+++ b/server/src/assembly/resources/sbin/remove-datanode.sh
@@ -61,7 +61,7 @@ classname=org.apache.iotdb.db.service.DataNode
 launch_service()
 {
 	class="$1"
-	iotdb_parms="-Dlogback.configurationFile=${IOTDB_CONF}/logback.xml"
+	iotdb_parms="-Dlogback.configurationFile=${IOTDB_CONF}/logback-datanode.xml"
 	iotdb_parms="$iotdb_parms -DIOTDB_HOME=${IOTDB_HOME}"
 	iotdb_parms="$iotdb_parms -DTSFILE_HOME=${IOTDB_HOME}"
 	iotdb_parms="$iotdb_parms -DIOTDB_CONF=${IOTDB_CONF}"
diff --git a/server/src/assembly/resources/sbin/start-datanode.bat b/server/src/assembly/resources/sbin/start-datanode.bat
index 25f00f337d..58654e7957 100755
--- a/server/src/assembly/resources/sbin/start-datanode.bat
+++ b/server/src/assembly/resources/sbin/start-datanode.bat
@@ -97,7 +97,7 @@ if NOT DEFINED JAVA_HOME goto :err
 @REM -----------------------------------------------------------------------------
 @REM JVM Opts we'll use in legacy run or installation
 set JAVA_OPTS=-ea^
- -Dlogback.configurationFile="%IOTDB_CONF%\logback.xml"^
+ -Dlogback.configurationFile="%IOTDB_CONF%\logback-datanode.xml"^
  -DIOTDB_HOME="%IOTDB_HOME%"^
  -DTSFILE_HOME="%IOTDB_HOME%"^
  -DTSFILE_CONF="%IOTDB_CONF%"^
diff --git a/server/src/assembly/resources/sbin/start-datanode.sh b/server/src/assembly/resources/sbin/start-datanode.sh
index 327f7af44a..4cc07b7c71 100755
--- a/server/src/assembly/resources/sbin/start-datanode.sh
+++ b/server/src/assembly/resources/sbin/start-datanode.sh
@@ -87,7 +87,7 @@ classname=org.apache.iotdb.db.service.DataNode
 launch_service()
 {
 	class="$1"
-	iotdb_parms="-Dlogback.configurationFile=${IOTDB_CONF}/logback.xml"
+	iotdb_parms="-Dlogback.configurationFile=${IOTDB_CONF}/logback-datanode.xml"
 	iotdb_parms="$iotdb_parms -DIOTDB_HOME=${IOTDB_HOME}"
 	iotdb_parms="$iotdb_parms -DTSFILE_HOME=${IOTDB_HOME}"
 	iotdb_parms="$iotdb_parms -DIOTDB_CONF=${IOTDB_CONF}"
diff --git a/server/src/assembly/resources/sbin/start-new-server.bat b/server/src/assembly/resources/sbin/start-new-server.bat
index 759f5dd1e8..f11e22647c 100644
--- a/server/src/assembly/resources/sbin/start-new-server.bat
+++ b/server/src/assembly/resources/sbin/start-new-server.bat
@@ -86,7 +86,7 @@ if NOT DEFINED JAVA_HOME goto :err
 @REM -----------------------------------------------------------------------------
 @REM JVM Opts we'll use in legacy run or installation
 set JAVA_OPTS=-ea^
- -Dlogback.configurationFile="%IOTDB_CONF%\logback.xml"^
+ -Dlogback.configurationFile="%IOTDB_CONF%\logback-datanode.xml"^
  -DIOTDB_HOME="%IOTDB_HOME%"^
  -DTSFILE_HOME="%IOTDB_HOME%"^
  -DTSFILE_CONF="%IOTDB_CONF%"^
diff --git a/server/src/assembly/resources/sbin/start-new-server.sh b/server/src/assembly/resources/sbin/start-new-server.sh
index 6a8557e308..ad7ced776d 100644
--- a/server/src/assembly/resources/sbin/start-new-server.sh
+++ b/server/src/assembly/resources/sbin/start-new-server.sh
@@ -72,7 +72,7 @@ classname=org.apache.iotdb.db.service.NewIoTDB
 launch_service()
 {
 	class="$1"
-	iotdb_parms="-Dlogback.configurationFile=${IOTDB_CONF}/logback.xml"
+	iotdb_parms="-Dlogback.configurationFile=${IOTDB_CONF}/logback-datanode.xml"
 	iotdb_parms="$iotdb_parms -DIOTDB_HOME=${IOTDB_HOME}"
 	iotdb_parms="$iotdb_parms -DTSFILE_HOME=${IOTDB_HOME}"
 	iotdb_parms="$iotdb_parms -DIOTDB_CONF=${IOTDB_CONF}"
diff --git a/server/src/assembly/resources/sbin/start-server.bat b/server/src/assembly/resources/sbin/start-server.bat
index 6fdfba0edb..8b6dea7896 100755
--- a/server/src/assembly/resources/sbin/start-server.bat
+++ b/server/src/assembly/resources/sbin/start-server.bat
@@ -86,7 +86,7 @@ if NOT DEFINED JAVA_HOME goto :err
 @REM -----------------------------------------------------------------------------
 @REM JVM Opts we'll use in legacy run or installation
 set JAVA_OPTS=-ea^
- -Dlogback.configurationFile="%IOTDB_CONF%\logback.xml"^
+ -Dlogback.configurationFile="%IOTDB_CONF%\logback-datanode.xml"^
  -DIOTDB_HOME="%IOTDB_HOME%"^
  -DTSFILE_HOME="%IOTDB_HOME%"^
  -DTSFILE_CONF="%IOTDB_CONF%"^
diff --git a/server/src/assembly/resources/sbin/start-server.sh b/server/src/assembly/resources/sbin/start-server.sh
index bf1eb44ce5..a353fa1e4b 100755
--- a/server/src/assembly/resources/sbin/start-server.sh
+++ b/server/src/assembly/resources/sbin/start-server.sh
@@ -72,7 +72,7 @@ classname=org.apache.iotdb.db.service.IoTDB
 launch_service()
 {
 	class="$1"
-	iotdb_parms="-Dlogback.configurationFile=${IOTDB_CONF}/logback.xml"
+	iotdb_parms="-Dlogback.configurationFile=${IOTDB_CONF}/logback-datanode.xml"
 	iotdb_parms="$iotdb_parms -DIOTDB_HOME=${IOTDB_HOME}"
 	iotdb_parms="$iotdb_parms -DTSFILE_HOME=${IOTDB_HOME}"
 	iotdb_parms="$iotdb_parms -DIOTDB_CONF=${IOTDB_CONF}"
diff --git a/server/src/assembly/server.xml b/server/src/assembly/server.xml
index eb8e5bc628..874c14f285 100644
--- a/server/src/assembly/server.xml
+++ b/server/src/assembly/server.xml
@@ -36,9 +36,11 @@
             <directory>src/assembly/resources</directory>
             <outputDirectory>${file.separator}</outputDirectory>
         </fileSet>
-        <fileSet>
-            <directory>${maven.multiModuleProjectDirectory}/metrics/interface/src/main/assembly/resources/conf</directory>
-            <outputDirectory>conf</outputDirectory>
-        </fileSet>
     </fileSets>
+    <files>
+        <file>
+            <source>${maven.multiModuleProjectDirectory}/metrics/interface/src/main/assembly/resources/conf/iotdb-datanode-metric.yml</source>
+            <destName>conf/iotdb-datanode-metric.yml</destName>
+        </file>
+    </files>
 </assembly>