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

如何为现有单机版Solr新增节点实现双硬盘存储

单机Solr新增第二块硬盘扩容分步操作指南

你当前运行的是单机Standalone模式Solr,不需要部署多节点、不需要切换SolrCloud模式,直接通过磁盘挂载+目录配置即可实现双硬盘存储协同,完全不用照搬Cloud模式新增节点的复杂流程


前置操作:新硬盘初始化挂载(所有方案通用)

所有扩容操作前先完成新硬盘的系统级挂载,保证系统能正常识别读写新硬盘:

  • 新硬盘物理接入服务器后,执行lsblk确认系统识别到新块设备(通常命名为/dev/sdb、/dev/vdb这类无分区标识的设备)
  • 对新硬盘执行分区操作:运行fdisk /dev/sdb(替换为你实际识别到的新设备名),按交互提示输入n新建主分区、输入w保存分区表
  • 格式化新分区:执行mkfs.ext4 /dev/sdb1(如果现有系统用xfs文件系统就替换为mkfs.xfs /dev/sdb1,和原有系统文件系统保持一致即可)
  • 创建新硬盘的挂载目录:执行mkdir /data/solr2
  • 临时挂载分区:mount /dev/sdb1 /data/solr2
  • 配置开机自动挂载:执行blkid /dev/sdb1查询新分区的UUID,编辑/etc/fstab文件新增一行配置:UUID=你查询到的实际UUID /data/solr2 ext4 defaults 0 0,保存后执行mount -a,无报错即为配置正确
  • 给Solr运行用户赋目录权限:如果你用solr用户启动服务,执行chown -R solr:solr /data/solr2,确保Solr对新目录有完整读写权限

方案1:新核心直接创建到新硬盘(最稳定,优先推荐)

原有硬盘上的存量索引完全不动,后续新建的Core/Collection全部放到新硬盘,两块硬盘分别存储不同索引,无改配置风险:

  1. 打开Solr管理后台(默认地址为http://服务器IP:8983/solr)
  2. 进入Core Admin菜单,点击Add Core按钮
  3. 填写Core基础信息时,直接将instanceDir、dataDir参数指定为新硬盘上的路径,比如/data/solr2/your_new_core_name
  4. 其余配置(configSet、schema规则)和你原有核心的创建规则保持一致,点击确认即可完成创建
  5. 后续所有新增核心都按这个方式指定新硬盘路径即可,老核心继续在原硬盘运行,互不干扰

如果通过命令行API创建核心,直接在请求里指定dataDir参数即可,示例:

curl "http://localhost:8983/solr/admin/cores?action=CREATE&name=new_core1&instanceDir=/data/solr2/new_core1&dataDir=/data/solr2/new_core1/data&configSet=你实际使用的配置集名称"

方案2:迁移部分存量大核心到新硬盘(紧急腾空间场景用)

如果原有硬盘剩余空间已经不足,需要把现有体积较大的老索引迁移到新硬盘释放空间,按以下步骤操作:

  1. 先停止Solr服务:进入Solr安装目录的bin文件夹,执行./solr stop
  2. 找到需要迁移的核心的原存储路径(默认路径一般是/var/solr/data/你的核心名),将整个核心目录完整拷贝到新硬盘:cp -a /var/solr/data/big_size_core /data/solr2/
  3. 校验拷贝完整性:对比原目录和新目录的文件数量、总大小,确认无文件缺失、损坏
  4. 备份原核心目录:执行mv /var/solr/data/big_size_core /var/solr/data/big_size_core_bak,等后续验证服务正常后再删除备份
  5. 关联新路径的核心,两种方式二选一即可:
    • 软链接方式(无需修改Solr配置):执行ln -s /data/solr2/big_size_core /var/solr/data/big_size_core
    • 配置文件方式:编辑Solr根目录下的solr.xml,找到对应核心的配置项,把instanceDir、dataDir的值修改为新硬盘上的核心路径
  6. 启动Solr服务:执行./solr start
  7. 进入Solr后台验证核心状态正常、索引查询写入无异常,确认功能正常后删除之前的老备份目录,释放原硬盘空间

方案3:配置全局多核心根目录(适合频繁新建核心的场景)

如果不想每次新建核心手动指定路径,可以配置Solr同时识别两块硬盘上的核心存储目录,新建核心时可灵活选择存储位置:

  1. 停止Solr服务
  2. 编辑Solr根目录下的solr.xml文件,找到<cores>配置段,在原有核心根目录配置下新增一行新硬盘的根目录配置:
    <cores defaultCoreName="你原来的默认核心名" host="${host:}" hostPort="${jetty.port:8983}" hostContext="${hostContext:solr}" zkClientTimeout="${zkClientTimeout:15000}">
      <coreRootDirectory>/var/solr/data</coreRootDirectory>
      <!-- 新增下面这行新硬盘的核心根目录 -->
      <coreRootDirectory>/data/solr2</coreRootDirectory>
    </cores>
    
  3. 保存配置后启动Solr,服务会自动扫描两个根目录下的所有核心,新建核心时可自由选择存储到哪个硬盘的目录下

注意:不要尝试把单个核心的索引文件拆分存储到两块硬盘,会直接导致索引损坏。以上所有方案均以核心为单位拆分存储到不同硬盘,稳定性远高于强行切换SolrCloud模式部署多节点,完全满足双硬盘协同运行的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 00:54:44