📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

repositories.fs.location 配置项用于指定文件系统仓库的存储位置路径

这是配置文件系统快照仓库的必需参数,指定了快照数据存储的根目录。所有节点都必须能够访问此位置。

配置项属性 #

  • 配置路径: repositories.fs.location
  • 数据类型: String(文件路径字符串)
  • 默认值: 无(必须配置)
  • 是否可选: (必需参数)
  • 作用域: NodeScope(节点级别)
  • 动态更新: (需要重启节点生效)

配置项详解 #

工作机制 #

仓库位置机制

配置位置:
repositories.fs.location: /backup/easysearch
    │
    ├── 必须配置 ❌
    ├── 指向共享存储
    └── 所有节点可访问


目录结构:
/backup/esearch/
├── indices/              # 索引数据
│   ├── index-0/
│   │   ├── 0/
│   │   │   ├── index-0
│   │   │   └── ...
│   └── ...
├── meta-*/               # 元数据文件
│   ├── global-*.meta
│   └── ...
└── snapshot-*/           # 快照元数据
    ├── snap-*.data
    └── ...


所有节点必须能够:
├── 读取此路径
├── 写入此路径
└── 同时访问

与 path.repo 的关系 #

path.repo 验证机制

path.repo 配置:
path.repo: ["/backup", "/mnt/backup"]


验证规则:
1. location 必须在 path.repo 列表中
   location: /backup/easysearch
   ├── 匹配: /backup ✅
   └── 允许


2. location 不在 path.repo 中
   location: /other/backup
   ├── 不匹配
   └── 拒绝 ❌


3. path.repo 未配置
   location: /backup/easysearch
   ├── 必须是绝对路径
   └── 某些系统可能允许


安全性:
├── path.repo: 限制仓库可用的根目录
├── location: 指定具体仓库路径
└── 双重控制 ✅

共享文件系统要求 #

共享文件系统要求

必需条件:
├── 所有节点可访问
├── 读写权限
├── 文件锁支持
└── 原子操作支持


推荐配置:
├── NAS (网络附加存储)
├── SAN (存储区域网络)
├── NFS (网络文件系统)
├── 共享块存储
└── 其他 POSIX 兼容文件系统


避免使用:
├── 本地磁盘 (非共享)
├── 不一致的网络文件系统
├── 无锁支持的文件系统
└── 对象存储挂载点 ❌


权限配置:
├── 所有节点相同用户
├── 目录权限: 755 (drwxr-xr-x)
├── 文件权限: 644 (rw-r--r--)
└── 所有权: easysearch:easysearch

配置建议 #

生产环境 #

PUT /_snapshot/backup
{
  "type": "fs",
  "settings": {
    "location": "/mnt/easysearch/backup"
  }
}

建议: 使用共享存储路径,确保所有节点可访问。

NAS 存储 #

PUT /_snapshot/nas_backup
{
  "type": "fs",
  "settings": {
    "location": "/nas/easysearch/snapshots"
  }
}

建议: 配置高性能 NAS,确保网络稳定性。

本地开发 #

PUT /_snapshot/local_backup
{
  "type": "fs",
  "settings": {
    "location": "/tmp/easysearch/snapshots"
  }
}

建议: 仅用于单节点开发环境。

多路径配置 #

# easysearch.yml
path.repo: ["/backup1", "/backup2", "/backup3"]

建议: 配置多个备用路径。

代码示例 #

创建基础仓库 #

PUT /_snapshot/my_backup
{
  "type": "fs",
  "settings": {
    "location": "/backup/easysearch"
  }
}

配置 path.repo #

# easysearch.yml
path.repo: ["/backup/easysearch", "/mnt/backup/easysearch"]

查看仓库 #

GET /_snapshot/_all

// 响应
{
  "my_backup": {
    "type": "fs",
    "settings": {
      "location": "/backup/easysearch"
    }
  }
}

创建快照 #

PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true

恢复快照 #

POST /_snapshot/my_backup/snapshot_1/_restore

相关配置 #

配置项作用默认值
location仓库位置必须配置
compress元数据压缩false
chunk_size分块大小Long.MAX_VALUE
path.repo允许的根路径-

使用场景 #

推荐配置场景 #

  • 生产备份: 专用备份存储
  • 灾难恢复: 异地备份存储
  • 开发测试: 本地临时存储

存储规划 #

存储规划建议

生产环境:
/backup/easysearch/
├── prod/
│   ├── daily/
│   ├── weekly/
│   └── monthly/
└── archive/


容量规划:
├── 每日快照: 索引大小 × 保留天数
├── 增长空间: 预留 50%
├── 监控使用率
└── 及时扩容


备份策略:
├── 每日增量备份
├── 每周全量备份
├── 每月归档
└── 自动清理过期

注意事项 #

  1. 必须配置: 这是必需参数,不能省略。

  2. 需要重启: 修改此配置需要重启节点。

  3. 共享访问: 所有节点必须能访问此位置。

  4. path.repo: 必须在 path.repo 允许的路径中。

  5. 目录存在: 目录必须预先创建。

  6. 权限正确: 运行用户必须有读写权限。

  7. 文件锁: 文件系统必须支持文件锁。

  8. 空间充足: 确保有足够的存储空间。

  9. 网络稳定: 使用网络存储时确保稳定性。

  10. 备份策略: 配合快照生命周期管理使用。

故障排查 #

常见问题排查

问题 1: 仓库创建失败

错误:
location doesn't match any of the locations specified in path.repo


解决:
├── 配置 path.repo
├── 使用绝对路径
├── 验证路径存在
└── 重启节点


问题 2: 节点无法访问

错误:
failed to access repository


检查:
├── 路径存在性
├── 挂载状态
├── 网络连接
└── 权限设置


解决:
├── 检查挂载
├── 修复网络
├── 修改权限
└── 验证访问


问题 3: 快照失败

错误:
failed to create snapshot


检查:
├── 磁盘空间
├── 文件权限
├── 锁问题
└── 网络问题


解决:
├── 清理空间
├── 修复权限
├── 检查文件系统
└── 修复网络

最佳实践 #

仓库配置最佳实践

1. 生产环境
   location: /mnt/shared/easysearch/backup

   ├── 共享存储
   ├── 冗余配置
   ├── 定期测试恢复
   └── 推荐 ✅


2. 容量规划
   ├── 当前数据 × 3
   ├── 增长空间
   ├── 监控告警
   └── 及时扩容


3. 安全配置
   ├── 限制访问
   ├── 加密传输
   ├── 备份加密
   └── 权限控制


4. 监控
   ├── 存储使用率
   ├── 快照成功率
   ├── 恢复测试
   └── 性能指标


5. 维护
   ├── 定期清理
   ├── 验证完整性
   ├── 测试恢复
   └── 文档更新