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

Proxmox LXC环境Ubuntu20.04全新安装Elasticsearch无法启动

Elasticsearch在Proxmox LXC容器中启动失败修复

故障基础信息

  • 故障场景:使用.deb包或apt源安装Elasticsearch后服务均无法启动,所有常规教程操作无效
  • 运行环境:Proxmox平台部署的Ubuntu 20.04 LXC容器
  • 故障日志(服务启动时JVM输出):
[2022-06-10T12:06:13.884+0000][22320][gc,init] CardTable entry size: 512
[2022-06-10T12:06:13.885+0000][22320][gc     ] Using G1
[2022-06-10T12:06:13.957+0000][22320][gc,init] Version: 18.0.1.1+2-6 (release)
[2022-06-10T12:06:13.957+0000][22320][gc,init] CPUs: 24 total, 4 available
[2022-06-10T12:06:13.957+0000][22320][gc,init] Memory: 96593M
[2022-06-10T12:06:13.957+0000][22320][gc,init] Large Page Support: Disabled
[2022-06-10T12:06:13.957+0000][22320][gc,init] NUMA Support: Disabled
[2022-06-10T12:06:13.958+0000][22320][gc,init] Compressed Oops: Enabled (Non-zero disjoint base)
[2022-06-10T12:06:13.958+0000][22320][gc,init] Heap Region Size: 16M
[2022-06-10T12:06:13.958+0000][22320][gc,init] Heap Min Capacity: 31G
[2022-06-10T12:06:13.958+0000][22320][gc,init] Heap Initial Capacity: 31G
[2022-06-10T12:06:13.958+0000][22320][gc,init] Heap Max Capacity: 31G
[2022-06-10T12:06:13.958+0000][22320][gc,init] Pre-touch: Disabled
[2022-06-10T12:06:13.958+0000][22320][gc,init] Parallel Workers: 4
[2022-06-10T12:06:13.958+0000][22320][gc,init] Concurrent Workers: 1
[2022-06-10T12:06:13.958+0000][22320][gc,init] Concurrent Refinement Workers: 4
[2022-06-10T12:06:13.958+0000][22320][gc,init] Periodic GC: Disabled
[2022-06-10T12:06:13.958+0000][22320][gc,metaspace] CDS archive(s) not mapped
[2022-06-10T12:06:13.958+0000][22320][gc,metaspace] Compressed class space mapped at: 0x0000000080000000-0x00000000c0000000, reserved size: 1073741>
[2022-06-10T12:06:13.958+0000][22320][gc,metaspace] Narrow klass base: 0x0000000000000000, Narrow klass shift: 0, Narrow klass range: 0xc0000000
[2022-06-10T12:06:14.152+0000][22320][gc,heap,exit] Heap
[2022-06-10T12:06:14.152+0000][22320][gc,heap,exit]  garbage-first heap   total 32505856K, used 24578K [0x0000001001000000, 0x00000017c1000000)
[2022-06-10T12:06:14.152+0000][22320][gc,heap,exit]   region size 16384K, 2 young (32768K), 0 survivors (0K)
[2022-06-10T12:06:14.152+0000][22320][gc,heap,exit]  Metaspace       used 3525K, committed 3584K, reserved 1114112K
[2022-06-10T12:06:14.152+0000][22320][gc,heap,exit]   class space    used 271K, committed 320K, reserved 1048576K

故障原因

从日志可以直接定位核心触发点:Elasticsearch自带的JVM读取到宿主机总内存为96G,自动将初始、最小、最大堆内存全部设置为31G,但LXC容器实际分配的可用内存远低于该值,JVM申请内存失败直接退出。
除此之外Proxmox默认创建的LXC容器还有两个隐含配置不满足ES运行要求:

  • 宿主机内核参数vm.max_map_count默认值远低于ES要求的最低阈值262144
  • 默认非特权LXC容器的seccomp配置拦截了ES运行需要的keyctl、嵌套虚拟化相关系统调用

修复步骤

所有操作按顺序执行即可:

  1. 先关闭故障的Ubuntu 20.04 LXC容器,登录Proxmox宿主机shell执行以下操作:
    • 调整内核全局参数,满足ES内存映射要求:
      echo "vm.max_map_count=262144" >> /etc/sysctl.conf
      sysctl -p
      
    • 编辑对应LXC容器的配置文件,将<CTID>替换为你实际的容器ID,编辑文件/etc/pve/lxc/<CTID>.conf,在文件末尾追加以下配置,放开容器需要的权限:
      features: keyctl=1,nesting=1
      unconfined: 1
      
  2. 启动LXC容器,登录Ubuntu系统执行以下操作:
    • 手动修改ES的JVM堆配置,禁止自动按宿主机内存计算堆大小。堆内存设置规则为:不超过容器实际分配内存的50%,且最大值不超过31G。例如给容器分配8G内存时,堆设置为4G即可。编辑文件/etc/elasticsearch/jvm.options,找到所有-Xms、-Xmx开头的配置行全部注释或删除,替换为计算好的堆值:
      -Xms4g
      -Xmx4g
      
    • 修复LXC环境下常见的ES目录权限异常问题:
      chown -R elasticsearch:elasticsearch /var/lib/elasticsearch /var/log/elasticsearch /etc/elasticsearch
      
    • 重载系统服务配置,启动ES并设置开机自启:
      systemctl daemon-reload
      systemctl enable --now elasticsearch
      
  3. 启动验证:在容器内执行curl http://127.0.0.1:9200,返回包含ES版本号、集群名称的JSON信息即为启动成功。

注意:如果启动前有残留的Java失败进程,先执行pkill java清理残留进程后再启动服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:30:54