文档首页/ 弹性文件服务 SFS/ 用户指南/ SFS Turbo文件系统/ 管理SFS Turbo文件系统与OBS桶的存储联动
更新时间:2024-11-29 GMT+08:00
分享

管理SFS Turbo文件系统与OBS桶的存储联动

概述

AI训练和推理、高性能数据预处理、EDA、渲染、仿真等场景下,您可以通过SFS Turbo文件系统来加速OBS对象存储中的数据访问。SFS Turbo文件系统支持无缝访问存储在OBS对象存储桶中的对象。您可以指定SFS Turbo内的目录与OBS对象存储桶进行关联,然后通过创建导入导出任务实现数据同步。您可以在上层训练等任务开始前将OBS对象存储桶中的数据提前导入到SFS Turbo中,加速对OBS对象存储中的数据访问;上层任务产生的中间和结果等数据可以直接高速写入到SFS Turbo缓存中,中间缓存数据可被下游业务环节继续读取并处理,结果数据可以异步方式导出到关联的OBS对象存储中进行长期低成本存储。同时,您还可以配置缓存数据淘汰功能,及时将长期未访问的数据从SFS Turbo缓存中淘汰,释放SFS Turbo高性能缓存空间。

使用限制

  • 支持存储联动的SFS Turbo文件系统规格有:20MB/s/TiB、40MB/s/TiB、125MB/s/TiB、250MB/s/TiB、500MB/s/TiB、1000MB/s/TiB。
  • SFS Turbo目录和OBS配置联动后不支持以下操作:硬链接、重命名和目录配额。
  • 单个SFS Turbo文件系统最多可配置16个OBS联动目录。
  • 创建 OBS 后端存储库,依赖的服务是对象存储服务 OBS。用户需要额外配置OBS Adminstrator权限。
  • 同一层目录下不允许同样名称的文件和目录存在。
  • 不支持超长路径,数据流动支持的路径最大长度是1023字符。
  • 数据流动导入时,不支持长度大于255字节的文件名或子目录名。
  • 开启WORM策略的OBS桶,只能从OBS桶导入数据到SFS Turbo,无法从SFS Turbo导出数据到OBS桶。
  • 不支持绑定OBS并行文件系统和已配置服务端加密的OBS存储桶进行联动。

绑定OBS桶

  1. 登录高性能弹性文件服务管理控制台。
  2. 在文件系统列表中,单击创建的文件系统名称,进入文件系统详情页面。
  3. 进入“绑定后端存储”页签,单击“绑定OBS桶”。

    图1 绑定OBS桶

  4. 在右侧弹窗“绑定OBS桶”中,填写如下参数。

    表1 参数说明

    参数

    含义

    限制

    配置后可编辑

    联动目录名称

    SFS Turbo文件系统根目录下会以该名称创建一个子目录,该目录将绑定对应的OBS桶,且该目录名称不能和已有目录重名。

    • 子目录名称不能重复,子目录名称长度不能超过63个字符。
    • 子目录名称必须是文件系统根目录下不存在的目录名。
    • 子目录名称不能是“.”或“..”。

    不支持

    桶名

    OBS存储桶桶名。

    • 无法绑定不存在的存储桶。
    • 不支持绑定OBS并行文件系统和已配置服务端加密的OBS存储桶进行联动。

    不支持

    OBS区域域名

    OBS区域域名,即OBS的终端节点。

    OBS存储桶必须和SFS Turbo文件系统在同一个Region。

    不支持

    自动导出

    打开开关后,当文件系统发生数据更新时,将自动导出到OBS桶。

    -

    支持

    导出数据

    打开“自动导出”开关,则会出现该参数。

    选择导出到OBS桶的数据更新类型“新增数据”、“修改数据”或“删除数据”后,SFS Turbo会以异步方式导出到OBS。

    新增数据:SFS Turbo联动目录下创建的文件,及之后对这些文件进行的元数据和数据修改,会被自动同步到OBS桶里。

    修改数据:从OBS桶里导入到SFS Turbo联动目录下的文件,在SFS Turbo上对这些文件所进行的数据和元数据的修改,会被自动同步到OBS桶里。

    删除数据:在SFS Turbo联动目录下删除文件,OBS桶对应的对象也会被删除,只有被SFS Turbo写入的OBS对象才会被删除。

    -

    支持

  5. 勾选“将OBS桶的读写权限通过桶策略授权给SFS Turbo云服务”,并单击“确定”,完成绑定。
  • 如果您想指定导入目录和文件的权限,请参考《高性能弹性文件服务API参考》的“绑定后端存储”和“更新后端存储属性”执行操作。
  • 不支持绑定OBS并行文件系统和已配置服务端加密的OBS存储桶进行联动。
  • 绑定OBS桶时,会在OBS桶上添加Sid为“PolicyAddedBySFSTurbo”的桶策略,请不要修改或删除该桶策略,否则可能导致联动功能异常。
  • 如果您已将一个或多个SFS Turbo文件系统绑定了OBS存储桶,在删除文件系统或删除绑定之前,请不要删除该OBS存储桶,否则可能导致联动功能异常。
    以桶名为“obs-test”的OBS桶为例,桶策略“PolicyAddedBySFSTurbo”的内容如下所示:
    {
        "Statement": [
            {
                "Sid": "PolicyAddedBySFSTurbo",
                "Effect": "Allow",
                "Principal": {
                    "ID": [
                        "domain/xxx:user/xxx"
                    ]
                },
                "Action": [
                    "ListBucket",
                    "HeadBucket",
                    "GetBucketStorage",
                    "GetBucketPolicy",
                    "GetBucketAcl",
                    "GetBucketNotification",
                    "GetBucketQuota",
                    "GetObject",
                    "PutObject",
                    "DeleteObject",
                    "GetObjectAcl",
                    "PutObjectAcl",
                    "ModifyObjectMetaData"
                ],
                "Resource": [
                    "obs-test",
                    "obs-test/*"
                ]
            }
        ]
    }

自动同步策略

SFS Turbo文件系统绑定OBS桶前后,都可以配置自动同步策略。

当您打开自动导出开关,使用自动同步策略,SFS Turbo会根据您选择的数据更新类型,以异步方式导出到OBS。

数据更新类型包含“新增数据”、“修改数据”和“删除数据”。

  • 新增数据:SFS Turbo联动目录下创建的文件,及之后对这些文件进行的元数据和数据修改,会被自动同步到OBS桶里。
  • 修改数据:从OBS桶里导入到SFS Turbo联动目录下的文件,在SFS Turbo上对这些文件所进行的数据和元数据的修改,会被自动同步到OBS桶里。
  • 删除数据:在SFS Turbo联动目录下删除文件,OBS桶对应的对象也会被删除,只有被SFS Turbo写入的OBS对象才会被删除。

绑定OBS桶时配置自动同步策略,请参见绑定OBS桶

绑定OBS桶后配置自动同步策略,操作步骤如下所示。

  1. 在绑定OBS桶之后,单击“自动同步策略”选项。

    图2 自动同步策略

  2. 配置“自动同步 > 自动导出”数据。

    图3 自动导出界面
    1. 打开或关闭自动导出开关。
    2. 关闭自动导出开关即不支持自动导出功能;打开自动导出开关后,请选择导出数据。数据更新类型支持选择“新增数据”、“修改数据”或“删除数据”。更多参数解释请参见表1

  3. 单击“确定”,提交自动同步任务。

元数据导入功能

SFS Turbo文件系统绑定OBS桶后,可以使用元数据导入功能。

当您使用SFS Turbo文件系统访问OBS桶的数据时,您需要使用元数据导入功能提前将OBS数据文件的元数据(名称、大小、最后修改时间)导入到SFS Turbo文件系统中。只有元数据导入之后,您才可以在文件系统的联动子目录中去访问OBS存储桶中的数据。元数据导入功能仅会导入文件元数据,文件内容会在首次访问时从OBS存储桶中加载并缓存在SFS Turbo中,后续重复访问会直接命中,无需再从OBS存储桶中加载。

SFS Turbo文件系统提供快速导入和附加元数据导入两种元数据导入方式。元数据导入之后,您可以在联动子目录下看到导入的目录和文件列表。

  • 快速导入:当您绑定的OBS桶中存储的数据不是来源于SFS Turbo导出时,可以选择快速导入方式,快速导入方式仅会导入OBS的元数据(名称、大小、最后修改时间),不会导入其它附加元数据(如uid、gid、mode),SFS Turbo会生成默认的附加元数据(uid、gid、目录权限、文件权限),如果您想指定导入目录和文件的权限,请参考《高性能弹性文件服务API参考》的“创建数据导入导出任务”章节,该操作仅针对本次导入任务生效。快速导入能够提供更快的元数据导入性能,推荐您使用快速导入。
  • 附加元数据导入:当您绑定的OBS桶中存储的数据是来源于SFS Turbo导出时,可以使用附加元数据导入方式,附加元数据导入方式会导入OBS的元数据(名称、大小、最后修改时间)以及来源于SFS Turbo导出时的附加元数据(如uid、gid、mode)。如果没有来源于SFS Turbo的附加元数据则以指定导入目录和文件的权限为准。
  1. 在绑定OBS桶之后,单击“元数据导入”选项。

    图4 元数据导入

  2. “导入前缀”请填写绑定OBS桶内对象的前缀,可以具体到某个对象名。如果要导入整个OBS桶内的所有对象,则不用填写。
  3. 勾选“附加元数据导入”将会采用附加元数据导入方式,不勾选“附加元数据导入”将采用快速导入方式。
  4. 单击“确定”,提交导入任务。
  • 在OBS数据导入到SFS Turbo之后,如果OBS桶中的数据发生新增或修改,需要重新导入到SFS Turbo中。
  • 不支持长度大于255字节的文件名或子目录名。

数据导入功能

SFS Turbo文件系统绑定OBS桶后,可以使用数据导入功能。

默认情况下,元数据导入完成后,数据不会导入到SFS Turbo文件系统中,初次访问会按需从OBS中加载数据,对文件的第一次读取操作可能耗时较长。如果您的业务对时延比较敏感,并且您知道业务需要访问哪些目录和文件,比如AI训练等场景涉及海量小文件,对时延比较敏感,可以选择提前导入指定目录和文件。

数据导入功能会同时导入元数据和数据内容,元数据将会采用快速导入方式,不会导入其他附加元数据(如uid、gid、mode),如果您想指定导入目录和文件的权限,请参考《高性能弹性文件服务API参考》的“创建数据导入导出任务”章节,该操作仅针对本次导入任务生效。

  1. 在绑定OBS桶之后,单击“数据导入”选项。

    图5 数据导入

  2. “对象路径”请填写绑定OBS桶内对象的路径(不包含桶名)。

    OBS桶中的对象路径(不包含桶名),目录需以“/”结尾。

    • 如果要导入OBS桶内所有对象,则不用填写对象路径。SFS Turbo会将数据导入到联动目录下,且联动目录下的文件路径和OBS桶里的对象路径保持一致。
    • 对象路径示例(“/mnt/sfs_turbo”为您的挂载目录,“output-1”为您的联动目录名称):
      • 如对象路径为dir/,则会导入到“/mnt/sfs_turbo/output-1/dir”
      • 如对象路径为dir/file, 则会导入到“/mnt/sfs_turbo/output-1/dir/file”
      • 如对象路径为空,则会直接导入到“/mnt/sfs_turbo/output-1”

  3. 单击“确定”,提交导入任务。
  • 在OBS数据导入到SFS Turbo之后,如果OBS桶中的数据发生新增或修改,需要重新导入到SFS Turbo中。
  • 通过API使用数据导入功能的具体操作请参考创建SFSTurbo 和 OBS 之间的联动任务
  • 不支持长度大于255字节的文件名或子目录名。

数据导出功能

SFS Turbo文件系统绑定OBS桶后,可以使用数据导出功能。

当您在联动目录创建一些文件,或者对从OBS导入的文件进行修改后,需要将这些文件存储到OBS桶里,可以使用数据导出功能。数据导出支持指定前缀,只有满足指定前缀的目录和文件才会被导出到OBS桶里。

  1. 在绑定OBS桶之后,单击“更多 > 导出”选项。

    图6 数据导出

  2. “导出文件前缀”请填写需要导出的目录和文件前缀(路径不包含联动目录),可以具体到某个文件。如果要导出整个联动目录到OBS桶,则不用填写。
  3. 单击“确定”,提交导出任务。
  • 数据导出功能会启动异步任务对导出目录内的文件进行扫描并导出,如果扫描时发现文件10s内发生过更新,则本次任务不会导出该文件。
  • 对于一个文件的所有修改,导出到OBS桶之后,下次再提交该文件的导出任务时,如果该文件未发生过变化,则该文件不会被再次导出,即使OBS桶里已经将导出的对象删掉了,也不会再导出该文件。
  • 从SFS Turbo导出的对象,在OBS对象的自定义元数据里保存了一些SFS Turbo的元数据信息,名称以x-obs-meta-sfsturbo-st-开头。
  • 不支持超长路径,可导出文件路径的最大长度为1023个字符。
  • 文件系统内单个文件大小上限为320TB、可导出的单个文件大小上限为48.8TB。
  • 大文件导出时OBS桶内x-obs-upload-sfsturbo-temp-part目录会存储大文件导出过程中产生的临时文件,导出完成后会自动删除该目录及临时文件。
  • 导出数据时:

    导入到SFS Turbo的对象,当在SFS Turbo里修改了,再从SFS Turbo导出这个对象时,如果OBS桶里该对象没有发生过修改,则会覆盖OBS桶里的对象,如果OBS桶里该对象发生过修改,则不会覆盖。

    对象正在被导出时,上传同名对象可能会造成新上传的对象被覆盖。

  • 开启WORM策略的OBS桶,无法从SFS Turbo导出数据到OBS桶。

数据淘汰功能

SFS Turbo文件系统绑定OBS桶之后,可以使用数据淘汰功能。淘汰时会释放数据内容,仅保留元数据,释放后不占用SFS Turbo文件系统上的存储空间。再次访问该文件时,将重新从OBS中加载文件数据内容。

按时间淘汰

SFS Turbo文件系统绑定OBS桶之后,支持数据按时间淘汰功能。设定时间内没有被访问过的文件会被淘汰。

按时间淘汰功能支持设置(冷)数据淘汰时间,设置步骤请参考以下操作。

  1. 登录高性能弹性文件服务管理控制台。
  2. 在文件系统列表中,单击创建的SFS Turbo文件系统名称,进入文件系统详情页面。
  3. 在“基本信息”页签,设置(冷)数据淘汰时间。

    图7 设置冷数据淘汰时间

按容量淘汰

SFS Turbo文件系统绑定OBS桶后,支持数据按容量淘汰功能。

容量达到95%及以上按照30分钟淘汰时间进行淘汰,淘汰至容量低于85%。

  • 淘汰规则:按时间淘汰和按容量淘汰哪个先达到就先按哪个淘汰。
  • 数据淘汰默认开启,淘汰时间默认为60小时。设置(冷)数据淘汰时间的API请参考更新文件系统
  • 如果SFS Turbo文件系统存储空间写满,会影响业务运行,建议在云监控服务CES上配置SFS Turbo已用容量的监控告警。
  • 当触发容量阈值告警时请手动缩短数据淘汰时间,例如从60小时配置成40小时,加速(冷)数据淘汰,或者对SFS Turbo存储空间进行扩容。

任务状态

当您执行导出数据时,会在任务状态生成一条任务记录,方便您查看任务进度和状态。

系统只会保留最近创建的1000条任务记录,之前的任务记录系统将会自动删除。

  1. 在绑定后端存储列表页,单击界面左上角的“任务状态”。
  2. 执行导出数据操作,可查看对应操作的任务记录。单击状态右边的可查看成功或失败的次数。
  3. 在右上角的搜索框,支持对状态、类型、创建时间进行过滤,找到您需要的任务。

FAQ

  • 什么情况下会发生数据淘汰?

    从OBS导入到SFS Turbo的文件,当文件在设定数据淘汰时间内没有被访问时,会自动对该文件进行淘汰。

    在SFS Turbo上创建的文件,只有已经导出到OBS并且满足数据淘汰时间,才会进行淘汰,如果还没有导出到OBS,则不会淘汰。

  • 数据淘汰之后,怎么重新将数据导入到SFS Turbo文件系统?
    1. 对文件进行读写操作时会重新从OBS桶加载文件数据到SFS Turbo文件系统;
    2. 使用数据导入功能重新将数据从OBS桶加载到SFS Turbo文件系统。
  • 什么场景下会发生数据导入失败?

    当只导入了文件元数据,或者SFS Turbo中发生了数据淘汰,SFS Turbo中只剩下文件元数据,但OBS桶中的对象又被删除时,进行数据导入或访问文件内容时会发生失败。

  • 导入/导出任务是同步的,还是异步的?

    是异步的,任务提交后马上返回,您可以通过任务id查询异步任务完成状态。

  • 删除SFS Turbo联动目录内的文件,OBS桶里对应的对象会删除吗?

    不会。如果没有开启自动同步策略,则不会。如果开启了自动同步策略,则会删除。

  • SFS Turbo绑定OBS桶时或者绑定之后可以指定导入目录和文件的权限吗?
    一般情况下,您可以指定导入目录和文件的权限。如果无法指定,请提交工单申请。指定权限详情如下所示:
    • 绑定OBS桶时或绑定OBS桶后,支持设置导入目录和文件的默认权限,请参考《高性能弹性文件服务API参考》的“绑定后端存储”和“更新后端存储属性”章节。如果未设置,默认为750(目录权限)和640(文件权限)。
    • 元数据导入(快速导入)和数据导入时,支持指定导入目录和文件的权限,请参考《高性能弹性文件服务API参考》的“创建数据导入导出任务”章节。如果未指定,则以上述默认权限为准。

    历史版本导入目录和文件的默认权限为755(目录权限)和644(文件权限),现逐步按区域切换为750(目录权限)和640(文件权限),如有疑问,请提交工单咨询。

    SFS Turbo绑定OBS桶时或者绑定之后,建议指定导入目录和文件的默认权限。如果您未指定,非root用户无权限访问对应的目录和文件。

相关文档