问题描述
本文将介绍如何使用开始任务(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: sysloglevel: log_debugcomponents:- libfuse- file_cache- attr_cache- azstoragelibfuse:attribute-expiration-sec: 120entry-expiration-sec: 120negative-entry-expiration-sec: 240file_cache:path: /mycontainertimeout-sec: 120max-size-mb: 4096attr_cache:timeout-sec: 7200azstorage:type: blockaccount-name: <your storage account name>account-key: <your storage account access key>mode: keycontainer: forbatchendpoint: 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/
保存,等待节点创建完成后就可以正常使用挂载目录,把文件直接写入到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