验证指定的快照仓库,检查其配置、存储访问和完整性。
API 格式 #
POST /_snapshot/{repository}/_verify
API 作用 #
该 API 用于验证快照仓库的健康状态:
- 验证仓库配置是否正确
- 检查底层存储系统是否正常工作
- 确认仓库可以被访问用于快照操作
- 验证所有仓库设置和参数
API 参数 #
路径参数 #
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
{repository} | String | 是 | - | 要验证的快照仓库名称 |
查询参数 #
| 参数 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
timeout | Time | 否 | 30s | 操作超时时间 |
master_timeout | Time | 否 | 30s | 连接主节点的超时时间 |
请求示例 #
验证指定仓库 #
POST /_snapshot/my_backup/_verify
设置超时时间 #
POST /_snapshot/my_backup/_verify?timeout=5m
响应示例 #
成功响应 #
{
"verified": true,
"repository": "my_backup",
"verified_at": "2026-02-04T10:00:00Z",
"checks": {
"repository_exists": true,
"storage_accessible": true,
"configuration_valid": true,
"permissions_ok": true
},
"details": {
"location": "/mnt/backup/my_backup",
"type": "fs",
"size": "1.5GB",
"snapshot_count": 5
}
}
错误响应 #
{
"error": {
"root_cause": [
{
"type": "repository_exception",
"reason": "failed to verify repository [my_backup]"
}
],
"type": "repository_exception",
"reason": "failed to verify repository [my_backup]",
"caused_by": {
"type": "io_exception",
"reason": "No such file or directory"
}
}
}
响应字段说明 #
成功响应字段 #
| 字段 | 类型 | 描述 |
|---|---|---|
verified | Boolean | 仓库验证是否成功 |
repository | String | 被验证的仓库名称 |
verified_at | String | 验证时间戳 |
checks | Object | 各项检查结果 |
details | Object | 验证成功时的仓库详情 |
检查结果 (checks) #
| 字段 | 类型 | 描述 |
|---|---|---|
repository_exists | Boolean | 仓库是否存在于集群中 |
storage_accessible | Boolean | 底层存储是否可访问 |
configuration_valid | Boolean | 所有仓库设置是否有效 |
permissions_ok | Boolean | 节点是否有访问存储的适当权限 |
仓库详情 (details) #
| 字段 | 类型 | 描述 |
|---|---|---|
location | String | 仓库存储路径 |
type | String | 仓库类型(如 fs、s3、azure 等) |
size | String | 仓库大小 |
snapshot_count | Integer | 仓库中的快照数量 |
使用场景 #
- 部署前检查:在创建关键快照之前验证仓库
- 健康监控:定期检查仓库健康状态
- 故障排查:当快照操作失败时验证仓库
- 仓库迁移:将仓库移动到新存储后进行验证
验证检查项目 #
API 执行以下验证:
- 仓库存在性:确认仓库在集群配置中存在
- 存储可访问性:验证底层存储可以访问
- 配置有效性:检查所有仓库设置正确
- 权限检查:确认节点有访问存储的权限
错误条件 #
验证可能因以下原因失败:
- 仓库不存在
- 存储路径不可访问
- 网络连接问题(对于远程存储)
- 权限不足
- 配置参数无效
相关操作 #
- PUT /_snapshot/{repository}:创建快照仓库
- GET /_snapshot/{repository}:查询仓库信息
- POST /_snapshot/{repository}/_cleanup:清理仓库
- POST /_snapshot/{repository}/{snapshot}:创建快照
最佳实践 #
- 使用前验证:创建关键快照前始终验证仓库
- 定期检查:定期验证仓库以发现存储问题
- 错误处理:检查响应中是否有失败的验证项
- 存储监控:结合存储监控系统进行全面健康检查
注意事项 #
- 只读操作:验证操作不会修改仓库数据
- 执行时间:大型仓库的验证可能需要较长时间
- 并发操作:验证期间可能影响其他快照操作
- 网络依赖:对于云存储,验证需要网络连接
实现文件 #
- REST 处理器:
RestVerifyRepositoryAction.java - Transport Action:
TransportVerifyRepositoryAction.java - 请求类:
VerifyRepositoryRequest.java - 响应类:
VerifyRepositoryResponse.java - 结果类:
RepositoryVerificationResult.java





