配置项作用 #
repositories.fs.compress 配置项用于控制是否压缩文件系统仓库中的元数据文件。
当启用压缩时,快照的元数据文件(包括集群元数据、索引元数据、快照元数据等)会被压缩存储,从而减少存储空间占用。但实际的数据文件不会被压缩。
配置项属性 #
- 配置路径:
repositories.fs.compress - 数据类型:
Boolean(布尔值) - 默认值:
false - 是否可选: 是
- 作用域: NodeScope(节点级别)
- 动态更新: 否(需要重启节点生效)
- 废弃状态: 已废弃
配置项详解 #
工作机制 #
压缩工作机制
禁用压缩 (false, 默认):
元数据文件:
├── cluster metadata.meta
├── index-N metadata.meta
├── snap-N.meta
└── ...
存储:
├── 未压缩格式
├── 文件较大
└── 读写速度快 ✅
启用压缩 (true):
元数据文件:
├── cluster metadata.meta (压缩)
├── index-N metadata.meta (压缩)
├── snap-N.meta (压缩)
└── ...
存储:
├── 压缩格式
├── 文件较小 ✅
├── 读写需要解压
└── CPU 开销
数据文件:
├── 索引数据
├── 始终保持未压缩
└── 不受此配置影响
压缩的文件类型 #
被压缩的文件类型
1. 集群元数据 (Global Metadata)
├── cluster state
├── 全局设置
├── 索引模板
└── 压缩存储 ✅
2. 索引元数据 (Index Metadata)
├── mapping 定义
├── index settings
├── 别名信息
└── 压缩存储 ✅
3. 快照元数据 (Snapshot Metadata)
├── 快照信息
├── 包含的索引
├── 快照状态
└── 压缩存储 ✅
4. 分片快照 (Index Shard Snapshots)
├── 分片元数据
├── 段信息
└── 压缩存储 ✅
5. 实际数据文件
├── 索引数据
├── translog
├── 段文件
└── 不压缩 ❌
压缩算法 #
压缩实现
启用压缩时:
├── 使用 CompressorFactory.COMPRESSOR
├── SMILE XContent 格式
├── 线程本地输出流
└── 标准压缩算法
压缩流程:
1. 序列化元数据
│
├── SMILE 格式
│
↓
2. 压缩数据
│
├── 压缩算法
│
↓
3. 写入磁盘
│
└── 压缩的文件
解压流程:
1. 读取磁盘
│
├── 压缩的文件
│
↓
2. 解压数据
│
├── 解压缩算法
│
↓
3. 反序列化
│
├── SMILE 格式
└── 元数据对象
配置建议 #
生产环境(默认) #
# 不配置,使用默认值
# repositories.fs.compress: false
建议: 保持默认值 false。性能优先。
存储受限环境 #
repositories:
fs_backup:
type: fs
location: /backup/easysearch
compress: true # 启用压缩
建议: 存储空间受限时启用。
远程存储 #
repositories:
fs_remote:
type: fs
location: /mnt/nfs/snapshots
compress: true # 减少网络传输
建议: NFS 等远程存储可考虑启用。
创建仓库时指定 #
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "/backup/easysearch",
"compress": true
}
}
代码示例 #
创建仓库(不压缩) #
PUT /_snapshot/my_fs_repo
{
"type": "fs",
"settings": {
"location": "/backup/easysearch"
}
}
创建仓库(压缩) #
PUT /_snapshot/my_fs_repo
{
"type": "fs",
"settings": {
"location": "/backup/easysearch",
"compress": true
}
}
全局配置 #
# easysearch.yml
repositories:
fs:
compress: true
查看仓库信息 #
GET /_snapshot/_all
// 响应
{
"my_fs_repo": {
"type": "fs",
"settings": {
"location": "/backup/easysearch",
"compress": false
}
}
}
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
compress | 元数据压缩 | false |
location | 仓库位置 | - |
chunk_size | 分块大小 | Long.MAX_VALUE |
性能影响分析 #
| compress 设置 | 优点 | 缺点 |
|---|---|---|
| false(默认) | 读写速度快 | 占用更多空间 |
| true | 节省存储空间 | CPU 开销、读写慢 |
存储空间对比 #
存储空间对比
场景: 1000 个快照
不压缩:
├── 元数据文件: 每个 10KB
├── 总计: 10MB
├── 实际占用: 10MB
└── 读写: 快速 ✅
压缩 (50% 压缩率):
├── 元数据文件: 每个 5KB
├── 总计: 5MB
├── 节省: 5MB ✅
├── 读取: 需要解压
└── 写入: 需要压缩
收益:
├── 小集群: 节省有限
├── 大集群: 节省显著 ✅
└── 长期累积: 节省越来越多
使用场景 #
推荐启用压缩的场景 #
- 存储受限: 备份存储空间有限
- 大量快照: 频繁创建快照
- 远程存储: NFS 等网络存储
- 长期保留: 快照长期保存
推荐禁用压缩的场景 #
- 性能优先: 需要最快的快照/恢复速度
- 存储充足: 有足够的存储空间
- CPU 有限: CPU 资源紧张
- 频繁操作: 频繁进行快照和恢复
注意事项 #
默认值: 默认值为
false,不启用压缩。需要重启: 修改此配置需要重启节点。
仅元数据: 只压缩元数据文件,不压缩数据文件。
废弃状态: 此配置项已被废弃。
CPU 开销: 压缩会增加 CPU 使用。
读写延迟: 压缩后读写会稍微变慢。
存储节省: 压缩率通常在 30-70%。
不可逆: 已压缩的文件不能直接读取。
备份建议: 压缩配置应在创建仓库时确定。
监控建议: 监控存储空间和 CPU 使用。
故障排查 #
常见问题排查
问题 1: 压缩后读取变慢
检查:
├── compress 设置
├── CPU 使用率
├── 磁盘 I/O
└── 快照大小
解决:
├── 禁用 compress
├── 升级 CPU
├── 优化磁盘
└── 或接受小延迟
问题 2: 存储空间不足
检查:
├── 快照数量
├── 元数据大小
├── compress 设置
解决:
├── 启用 compress
├── 清理旧快照
├── 增加存储
└── 或压缩已有快照
问题 3: CPU 使用率高
检查:
├── compress 设置
├── 快照操作频率
└── CPU 核心数
解决:
├── 禁用 compress
├── 减少快照频率
├── 增加 CPU
└── 或错峰操作
最佳实践 #
压缩配置最佳实践
1. 标准场景
compress: false
├── 性能优先
├── 存储充足
└── 推荐 ✅
2. 存储受限
compress: true
├── 节省空间
├── 可接受性能下降
└── 必要时使用 ✅
3. 大量快照
compress: true
├── 累积节省
├── 长期效益
└── 推荐 ✅
4. 远程存储
compress: true
├── 减少网络传输
├── 节省带宽
└── 推荐使用 ✅
5. 性能关键
compress: false
├── 最快速度
├── 最小延迟
└── 高性能场景 ✅





