普通存储桶转换为分层命名空间存储桶
更新时间:2026-08-24
概述
BOS 元数据转换服务支持在未部署任何工具的情况下,直接将 BOS 普通存储桶转换为分层命名空间存储桶。分层命名空间存储桶支持普通平层桶绝大部分特性,兼容大部分 HDFS 文件系统接口,同时支持目录原子性 Rename 和 Delete,并优化 List 和 Head 请求时延,可满足大数据和 AI 领域的数据湖计算场景。
前提条件
- 目前仅北京、苏州、广州、保定地域支持元数据转换服务和分层命名空间存储桶。
- 需提交工单申请使用 BOS 元数据转换功能。
使用限制
- 不支持转换开启回收站或多版本功能的 Bucket。
- 不支持转换存在归档类型 Object、软链接 Symlink、对象标签的 Bucket。
- 注意: 元数据转换成功的平层 Bucket 不再支持关闭分层命名空间,转换过程不可逆。转换前后仅元数据组织形式发生变化,数据不发生移动。
- 元数据转换任务的完成时间取决于 Bucket 中 Object 数量和后端资源配额,暂不提供精确的时效性保证。
风险说明
- 转换任务开始之后、执行结束之前,建议避免进行增量写入,以及对存量数据的覆写或删除,以免遗漏。执行过程中遇到归档类型文件会导致任务失败并中止转换。
- 请确保待转换的 BOS Bucket 中不存在同名文件和文件夹,例如同时存在文件
dir以及文件夹dir/。转换过程中会产生冲突,且冲突结果与任务运行时的导入顺序相关,服务将通过重命名操作来避免冲突。具体规则请参考“转换规则”。 - 请参考转换规则说明,确保 BOS Bucket 中不存在且不写入使用特殊保留文件名的文件,否则可能出现同名文件相互覆盖,造成文件丢失。
- Bucket 元数据转换开始前,可以通过 Replication 等方式先做好备份保存。元数据转换任务完成后,请务必再次确认 Bucket 中数据的完整性。
转换规则
- 对于转换前以
/结尾的文件,例如a/b/,如果文件是空文件(size 为 0),则转换后直接创建对应的同名目录,例如a/b;否则,转换后会发生重命名,并加上特殊后缀.slash和转换时间戳,例如文件a/b/会变成a/b.slash.1716487553,可以通过 ListObjects 查看转换后的对应新文件名。 -
分层命名空间存储桶中不允许同名文件和目录共存。因此,如果转换前的存储桶中同时存在文件
a/b和a/b/,其中a/b/表示一个目录,则转换过程中会发生冲突,且与两个文件的转换顺序相关。第一原则是优先创建和保留目录。- 情况一:创建目录
a/b时发现同名文件a/b已存在,则将文件重命名,并加上特殊后缀.file和转换时间戳,例如文件a/b/会变成a/b.file.1716487553。如果新文件名已经存在,则继续添加次数后缀并重试 1 次,例如a/b.file.1716487553.1。 - 情况二:创建文件
a/b时发现同名目录a/b已存在,则尝试创建加上特殊后缀.file和转换时间戳的新文件,例如a/b.file.1716487553。如果新文件名仍然已经存在,则继续添加次数后缀并重试 3 次,例如a/b.file.1716487553.1。
- 情况一:创建目录
评价此篇文章
