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

ibessonov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new ca6afeaf637 IGNITE-28474 Use segstore log storage if property is 
enabled (#7969)
ca6afeaf637 is described below

commit ca6afeaf637b8602187a7963a54bed1ade035b7e
Author: Phillippko <[email protected]>
AuthorDate: Tue Apr 14 15:35:04 2026 +0400

    IGNITE-28474 Use segstore log storage if property is enabled (#7969)
---
 .../management/raft/ItCmgRaftServiceTest.java      |   7 +-
 .../management/BaseItClusterManagementTest.java    |   7 +
 .../internal/cluster/management/MockNode.java      |  10 +-
 .../internal/lang/IgniteSystemProperties.java      |   8 ++
 .../rebalance/ItRebalanceDistributedTest.java      |  10 +-
 .../impl/ItIdempotentCommandCacheTest.java         |  10 +-
 .../impl/ItMetaStorageManagerImplTest.java         |   9 +-
 .../ItMetaStorageMultipleNodesAbstractTest.java    |  10 +-
 .../metastorage/impl/ItMetaStorageServiceTest.java |  11 +-
 .../metastorage/impl/ItMetaStorageWatchTest.java   |  13 +-
 .../server/raft/ItMetaStorageRaftGroupTest.java    |  13 +-
 .../service/ItAbstractListenerSnapshotTest.java    |   7 +-
 .../replicator/ItAbstractColocationTest.java       |   5 +
 .../partition/replicator/fixtures/Node.java        |   9 +-
 .../ItZonePartitionRaftListenerRecoveryTest.java   |   7 +-
 .../MultiActorPlacementDriverTest.java             |  10 +-
 .../PlacementDriverManagerTest.java                |  10 +-
 .../LogStorageExtensionConfigurationSchema.java    |  31 ++++
 .../configuration/RaftConfigurationModule.java     |   7 +-
 .../ignite/internal/raft/ItLearnersTest.java       |   7 +-
 .../apache/ignite/internal/raft/ItLozaTest.java    |  13 +-
 .../internal/raft/ItRaftGroupServiceTest.java      |   7 +-
 .../ignite/raft/server/ItJraftHlcServerTest.java   |   3 +-
 .../raft/server/ItJraftServerLogPathTest.java      |   3 +-
 .../raft/server/ItSimpleCounterServerTest.java     |   3 +-
 .../ignite/raft/server/JraftAbstractTest.java      |   3 +-
 .../ignite/raft/server/RaftServerAbstractTest.java |   4 +
 .../raft/storage/segstore/SegmentFile.java         |   3 +-
 .../storage/segstore/SegmentLogStorageManager.java |  67 ++++++---
 .../storage/segstore/SegmentLogStorageOptions.java |  53 +++++++
 .../raft/util/SharedLogStorageManagerUtils.java    |  61 +++++---
 .../org/apache/ignite/internal/raft/LozaTest.java  |   7 +-
 .../PhysicalTopologyAwareRaftGroupServiceTest.java |   7 +-
 .../SegmentLogStorageManagerConvertNodeIdTest.java | 158 +++++++++++++++++++++
 .../ItPlacementDriverReplicaSideTest.java          |   7 +-
 .../AbstractTopologyAwareGroupServiceTest.java     |   7 +-
 .../ItTruncateRaftLogAndRestartNodesTest.java      |  11 +-
 .../ItDistributedConfigurationPropertiesTest.java  |  10 +-
 .../ItDistributedConfigurationStorageTest.java     |  10 +-
 .../runner/app/ItIgniteNodeRestartTest.java        |  13 +-
 .../org/apache/ignite/internal/app/IgniteImpl.java |  30 +++-
 .../metrics/logstorage/LogStorageMetricsTest.java  |  17 ++-
 .../apache/ignite/distributed/ItLockTableTest.java |   5 +
 .../ItTxDistributedCleanupRecoveryTest.java        |   8 ++
 ...xDistributedTestSingleNodeNoCleanupMessage.java |   5 +
 .../ignite/distributed/ItTxStateLocalMapTest.java  |   5 +
 .../ReplicasSafeTimePropagationTest.java           |  16 ++-
 .../apache/ignite/distributed/ItTxTestCluster.java |  17 ++-
 .../internal/table/TxInfrastructureTest.java       |   5 +
 49 files changed, 656 insertions(+), 103 deletions(-)

diff --git 
a/modules/cluster-management/src/integrationTest/java/org/apache/ignite/internal/cluster/management/raft/ItCmgRaftServiceTest.java
 
b/modules/cluster-management/src/integrationTest/java/org/apache/ignite/internal/cluster/management/raft/ItCmgRaftServiceTest.java
index af715853343..2440cd7a7a9 100644
--- 
a/modules/cluster-management/src/integrationTest/java/org/apache/ignite/internal/cluster/management/raft/ItCmgRaftServiceTest.java
+++ 
b/modules/cluster-management/src/integrationTest/java/org/apache/ignite/internal/cluster/management/raft/ItCmgRaftServiceTest.java
@@ -73,6 +73,7 @@ import org.apache.ignite.internal.raft.RaftManager;
 import org.apache.ignite.internal.raft.RaftNodeId;
 import org.apache.ignite.internal.raft.StoppingExceptionFactories;
 import org.apache.ignite.internal.raft.TestLozaFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.service.TimeAwareRaftGroupService;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -101,6 +102,9 @@ public class ItCmgRaftServiceTest extends 
BaseIgniteAbstractTest {
     @InjectConfiguration
     private static SystemLocalConfiguration systemLocalConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     private final CmgMessagesFactory msgFactory = new CmgMessagesFactory();
 
     private class Node {
@@ -128,7 +132,8 @@ public class ItCmgRaftServiceTest extends 
BaseIgniteAbstractTest {
 
             partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
                     clusterService.staticLocalNode().name(),
-                    workingDir.raftLogPath()
+                    workingDir.raftLogPath(),
+                    logStorageConfiguration
             );
             this.eventsClientListener = new RaftGroupEventsClientListener();
             this.failureManager = new NoOpFailureManager();
diff --git 
a/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/BaseItClusterManagementTest.java
 
b/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/BaseItClusterManagementTest.java
index 37869d33775..3997b6e2e7a 100644
--- 
a/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/BaseItClusterManagementTest.java
+++ 
b/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/BaseItClusterManagementTest.java
@@ -33,6 +33,7 @@ import 
org.apache.ignite.internal.configuration.testframework.InjectConfiguratio
 import org.apache.ignite.internal.network.NodeFinder;
 import org.apache.ignite.internal.network.StaticNodeFinder;
 import org.apache.ignite.internal.raft.RaftGroupConfiguration;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.storage.configurations.StorageConfiguration;
 import org.apache.ignite.internal.testframework.IgniteAbstractTest;
@@ -60,6 +61,9 @@ public abstract class BaseItClusterManagementTest extends 
IgniteAbstractTest {
     @InjectConfiguration
     private static StorageConfiguration storageConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     private TestInfo testInfo;
 
     @BeforeEach
@@ -83,6 +87,7 @@ public abstract class BaseItClusterManagementTest extends 
IgniteAbstractTest {
                         workDir,
                         raftConfiguration,
                         systemLocalConfiguration,
+                        logStorageConfiguration,
                         userNodeAttributes,
                         storageConfiguration,
                         config -> onConfigurationCommittedListener.accept(i, 
config)
@@ -110,6 +115,7 @@ public abstract class BaseItClusterManagementTest extends 
IgniteAbstractTest {
                 workDir,
                 raftConfiguration,
                 systemLocalConfiguration,
+                logStorageConfiguration,
                 userNodeAttributes,
                 storageConfiguration,
                 onConfigurationCommittedListener
@@ -129,6 +135,7 @@ public abstract class BaseItClusterManagementTest extends 
IgniteAbstractTest {
                 workDir,
                 raftConfiguration,
                 systemLocalConfiguration,
+                logStorageConfiguration,
                 userNodeAttributes,
                 attributesProvider,
                 storageConfiguration,
diff --git 
a/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/MockNode.java
 
b/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/MockNode.java
index c26fa7937b3..084cebc23ab 100644
--- 
a/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/MockNode.java
+++ 
b/modules/cluster-management/src/testFixtures/java/org/apache/ignite/internal/cluster/management/MockNode.java
@@ -55,6 +55,7 @@ import 
org.apache.ignite.internal.network.utils.ClusterServiceTestUtils;
 import org.apache.ignite.internal.raft.RaftGroupConfiguration;
 import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
 import org.apache.ignite.internal.raft.TestLozaFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
 import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
@@ -91,6 +92,7 @@ public class MockNode {
             Path workDir,
             RaftConfiguration raftConfiguration,
             SystemLocalConfiguration systemLocalConfiguration,
+            LogStorageConfiguration logStorageConfiguration,
             NodeAttributesConfiguration nodeAttributes,
             StorageConfiguration storageProfilesConfiguration,
             Consumer<RaftGroupConfiguration> onConfigurationCommittedListener
@@ -102,6 +104,7 @@ public class MockNode {
                 workDir,
                 raftConfiguration,
                 systemLocalConfiguration,
+                logStorageConfiguration,
                 nodeAttributes,
                 () -> Map.of(COLOCATION_FEATURE_FLAG, Boolean.TRUE.toString()),
                 storageProfilesConfiguration,
@@ -119,6 +122,7 @@ public class MockNode {
             Path workDir,
             RaftConfiguration raftConfiguration,
             SystemLocalConfiguration systemLocalConfiguration,
+            LogStorageConfiguration logStorageConfiguration,
             NodeAttributesConfiguration nodeAttributes,
             NodeAttributesProvider attributesProvider,
             StorageConfiguration storageProfilesConfiguration,
@@ -143,7 +147,8 @@ public class MockNode {
 
         LogStorageManager partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(
                 clusterService.staticLocalNode().name(),
-                this.workDir.resolve("partitions/log")
+                this.workDir.resolve("partitions/log"),
+                logStorageConfiguration
         );
 
         var eventsClientListener = new RaftGroupEventsClientListener();
@@ -164,7 +169,8 @@ public class MockNode {
         LogStorageManager cmgLogStorageManager =
                 SharedLogStorageManagerUtils.create(
                         clusterService.staticLocalNode().name(),
-                        this.workDir.resolve("cmg/log")
+                        this.workDir.resolve("cmg/log"),
+                        logStorageConfiguration
                 );
 
         RaftGroupOptionsConfigurer cmgRaftConfigurer =
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/lang/IgniteSystemProperties.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/lang/IgniteSystemProperties.java
index 55705791c98..ce4bc0b23ed 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/lang/IgniteSystemProperties.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/lang/IgniteSystemProperties.java
@@ -43,6 +43,9 @@ public final class IgniteSystemProperties {
     /** Skip storage update in a benchmark. */
     public static final String IGNITE_SKIP_STORAGE_UPDATE_IN_BENCHMARK = 
"IGNITE_SKIP_STORAGE_UPDATE_IN_BENCHMARK";
 
+    /** Use segment storage for Raft log. */
+    public static final String SEGSTORE_ENABLED_PROPERTY = "SEGSTORE_ENABLED";
+
     // TODO https://issues.apache.org/jira/browse/IGNITE-22522 Remove this 
feature flag.
     /**
      * Enables zone based replication (aka colocation) feature.
@@ -73,6 +76,11 @@ public final class IgniteSystemProperties {
         return getBoolean(COLOCATION_FEATURE_FLAG, true);
     }
 
+    /** Feature flag for segment log storage. */
+    public static boolean segmentLogStorageEnabled() {
+        return getBoolean(SEGSTORE_ENABLED_PROPERTY, false);
+    }
+
     /**
      * Gets either system property or environment variable with given name and 
convert to enum of given class.
      *
diff --git 
a/modules/distribution-zones/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
 
b/modules/distribution-zones/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
index 0d76e027685..8696887c30e 100644
--- 
a/modules/distribution-zones/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
+++ 
b/modules/distribution-zones/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
@@ -193,6 +193,7 @@ import org.apache.ignite.internal.raft.PeersAndLearners;
 import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
 import org.apache.ignite.internal.raft.RaftNodeId;
 import 
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.server.impl.JraftServerImpl;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -329,6 +330,9 @@ public class ItRebalanceDistributedTest extends 
BaseIgniteAbstractTest {
     @InjectConfiguration
     private ReplicationConfiguration replicationConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     @Target(ElementType.METHOD)
     @Retention(RetentionPolicy.RUNTIME)
     private @interface UseTestTxStateStorage {
@@ -1273,7 +1277,7 @@ public class ItRebalanceDistributedTest extends 
BaseIgniteAbstractTest {
 
             String nodeName = clusterService.staticLocalNode().name();
 
-            logStorageManager = SharedLogStorageManagerUtils.create(nodeName, 
partitionsBasePath.raftLogPath());
+            logStorageManager = SharedLogStorageManagerUtils.create(nodeName, 
partitionsBasePath.raftLogPath(), logStorageConfiguration);
 
             LogSyncer partitionsLogSyncer = logStorageManager.logSyncer();
 
@@ -1303,7 +1307,7 @@ public class ItRebalanceDistributedTest extends 
BaseIgniteAbstractTest {
 
             ComponentWorkingDir cmgWorkDir = cmgPath(systemConfiguration, dir);
 
-            cmgLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath());
+            cmgLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath(), 
logStorageConfiguration);
 
             RaftGroupOptionsConfigurer cmgRaftConfigurer =
                     
RaftGroupOptionsConfigHelper.configureProperties(cmgLogStorageManager, 
cmgWorkDir.metaPath());
@@ -1347,7 +1351,7 @@ public class ItRebalanceDistributedTest extends 
BaseIgniteAbstractTest {
 
             ComponentWorkingDir metastorageWorkDir = 
metastoragePath(systemConfiguration, dir);
 
-            msLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath());
+            msLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath(), 
logStorageConfiguration);
 
             RaftGroupOptionsConfigurer msRaftConfigurer =
                     
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager, 
metastorageWorkDir.metaPath());
diff --git 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItIdempotentCommandCacheTest.java
 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItIdempotentCommandCacheTest.java
index d6573930d1a..976ad2c0159 100644
--- 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItIdempotentCommandCacheTest.java
+++ 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItIdempotentCommandCacheTest.java
@@ -106,6 +106,7 @@ import org.apache.ignite.internal.raft.Peer;
 import org.apache.ignite.internal.raft.PeersAndLearners;
 import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
 import org.apache.ignite.internal.raft.TestLozaFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.service.LeaderWithTerm;
 import org.apache.ignite.internal.raft.service.RaftGroupService;
@@ -157,6 +158,9 @@ class ItIdempotentCommandCacheTest extends 
IgniteAbstractTest {
     @InjectConfiguration("mock.idleSafeTimeSyncIntervalMillis = 100")
     private SystemDistributedConfiguration systemDistributedConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     @InjectExecutorService
     private ScheduledExecutorService scheduledExecutorService;
 
@@ -190,6 +194,7 @@ class ItIdempotentCommandCacheTest extends 
IgniteAbstractTest {
                 RaftConfiguration raftConfiguration,
                 SystemLocalConfiguration systemLocalConfiguration,
                 SystemDistributedConfiguration systemDistributedConfiguration,
+                LogStorageConfiguration logStorageConfiguration,
                 Path workDir,
                 int index,
                 ScheduledExecutorService scheduledExecutorService
@@ -214,7 +219,7 @@ class ItIdempotentCommandCacheTest extends 
IgniteAbstractTest {
 
             String nodeName = clusterService.staticLocalNode().name();
 
-            partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
+            partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(), 
logStorageConfiguration);
 
             raftManager = TestLozaFactory.create(
                     clusterService,
@@ -239,7 +244,7 @@ class ItIdempotentCommandCacheTest extends 
IgniteAbstractTest {
 
             ComponentWorkingDir metastorageWorkDir = new 
ComponentWorkingDir(workDir.resolve("metastorage" + index));
 
-            msLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath());
+            msLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath(), 
logStorageConfiguration);
 
             RaftGroupOptionsConfigurer msRaftConfigurer =
                     
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager, 
metastorageWorkDir.metaPath());
@@ -647,6 +652,7 @@ class ItIdempotentCommandCacheTest extends 
IgniteAbstractTest {
                     raftConfiguration,
                     systemLocalConfiguration,
                     systemDistributedConfiguration,
+                    logStorageConfiguration,
                     workDir,
                     i,
                     scheduledExecutorService
diff --git 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageManagerImplTest.java
 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageManagerImplTest.java
index 6699e5413eb..fbe9264aa37 100644
--- 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageManagerImplTest.java
+++ 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageManagerImplTest.java
@@ -93,6 +93,7 @@ import org.apache.ignite.internal.raft.Loza;
 import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
 import org.apache.ignite.internal.raft.TestLozaFactory;
 import org.apache.ignite.internal.raft.TimeAwareRaftGroupServiceFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.service.TimeAwareRaftGroupService;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -148,6 +149,9 @@ public class ItMetaStorageManagerImplTest extends 
IgniteAbstractTest {
     @InjectExecutorService
     private ScheduledExecutorService scheduledExecutorService;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     private final ReadOperationForCompactionTracker 
readOperationForCompactionTracker = new ReadOperationForCompactionTracker();
 
     @BeforeEach
@@ -169,7 +173,8 @@ public class ItMetaStorageManagerImplTest extends 
IgniteAbstractTest {
 
         partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
                 nodeName,
-                workingDir.raftLogPath()
+                workingDir.raftLogPath(),
+                logStorageConfiguration
         );
 
         raftManager = TestLozaFactory.create(
@@ -199,7 +204,7 @@ public class ItMetaStorageManagerImplTest extends 
IgniteAbstractTest {
 
         ComponentWorkingDir metastorageWorkDir = new 
ComponentWorkingDir(workDir.resolve("metastorage"));
 
-        msLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, 
metastorageWorkDir.raftLogPath());
+        msLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, 
metastorageWorkDir.raftLogPath(), logStorageConfiguration);
 
         RaftGroupOptionsConfigurer msRaftConfigurer =
                 
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager, 
metastorageWorkDir.metaPath());
diff --git 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageMultipleNodesAbstractTest.java
 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageMultipleNodesAbstractTest.java
index 9591f5d3430..90212905850 100644
--- 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageMultipleNodesAbstractTest.java
+++ 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageMultipleNodesAbstractTest.java
@@ -66,6 +66,7 @@ import org.apache.ignite.internal.raft.Loza;
 import org.apache.ignite.internal.raft.Peer;
 import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
 import org.apache.ignite.internal.raft.TestLozaFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.service.TimeAwareRaftGroupService;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -106,6 +107,9 @@ abstract class ItMetaStorageMultipleNodesAbstractTest 
extends IgniteAbstractTest
     @InjectConfiguration("mock.idleSafeTimeSyncIntervalMillis=1000000")
     private SystemDistributedConfiguration systemDistributedConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     private TestInfo testInfo;
 
     KeyValueStorage createStorage(String nodeName, Path path, 
ReadOperationForCompactionTracker readOperationForCompactionTracker) {
@@ -159,7 +163,7 @@ abstract class ItMetaStorageMultipleNodesAbstractTest 
extends IgniteAbstractTest
 
             String nodeName = clusterService.staticLocalNode().name();
 
-            partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
+            partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(), 
logStorageConfiguration);
 
             this.raftManager = TestLozaFactory.create(
                     clusterService,
@@ -181,7 +185,7 @@ abstract class ItMetaStorageMultipleNodesAbstractTest 
extends IgniteAbstractTest
 
             ComponentWorkingDir cmgWorkDir = new 
ComponentWorkingDir(basePath.resolve("cmg"));
 
-            cmgLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath());
+            cmgLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath(), 
logStorageConfiguration);
 
             RaftGroupOptionsConfigurer cmgRaftConfigurator =
                     
RaftGroupOptionsConfigHelper.configureProperties(cmgLogStorageManager, 
cmgWorkDir.metaPath());
@@ -212,7 +216,7 @@ abstract class ItMetaStorageMultipleNodesAbstractTest 
extends IgniteAbstractTest
 
             ComponentWorkingDir metastorageWorkDir = new 
ComponentWorkingDir(basePath.resolve("metastorage"));
 
-            msLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath());
+            msLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath(), 
logStorageConfiguration);
 
             RaftGroupOptionsConfigurer msRaftConfigurator =
                     
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager, 
metastorageWorkDir.metaPath());
diff --git 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageServiceTest.java
 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageServiceTest.java
index cb2949c1752..130e0009e97 100644
--- 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageServiceTest.java
+++ 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageServiceTest.java
@@ -115,6 +115,7 @@ import org.apache.ignite.internal.raft.RaftManager;
 import org.apache.ignite.internal.raft.RaftNodeId;
 import org.apache.ignite.internal.raft.TestLozaFactory;
 import 
org.apache.ignite.internal.raft.client.PhysicalTopologyAwareRaftGroupService;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.service.TimeAwareRaftGroupService;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -213,6 +214,7 @@ public class ItMetaStorageServiceTest extends 
BaseIgniteAbstractTest {
                 ClusterService clusterService,
                 RaftConfiguration raftConfiguration,
                 SystemLocalConfiguration systemLocalConfiguration,
+                LogStorageConfiguration logStorageConfiguration,
                 Path dataPath
         ) {
             this.clusterService = clusterService;
@@ -223,7 +225,7 @@ public class ItMetaStorageServiceTest extends 
BaseIgniteAbstractTest {
 
             String nodeName = clusterService.staticLocalNode().name();
 
-            partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
+            partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(), 
logStorageConfiguration);
 
             partitionsRaftConfigurer =
                     
RaftGroupOptionsConfigHelper.configureProperties(partitionsLogStorageManager, 
workingDir.metaPath());
@@ -336,6 +338,9 @@ public class ItMetaStorageServiceTest extends 
BaseIgniteAbstractTest {
     @InjectConfiguration
     private SystemLocalConfiguration systemLocalConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     private final List<Node> nodes = new ArrayList<>();
 
     @BeforeEach
@@ -351,7 +356,9 @@ public class ItMetaStorageServiceTest extends 
BaseIgniteAbstractTest {
 
         localAddresses.stream()
                 .map(addr -> ClusterServiceTestUtils.clusterService(testInfo, 
addr.port(), nodeFinder))
-                .forEach(clusterService -> nodes.add(new Node(clusterService, 
raftConfiguration, systemLocalConfiguration, workDir)));
+                .forEach(clusterService -> nodes.add(
+                        new Node(clusterService, raftConfiguration, 
systemLocalConfiguration, logStorageConfiguration, workDir))
+                );
 
         return nodes;
     }
diff --git 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageWatchTest.java
 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageWatchTest.java
index 3b2b2cd435b..dc7059285ac 100644
--- 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageWatchTest.java
+++ 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/impl/ItMetaStorageWatchTest.java
@@ -88,6 +88,7 @@ import org.apache.ignite.internal.network.StaticNodeFinder;
 import org.apache.ignite.internal.network.utils.ClusterServiceTestUtils;
 import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
 import org.apache.ignite.internal.raft.TestLozaFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
 import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
@@ -131,6 +132,9 @@ public class ItMetaStorageWatchTest extends 
IgniteAbstractTest {
     @InjectConfiguration
     private SystemLocalConfiguration systemLocalConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     private class Node {
         private final List<IgniteComponent> components = new ArrayList<>();
 
@@ -159,7 +163,8 @@ public class ItMetaStorageWatchTest extends 
IgniteAbstractTest {
 
             String nodeName = clusterService.staticLocalNode().name();
 
-            LogStorageManager partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
+            LogStorageManager partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(),
+                    logStorageConfiguration);
 
             components.add(partitionsLogStorageManager);
 
@@ -191,7 +196,8 @@ public class ItMetaStorageWatchTest extends 
IgniteAbstractTest {
 
             ComponentWorkingDir cmgWorkDir = new 
ComponentWorkingDir(basePath.resolve("cmg"));
 
-            LogStorageManager cmgLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath());
+            LogStorageManager cmgLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath(),
+                    logStorageConfiguration);
 
             components.add(cmgLogStorageManager);
 
@@ -232,7 +238,8 @@ public class ItMetaStorageWatchTest extends 
IgniteAbstractTest {
 
             LogStorageManager msLogStorageManager = 
SharedLogStorageManagerUtils.create(
                     nodeName,
-                    metastorageWorkDir.raftLogPath()
+                    metastorageWorkDir.raftLogPath(),
+                    logStorageConfiguration
             );
 
             components.add(msLogStorageManager);
diff --git 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/server/raft/ItMetaStorageRaftGroupTest.java
 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/server/raft/ItMetaStorageRaftGroupTest.java
index 6d28f99c3ef..3d4eac20197 100644
--- 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/server/raft/ItMetaStorageRaftGroupTest.java
+++ 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/metastorage/server/raft/ItMetaStorageRaftGroupTest.java
@@ -70,6 +70,7 @@ import org.apache.ignite.internal.raft.PeersAndLearners;
 import org.apache.ignite.internal.raft.RaftNodeId;
 import org.apache.ignite.internal.raft.StoppingExceptionFactories;
 import 
org.apache.ignite.internal.raft.client.PhysicalTopologyAwareRaftGroupService;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.server.RaftGroupOptions;
 import org.apache.ignite.internal.raft.server.RaftServer;
@@ -168,6 +169,9 @@ public class ItMetaStorageRaftGroupTest extends 
IgniteAbstractTest {
     @InjectConfiguration
     private SystemLocalConfiguration systemConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     /**
      * Run {@code NODES} cluster nodes.
      */
@@ -374,7 +378,8 @@ public class ItMetaStorageRaftGroupTest extends 
IgniteAbstractTest {
 
         logStorageManager1 = SharedLogStorageManagerUtils.create(
                 cluster.get(0).staticLocalNode().name(),
-                workingDir1.raftLogPath()
+                workingDir1.raftLogPath(),
+                logStorageConfiguration
         );
 
         var eventsClientListener1 = new RaftGroupEventsClientListener();
@@ -389,7 +394,8 @@ public class ItMetaStorageRaftGroupTest extends 
IgniteAbstractTest {
 
         logStorageManager2 = SharedLogStorageManagerUtils.create(
                 cluster.get(1).staticLocalNode().name(),
-                workingDir2.raftLogPath()
+                workingDir2.raftLogPath(),
+                logStorageConfiguration
         );
 
         var eventsClientListener2 = new RaftGroupEventsClientListener();
@@ -404,7 +410,8 @@ public class ItMetaStorageRaftGroupTest extends 
IgniteAbstractTest {
 
         logStorageManager3 = SharedLogStorageManagerUtils.create(
                 cluster.get(2).staticLocalNode().name(),
-                workingDir3.raftLogPath()
+                workingDir3.raftLogPath(),
+                logStorageConfiguration
         );
 
         var eventsClientListener3 = new RaftGroupEventsClientListener();
diff --git 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/raft/service/ItAbstractListenerSnapshotTest.java
 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/raft/service/ItAbstractListenerSnapshotTest.java
index 8316612a38f..1f75bfd037c 100644
--- 
a/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/raft/service/ItAbstractListenerSnapshotTest.java
+++ 
b/modules/metastorage/src/integrationTest/java/org/apache/ignite/internal/raft/service/ItAbstractListenerSnapshotTest.java
@@ -57,6 +57,7 @@ import org.apache.ignite.internal.raft.Marshaller;
 import org.apache.ignite.internal.raft.PeersAndLearners;
 import org.apache.ignite.internal.raft.RaftNodeId;
 import org.apache.ignite.internal.raft.client.RaftGroupServiceImpl;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.server.RaftServer;
 import org.apache.ignite.internal.raft.server.TestJraftServerFactory;
@@ -120,6 +121,9 @@ public abstract class ItAbstractListenerSnapshotTest<T 
extends RaftGroupListener
     @InjectConfiguration
     protected SystemLocalConfiguration systemConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     /**
      * Create executor for raft group services.
      */
@@ -437,7 +441,8 @@ public abstract class ItAbstractListenerSnapshotTest<T 
extends RaftGroupListener
 
         LogStorageManager partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(
                 service.staticLocalNode().name(),
-                componentWorkDir.raftLogPath()
+                componentWorkDir.raftLogPath(),
+                logStorageConfiguration
         );
         assertThat(partitionsLogStorageManager.startAsync(new 
ComponentContext()), willCompleteSuccessfully());
 
diff --git 
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItAbstractColocationTest.java
 
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItAbstractColocationTest.java
index b5d08f6f77d..5776182dbac 100644
--- 
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItAbstractColocationTest.java
+++ 
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItAbstractColocationTest.java
@@ -50,6 +50,7 @@ import 
org.apache.ignite.internal.distributionzones.DistributionZonesTestUtil;
 import org.apache.ignite.internal.network.NodeFinder;
 import org.apache.ignite.internal.network.StaticNodeFinder;
 import org.apache.ignite.internal.partition.replicator.fixtures.Node;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import 
org.apache.ignite.internal.replicator.configuration.ReplicationConfiguration;
 import org.apache.ignite.internal.schema.configuration.GcConfiguration;
@@ -123,6 +124,9 @@ abstract class ItAbstractColocationTest extends 
IgniteAbstractTest {
     @InjectConfiguration
     private SqlDistributedConfiguration sqlDistributedConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     final List<Node> cluster = new CopyOnWriteArrayList<>();
 
     private NodeFinder nodeFinder;
@@ -238,6 +242,7 @@ abstract class ItAbstractColocationTest extends 
IgniteAbstractTest {
                 replicationConfiguration,
                 txConfiguration,
                 scheduledExecutorService,
+                logStorageConfiguration,
                 invokeInterceptor,
                 gcConfiguration,
                 sqlLocalConfiguration,
diff --git 
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/fixtures/Node.java
 
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/fixtures/Node.java
index bee4ceb5960..51a7a9ffeef 100644
--- 
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/fixtures/Node.java
+++ 
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/fixtures/Node.java
@@ -129,6 +129,7 @@ import 
org.apache.ignite.internal.placementdriver.ReplicaMeta;
 import org.apache.ignite.internal.raft.Loza;
 import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
 import 
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
 import 
org.apache.ignite.internal.raft.storage.impl.VolatileLogStorageManagerCreator;
@@ -333,6 +334,7 @@ public class Node {
             ReplicationConfiguration replicationConfiguration,
             TransactionConfiguration transactionConfiguration,
             ScheduledExecutorService scheduledExecutorService,
+            LogStorageConfiguration logStorageConfiguration,
             @Nullable InvokeInterceptor invokeInterceptor,
             GcConfiguration gcConfiguration,
             SqlLocalConfiguration sqlLocalConfiguration,
@@ -395,7 +397,8 @@ public class Node {
 
         String nodeName = clusterService.staticLocalNode().name();
 
-        partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, partitionsWorkDir.raftLogPath());
+        partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, partitionsWorkDir.raftLogPath(),
+                logStorageConfiguration);
 
         LogSyncer partitionsLogSyncer = 
partitionsLogStorageManager.logSyncer();
 
@@ -427,7 +430,7 @@ public class Node {
 
         ComponentWorkingDir cmgWorkDir = new 
ComponentWorkingDir(dir.resolve("cmg"));
 
-        cmgLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, 
cmgWorkDir.raftLogPath());
+        cmgLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, 
cmgWorkDir.raftLogPath(), logStorageConfiguration);
 
         RaftGroupOptionsConfigurer cmgRaftConfigurer =
                 
RaftGroupOptionsConfigHelper.configureProperties(cmgLogStorageManager, 
cmgWorkDir.metaPath());
@@ -469,7 +472,7 @@ public class Node {
 
         ComponentWorkingDir metastorageWorkDir = new 
ComponentWorkingDir(dir.resolve("metastorage"));
 
-        msLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, 
metastorageWorkDir.raftLogPath());
+        msLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, 
metastorageWorkDir.raftLogPath(), logStorageConfiguration);
 
         RaftGroupOptionsConfigurer msRaftConfigurer =
                 
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager, 
metastorageWorkDir.metaPath());
diff --git 
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/raft/ItZonePartitionRaftListenerRecoveryTest.java
 
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/raft/ItZonePartitionRaftListenerRecoveryTest.java
index 5c687e3cb14..b6abedd366e 100644
--- 
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/raft/ItZonePartitionRaftListenerRecoveryTest.java
+++ 
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/raft/ItZonePartitionRaftListenerRecoveryTest.java
@@ -94,6 +94,7 @@ import 
org.apache.ignite.internal.raft.RaftGroupConfigurationConverter;
 import org.apache.ignite.internal.raft.RaftGroupEventsListener;
 import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
 import org.apache.ignite.internal.raft.RaftNodeId;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.server.RaftGroupOptions;
 import org.apache.ignite.internal.raft.service.RaftGroupService;
@@ -179,6 +180,9 @@ class ItZonePartitionRaftListenerRecoveryTest extends 
IgniteAbstractTest {
     @InjectExecutorService
     private ExecutorService executor;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     private final List<IgniteComponent> components = new ArrayList<>();
 
     private final HybridClock clock = new HybridClockImpl();
@@ -295,10 +299,9 @@ class ItZonePartitionRaftListenerRecoveryTest extends 
IgniteAbstractTest {
         components.add(outgoingSnapshotsManager);
 
         logStorageManager = SharedLogStorageManagerUtils.create(
-                "table data log",
                 clusterService.staticLocalNode().name(),
                 componentWorkingDir.raftLogPath(),
-                true
+                logStorageConfiguration
         );
 
         components.add(logStorageManager);
diff --git 
a/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/MultiActorPlacementDriverTest.java
 
b/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/MultiActorPlacementDriverTest.java
index 6fcb399f610..03c646ae946 100644
--- 
a/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/MultiActorPlacementDriverTest.java
+++ 
b/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/MultiActorPlacementDriverTest.java
@@ -82,6 +82,7 @@ import org.apache.ignite.internal.raft.Peer;
 import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
 import org.apache.ignite.internal.raft.TestLozaFactory;
 import 
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.service.LeaderWithTerm;
 import org.apache.ignite.internal.raft.service.TimeAwareRaftGroupService;
@@ -119,6 +120,9 @@ public class MultiActorPlacementDriverTest extends 
BasePlacementDriverTest {
     @InjectConfiguration
     private ReplicationConfiguration replicationConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     private List<String> placementDriverNodeNames;
 
     private List<String> nodeNames;
@@ -277,7 +281,8 @@ public class MultiActorPlacementDriverTest extends 
BasePlacementDriverTest {
 
             LogStorageManager partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(
                     clusterService.staticLocalNode().name(),
-                    workingDir.raftLogPath()
+                    workingDir.raftLogPath(),
+                    logStorageConfiguration
             );
 
             var raftManager = TestLozaFactory.create(
@@ -297,7 +302,8 @@ public class MultiActorPlacementDriverTest extends 
BasePlacementDriverTest {
             ComponentWorkingDir metastorageWorkDir = new 
ComponentWorkingDir(workDir.resolve(nodeName + "_metastorage"));
 
             LogStorageManager msLogStorageManager =
-                    
SharedLogStorageManagerUtils.create(clusterService.staticLocalNode().name(), 
metastorageWorkDir.raftLogPath());
+                    
SharedLogStorageManagerUtils.create(clusterService.staticLocalNode().name(), 
metastorageWorkDir.raftLogPath(),
+                            logStorageConfiguration);
 
             RaftGroupOptionsConfigurer msRaftConfigurer =
                     
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager, 
metastorageWorkDir.metaPath());
diff --git 
a/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/PlacementDriverManagerTest.java
 
b/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/PlacementDriverManagerTest.java
index a9e067d7c14..958866c7e6c 100644
--- 
a/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/PlacementDriverManagerTest.java
+++ 
b/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/PlacementDriverManagerTest.java
@@ -103,6 +103,7 @@ import org.apache.ignite.internal.raft.Loza;
 import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
 import org.apache.ignite.internal.raft.TestLozaFactory;
 import 
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
 import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
@@ -157,6 +158,9 @@ public class PlacementDriverManagerTest extends 
BasePlacementDriverTest {
     @InjectConfiguration(validate = false)
     private ReplicationConfiguration replicationConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     private MetaStorageManagerImpl metaStorageManager;
 
     private PlacementDriverManager placementDriverManager;
@@ -219,7 +223,8 @@ public class PlacementDriverManagerTest extends 
BasePlacementDriverTest {
 
         partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
                 clusterService.staticLocalNode().name(),
-                workingDir.raftLogPath()
+                workingDir.raftLogPath(),
+                logStorageConfiguration
         );
 
         raftManager = TestLozaFactory.create(
@@ -239,7 +244,8 @@ public class PlacementDriverManagerTest extends 
BasePlacementDriverTest {
         ComponentWorkingDir metastorageWorkDir = new 
ComponentWorkingDir(workDir.resolve("metastorage"));
 
         msLogStorageManager =
-                
SharedLogStorageManagerUtils.create(clusterService.staticLocalNode().name(), 
metastorageWorkDir.raftLogPath());
+                
SharedLogStorageManagerUtils.create(clusterService.staticLocalNode().name(), 
metastorageWorkDir.raftLogPath(),
+                        logStorageConfiguration);
 
         RaftGroupOptionsConfigurer msRaftConfigurer =
                 
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager, 
metastorageWorkDir.metaPath());
diff --git 
a/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/LogStorageExtensionConfigurationSchema.java
 
b/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/LogStorageExtensionConfigurationSchema.java
new file mode 100644
index 00000000000..735b068bead
--- /dev/null
+++ 
b/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/LogStorageExtensionConfigurationSchema.java
@@ -0,0 +1,31 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.internal.raft.configuration;
+
+import org.apache.ignite.configuration.annotation.ConfigValue;
+import org.apache.ignite.configuration.annotation.ConfigurationExtension;
+import org.apache.ignite.internal.configuration.NodeConfigurationSchema;
+
+// TODO: Remove when the new log storage is released, see 
https://issues.apache.org/jira/browse/IGNITE-26300.
+/** Temporary extension to add log storage configuration only if property is 
enabled. */
+@ConfigurationExtension
+public class LogStorageExtensionConfigurationSchema extends 
NodeConfigurationSchema {
+    @ConfigValue
+    @ValidLogStorageConfiguration
+    public LogStorageConfigurationSchema logStorage;
+}
diff --git 
a/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/RaftConfigurationModule.java
 
b/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/RaftConfigurationModule.java
index 97598edd435..e23d3fbdf9e 100644
--- 
a/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/RaftConfigurationModule.java
+++ 
b/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/RaftConfigurationModule.java
@@ -25,6 +25,7 @@ import org.apache.ignite.configuration.ConfigurationModule;
 import org.apache.ignite.configuration.SuperRootChange;
 import org.apache.ignite.configuration.annotation.ConfigurationType;
 import org.apache.ignite.configuration.validation.Validator;
+import org.apache.ignite.internal.lang.IgniteSystemProperties;
 
 /**
  * {@link ConfigurationModule} for node-local configuration provided by 
ignite-raft.
@@ -38,7 +39,11 @@ public class RaftConfigurationModule implements 
ConfigurationModule {
 
     @Override
     public Collection<Class<?>> schemaExtensions() {
-        return List.of(RaftExtensionConfigurationSchema.class);
+        if (IgniteSystemProperties.segmentLogStorageEnabled()) {
+            return List.of(RaftExtensionConfigurationSchema.class, 
LogStorageExtensionConfigurationSchema.class);
+        } else {
+            return List.of(RaftExtensionConfigurationSchema.class);
+        }
     }
 
     @Override
diff --git 
a/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLearnersTest.java
 
b/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLearnersTest.java
index b32dfbeeb24..cac43cfbd06 100644
--- 
a/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLearnersTest.java
+++ 
b/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLearnersTest.java
@@ -60,6 +60,7 @@ import org.apache.ignite.internal.manager.ComponentContext;
 import org.apache.ignite.internal.manager.IgniteComponent;
 import org.apache.ignite.internal.network.ClusterService;
 import org.apache.ignite.internal.network.StaticNodeFinder;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.server.RaftGroupOptions;
 import org.apache.ignite.internal.raft.service.CommandClosure;
@@ -111,6 +112,9 @@ public class ItLearnersTest extends IgniteAbstractTest {
     @InjectConfiguration
     private SystemLocalConfiguration systemLocalConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     private final List<RaftNode> nodes = new ArrayList<>(ADDRS.size());
 
     /** Mock Raft node. */
@@ -132,7 +136,8 @@ public class ItLearnersTest extends IgniteAbstractTest {
 
             logStorageManager = SharedLogStorageManagerUtils.create(
                     clusterService.staticLocalNode().name(),
-                    partitionsWorkDir.raftLogPath()
+                    partitionsWorkDir.raftLogPath(),
+                    logStorageConfiguration
             );
 
             loza = TestLozaFactory.create(clusterService, raftConfiguration, 
systemLocalConfiguration, new HybridClockImpl());
diff --git 
a/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLozaTest.java
 
b/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLozaTest.java
index 4ecafc2f51d..97091040e00 100644
--- 
a/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLozaTest.java
+++ 
b/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItLozaTest.java
@@ -60,6 +60,7 @@ import org.apache.ignite.internal.network.MessagingService;
 import org.apache.ignite.internal.network.NetworkMessage;
 import org.apache.ignite.internal.network.StaticNodeFinder;
 import org.apache.ignite.internal.raft.configuration.LogStorageBudgetView;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.server.RaftGroupOptions;
 import org.apache.ignite.internal.raft.server.impl.JraftServerImpl;
@@ -100,6 +101,9 @@ public class ItLozaTest extends IgniteAbstractTest {
 
     private final List<IgniteComponent> allComponents = new ArrayList<>();
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     @BeforeEach
     void setUp(TestInfo testInfo) {
         var addr = new NetworkAddress("127.0.0.1", PORT);
@@ -174,7 +178,8 @@ public class ItLozaTest extends IgniteAbstractTest {
 
         LogStorageManager partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(
                 spyService.staticLocalNode().name(),
-                partitionsWorkDir.raftLogPath()
+                partitionsWorkDir.raftLogPath(),
+                logStorageConfiguration
         );
 
         RaftGroupOptionsConfigurer partitionsConfigurer =
@@ -229,7 +234,8 @@ public class ItLozaTest extends IgniteAbstractTest {
 
         LogStorageManager logStorageManager = 
SharedLogStorageManagerUtils.create(
                 clusterService.staticLocalNode().name(),
-                partitionsWorkDir.raftLogPath()
+                partitionsWorkDir.raftLogPath(),
+                logStorageConfiguration
         );
 
         allComponents.add(logStorageManager);
@@ -319,7 +325,8 @@ public class ItLozaTest extends IgniteAbstractTest {
 
         LogStorageManager logStorageManager = 
SharedLogStorageManagerUtils.create(
                 clusterService.staticLocalNode().name(),
-                partitionsWorkDir.raftLogPath()
+                partitionsWorkDir.raftLogPath(),
+                logStorageConfiguration
         );
         logStorageManager = spy(logStorageManager);
 
diff --git 
a/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItRaftGroupServiceTest.java
 
b/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItRaftGroupServiceTest.java
index 35aa5076e8a..08d510c8471 100644
--- 
a/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItRaftGroupServiceTest.java
+++ 
b/modules/raft/src/integrationTest/java/org/apache/ignite/internal/raft/ItRaftGroupServiceTest.java
@@ -55,6 +55,7 @@ import 
org.apache.ignite.internal.network.DefaultMessagingService;
 import org.apache.ignite.internal.network.NodeFinder;
 import org.apache.ignite.internal.network.StaticNodeFinder;
 import org.apache.ignite.internal.network.utils.ClusterServiceTestUtils;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.server.RaftGroupOptions;
 import org.apache.ignite.internal.raft.service.RaftGroupListener;
@@ -107,6 +108,9 @@ public class ItRaftGroupServiceTest extends 
IgniteAbstractTest {
     @InjectConfiguration
     private SystemLocalConfiguration systemLocalConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     @BeforeEach
     public void setUp(TestInfo testInfo) {
         for (int i = 0; i < NODES_CNT; i++) {
@@ -315,7 +319,8 @@ public class ItRaftGroupServiceTest extends 
IgniteAbstractTest {
 
             partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
                     clusterService.staticLocalNode().name(),
-                    partitionsWorkDir.raftLogPath()
+                    partitionsWorkDir.raftLogPath(),
+                    logStorageConfiguration
             );
             this.loza = TestLozaFactory.create(
                     clusterService,
diff --git 
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItJraftHlcServerTest.java
 
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItJraftHlcServerTest.java
index 456ef7439ca..647335f179b 100644
--- 
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItJraftHlcServerTest.java
+++ 
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItJraftHlcServerTest.java
@@ -147,7 +147,8 @@ class ItJraftHlcServerTest extends RaftServerAbstractTest {
 
         LogStorageManager partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(
                 service.staticLocalNode().name(),
-                workingDir.raftLogPath()
+                workingDir.raftLogPath(),
+                logStorageConfiguration
         );
 
         assertThat(partitionsLogStorageManager.startAsync(new 
ComponentContext()), willCompleteSuccessfully());
diff --git 
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItJraftServerLogPathTest.java
 
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItJraftServerLogPathTest.java
index 4635143f7a4..3fd7647da1e 100644
--- 
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItJraftServerLogPathTest.java
+++ 
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItJraftServerLogPathTest.java
@@ -121,7 +121,8 @@ class ItJraftServerLogPathTest extends 
RaftServerAbstractTest {
 
         partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
                 service.staticLocalNode().name(),
-                workingDir.raftLogPath()
+                workingDir.raftLogPath(),
+                logStorageConfiguration
         );
 
         assertThat(partitionsLogStorageManager.startAsync(new 
ComponentContext()), willCompleteSuccessfully());
diff --git 
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItSimpleCounterServerTest.java
 
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItSimpleCounterServerTest.java
index d93f26a3034..2adcb28b006 100644
--- 
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItSimpleCounterServerTest.java
+++ 
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/ItSimpleCounterServerTest.java
@@ -114,7 +114,8 @@ class ItSimpleCounterServerTest extends 
RaftServerAbstractTest {
 
         partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
                 service.staticLocalNode().name(),
-                workingDir.raftLogPath()
+                workingDir.raftLogPath(),
+                logStorageConfiguration
         );
 
         assertThat(partitionsLogStorageManager.startAsync(new 
ComponentContext()), willCompleteSuccessfully());
diff --git 
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/JraftAbstractTest.java
 
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/JraftAbstractTest.java
index 18546aebeac..8d4f005b18b 100644
--- 
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/JraftAbstractTest.java
+++ 
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/JraftAbstractTest.java
@@ -210,7 +210,8 @@ public abstract class JraftAbstractTest extends 
RaftServerAbstractTest {
 
         LogStorageManager partitionsLogStorageManager = 
spy(SharedLogStorageManagerUtils.create(
                 service.staticLocalNode().name(),
-                workingDir.raftLogPath()
+                workingDir.raftLogPath(),
+                logStorageConfiguration
         ));
 
         assertThat(partitionsLogStorageManager.startAsync(new 
ComponentContext()), willCompleteSuccessfully());
diff --git 
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/RaftServerAbstractTest.java
 
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/RaftServerAbstractTest.java
index 2f2ce0ce60b..a461195a709 100644
--- 
a/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/RaftServerAbstractTest.java
+++ 
b/modules/raft/src/integrationTest/java/org/apache/ignite/raft/server/RaftServerAbstractTest.java
@@ -30,6 +30,7 @@ import org.apache.ignite.internal.manager.ComponentContext;
 import org.apache.ignite.internal.network.ClusterService;
 import org.apache.ignite.internal.network.StaticNodeFinder;
 import org.apache.ignite.internal.network.utils.ClusterServiceTestUtils;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.testframework.IgniteAbstractTest;
 import org.apache.ignite.network.NetworkAddress;
@@ -58,6 +59,9 @@ abstract class RaftServerAbstractTest extends 
IgniteAbstractTest {
     @InjectConfiguration
     protected SystemLocalConfiguration systemConfiguration;
 
+    @InjectConfiguration
+    protected static LogStorageConfiguration logStorageConfiguration;
+
     /** Test info. */
     TestInfo testInfo;
 
diff --git 
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentFile.java
 
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentFile.java
index d008ddb4ac0..859a1f55c87 100644
--- 
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentFile.java
+++ 
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentFile.java
@@ -283,7 +283,8 @@ class SegmentFile implements ManuallyCloseable {
 
             int nextPos = pos + size;
 
-            if (nextPos > buffer.limit()) {
+            // nextPos < 0 detects integer overflow (pos >= 0 and size > 0).
+            if (nextPos < 0 || nextPos > buffer.limit()) {
                 return null;
             }
 
diff --git 
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageManager.java
 
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageManager.java
index ca663ce9037..97cf85b013a 100644
--- 
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageManager.java
+++ 
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageManager.java
@@ -37,6 +37,15 @@ import org.apache.ignite.raft.jraft.storage.LogStorage;
  * Log storage manager for {@link SegstoreLogStorage} instances.
  */
 public class SegmentLogStorageManager implements LogStorageManager {
+    /** Group ID for metastorage. */
+    public static final long METASTORAGE_GROUP_ID = 1;
+
+    /** Group ID for CMG. */
+    public static final long CMG_GROUP_ID = 2;
+
+    /** Offset so that (objectId=0, partitionId=0) maps to 3, avoiding 
collision with metastorage (1) and cmg (2). */
+    public static final long SPECIAL_GROUP_ID_OFFSET = 3;
+
     private static final Pattern PARTITION_GROUP_ID_PATTERN = 
Pattern.compile("_part_");
 
     private final SegmentFileManager fileManager;
@@ -63,17 +72,13 @@ public class SegmentLogStorageManager implements 
LogStorageManager {
     }
 
     @Override
-    public LogStorage createLogStorage(String groupId, RaftOptions 
raftOptions) {
-        return new SegstoreLogStorage(convertGroupId(groupId), fileManager);
+    public LogStorage createLogStorage(String raftNodeStorageId, RaftOptions 
raftOptions) {
+        return new SegstoreLogStorage(convertNodeId(raftNodeStorageId), 
fileManager);
     }
 
     @Override
-    public void destroyLogStorage(String groupId) {
-        try {
-            fileManager.reset(convertGroupId(groupId), 1);
-        } catch (IOException e) {
-            throw new LogStorageException("Failed to destroy log storage for 
group " + groupId, e);
-        }
+    public void destroyLogStorage(String raftNodeStorageId) {
+        // TODO IGNITE-28527 Implement.
     }
 
     @Override
@@ -108,21 +113,47 @@ public class SegmentLogStorageManager implements 
LogStorageManager {
         }
     }
 
-    private static long convertGroupId(String groupId) {
-        if ("metastorage_group".equals(groupId)) {
-            return 1;
+    /**
+     * Converts a raft node storage ID string to a unique positive long, used 
to identify a logical log within the segment file manager.
+     *
+     * <p>For partition groups ({@code 
"{objectId}_part_{partitionId}-{peerIdx}"}):
+     * {@code result = (objectId << 32 | partitionId) + 
SPECIAL_GROUP_ID_OFFSET}.
+     * {@code objectId} and {@code partitionId} are non-negative ints, so the 
result is always positive and unique
+     * per {@code (objectId, partitionId)} pair.
+     *
+     * <p>{@code peerIdx} is not encoded because a single Ignite node 
participates as exactly one peer per raft group,
+     * so {@code (objectId, partitionId)} is already unique within one {@link 
SegmentLogStorageManager}.
+     */
+    // TODO IGNITE-26977 Revise after changing partition ID from int to long.
+    static long convertNodeId(String nodeId) {
+        // {groupId}-{peerIdx}. Peer index suffix is mandatory for all valid 
raft node storage IDs.
+        int lastHyphen = nodeId.lastIndexOf('-');
+
+        if (lastHyphen <= 0) {
+            // TODO IGNITE-28525 Validate node IDs instead of allowing any 
value.
+            return Integer.toUnsignedLong(nodeId.hashCode()) + 
SPECIAL_GROUP_ID_OFFSET;
         }
 
-        if ("cmg_group".equals(groupId)) {
-            return 2;
+        String groupName = nodeId.substring(0, lastHyphen);
+
+        if ("metastorage_group".equals(groupName)) {
+            return METASTORAGE_GROUP_ID;
+        }
+
+        if ("cmg_group".equals(groupName)) {
+            return CMG_GROUP_ID;
         }
 
-        String[] partitionGroupIdArray = 
PARTITION_GROUP_ID_PATTERN.split(groupId);
+        String[] parts = PARTITION_GROUP_ID_PATTERN.split(groupName);
 
-        if (partitionGroupIdArray.length == 2) {
-            return Long.parseLong(partitionGroupIdArray[0]) << 32 | 
Long.parseLong(partitionGroupIdArray[1]);
-        } else {
-            throw new IllegalArgumentException("Invalid groupId: " + groupId);
+        if (parts.length == 2) {
+            int objectId = Integer.parseInt(parts[0]);
+            int partitionId = Integer.parseInt(parts[1]);
+
+            return ((long) objectId << 32 | 
Integer.toUnsignedLong(partitionId)) + SPECIAL_GROUP_ID_OFFSET;
         }
+
+        // TODO IGNITE-28525 Validate node IDs instead of allowing any value.
+        return Integer.toUnsignedLong(nodeId.hashCode()) + 
SPECIAL_GROUP_ID_OFFSET;
     }
 }
diff --git 
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageOptions.java
 
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageOptions.java
new file mode 100644
index 00000000000..c7f276da900
--- /dev/null
+++ 
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageOptions.java
@@ -0,0 +1,53 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.internal.raft.storage.segstore;
+
+import org.apache.ignite.internal.failure.FailureProcessor;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
+import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
+
+/** Options to create {@link SegmentLogStorageManager} using {@link 
SharedLogStorageManagerUtils}. */
+public class SegmentLogStorageOptions {
+    private final int stripes;
+
+    private final LogStorageConfiguration configuration;
+
+    private final FailureProcessor failureProcessor;
+
+    /** Constructor. */
+    public SegmentLogStorageOptions(int stripes, LogStorageConfiguration 
configuration, FailureProcessor failureProcessor) {
+        this.stripes = stripes;
+        this.configuration = configuration;
+        this.failureProcessor = failureProcessor;
+    }
+
+    /** Number of log storage disruptor stripes. */
+    public int stripes() {
+        return stripes;
+    }
+
+    /** Log storage configuration. */
+    public LogStorageConfiguration configuration() {
+        return configuration;
+    }
+
+    /** Failure processor. */
+    public FailureProcessor failureProcessor() {
+        return failureProcessor;
+    }
+}
diff --git 
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/util/SharedLogStorageManagerUtils.java
 
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/util/SharedLogStorageManagerUtils.java
index f8917fd16b1..1c770292ae9 100644
--- 
a/modules/raft/src/main/java/org/apache/ignite/internal/raft/util/SharedLogStorageManagerUtils.java
+++ 
b/modules/raft/src/main/java/org/apache/ignite/internal/raft/util/SharedLogStorageManagerUtils.java
@@ -17,13 +17,22 @@
 
 package org.apache.ignite.internal.raft.util;
 
+import java.io.IOException;
 import java.nio.file.Path;
+import org.apache.ignite.internal.failure.FailureManager;
+import org.apache.ignite.internal.failure.FailureProcessor;
+import org.apache.ignite.internal.failure.handlers.NoOpFailureHandler;
 import org.apache.ignite.internal.lang.IgniteSystemProperties;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
 import org.apache.ignite.internal.raft.storage.impl.DefaultLogStorageManager;
+import org.apache.ignite.internal.raft.storage.impl.LogStorageException;
 import org.apache.ignite.internal.raft.storage.impl.RocksDbLogStorageOptions;
 import org.apache.ignite.internal.raft.storage.logit.LogitLogStorageManager;
+import 
org.apache.ignite.internal.raft.storage.segstore.SegmentLogStorageManager;
+import 
org.apache.ignite.internal.raft.storage.segstore.SegmentLogStorageOptions;
 import org.apache.ignite.raft.jraft.storage.logit.option.StoreOptions;
+import org.jetbrains.annotations.Nullable;
 import org.jetbrains.annotations.TestOnly;
 
 /** Utility methods for creating {@link LogStorageManager}is for the Shared 
Log. */
@@ -41,36 +50,48 @@ public class SharedLogStorageManagerUtils {
      * LOGIT_STORAGE_ENABLED_PROPERTY and fsync set to true.
      */
     @TestOnly
-    public static LogStorageManager create(String nodeName, Path 
logStoragePath) {
-        return create("test", nodeName, logStoragePath, true);
-    }
+    public static LogStorageManager create(String nodeName, Path 
logStoragePath, LogStorageConfiguration logStorageConfig) {
+        var segmentLogStorageOptions = new SegmentLogStorageOptions(1, 
logStorageConfig, new FailureManager(new NoOpFailureHandler()));
 
-    /**
-     * Creates a LogStorageManager with {@link DefaultLogStorageManager} or 
{@link LogitLogStorageManager} implementation depending on
-     * LOGIT_STORAGE_ENABLED_PROPERTY.
-     */
-    public static LogStorageManager create(
-            String factoryName,
-            String nodeName,
-            Path logStoragePath,
-            boolean fsync
-    ) {
-        return create(factoryName, nodeName, logStoragePath, fsync, 
RocksDbLogStorageOptions.defaults());
+        return create("test", nodeName, logStoragePath, true, 
RocksDbLogStorageOptions.defaults(), segmentLogStorageOptions);
     }
 
     /**
-     * Creates a LogStorageManager with {@link DefaultLogStorageManager} or 
{@link LogitLogStorageManager} implementation depending on
-     * LOGIT_STORAGE_ENABLED_PROPERTY.
+     * Creates a LogStorageManager with {@link SegmentLogStorageManager}, 
{@link DefaultLogStorageManager} or {@link LogitLogStorageManager}
+     * implementation depending on SEGSTORE_ENABLED_PROPERTY / 
LOGIT_STORAGE_ENABLED_PROPERTY.
      */
     public static LogStorageManager create(
             String factoryName,
             String nodeName,
             Path logStoragePath,
             boolean fsync,
-            RocksDbLogStorageOptions specificOptions
+            RocksDbLogStorageOptions rocksDbStoreSpecificOptions,
+            @Nullable SegmentLogStorageOptions segmentStoreSpecificOptions
     ) {
-        return 
IgniteSystemProperties.getBoolean(LOGIT_STORAGE_ENABLED_PROPERTY, 
LOGIT_STORAGE_ENABLED_PROPERTY_DEFAULT)
-                ? new LogitLogStorageManager(nodeName, new StoreOptions(), 
logStoragePath)
-                : new DefaultLogStorageManager(factoryName, nodeName, 
logStoragePath, fsync, specificOptions);
+        if (!IgniteSystemProperties.segmentLogStorageEnabled()) {
+            return 
IgniteSystemProperties.getBoolean(LOGIT_STORAGE_ENABLED_PROPERTY, 
LOGIT_STORAGE_ENABLED_PROPERTY_DEFAULT)
+                    ? new LogitLogStorageManager(nodeName, new StoreOptions(), 
logStoragePath)
+                    : new DefaultLogStorageManager(factoryName, nodeName, 
logStoragePath, fsync, rocksDbStoreSpecificOptions);
+        }
+
+        assert segmentStoreSpecificOptions != null;
+
+        int stripes = segmentStoreSpecificOptions.stripes();
+        LogStorageConfiguration storageConfiguration = 
segmentStoreSpecificOptions.configuration();
+        FailureProcessor failureProcessor = 
segmentStoreSpecificOptions.failureProcessor();
+
+        try {
+            return new SegmentLogStorageManager(
+                    nodeName,
+                    factoryName,
+                    logStoragePath,
+                    stripes,
+                    failureProcessor,
+                    fsync,
+                    storageConfiguration
+            );
+        } catch (IOException e) {
+            throw new LogStorageException("Couldn't create 
SegmentLogStorageManager", e);
+        }
     }
 }
diff --git 
a/modules/raft/src/test/java/org/apache/ignite/internal/raft/LozaTest.java 
b/modules/raft/src/test/java/org/apache/ignite/internal/raft/LozaTest.java
index 769b6bcc732..bb30a475c9b 100644
--- a/modules/raft/src/test/java/org/apache/ignite/internal/raft/LozaTest.java
+++ b/modules/raft/src/test/java/org/apache/ignite/internal/raft/LozaTest.java
@@ -35,6 +35,7 @@ import org.apache.ignite.internal.network.ClusterService;
 import org.apache.ignite.internal.network.InternalClusterNode;
 import org.apache.ignite.internal.network.MessagingService;
 import org.apache.ignite.internal.network.TopologyService;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.server.RaftGroupOptions;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -65,6 +66,9 @@ public class LozaTest extends IgniteAbstractTest {
     @InjectConfiguration
     private SystemLocalConfiguration systemLocalConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     /**
      * Checks that the all API methods throw the exception ({@link 
NodeStoppingException})
      * when Loza is closed.
@@ -79,7 +83,8 @@ public class LozaTest extends IgniteAbstractTest {
 
         LogStorageManager logStorageManager = 
SharedLogStorageManagerUtils.create(
                 clusterNetSvc.staticLocalNode().name(),
-                workDir.resolve("partitions/log")
+                workDir.resolve("partitions/log"),
+                logStorageConfiguration
         );
 
         assertThat(logStorageManager.startAsync(new ComponentContext()), 
willCompleteSuccessfully());
diff --git 
a/modules/raft/src/test/java/org/apache/ignite/internal/raft/client/PhysicalTopologyAwareRaftGroupServiceTest.java
 
b/modules/raft/src/test/java/org/apache/ignite/internal/raft/client/PhysicalTopologyAwareRaftGroupServiceTest.java
index cc57c406b21..22ffb11dcdc 100644
--- 
a/modules/raft/src/test/java/org/apache/ignite/internal/raft/client/PhysicalTopologyAwareRaftGroupServiceTest.java
+++ 
b/modules/raft/src/test/java/org/apache/ignite/internal/raft/client/PhysicalTopologyAwareRaftGroupServiceTest.java
@@ -56,6 +56,7 @@ import org.apache.ignite.internal.raft.PeersAndLearners;
 import org.apache.ignite.internal.raft.RaftNodeId;
 import org.apache.ignite.internal.raft.StoppingExceptionFactories;
 import org.apache.ignite.internal.raft.TestRaftGroupListener;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.server.RaftGroupOptions;
 import org.apache.ignite.internal.raft.server.TestJraftServerFactory;
@@ -109,6 +110,9 @@ public class PhysicalTopologyAwareRaftGroupServiceTest 
extends IgniteAbstractTes
     @InjectConfiguration
     private RaftConfiguration raftConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     @AfterEach
     public void afterTest() throws Exception {
         stopCluster();
@@ -420,7 +424,8 @@ public class PhysicalTopologyAwareRaftGroupServiceTest 
extends IgniteAbstractTes
 
                 LogStorageManager partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(
                         cluster.staticLocalNode().name(),
-                        workingDir.resolve("log")
+                        workingDir.resolve("log"),
+                        logStorageConfiguration
                 );
 
                 logStorageFactories.put(addr, partitionsLogStorageManager);
diff --git 
a/modules/raft/src/test/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageManagerConvertNodeIdTest.java
 
b/modules/raft/src/test/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageManagerConvertNodeIdTest.java
new file mode 100644
index 00000000000..70a06cd9f4a
--- /dev/null
+++ 
b/modules/raft/src/test/java/org/apache/ignite/internal/raft/storage/segstore/SegmentLogStorageManagerConvertNodeIdTest.java
@@ -0,0 +1,158 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.internal.raft.storage.segstore;
+
+import static 
org.apache.ignite.internal.raft.storage.segstore.SegmentLogStorageManager.CMG_GROUP_ID;
+import static 
org.apache.ignite.internal.raft.storage.segstore.SegmentLogStorageManager.METASTORAGE_GROUP_ID;
+import static 
org.apache.ignite.internal.raft.storage.segstore.SegmentLogStorageManager.SPECIAL_GROUP_ID_OFFSET;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.greaterThan;
+import static org.hamcrest.Matchers.hasSize;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.not;
+
+import java.util.HashSet;
+import java.util.Set;
+import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
+import org.junit.jupiter.api.Test;
+
+class SegmentLogStorageManagerConvertNodeIdTest extends BaseIgniteAbstractTest 
{
+    private static final String METASTORAGE_GROUP = "metastorage_group";
+
+    private static final String CMG_GROUP = "cmg_group";
+
+    private static final String PART_SEPARATOR = "_part_";
+
+    private static final String PEER_SEPARATOR = "-";
+
+    private static String partitionNodeId(int objectId, int partitionId, int 
peerIdx) {
+        return objectId + PART_SEPARATOR + partitionId + PEER_SEPARATOR + 
peerIdx;
+    }
+
+    private static String metastorageNodeId(int peerIdx) {
+        return METASTORAGE_GROUP + PEER_SEPARATOR + peerIdx;
+    }
+
+    private static String cmgNodeId(int peerIdx) {
+        return CMG_GROUP + PEER_SEPARATOR + peerIdx;
+    }
+
+    @Test
+    void metastorageGroup() {
+        assertThat(convertNodeId(metastorageNodeId(0)), 
equalTo(METASTORAGE_GROUP_ID));
+        assertThat(convertNodeId(metastorageNodeId(1)), 
equalTo(METASTORAGE_GROUP_ID));
+    }
+
+    @Test
+    void cmgGroup() {
+        assertThat(convertNodeId(cmgNodeId(0)), equalTo(CMG_GROUP_ID));
+        assertThat(convertNodeId(cmgNodeId(1)), equalTo(CMG_GROUP_ID));
+    }
+
+    @Test
+    void zeroPartitionGroupId() {
+        assertThat(convertNodeId(partitionNodeId(0, 0, 0)), 
equalTo(SPECIAL_GROUP_ID_OFFSET));
+    }
+
+    @Test
+    void partitionGroup() {
+        long result = convertNodeId(partitionNodeId(42, 7, 0));
+        assertThat(result, equalTo((42L << 32 | 7) + SPECIAL_GROUP_ID_OFFSET));
+        assertThat(result, greaterThan(0L));
+    }
+
+    @Test
+    void partitionGroupMaxObjectId() {
+        long result = convertNodeId(partitionNodeId(Integer.MAX_VALUE, 0, 0));
+        assertThat(result, equalTo(((long) Integer.MAX_VALUE << 32) + 
SPECIAL_GROUP_ID_OFFSET));
+        assertThat(result, greaterThan(0L));
+    }
+
+    @Test
+    void partitionGroupMaxPartitionId() {
+        long result = convertNodeId(partitionNodeId(0, Integer.MAX_VALUE, 0));
+        assertThat(result, equalTo(Integer.toUnsignedLong(Integer.MAX_VALUE) + 
SPECIAL_GROUP_ID_OFFSET));
+        assertThat(result, greaterThan(0L));
+    }
+
+    @Test
+    void partitionGroupMaxBothIds() {
+        long result = convertNodeId(partitionNodeId(Integer.MAX_VALUE, 
Integer.MAX_VALUE, 0));
+        assertThat(result, equalTo(((long) Integer.MAX_VALUE << 32 | 
Integer.toUnsignedLong(Integer.MAX_VALUE)) + SPECIAL_GROUP_ID_OFFSET));
+        assertThat(result, greaterThan(0L));
+    }
+
+    @Test
+    void peerIndexIgnoredForPartitionGroups() {
+        long result0 = convertNodeId(partitionNodeId(10, 5, 0));
+        long result1 = convertNodeId(partitionNodeId(10, 5, 1));
+        long result99 = convertNodeId(partitionNodeId(10, 5, 99));
+        assertThat(result0, equalTo(result1));
+        assertThat(result0, equalTo(result99));
+        assertThat(result0, greaterThan(0L));
+    }
+
+    @Test
+    void differentPartitionGroupsProduceUniqueIds() {
+        Set<Long> ids = new HashSet<>();
+        for (int objectId = 0; objectId < 1000; objectId++) {
+            for (int partId = 0; partId < 1000; partId++) {
+                long id = convertNodeId(partitionNodeId(objectId, partId, 0));
+                assertThat(ids.add(id), is(true));
+            }
+        }
+    }
+
+    @Test
+    void specialGroupsDoNotCollideWithPartitionGroups() {
+        long meta = convertNodeId(metastorageNodeId(0));
+        long cmg = convertNodeId(cmgNodeId(0));
+        long partition = convertNodeId(partitionNodeId(0, 0, 0));
+
+        assertThat(meta, not(equalTo(cmg)));
+        assertThat(meta, not(equalTo(partition)));
+        assertThat(cmg, not(equalTo(partition)));
+    }
+
+    @Test
+    void invalidIdsFallsThrough() {
+        // Missing peer index is a bug — IDs without it should not match any 
known group.
+        long metaNoSuffix = convertNodeId(METASTORAGE_GROUP);
+        long cmgNoSuffix = convertNodeId(CMG_GROUP);
+        long partNoSuffix = convertNodeId("5" + PART_SEPARATOR + "3");
+        long noHyphen = convertNodeId("some_random_string");
+        long unknownWithPeer = convertNodeId("unknown_group" + PEER_SEPARATOR 
+ 0);
+
+        assertThat(metaNoSuffix, not(equalTo(METASTORAGE_GROUP_ID)));
+        assertThat(cmgNoSuffix, not(equalTo(CMG_GROUP_ID)));
+        assertThat(partNoSuffix, not(equalTo((5L << 32 | 3) + 
SPECIAL_GROUP_ID_OFFSET)));
+
+        // Must be unique and positive.
+        Set<Long> ids = Set.of(metaNoSuffix, cmgNoSuffix, partNoSuffix, 
noHyphen, unknownWithPeer);
+
+        assertThat(ids, hasSize(5));
+        for (long id : ids) {
+            assertThat(id, greaterThan(0L));
+        }
+    }
+
+    private static long convertNodeId(String nodeId) {
+        return SegmentLogStorageManager.convertNodeId(nodeId);
+    }
+}
diff --git 
a/modules/replicator/src/integrationTest/java/org/apache/ignite/internal/replicator/ItPlacementDriverReplicaSideTest.java
 
b/modules/replicator/src/integrationTest/java/org/apache/ignite/internal/replicator/ItPlacementDriverReplicaSideTest.java
index 92484f02a39..cf8542f7aba 100644
--- 
a/modules/replicator/src/integrationTest/java/org/apache/ignite/internal/replicator/ItPlacementDriverReplicaSideTest.java
+++ 
b/modules/replicator/src/integrationTest/java/org/apache/ignite/internal/replicator/ItPlacementDriverReplicaSideTest.java
@@ -91,6 +91,7 @@ import org.apache.ignite.internal.raft.TestLozaFactory;
 import org.apache.ignite.internal.raft.TestRaftGroupListener;
 import org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupService;
 import 
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.service.RaftCommandRunner;
 import org.apache.ignite.internal.raft.service.RaftGroupService;
@@ -139,6 +140,9 @@ public class ItPlacementDriverReplicaSideTest extends 
IgniteAbstractTest {
     @InjectConfiguration
     private ReplicationConfiguration replicationConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     private final HybridClock clock = new HybridClockImpl();
 
     private final ClockService testClockService = new TestClockService(clock);
@@ -196,7 +200,8 @@ public class ItPlacementDriverReplicaSideTest extends 
IgniteAbstractTest {
 
             LogStorageManager partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(
                     clusterService.staticLocalNode().name(),
-                    partitionsWorkDir.raftLogPath()
+                    partitionsWorkDir.raftLogPath(),
+                    logStorageConfiguration
             );
 
             RaftGroupOptionsConfigurer partitionsConfigurer =
diff --git 
a/modules/replicator/src/testFixtures/java/org/apache/ignite/internal/raft/client/AbstractTopologyAwareGroupServiceTest.java
 
b/modules/replicator/src/testFixtures/java/org/apache/ignite/internal/raft/client/AbstractTopologyAwareGroupServiceTest.java
index 6b95d509dbc..a934c7cebe5 100644
--- 
a/modules/replicator/src/testFixtures/java/org/apache/ignite/internal/raft/client/AbstractTopologyAwareGroupServiceTest.java
+++ 
b/modules/replicator/src/testFixtures/java/org/apache/ignite/internal/raft/client/AbstractTopologyAwareGroupServiceTest.java
@@ -58,6 +58,7 @@ import org.apache.ignite.internal.raft.PeersAndLearners;
 import org.apache.ignite.internal.raft.RaftNodeId;
 import org.apache.ignite.internal.raft.StoppingExceptionFactories;
 import org.apache.ignite.internal.raft.TestRaftGroupListener;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.server.RaftGroupOptions;
 import org.apache.ignite.internal.raft.server.TestJraftServerFactory;
@@ -117,6 +118,9 @@ public abstract class AbstractTopologyAwareGroupServiceTest 
extends IgniteAbstra
     @InjectConfiguration
     protected RaftConfiguration raftConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     @AfterEach
     protected void tearDown() throws Exception {
         IgniteUtils.shutdownAndAwaitTermination(executor, 10, 
TimeUnit.SECONDS);
@@ -477,7 +481,8 @@ public abstract class AbstractTopologyAwareGroupServiceTest 
extends IgniteAbstra
 
                 LogStorageManager partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(
                         cluster.staticLocalNode().name(),
-                        workingDir.resolve("log")
+                        workingDir.resolve("log"),
+                        logStorageConfiguration
                 );
 
                 logStorageFactories.put(addr, partitionsLogStorageManager);
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ItTruncateRaftLogAndRestartNodesTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ItTruncateRaftLogAndRestartNodesTest.java
index 83e14a4db01..a92e25f105e 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ItTruncateRaftLogAndRestartNodesTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ItTruncateRaftLogAndRestartNodesTest.java
@@ -50,10 +50,13 @@ import java.util.stream.IntStream;
 import org.apache.ignite.internal.app.IgniteImpl;
 import org.apache.ignite.internal.binarytuple.BinaryTupleReader;
 import org.apache.ignite.internal.close.ManuallyCloseable;
+import 
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
+import 
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
 import org.apache.ignite.internal.logger.IgniteLogger;
 import org.apache.ignite.internal.logger.Loggers;
 import org.apache.ignite.internal.manager.ComponentContext;
 import org.apache.ignite.internal.network.InternalClusterNode;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
 import org.apache.ignite.internal.raft.storage.impl.IgniteJraftServiceFactory;
 import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
@@ -82,12 +85,14 @@ import org.apache.ignite.raft.jraft.storage.LogStorage;
 import org.apache.ignite.tx.TransactionOptions;
 import org.hamcrest.Matchers;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 
 /**
  * Class for testing various scenarios with raft log truncation and node 
restarts that emulate the situation with fsync disabled for raft
  * groups associated with tables.
  */
 // TODO: IGNITE-25501 Fix partition state after snapshot
+@ExtendWith(ConfigurationExtension.class)
 public class ItTruncateRaftLogAndRestartNodesTest extends 
ClusterPerTestIntegrationTest {
     private static final IgniteLogger LOG = 
Loggers.forClass(ItTruncateRaftLogAndRestartNodesTest.class);
 
@@ -95,6 +100,9 @@ public class ItTruncateRaftLogAndRestartNodesTest extends 
ClusterPerTestIntegrat
 
     private static final String TABLE_NAME = "TEST_TABLE";
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     @Override
     protected int initialNodes() {
         return 0;
@@ -216,7 +224,8 @@ public class ItTruncateRaftLogAndRestartNodesTest extends 
ClusterPerTestIntegrat
 
         LogStorageManager logStorageManager = 
SharedLogStorageManagerUtils.create(
                 ignite.name(),
-                ignite.partitionsWorkDir().raftLogPath()
+                ignite.partitionsWorkDir().raftLogPath(),
+                logStorageConfiguration
         );
 
         NodeImpl nodeImpl = raftNodeImpl(nodeIndex, replicationGroupId);
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/ItDistributedConfigurationPropertiesTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/ItDistributedConfigurationPropertiesTest.java
index 3793d4f3ae1..4f0873c137d 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/ItDistributedConfigurationPropertiesTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/ItDistributedConfigurationPropertiesTest.java
@@ -73,6 +73,7 @@ import 
org.apache.ignite.internal.network.utils.ClusterServiceTestUtils;
 import org.apache.ignite.internal.raft.Loza;
 import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
 import org.apache.ignite.internal.raft.TestLozaFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
 import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
@@ -107,6 +108,9 @@ public class ItDistributedConfigurationPropertiesTest 
extends BaseIgniteAbstract
     @InjectConfiguration
     private static RaftConfiguration raftConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     @InjectConfiguration
     private static NodeAttributesConfiguration nodeAttributes;
 
@@ -178,7 +182,7 @@ public class ItDistributedConfigurationPropertiesTest 
extends BaseIgniteAbstract
 
             String nodeName = clusterService.staticLocalNode().name();
 
-            partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
+            partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(), 
logStorageConfiguration);
 
             raftManager = TestLozaFactory.create(
                     clusterService,
@@ -201,7 +205,7 @@ public class ItDistributedConfigurationPropertiesTest 
extends BaseIgniteAbstract
 
             ComponentWorkingDir cmgWorkDir = new 
ComponentWorkingDir(workDir.resolve("cmg"));
 
-            cmgLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath());
+            cmgLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath(), 
logStorageConfiguration);
 
             RaftGroupOptionsConfigurer cmgRaftConfigurer =
                     
RaftGroupOptionsConfigHelper.configureProperties(cmgLogStorageManager, 
cmgWorkDir.metaPath());
@@ -234,7 +238,7 @@ public class ItDistributedConfigurationPropertiesTest 
extends BaseIgniteAbstract
 
             ComponentWorkingDir metastorageWorkDir = new 
ComponentWorkingDir(workDir.resolve("metastorage"));
 
-            msLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath());
+            msLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath(), 
logStorageConfiguration);
 
             RaftGroupOptionsConfigurer msRaftConfigurer =
                     
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager, 
metastorageWorkDir.metaPath());
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/storage/ItDistributedConfigurationStorageTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/storage/ItDistributedConfigurationStorageTest.java
index 70c534ef163..d94f546ca81 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/storage/ItDistributedConfigurationStorageTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/configuration/storage/ItDistributedConfigurationStorageTest.java
@@ -67,6 +67,7 @@ import 
org.apache.ignite.internal.network.utils.ClusterServiceTestUtils;
 import org.apache.ignite.internal.raft.Loza;
 import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
 import org.apache.ignite.internal.raft.TestLozaFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
 import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
@@ -91,6 +92,9 @@ public class ItDistributedConfigurationStorageTest extends 
BaseIgniteAbstractTes
     @InjectConfiguration
     private static RaftConfiguration raftConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     @InjectConfiguration
     private static NodeAttributesConfiguration nodeAttributes;
 
@@ -152,7 +156,7 @@ public class ItDistributedConfigurationStorageTest extends 
BaseIgniteAbstractTes
 
             String nodeName = clusterService.staticLocalNode().name();
 
-            partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath());
+            partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, workingDir.raftLogPath(), 
logStorageConfiguration);
 
             raftManager = TestLozaFactory.create(
                     clusterService,
@@ -175,7 +179,7 @@ public class ItDistributedConfigurationStorageTest extends 
BaseIgniteAbstractTes
 
             ComponentWorkingDir cmgWorkDir = new 
ComponentWorkingDir(workDir.resolve("cmg"));
 
-            cmgLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath());
+            cmgLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath(), 
logStorageConfiguration);
 
             RaftGroupOptionsConfigurer cmgRaftConfigurer =
                     
RaftGroupOptionsConfigHelper.configureProperties(cmgLogStorageManager, 
cmgWorkDir.metaPath());
@@ -208,7 +212,7 @@ public class ItDistributedConfigurationStorageTest extends 
BaseIgniteAbstractTes
 
             ComponentWorkingDir metastorageWorkDir = new 
ComponentWorkingDir(workDir.resolve("metastorage"));
 
-            msLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath());
+            msLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath(), 
logStorageConfiguration);
 
             RaftGroupOptionsConfigurer msRaftConfigurer =
                     
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager, 
metastorageWorkDir.metaPath());
diff --git 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
index 249941496f1..b35f59aaae1 100644
--- 
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
+++ 
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
@@ -182,6 +182,7 @@ import 
org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
 import org.apache.ignite.internal.raft.RaftNodeId;
 import org.apache.ignite.internal.raft.TestLozaFactory;
 import 
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.server.impl.JraftServerImpl;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
@@ -289,6 +290,9 @@ public class ItIgniteNodeRestartTest extends 
BaseIgniteRestartTest {
     @InjectConfiguration("mock: " + RAFT_CFG)
     private static RaftConfiguration raftConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     @InjectConfiguration
     private static SystemLocalConfiguration systemConfiguration;
 
@@ -425,7 +429,8 @@ public class ItIgniteNodeRestartTest extends 
BaseIgniteRestartTest {
 
         String nodeName = clusterSvc.staticLocalNode().name();
 
-        LogStorageManager partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, partitionsWorkDir.raftLogPath());
+        LogStorageManager partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, partitionsWorkDir.raftLogPath(),
+                logStorageConfiguration);
 
         LogSyncer partitionsLogSyncer = 
partitionsLogStorageManager.logSyncer();
 
@@ -450,7 +455,8 @@ public class ItIgniteNodeRestartTest extends 
BaseIgniteRestartTest {
 
         ComponentWorkingDir cmgWorkDir = new 
ComponentWorkingDir(workDir.resolve("cmg"));
 
-        LogStorageManager cmgLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath());
+        LogStorageManager cmgLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, cmgWorkDir.raftLogPath(),
+                logStorageConfiguration);
 
         RaftGroupOptionsConfigurer cmgRaftConfigurer =
                 
RaftGroupOptionsConfigHelper.configureProperties(cmgLogStorageManager, 
cmgWorkDir.metaPath());
@@ -512,7 +518,8 @@ public class ItIgniteNodeRestartTest extends 
BaseIgniteRestartTest {
 
         ComponentWorkingDir metastorageWorkDir = new 
ComponentWorkingDir(workDir.resolve("metastorage"));
 
-        LogStorageManager msLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath());
+        LogStorageManager msLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, metastorageWorkDir.raftLogPath(),
+                logStorageConfiguration);
 
         RaftGroupOptionsConfigurer msRaftConfigurer =
                 
RaftGroupOptionsConfigHelper.configureProperties(msLogStorageManager, 
metastorageWorkDir.metaPath());
diff --git 
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java 
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
index 362f1b677ee..afe9e7d4cd0 100644
--- 
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
+++ 
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
@@ -155,6 +155,7 @@ import org.apache.ignite.internal.index.IndexManager;
 import org.apache.ignite.internal.index.IndexNodeFinishedRwTransactionsChecker;
 import org.apache.ignite.internal.lang.IgniteInternalException;
 import org.apache.ignite.internal.lang.IgniteStringBuilder;
+import org.apache.ignite.internal.lang.IgniteSystemProperties;
 import org.apache.ignite.internal.lang.NodeStoppingException;
 import org.apache.ignite.internal.logger.IgniteLogger;
 import org.apache.ignite.internal.logger.Loggers;
@@ -206,6 +207,7 @@ import org.apache.ignite.internal.raft.Loza;
 import org.apache.ignite.internal.raft.Marshaller;
 import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
 import 
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
+import 
org.apache.ignite.internal.raft.configuration.LogStorageExtensionConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import 
org.apache.ignite.internal.raft.configuration.RaftExtensionConfiguration;
 import 
org.apache.ignite.internal.raft.server.impl.GroupStoragesContextResolver;
@@ -214,6 +216,7 @@ import 
org.apache.ignite.internal.raft.storage.LogStorageManager;
 import org.apache.ignite.internal.raft.storage.impl.RocksDbLogStorageOptions;
 import 
org.apache.ignite.internal.raft.storage.impl.VaultGroupStoragesDestructionIntents;
 import 
org.apache.ignite.internal.raft.storage.impl.VolatileLogStorageManagerCreator;
+import 
org.apache.ignite.internal.raft.storage.segstore.SegmentLogStorageOptions;
 import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
 import org.apache.ignite.internal.replicator.PartitionGroupId;
 import org.apache.ignite.internal.replicator.ReplicaManager;
@@ -669,6 +672,8 @@ public class IgniteImpl implements Ignite {
 
         partitionsWorkDir = partitionsPath(systemConfiguration, workDir);
 
+        SegmentLogStorageOptions segstoreSpecificOptions = 
getSegmentLogStorageOptions(raftConfiguration);
+
         InternalClusterNode localNode = clusterSvc.staticLocalNode();
 
         partitionsLogStorageManager = SharedLogStorageManagerUtils.create(
@@ -676,7 +681,8 @@ public class IgniteImpl implements Ignite {
                 localNode.name(),
                 partitionsWorkDir.raftLogPath(),
                 raftConfiguration.fsync().value(),
-                
RocksDbLogStorageOptions.forPartitions(systemConfiguration.value())
+                
RocksDbLogStorageOptions.forPartitions(systemConfiguration.value()),
+                segstoreSpecificOptions
         );
 
         LogSyncer partitionsLogSyncer = 
partitionsLogStorageManager.logSyncer();
@@ -688,14 +694,18 @@ public class IgniteImpl implements Ignite {
                 localNode.name(),
                 metastorageWorkDir.raftLogPath(),
                 // If it changes, then it will be necessary to set LogSyncer 
to RocksDbKeyValueStorage.
-                true
+                true,
+                RocksDbLogStorageOptions.defaults(),
+                segstoreSpecificOptions
         );
 
         cmgLogStorageManager = SharedLogStorageManagerUtils.create(
                 "cluster-management-group log",
                 localNode.name(),
                 cmgWorkDir.raftLogPath(),
-                true
+                true,
+                RocksDbLogStorageOptions.defaults(),
+                segstoreSpecificOptions
         );
 
         RaftGroupOptionsConfigurer cmgRaftConfigurer =
@@ -1385,6 +1395,20 @@ public class IgniteImpl implements Ignite {
         publicCluster = new PublicApiThreadingIgniteCluster(new 
IgniteClusterImpl(clusterSvc.topologyService(), clusterIdService));
     }
 
+    private @Nullable SegmentLogStorageOptions 
getSegmentLogStorageOptions(RaftConfiguration raftConfiguration) {
+        if (!IgniteSystemProperties.segmentLogStorageEnabled()) {
+            return null;
+        }
+
+        LogStorageExtensionConfiguration logStorageConfig = 
nodeConfigRegistry.getConfiguration(LogStorageExtensionConfiguration.KEY);
+
+        return new SegmentLogStorageOptions(
+                raftConfiguration.disruptor().logManagerStripes().value(),
+                logStorageConfig.logStorage(),
+                failureManager
+        );
+    }
+
     private JobScopedIgnite createJobScopedIgnite(HybridTimestampTracker 
tracker) {
         return new JobScopedIgnite(this, tracker, txManager, sql, 
asyncContinuationExecutor);
     }
diff --git 
a/modules/runner/src/test/java/org/apache/ignite/internal/metrics/logstorage/LogStorageMetricsTest.java
 
b/modules/runner/src/test/java/org/apache/ignite/internal/metrics/logstorage/LogStorageMetricsTest.java
index ae4bf37db4f..6409e1d4b85 100644
--- 
a/modules/runner/src/test/java/org/apache/ignite/internal/metrics/logstorage/LogStorageMetricsTest.java
+++ 
b/modules/runner/src/test/java/org/apache/ignite/internal/metrics/logstorage/LogStorageMetricsTest.java
@@ -30,13 +30,17 @@ import java.nio.ByteBuffer;
 import java.nio.file.Path;
 import java.util.Random;
 import java.util.concurrent.CompletableFuture;
+import 
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
+import 
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
 import org.apache.ignite.internal.manager.ComponentContext;
 import org.apache.ignite.internal.metrics.LongGauge;
 import org.apache.ignite.internal.metrics.TestMetricManager;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
 import 
org.apache.ignite.internal.raft.storage.impl.VolatileLogStorageManagerCreator;
 import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
 import org.apache.ignite.internal.replicator.ZonePartitionId;
+import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
 import org.apache.ignite.internal.testframework.WorkDirectory;
 import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
 import org.apache.ignite.raft.jraft.conf.ConfigurationManager;
@@ -54,7 +58,8 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(WorkDirectoryExtension.class)
-class LogStorageMetricsTest {
+@ExtendWith(ConfigurationExtension.class)
+class LogStorageMetricsTest extends BaseIgniteAbstractTest {
     @WorkDirectory
     private Path workDir;
 
@@ -72,6 +77,9 @@ class LogStorageMetricsTest {
 
     private final LogStorageOptions logStorageOptions = new 
LogStorageOptions();
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     @BeforeEach
     void setUp() {
         logStorageOptions.setConfigurationManager(new ConfigurationManager());
@@ -79,9 +87,10 @@ class LogStorageMetricsTest {
 
         String nodeName = "test";
 
-        cmgLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, 
workDir.resolve("cmg"));
-        metastorageLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, workDir.resolve("metastorage"));
-        partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, workDir.resolve("partitions"));
+        cmgLogStorageManager = SharedLogStorageManagerUtils.create(nodeName, 
workDir.resolve("cmg"), logStorageConfiguration);
+        metastorageLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, workDir.resolve("metastorage"),
+                logStorageConfiguration);
+        partitionsLogStorageManager = 
SharedLogStorageManagerUtils.create(nodeName, workDir.resolve("partitions"), 
logStorageConfiguration);
 
         volatileLogStorageManagerCreator = new 
VolatileLogStorageManagerCreator(nodeName, workDir.resolve("spillout"));
 
diff --git 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItLockTableTest.java
 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItLockTableTest.java
index d144d5c037b..024a2d6aee9 100644
--- 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItLockTableTest.java
+++ 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItLockTableTest.java
@@ -37,6 +37,7 @@ import org.apache.ignite.internal.metrics.NoOpMetricManager;
 import org.apache.ignite.internal.network.ClusterService;
 import org.apache.ignite.internal.network.InternalClusterNode;
 import org.apache.ignite.internal.placementdriver.PlacementDriver;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.replicator.ReplicaService;
 import 
org.apache.ignite.internal.replicator.configuration.ReplicationConfiguration;
@@ -107,6 +108,9 @@ public class ItLockTableTest extends IgniteAbstractTest {
     @InjectConfiguration("mock.properties.txnLockRetryCount=\"0\"")
     private static SystemDistributedConfiguration 
systemDistributedConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     @InjectExecutorService
     protected ScheduledExecutorService commonExecutor;
 
@@ -128,6 +132,7 @@ public class ItLockTableTest extends IgniteAbstractTest {
         txTestCluster = new ItTxTestCluster(
                 testInfo,
                 raftConfiguration,
+                logStorageConfiguration,
                 txConfiguration,
                 systemLocalConfiguration,
                 systemDistributedConfiguration,
diff --git 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedCleanupRecoveryTest.java
 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedCleanupRecoveryTest.java
index 687607680eb..3263f8697be 100644
--- 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedCleanupRecoveryTest.java
+++ 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedCleanupRecoveryTest.java
@@ -18,16 +18,23 @@
 package org.apache.ignite.distributed;
 
 import java.util.concurrent.atomic.AtomicInteger;
+import 
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
+import 
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
 import org.apache.ignite.internal.network.DefaultMessagingService;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.table.TxAbstractTest;
 import org.apache.ignite.internal.tx.message.TxCleanupMessage;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.TestInfo;
+import org.junit.jupiter.api.extension.ExtendWith;
 
 /**
  * Durable cleanup test with successful recovery after the failures.
  */
+@ExtendWith(ConfigurationExtension.class)
 public class ItTxDistributedCleanupRecoveryTest extends TxAbstractTest {
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
 
     private AtomicInteger defaultRetryCount;
 
@@ -52,6 +59,7 @@ public class ItTxDistributedCleanupRecoveryTest extends 
TxAbstractTest {
         txTestCluster = new ItTxTestCluster(
                 testInfo,
                 raftConfiguration,
+                logStorageConfiguration,
                 txConfiguration,
                 systemLocalConfiguration,
                 systemDistributedConfiguration,
diff --git 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNodeNoCleanupMessage.java
 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNodeNoCleanupMessage.java
index 2bf11c528c6..edbe8090dfa 100644
--- 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNodeNoCleanupMessage.java
+++ 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNodeNoCleanupMessage.java
@@ -50,6 +50,7 @@ import 
org.apache.ignite.internal.partition.replicator.FuturesCleanupResult;
 import org.apache.ignite.internal.partition.replicator.ReplicaPrimacy;
 import 
org.apache.ignite.internal.partition.replicator.schema.ValidationSchemasSource;
 import org.apache.ignite.internal.placementdriver.PlacementDriver;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.service.RaftGroupService;
 import org.apache.ignite.internal.replicator.ReplicaResult;
 import org.apache.ignite.internal.replicator.ReplicaService;
@@ -100,6 +101,9 @@ public class ItTxDistributedTestSingleNodeNoCleanupMessage 
extends TxAbstractTes
     @InjectConfiguration
     private SystemLocalConfiguration systemLocalConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     @InjectConfiguration("mock.properties.txnLockRetryCount=\"0\"")
     private SystemDistributedConfiguration systemDistributedConfiguration;
 
@@ -118,6 +122,7 @@ public class ItTxDistributedTestSingleNodeNoCleanupMessage 
extends TxAbstractTes
         txTestCluster = new ItTxTestCluster(
                 testInfo,
                 raftConfiguration,
+                logStorageConfiguration,
                 txConfiguration,
                 systemLocalConfiguration,
                 systemDistributedConfiguration,
diff --git 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxStateLocalMapTest.java
 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxStateLocalMapTest.java
index 4d6487a1bdf..8fe82d92820 100644
--- 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxStateLocalMapTest.java
+++ 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxStateLocalMapTest.java
@@ -36,6 +36,7 @@ import 
org.apache.ignite.internal.configuration.testframework.InjectConfiguratio
 import org.apache.ignite.internal.hlc.HybridTimestamp;
 import org.apache.ignite.internal.hlc.HybridTimestampTracker;
 import org.apache.ignite.internal.network.InternalClusterNode;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import 
org.apache.ignite.internal.replicator.configuration.ReplicationConfiguration;
 import org.apache.ignite.internal.schema.Column;
@@ -67,6 +68,9 @@ public class ItTxStateLocalMapTest extends IgniteAbstractTest 
{
     @InjectConfiguration("mock: { fsync: false }")
     private RaftConfiguration raftConfig;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     @InjectConfiguration
     private TransactionConfiguration txConfiguration;
 
@@ -105,6 +109,7 @@ public class ItTxStateLocalMapTest extends 
IgniteAbstractTest {
         testCluster = new ItTxTestCluster(
                 testInfo,
                 raftConfig,
+                logStorageConfiguration,
                 txConfiguration,
                 systemLocalConfiguration,
                 systemDistributedConfiguration,
diff --git 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ReplicasSafeTimePropagationTest.java
 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ReplicasSafeTimePropagationTest.java
index 2ba059e2b9c..c4676d924c3 100644
--- 
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ReplicasSafeTimePropagationTest.java
+++ 
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ReplicasSafeTimePropagationTest.java
@@ -49,7 +49,9 @@ import 
org.apache.ignite.internal.configuration.ComponentWorkingDir;
 import org.apache.ignite.internal.configuration.SystemLocalConfiguration;
 import 
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
 import 
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
+import org.apache.ignite.internal.failure.FailureManager;
 import org.apache.ignite.internal.failure.NoOpFailureManager;
+import org.apache.ignite.internal.failure.handlers.NoOpFailureHandler;
 import org.apache.ignite.internal.hlc.ClockService;
 import org.apache.ignite.internal.hlc.HybridClock;
 import org.apache.ignite.internal.hlc.HybridTimestamp;
@@ -70,12 +72,15 @@ import 
org.apache.ignite.internal.raft.RaftGroupEventsListener;
 import org.apache.ignite.internal.raft.RaftNodeId;
 import org.apache.ignite.internal.raft.TestLozaFactory;
 import org.apache.ignite.internal.raft.WriteCommand;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.server.RaftGroupOptions;
 import org.apache.ignite.internal.raft.service.CommandClosure;
 import org.apache.ignite.internal.raft.service.LeaderWithTerm;
 import org.apache.ignite.internal.raft.service.RaftGroupService;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
+import org.apache.ignite.internal.raft.storage.impl.RocksDbLogStorageOptions;
+import 
org.apache.ignite.internal.raft.storage.segstore.SegmentLogStorageOptions;
 import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
 import org.apache.ignite.internal.replicator.ZonePartitionId;
 import org.apache.ignite.internal.replicator.message.ReplicaMessagesFactory;
@@ -102,6 +107,9 @@ public class ReplicasSafeTimePropagationTest extends 
IgniteAbstractTest {
     @InjectConfiguration("mock: { fsync: false }")
     private RaftConfiguration raftConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     @InjectConfiguration
     private SystemLocalConfiguration systemLocalConfiguration;
 
@@ -359,7 +367,13 @@ public class ReplicasSafeTimePropagationTest extends 
IgniteAbstractTest {
                     "test",
                     clusterService.staticLocalNode().name(),
                     workingDir.raftLogPath(),
-                    raftConfiguration.fsync().value()
+                    raftConfiguration.fsync().value(),
+                    RocksDbLogStorageOptions.defaults(),
+                    new SegmentLogStorageOptions(
+                            
raftConfiguration.disruptor().logManagerStripes().value(),
+                            logStorageConfiguration,
+                            new FailureManager(new NoOpFailureHandler())
+                    )
             );
 
             assertThat(partitionsLogStorageManager.startAsync(new 
ComponentContext()), willCompleteSuccessfully());
diff --git 
a/modules/table/src/testFixtures/java/org/apache/ignite/distributed/ItTxTestCluster.java
 
b/modules/table/src/testFixtures/java/org/apache/ignite/distributed/ItTxTestCluster.java
index df1c99bbbee..c20ec69e845 100644
--- 
a/modules/table/src/testFixtures/java/org/apache/ignite/distributed/ItTxTestCluster.java
+++ 
b/modules/table/src/testFixtures/java/org/apache/ignite/distributed/ItTxTestCluster.java
@@ -80,7 +80,9 @@ import 
org.apache.ignite.internal.cluster.management.topology.api.LogicalTopolog
 import org.apache.ignite.internal.configuration.RaftGroupOptionsConfigHelper;
 import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
 import org.apache.ignite.internal.configuration.SystemLocalConfiguration;
+import org.apache.ignite.internal.failure.FailureManager;
 import org.apache.ignite.internal.failure.NoOpFailureManager;
+import org.apache.ignite.internal.failure.handlers.NoOpFailureHandler;
 import org.apache.ignite.internal.hlc.ClockService;
 import org.apache.ignite.internal.hlc.ClockWaiter;
 import org.apache.ignite.internal.hlc.HybridClock;
@@ -120,11 +122,14 @@ import 
org.apache.ignite.internal.raft.RaftGroupEventsListener;
 import org.apache.ignite.internal.raft.RaftGroupOptionsConfigurer;
 import org.apache.ignite.internal.raft.TestLozaFactory;
 import 
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.service.RaftGroupListener;
 import org.apache.ignite.internal.raft.service.RaftGroupService;
 import org.apache.ignite.internal.raft.storage.LogStorageManager;
+import org.apache.ignite.internal.raft.storage.impl.RocksDbLogStorageOptions;
 import 
org.apache.ignite.internal.raft.storage.impl.VolatileLogStorageManagerCreator;
+import 
org.apache.ignite.internal.raft.storage.segstore.SegmentLogStorageOptions;
 import org.apache.ignite.internal.raft.util.SharedLogStorageManagerUtils;
 import org.apache.ignite.internal.replicator.Replica;
 import org.apache.ignite.internal.replicator.ReplicaManager;
@@ -215,6 +220,8 @@ public class ItTxTestCluster {
 
     private final RaftConfiguration raftConfig;
 
+    private final LogStorageConfiguration logStorageConfiguration;
+
     private final TransactionConfiguration txConfiguration;
 
     private final SystemLocalConfiguration systemLocalConfig;
@@ -352,6 +359,7 @@ public class ItTxTestCluster {
     public ItTxTestCluster(
             TestInfo testInfo,
             RaftConfiguration raftConfig,
+            LogStorageConfiguration logStorageConfiguration,
             TransactionConfiguration txConfiguration,
             SystemLocalConfiguration systemLocalConfig,
             SystemDistributedConfiguration systemDistributedConfig,
@@ -363,6 +371,7 @@ public class ItTxTestCluster {
             ReplicationConfiguration replicationConfiguration
     ) {
         this.raftConfig = raftConfig;
+        this.logStorageConfiguration = logStorageConfiguration;
         this.txConfiguration = txConfiguration;
         this.systemLocalConfig = systemLocalConfig;
         this.systemDistributedConfig = systemDistributedConfig;
@@ -458,7 +467,13 @@ public class ItTxTestCluster {
                     "test",
                     clusterService.staticLocalNode().name(),
                     partitionsWorkDir.resolve("log"),
-                    raftConfig.fsync().value()
+                    raftConfig.fsync().value(),
+                    RocksDbLogStorageOptions.defaults(),
+                    new SegmentLogStorageOptions(
+                            raftConfig.disruptor().logManagerStripes().value(),
+                            logStorageConfiguration,
+                            new FailureManager(new NoOpFailureHandler())
+                    )
             );
 
             logStorageFactories.put(nodeName, partitionsLogStorageManager);
diff --git 
a/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/TxInfrastructureTest.java
 
b/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/TxInfrastructureTest.java
index cb947cf4627..24f957f0d36 100644
--- 
a/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/TxInfrastructureTest.java
+++ 
b/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/TxInfrastructureTest.java
@@ -44,6 +44,7 @@ import org.apache.ignite.internal.placementdriver.ReplicaMeta;
 import org.apache.ignite.internal.raft.Loza;
 import org.apache.ignite.internal.raft.Peer;
 import org.apache.ignite.internal.raft.RaftNodeId;
+import org.apache.ignite.internal.raft.configuration.LogStorageConfiguration;
 import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
 import org.apache.ignite.internal.raft.server.impl.JraftServerImpl;
 import org.apache.ignite.internal.replicator.ReplicaService;
@@ -116,6 +117,9 @@ public abstract class TxInfrastructureTest extends 
IgniteAbstractTest {
     @InjectConfiguration("mock: { fsync: false }")
     protected RaftConfiguration raftConfiguration;
 
+    @InjectConfiguration
+    private static LogStorageConfiguration logStorageConfiguration;
+
     @InjectConfiguration
     protected SystemLocalConfiguration systemLocalConfiguration;
 
@@ -177,6 +181,7 @@ public abstract class TxInfrastructureTest extends 
IgniteAbstractTest {
         txTestCluster = new ItTxTestCluster(
                 testInfo,
                 raftConfiguration,
+                logStorageConfiguration,
                 txConfiguration,
                 systemLocalConfiguration,
                 systemDistributedConfiguration,

Reply via email to