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

配置项作用 #

repositories.fs.chunk_size 配置项用于控制文件系统仓库中快照文件的分块大小

当使用文件系统(fs)仓库进行快照时,大文件可以被分割成多个块(chunks)存储。此配置决定了每个块的大小,影响快照和恢复的性能以及容错性。

配置项属性 #

  • 配置路径: repositories.fs.chunk_size
  • 数据类型: ByteSizeValue(字节大小值,如 100mb, 1gb
  • 默认值: Long.MAX_VALUE(不进行分块)
  • 是否可选: 是
  • 作用域: NodeScope(节点级别)
  • 动态更新: (需要重启节点生效)

配置项详解 #

工作机制 #

文件分块机制

不设置分块 (默认):
文件: large_file.dat (5GB)
    │
    └── 存储为: large_file.dat
        ├── 单个文件
        ├── 5GB 大小
        └── 无分块 ✅


设置分块 (chunk_size = 1GB):
文件: large_file.dat (5GB)
    │
    └── 分割存储:
        ├── large_file.dat.part0 (1GB)
        ├── large_file.dat.part1 (1GB)
        ├── large_file.dat.part2 (1GB)
        ├── large_file.dat.part3 (1GB)
        └── large_file.dat.part4 (1GB)


分块计算:
块数 = ceil(文件大小 / chunk_size)
块数 = ceil(5GB / 1GB) = 5 块

分块的优势 #

使用分块的优势

1. 网络容错
   无分块:
   ├── 传输 5GB 文件
   ├── 断点: 失败
   └── 需要重新传输 5GB ❌


   有分块 (1GB):
   ├── 传输 5 块
   ├── 断点: 第 3 块失败
   └── 重传: 只需要 1GB ✅


2. 内存管理
   无分块:
   ├── 需要分配 5GB 缓冲区
   ├── 内存压力大
   └── 可能 OOM ❌


   有分块 (1GB):
   ├── 只需要 1GB 缓冲区
   ├── 内存可控 ✅
   └── 流式处理


3. 并发传输
   无分块:
   ├── 单个文件
   ├── 串行传输
   └── 速度慢


   有分块:
   ├── 多个块
   ├── 并发传输
   └── 速度快 ✅


4. 存储限制
   ├── 某些文件系统有文件大小限制
   ├── 分块可以绕过限制
   └── 兼容性更好

块大小影响 #

块大小的影响分析

小块 (100MB):
5GB 文件:
├── 块数: 50
├── 元数据: 多
├── 管理: 复杂
├── 内存: 低 ✅
├── 容错: 好 ✅
└── 适合: 不稳定网络


中块 (1GB):
5GB 文件:
├── 块数: 5
├── 元数据: 适中
├── 管理: 简单
├── 内存: 适中
├── 容错: 好
└── 适合: 大多数场景 ✅


大块 (5GB):
5GB 文件:
├── 块数: 1
├── 元数据: 少 ✅
├── 管理: 最简单 ✅
├── 内存: 高 ❌
├── 容错: 差
└── 适合: 稳定高速网络

配置建议 #

生产环境(默认) #

# 不配置,使用默认值
# 文件不会分块

建议: 大多数情况下保持默认不分块。

大文件快照 #

PUT /_snapshot/my_fs_repo
{
  "type": "fs",
  "location": "/backup/easysearch",
  "chunk_size": "1gb"
}

建议: 处理大文件且需要容错时使用。

不稳定网络 #

PUT /_snapshot/my_fs_repo
{
  "type": "fs",
  "location": "/backup/easysearch",
  "chunk_size": "100mb"
}

建议: 网络不稳定或跨地域时使用小块。

代码示例 #

创建仓库(不分块) #

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

创建仓库(分块) #

PUT /_snapshot/my_fs_repo
{
  "type": "fs",
  "location": "/backup/easysearch",
  "chunk_size": "1gb"
}

相关配置 #

配置项作用默认值
chunk_size分块大小Long.MAX_VALUE(不分块)
compress压缩快照true
location仓库位置-

使用场景 #

推荐不分块的场景 #

  • 稳定环境: 网络、存储都稳定可靠
  • 小文件: 索引文件不大
  • 高速网络: 数据中心内部网络
  • 充足内存: 有足够内存资源

推荐分块的场景 #

  • 大文件: 有 GB 级别的大文件
  • 不稳定网络: 跨地域、公网等
  • 内存受限: 可用内存有限
  • 容错要求: 需要更好的传输容错

注意事项 #

  1. 默认值: 默认为 Long.MAX_VALUE,即不分块。

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

  3. 仓库级别: 可以在创建仓库时指定。

  4. 已有仓库: 修改配置不影响已有快照。

  5. 内存使用: 每个块需要相应大小的内存缓冲区。

  6. 容错性: 分块可以提高传输容错性。

  7. 元数据: 分块需要额外的元数据存储。

  8. 恢复快照: 恢复时会自动处理分块。

  9. 存储限制: 某些文件系统有文件大小限制,分块可以绕过。

  10. 测试验证: 新配置应通过快照和恢复测试验证。