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

版本: 7.8-7.13

简而言之,当 Elasticsearch 无法完成快照删除时会出现此错误。这可能是由于权限不足、快照损坏或底层存储系统问题导致的。要解决此问题,您可以尝试以下方法:1) 检查并调整 Elasticsearch 用户的权限,确保其具有删除快照所需的权限。2) 如果快照已损坏,您可能需要从快照存储库中手动删除它。3) 检查存储系统的健康状况,因为硬件问题也可能导致此错误。

Log Context #

日志 “Failed to finalize snapshot deletion” 的类名是 BlobStoreRepository.java。我们从 Elasticsearch 源代码中提取了以下内容,供寻求深入上下文的人员参考:

final Set<String> survivingSnapshotUUIDs = survivingSnapshots.stream().map(SnapshotId::getUUID).collect(Collectors.toSet());
return new ShardSnapshotMetaDeleteResult(indexId, snapshotShardId, writtenGeneration,
    unusedBlobs(blobs, survivingSnapshotUUIDs, updatedSnapshots));
}
} catch (IOException e) {
    throw new RepositoryException(metadata.name(), "Failed to finalize snapshot deletion " + snapshotIds +
        " with shard index [" + INDEX_SHARD_SNAPSHOTS_FORMAT.blobName(writtenGeneration) + "]", e);
}
} /**

## 解决方案

### 1. 检查权限

确保 Elasticsearch 运行用户对快照存储位置具有完整的读写权限:

```bash
chmod -R 755 /path/to/snapshot/repository
chown -R elasticsearch:elasticsearch /path/to/snapshot/repository

2. 手动清理损坏的快照 #

如果快照已损坏,可能需要手动干预:

GET _snapshot/<repository_name>/_all

DELETE _snapshot/<repository_name>/<snapshot_name>

3. 检查存储系统健康状况 #

  • 检查磁盘空间是否充足
  • 验证存储设备是否存在硬件故障
  • 检查网络连接(如果使用远程存储)

4. 验证存储库配置 #

确保快照存储库配置正确:

PUT _snapshot/<repository_name>
{
  "type": "fs",
  "settings": {
    "location": "/path/to/snapshot/repository"
  }
}

5. 查看详细日志 #

启用详细日志记录以获取更多诊断信息:

logger.org.elasticsearch.snapshots: DEBUG