--- title: "文件系统仓库压缩配置" date: 2026-02-23 lastmod: 2026-02-23 description: "repositories.fs.compress 配置项用于控制是否压缩文件系统仓库中的元数据文件。" tags: ["Repositories", "快照", "压缩", "存储优化"] summary: "配置项作用 # 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." --- ## 配置项作用 `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 格式 └── 元数据对象 ``` ## 配置建议 ## 生产环境(默认) ```yaml # 不配置,使用默认值 # repositories.fs.compress: false ``` **建议**: 保持默认值 `false`。性能优先。 ## 存储受限环境 ```yaml repositories: fs_backup: type: fs location: /backup/easysearch compress: true # 启用压缩 ``` **建议**: 存储空间受限时启用。 ## 远程存储 ```yaml repositories: fs_remote: type: fs location: /mnt/nfs/snapshots compress: true # 减少网络传输 ``` **建议**: NFS 等远程存储可考虑启用。 ## 创建仓库时指定 ```json PUT /_snapshot/my_backup { "type": "fs", "settings": { "location": "/backup/easysearch", "compress": true } } ``` ## 代码示例 ## 创建仓库(不压缩) ```json PUT /_snapshot/my_fs_repo { "type": "fs", "settings": { "location": "/backup/easysearch" } } ``` ## 创建仓库(压缩) ```json PUT /_snapshot/my_fs_repo { "type": "fs", "settings": { "location": "/backup/easysearch", "compress": true } } ``` ## 全局配置 ```yaml # easysearch.yml repositories: fs: compress: true ``` ## 查看仓库信息 ```json 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 资源紧张 - **频繁操作**: 频繁进行快照和恢复 ## 注意事项 1. **默认值**: 默认值为 `false`,不启用压缩。 2. **需要重启**: 修改此配置需要重启节点。 3. **仅元数据**: 只压缩元数据文件,不压缩数据文件。 4. **废弃状态**: 此配置项已被废弃。 5. **CPU 开销**: 压缩会增加 CPU 使用。 6. **读写延迟**: 压缩后读写会稍微变慢。 7. **存储节省**: 压缩率通常在 30-70%。 8. **不可逆**: 已压缩的文件不能直接读取。 9. **备份建议**: 压缩配置应在创建仓库时确定。 10. **监控建议**: 监控存储空间和 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 ├── 最快速度 ├── 最小延迟 └── 高性能场景 ✅ ```