You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Ignite独立模式启动失败:长路径名致目录创建失败

Apache Ignite独立模式启动失败:页面存储目录路径过长问题解决

问题场景

将Apache Ignite配置为独立模式的写穿透缓存,启动时抛出异常,经排查是Ignite自动生成的页面存储工作目录路径过长,超出Linux系统的路径长度限制,导致无法创建目录。

异常信息

Got exception while starting (will rollback startup routine).
class org.apache.ignite.IgniteCheckedException: Failed to start processor: GridProcessorAdapter []
    at org.apache.ignite.internal.IgniteKernal.startProcessor(IgniteKernal.java:1787)
    at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:1066)
    at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1757)
    at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1679)
    at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1121)
    at org.apache.ignite.internal.IgnitionEx.startConfigurations(IgnitionEx.java:1015)
    at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:921)
    at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:840)
    at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:710)
    at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:679)
    at org.apache.ignite.Ignition.start(Ignition.java:353)
    at org.apache.ignite.startup.cmdline.CommandLineStartup.main(CommandLineStartup.java:365)
Caused by: class org.apache.ignite.IgniteCheckedException: Failed to create page store work directory: /home/user/apache-ignite/work/db/0_0_0_0_0_0_0_1_lo_10_0_0_100_10_0_0_203_10_99_0_5_127_0_0_1_198_18_0_1_198_18_0_129_198_18_0_65_198_18_2_1_2604_3d09_679_2b00_0_0_0_1dc7_wlp0s20f3_2604_3d09_679_2b00_8332_15b9_3cd0_484_wlp0s20f3_2604_3d09_679_2b00_ae91_a1ff_fe7e_63ba_enxac91a17e63ba_2604_3d09_679_2b00_d986_6638_3c47_cd7c_wlp0s20f3_2604_3d09_679_2b00_e8bf_ac63_b39_630e_enxac91a17e63ba_47501
    at org.apache.ignite.internal.util.IgniteUtils.ensureDirectory(IgniteUtils.java:9971)
    at org.apache.ignite.internal.processors.cache.GridLocalConfigManager.<init>(GridLocalConfigManager.java:127)
    at org.apache.ignite.internal.processors.cache.GridCacheProcessor.start(GridCacheProcessor.java:618)
    at org.apache.ignite.internal.IgniteKernal.startProcessor(IgniteKernal.java:1784)
    ... 11 more

解决方案

1. 自定义节点名称(推荐)

Ignite默认会将节点所有网卡的IP地址拼接成节点名称,导致生成的目录路径过长。手动指定简短的节点名称即可避免:

  • XML配置方式:
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
    <!-- 指定短节点名 -->
    <property name="nodeName" value="ignite-node-01"/>
    <!-- 其他配置 -->
</bean>
  • Java代码配置方式:
IgniteConfiguration cfg = new IgniteConfiguration();
cfg.setNodeName("ignite-node-01");
// 其他配置
Ignition.start(cfg);

2. 自定义页面存储目录

直接指定一个路径更短的目录作为页面存储目录,绕过自动生成的长路径:

  • XML配置方式:
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
    <property name="dataStorageConfiguration">
        <bean class="org.apache.ignite.configuration.DataStorageConfiguration">
            <!-- 指定自定义页面存储路径 -->
            <property name="pageStorePath" value="/home/user/ignite-db"/>
        </bean>
    </property>
    <!-- 其他配置 -->
</bean>
  • Java代码配置方式:
DataStorageConfiguration storageCfg = new DataStorageConfiguration();
storageCfg.setPageStorePath("/home/user/ignite-db");

IgniteConfiguration cfg = new IgniteConfiguration();
cfg.setDataStorageConfiguration(storageCfg);
// 其他配置
Ignition.start(cfg);

3. 调整Linux系统路径长度限制(不推荐)

若必须使用默认路径,可临时调整系统路径长度限制,但存在系统级风险,需谨慎操作:

# 临时生效,重启后失效
sysctl -w fs.nr_open=1000000
echo 1000000 > /proc/sys/fs/nr_open

若需永久生效,可编辑/etc/sysctl.conf添加配置后执行sysctl -p。


内容的提问来源于stack exchange,提问作者Majid Bahrevar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 03:15:03