普通存储桶转换为分层命名空间存储桶
更新时间:2024-08-15
概述
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。