【Azure Batch】使用Start Task来挂载Storage Blob - LuBu0505/My-Code GitHub Wiki

问题描述

本文将介绍如何使用开始任务(Start Task)为Batch Account Node配置Storage Account Blob挂载

问题解答

第一步:准备 blobfuse2 mount的配置文件

这里参考的是文档How to configure settings for BlobFuse2 (https://learn.microsoft.com/en-us/azure/storage/blobs/blobfuse2-configuration)中介绍的最简单的配置模板。

简单模板如下:

logging:
  type: syslog
  level: log_debug

components:
  - libfuse
  - file_cache
  - attr_cache
  - azstorage

libfuse:
  attribute-expiration-sec: 120
  entry-expiration-sec: 120
  negative-entry-expiration-sec: 240

file_cache:
  path: /mycontainer
  timeout-sec: 120
  max-size-mb: 4096
  
attr_cache:
  timeout-sec: 7200

azstorage:
  type: block
  account-name: <your storage account name>
  account-key: <your storage account access key>
  mode: key
  container: forbatch
  endpoint: https://<your storage account name>.blob.core.chinacloudapi.cn

PS:关于模板中参数的意义,可以参考文档中的详细介绍。

第二步:准备Batch Account Node的Start Task 脚本

脚本内容

/bin/bash -c "apt-get update && apt-get install -y blobfuse2 &&  cd /mnt/batch/tasks/fsmounts  &&  mkdir /mnt/batch/tasks/fsmounts/mycontainerblob  &&  sudo blobfuse2 mount  /mnt/batch/tasks/fsmounts/mycontainerblob  --config-file=$AZ_BATCH_NODE_STARTUP_DIR/wd/mountconfig.yaml

脚本介绍

1) 因为Batch Account的节点为Linux系统,所以第一步更新系统apt-get,确保最新版本 2) apt-get install -y blobfuse2 : 自动安装 blobfuse2,这是azure提供的工具,用于将blob挂载为本地系统文件 3) cd /mnt/batch/tasks/fsmounts : 切换到 Azure Batch 的挂载目录。 4) mkdir /mnt/batch/tasks/fsmounts/mycontainerblob 创建一个用于挂载 Blob 容器的本地目录。 mycontainerblob 是挂载点的名称,可以根据实际容器名称修改。 5) sudo blobfuse2 mount /mnt/batch/tasks/fsmounts/mycontainerblob --config-file=$AZ_BATCH_NODE_STARTUP_DIR/wd/mountconfig.yaml : 使用 BlobFuse2 挂载 Azure Blob 容器到刚创建的目录。 --config-file 指定了一个 YAML 配置文件,包含连接字符串、容器名称、缓存设置等。 $AZ_BATCH_NODE_STARTUP_DIR/wd/ 是 Azure Batch 节点启动任务的工作目录,mountconfig.yaml 是第一步时准备好的配置文件。 6)  &&  : 用于连接前后两个命令。特别注意,两个命令之间必须使用 && 连接字符

第三步:把启动命令和配置文件填入Node Start Task页面

因命令中有安装/创建操作,所以需要提升权限为 Pool autouser, Admin权限。

此外,第二步中的config-file的文件路径就是下图中的 Resource Files。需要特别注意的就是,正确的工作目录为 $AZ_BATCH_NODE_STARTUP_DIR/wd/ , 需要多加一级 /wd/ image.png

保存,等待节点创建完成后就可以正常使用挂载目录,把文件直接写入到Storage Blob中。

参考资料

How to configure settings for BlobFuse2 : https://learn.microsoft.com/en-us/azure/storage/blobs/blobfuse2-configuration

在 Batch 池上装载虚拟文件系统: https://docs.azure.cn/zh-cn/batch/virtual-file-mount?tabs=windows

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!