AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
如何在托管计算环境中将现有适用于 Lustre 的 Amazon FSx 文件系统挂载到 AWS Batch 上?
我想在托管计算环境中将现有适用于 Lustre 的 Amazon FSx 文件系统挂载到 AWS Batch 上。
简短描述
将 Amazon Elastic Compute Cloud (Amazon EC2) 启动模板与 AWS Batch 配合使用。此配置无需创建自定义亚马逊机器映像 (AMI) 即可将现有适用于 Lustre 的 Amazon FSx 文件系统挂载到您的容器中。
**重要事项:**创建文件系统时,使用分配给您的计算环境的同一 Amazon Virtual Private Cloud (Amazon VPC) 和子网。
解决方法
**注意:**如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
要将现有适用于 Lustre 的 Amazon FSx 文件系统挂载到托管计算环境中的 AWS Batch,请完成以下步骤:
-
创建适用于 Lustre 的 Amazon FSx 文件系统。然后,选择永久或暂存文件系统部署类型。
**注意:**将永久文件系统用于长期存储和工作负载。将临时文件系统用于临时存储和短期数据处理。 -
复制您的文件系统 ID(例如,fs-0123456789abcdef0)。必须有文件系统 ID 才能运行启动模板。
-
创建包含用户数据部分并使用 MIME 多部分文件格式的启动模板。有关详细信息,请参阅 Cloud-init 网站上的 Mime 多部分存档。
请参阅以下 Amazon Linux 2 MIME 多部分文件示例。将 fs-0123456789abcdef0 替换为您的文件系统 ID,将 us-east-1 替换为您的 AWS 区域,将 xxxxxxxx 替换为您的八个字符的 Amazon FSx 挂载名称:Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" MIME-Version: 1.0 --==MYBOUNDARY== Content-Type: text/cloud-boothook; charset="us-ascii" file_system_id=fs-0123456789abcdef0 region=us-east-1 fsx_directory=/scratch fsx_mount_name=xxxxxxxx amazon-linux-extras install -y lustre2.10 mkdir -p ${fsx_directory} mount -t lustre -o noatime,flock ${file_system_id}.fsx.${region}.amazonaws.com@tcp:/${fsx_mount_name} ${fsx_directory} --==MYBOUNDARY==--**注意:**此示例 MIME 多部分文件将计算资源配置为从 Extras 库中安装 Lustre 2.10 软件包。该文件还会将现有适用于 Lustre 的 Amazon FSx 文件系统挂载在 /scratch 处。有关其他 Linux 发行版的安装说明,请参阅安装 Lustre 客户端。
-
启动模板以调用用户数据,如以下 Amazon Linux 2 示例所示:
{ "LaunchTemplateName": "user-data", "LaunchTemplateData": { "UserData": "TUlNRS1W...<base64 encoded userdata>..." } }**注意:**如果您在 Amazon EC2 控制台的启动模板中添加用户数据,请确保执行以下操作之一:将用户数据作为纯文本粘贴,或者从文件上传用户数据。如果您使用 AWS CLI 或 AWS SDK,则必须先对用户数据进行 base64 编码。有关详细信息,请参阅 base64 编码网站上的编码为 base64 格式。然后,在调用 CreateLaunchTemplate 时将该字符串作为 UserData 参数的值提交。
-
创建一个名为 mount-fsx-lustre.json 的文件。
**注意:**根据您的用例调整卷大小。 -
运行 create-launch-template AWS CLI 命令,以根据您在步骤 5 中创建的 mount-fsx-lustre.json 文件创建启动模板。将 us-east-1 替换为您的区域:
aws ec2 --region us-east-1 create-launch-template --cli-input-json file://mount-fsx-lustre.json输出示例:
{ "LaunchTemplate": { "LaunchTemplateId": "lt-08cb09d54bcf551f3", "LaunchTemplateName": "fsx-test", "CreateTime": "2020-06-30T17:13:22.000Z", "CreatedBy": "arn:aws:iam::12345678999:user/test", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } } -
创建新的计算环境并将该环境与您的启动模板相关联。当 AWS Batch 启动实例时,适用于 Lustre 的 Amazon FSx 文件系统现在已挂载在容器实例上。
**重要事项:**默认情况下,AWS Batch 托管计算环境使用经批准的 Amazon Elastic Container Service (Amazon ECS) 优化的 AMI 版本作为计算资源。您必须为 Amazon ECS 优化的 Amazon Linux 2 AMI 和其他 Linux 发行版明确设置 AMI ID。 -
要检查文件系统是否与容器实例一起挂载,请使用 SSH 连接到 AWS Batch 启动的实例。然后,运行以下 Linux df 命令:
$ df -h输出示例:
Filesystem Size Used Avail Used% Mounted ondevtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 448K 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/xvda1 30G 4.2G 25G 15% / 172.31.79.79@tcp:/xxxxxxxx 1.1T 4.5M 1.1T 1% /scratch tmpfs 798M 0 798M 0% /run/user/1000注意:****/scratch 是自动挂载的。
-
{ "jobDefinitionName": "Fsx-sample", "jobDefinitionArn": "arn:aws:batch:us-east-1:12345678999:job-definition/userdata:1", "revision": 1, "status": "ACTIVE", "type": "container", "parameters": {}, "containerProperties": { "image": "busybox", "vcpus": 1, "memory": 1024, "command": [], "volumes": [ { "host": { "sourcePath": "/scratch" }, "name": "Scratch" } ], "environment": [], "mountPoints": [ { "containerPath": "/scratch", "sourceVolume": "Scratch" } ], "ulimits": [], "resourceRequirements": [] } } -
要提交 AWS Batch 作业,请使用您在步骤 9 中创建的作业定义。
