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

适用版本: 6.8-8.9

1. 错误异常的基本描述 #

这条异常出现在仓库校验阶段。Elasticsearch 会在 basePath 下写入一个测试 blob,如果主节点无法完成这一步,就会抛出 RepositoryVerificationException("path ... is not accessible on master node")

常见现象 #

  • POST /_snapshot/{repo}/_verify 失败。
  • 日志明确提到 master nodebasePath
  • 常见于共享存储挂载错误、对象存储权限不足或只读配置错误。

典型报错与异常栈 #

RepositoryVerificationException: path [basePath] is not accessible on master node

2. 为什么会发生这个错误 #

常见原因包括:

  • 主节点对仓库路径没有读写权限。
  • base_path 配置错误,指向了不存在或不可写路径。
  • 对象存储客户端虽然可初始化,但具体路径前缀不可访问。
  • 主节点与其他数据节点的仓库配置不一致。

3. 如何排查和解决这个异常和解决这个异常 #

  1. 先检查仓库配置中的 base_path 是否正确。
  2. 确认主节点与其他节点使用的是同一套仓库配置。
  3. 如果是共享文件系统,检查挂载和文件权限。
  4. 如果是对象存储,确认前缀路径可写且没有只读限制。
  5. 修复后重新执行仓库验证。

排查时需要注意的问题 #

  • 这类错误通常发生在仓库校验,不是业务查询链路。
  • 看到 master node 时,优先检查主节点视角的权限和连通性。

4. 如何解决这个错误 #

常用修复思路 #

  • 修正 base_path 或底层路径权限。
  • 保证所有节点使用一致仓库定义。
  • 对对象存储前缀单独做可写性验证。
  • 避免把只读仓库拿来做需要写测试对象的校验操作。

后续注意事项与推荐建议 #

  • 仓库接入后应在所有角色节点上完成一次校验。
  • 共享存储路径和对象存储前缀都应纳入变更管理。

借助 INFINI 产品提升排障效率 #

5. 小结 #

path [basePath] is not accessible on master node 的根因是主节点无法在仓库路径上完成验证写入。重点要查主节点权限、路径正确性和仓库一致性。

相关错误 #

附:日志上下文 #

BlobContainer testContainer = blobStore().blobContainer(basePath().add(testBlobPrefix(seed)));
testContainer.writeBlobAtomic("master.dat", new BytesArray(testBytes), true);
throw new RepositoryVerificationException(metadata.name(), "path " + basePath() + " is not accessible on master node", exp);