更新时间:2024-07-05 GMT+08:00
分享

SFS Turbo存储联动

概述

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联动目录。
  • 数据淘汰只与数据淘汰时间有关,与SFS Turbo文件系统存储空间大小无关,用户需要根据实际业务场景评估文件系统存储空间用量,权衡数据淘汰时间。
  • 创建 OBS 后端存储库,依赖的服务是对象存储服务 OBS。用户需要额外配置OBS Adminstrator权限。
  • 同一层目录下不允许同样名称的文件和目录存在。
  • 不支持超长路径,数据流动支持的路径最大长度是1023字符。
  • 开启WORM策略的OBS桶,只能从OBS桶导入数据到SFS Turbo,无法从SFS Turbo导出数据到OBS桶。

绑定OBS桶

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

    图1 绑定OBS桶

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

    表1 参数说明

    参数

    含义

    限制

    配置后可编辑

    联动目录名称

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

    • 子目录名称不能重复。
    • 子目录名称必须是文件系统根目录下不存在的目录名。
    • 子目录名称不能是“.”或“..”。

    不支持

    桶名

    OBS存储桶桶名。

    • 无法绑定不存在的存储桶。
    • 目前仅支持OBS存储桶,不支持OBS并行文件系统。

    不支持

    OBS区域域名

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

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

    不支持

  5. 勾选“将OBS桶的读写权限通过桶策略授权给SFS Turbo云服务”,并单击“确定”,完成绑定。
  • 目前仅支持OBS存储桶,不支持OBS并行文件系统。
  • 绑定OBS桶时,会在OBS桶上添加名为"Sid": "PolicyAddedBySFSTurbo"的桶策略,请不要修改或删除该桶策略,否则可能导致联动功能异常。
  • 绑定OBS桶后,OBS桶原有的桶策略会被名为"Sid": "PolicyAddedBySFSTurbo"的桶策略覆盖。

元数据导入功能

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:0、gid:0、目录权限:755、文件权限:644)。快速导入能够提供更快的元数据导入性能,推荐您使用快速导入。
  • 附加元数据导入:当您绑定的OBS桶中存储的数据是来源于SFS Turbo导出时,可以使用附加元数据导入方式,附加元数据导入方式会导入OBS的元数据(名称、大小、最后修改时间)以及来源于SFS Turbo导出时的附加元数据(如uid、gid、mode)。
  1. 在绑定OBS桶之后,单击“元数据导入”选项。

    图2 元数据导入

  2. “导入前缀”请填写绑定OBS桶内对象的前缀,可以具体到某个对象名。如果要导入整个OBS桶内的所有对象,则不用填写。
  3. 勾选“附加元数据导入”将会采用附加元数据导入方式,不勾选“附加元数据导入”将采用快速导入方式。
  4. 单击“确定”,提交导入任务。

在OBS数据导入到SFS Turbo之后,如果OBS桶中的数据发生新增或修改,需要重新导入到SFS Turbo中。

数据导入功能

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

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

数据导入功能会同时导入元数据和数据内容,元数据将会采用快速导入方式,不会导入其他附加元数据(如uid、gid、mode)。

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

    图3 数据导入

  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 之间的联动任务

数据导出功能

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

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

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

    图4 数据导出

  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. 在“基本信息”页签,设置(冷)数据淘汰时间。

    图5 设置冷数据淘汰时间

按容量淘汰

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

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

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

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桶里对应的对象会删除吗?

    不会。

分享:

    相关文档

    相关产品